AAYMA
RU
Войти

TaskReady

SPA на React. Бизнес превращает черновик задачи в карточку из 11 полей с рейтингом готовности 0–100, публикует её в каталоге, команды откликаются…

Рабочий MVP
Команда «Prompt Chiefs» 3💬 0 комментариевс 23 сентября 2026 г.

О проекте

Команда: Prompt Chiefs
Кейс HackAlem.ai: Образование — AI Sana
Стадия: Рабочий MVP

Задача кейса: Challenge Hub: превратить задачу бизнеса в задание для студенческих команд

Суть

SPA на React. Бизнес превращает черновик задачи в карточку из 11 полей с рейтингом готовности 0–100, публикует её в каталоге, команды откликаются, бизнес вручную принимает отклики и подтверждает этапы (+10 баллов).

Как устроено

AI-диагностика находит пустые поля и задаёт три уточняющих вопроса; по умолчанию это детерминированная заглушка в браузере, опционально локальная qwen2.5:3b через Ollama и Node-прокси. Ответ проверяется, при любой ошибке или таймауте 20 с включается фолбэк. Рейтинг считает чистая формула из 7 критериев с проверками длины и наличия цифр. Рекомендации командам строятся по совпадению отрасли с интересами, данные хранятся в localStorage.

Ключевые решения

  • аддитивная формула рейтинга
  • рекомендации по интересам
  • локальный LLM через Ollama
  • фолбэк-заглушка

Особенности

AI работает только локально, без облачного API и ключа. Блок «Как работает AI-диагностика» показывает промпт и JSON запроса и ответа. Рейтинг защищён от мусорного ввода (минимум 4 разных символа, в критериях успеха нужна цифра).

Стек

TypeScript · React 19 · Vite 8 · Node.js · localStorage · node:test

Модели

qwen2.5:3b (Ollama)


Проект создан за 5 часов на финале хакатона HackAlem.ai (23 сентября 2026, Астана). Код — BAITC-Hacks/hack-0b120e34-prompt-chiefs.

README

README.md

TaskReady — AI Sana / Prompt Chiefs

Описание

Представителям бизнеса трудно описать задачу для студентов так, чтобы по ней можно было сразу начать работу. Студенческим командам трудно понять, какие задачи уже готовы.

TaskReady помогает бизнесу превратить черновое описание в полную карточку задачи. Сервис оценивает, насколько полно заполнена карточка (рейтинг 0–100), и публикует её в открытом каталоге. Студенческие команды сами выбирают задачи и откликаются. Бизнес вручную принимает или отклоняет отклики.

Для кого: представители бизнеса и студенческие команды (кейс хакатона AI Sana).

Что реализовано

  • Конструктор задачи. Свободное описание, 5 примеров черновиков, демо-задача, редактируемая карточка из 11 полей, ручное подтверждение публикации.
  • AI-диагностика задач. Три уточняющих вопроса о недостающих сведениях на языке интерфейса. Ответы человека копируются в карточку без изменений.
  • Прозрачность AI. Блок «Как работает AI-диагностика» показывает режим, промпт, JSON-запрос и JSON-ответ.
  • Рейтинг готовности 0–100. Расшифровка по 7 критериям, подсказки к каждому недостающему критерию, пересчёт при редактировании.
  • 4 уровня готовности: Черновик, Рабочая, Готовая, Приоритетная.
  • Каталог. Сортировка по рейтингу, фильтры по отрасли и уровню. Приоритетные задачи выделены, черновики помечены «Требует уточнения».
  • Рекомендации командам. Задачи от 40 баллов, отрасль которых совпадает с интересами команды. Каталог при этом не ограничивается.
  • Отклики команд. Идея, план, срок и ссылка на прототип, число откликов не ограничено.
  • Решение бизнеса. Ручные «Принять» и «Отклонить»: можно выбрать несколько команд или ни одной, автоматического назначения нет.
  • Подтверждённый прогресс. После подтверждения этапа команда получает +10 баллов, один раз за отклик. После этого решение окончательное.
  • Интерфейс. Русский, казахский и английский языки; светлая и тёмная тема.

Как работает решение

  1. Бизнес вводит краткое описание или загружает пример.
  2. AI-диагностика определяет пустые поля и задаёт 3 вопроса.
  3. Ответы переносятся в карточку, бизнес дополняет и редактирует поля.
  4. Рейтинг пересчитывается, подсказки показывают, что поднимет балл.
  5. Бизнес подтверждает публикацию, и задача попадает в каталог на место по рейтингу.
  6. Команда выбирает задачу (сама или через рекомендации) и отправляет отклик.
  7. Бизнес сравнивает отклики и вручную принимает или отклоняет их.
  8. После выполненного этапа бизнес подтверждает его, и команда получает +10 баллов.

Технологии

  • Язык и фреймворки: TypeScript, React 19, Vite 8.
  • Тесты: встроенный node:test (Node.js 22.16+).
  • AI по умолчанию: детерминированная локальная заглушка в браузере (src/lib/ai.ts).
  • AI опционально: локальная модель qwen2.5:3b через Ollama. Работает бесплатно и без API-ключа, подключается через прокси server/task-doctor.mjs на Node.js без зависимостей.
  • Хранение: localStorage браузера.

Архитектура

КомпонентНазначение
src/App.tsxЭкраны: конструктор, каталог, отклики
src/types/domain.tsМодель данных: задача, команда, отклик
src/lib/scoring.tsЧистая формула рейтинга и уровней
src/lib/ai.tsAI-адаптер: локальная заглушка, вызов внешнего endpoint, проверка ответа, fallback
src/lib/recommendations.tsРекомендации задач по интересам команды
src/lib/proposals.tsПравила решений бизнеса и прогресса
src/lib/storage.tsСохранение в localStorage, восстановление после повреждённых данных
src/lib/i18n.tsПереводы (ru / kk / en)
src/components/TaskEditor, ScorePanel, AiContract, DemoJourney, Preferences
src/data/seed.tsСинтетические демо-данные
server/task-doctor.mjsОпциональный локальный прокси: браузер → прокси → Ollama
tests/domain.test.mjsАвтотесты бизнес-логики

Как части связаны между собой. Браузер вызывает прокси, только если задана переменная VITE_TASK_DOCTOR_ENDPOINT. Любая ошибка — HTTP, неверный JSON, неизвестное поле, меньше 3 вопросов или таймаут 20 секунд — переключает сайт на локальные вопросы.

Установка и запуск

Нужны Node.js 22.16+ и npm.

npm ci
npm run dev

Откройте адрес из терминала (обычно http://localhost:5173).

Другие команды:

npm test          # автотесты
npm run build     # проверка TypeScript и сборка в dist
npm run preview   # запуск собранной версии

Локальная AI-модель (необязательно, бесплатно)

# 1. Установить Ollama: https://ollama.com (Windows: winget install Ollama.Ollama)
ollama pull qwen2.5:3b

# 2. Запустить прокси (терминал 1)
npm run ai-proxy

# 3. Скопировать .env.example в .env.local и перезапустить сайт (терминал 2)
npm run dev

Без Ollama сайт полностью работает на локальной заглушке. Другую модель можно выбрать переменной TASK_DOCTOR_MODEL.

Как проверить решение

  1. «Сбросить демо-данные» → «Создать задачу» → «Загрузить демо с анализом отзывов». Рейтинг 0.

  2. «AI-диагностика задач». Ответить:

    • потребность — «Выявлять повторяющиеся жалобы и передавать их ответственным сотрудникам»;
    • данные — «Обезличенный CSV с 500 отзывами и категориями за последний месяц»;
    • результат — «Веб-прототип группировки отзывов с фильтром по категории».

    Нажать «Применить ответы к карточке»: рейтинг 55. Раскрыть «Как работает AI-диагностика».

  3. Заполнить поля:

    • «Пользователи» — «Руководитель клиентской поддержки»;
    • «Критерии успеха» — «Не менее 80% верных категорий на 100 контрольных отзывах»;
    • «Ограничения» — «Локальный прототип за две недели без персональных данных»;
    • «Контакт» — [email protected];
    • «Формат взаимодействия с бизнесом» — «Две консультации в неделю, письменная обратная связь в течение суток».

    Рейтинг 100. «Подтвердить и опубликовать» → «Опубликовать задачу».

  4. В каталоге в «Рекомендациях для команды» выбрать Nova Stack, открыть новую задачу и отправить отклик со ссылкой вида https://example.com/....

  5. «Отклики» → «Принять».

  6. Ввести описание выполненного этапа и подтвердить: +10 баллов, кнопки решения исчезают.

  7. Перезагрузить страницу: данные сохранены.

Дополнительно можно проверить:

  • текст «ааааааааааааааа» в «Ограничениях» не даёт баллов;
  • критерии успеха без цифр не засчитываются;
  • задача с рейтингом 0 видна в каталоге и принимает отклики.

Данные и интеграции

  • Данные: синтетические, в src/data/seed.ts — 5 черновиков, 5 карточек, 5 команд, 5 откликов на русском. Ссылки на прототипы (example.com) демонстрационные.
  • Внешние API и облачные сервисы не используются. Опциональная интеграция — только локальный сервер Ollama (http://127.0.0.1:11434) через прокси на 127.0.0.1:8787.
  • Формат обмена с AI. Запрос: {"prompt": "...", "language": "ru", "task": {...}}. Ответ: {"questions": [{"field": "...", "question": "..."}]}.

Формула рейтинга

КритерийБаллыУсловие
Контекст и потребность20≥20 символов в каждом поле
Данные и материалы20≥15 символов
Ожидаемый результат15≥15 символов
Критерии успеха15≥15 символов и есть цифра
Ограничения10≥10 символов
Пользователи10≥10 символов
Связь с бизнесом10контакт (email, телефон или @ник) и формат взаимодействия ≥8 символов

В каждом поле должно быть не меньше 4 разных букв или цифр.

Уровни: 0–39 — Черновик, 40–69 — Рабочая, 70–89 — Готовая, 90–100 — Приоритетная.

Ограничения

  • Нет сервера и регистрации. Данные хранятся в localStorage одного браузера и не синхронизируются между устройствами. Роли переключаются действиями в интерфейсе.
  • Рейтинг — эвристика полноты, а не проверка истинности фактов.
  • Локальная заглушка AI задаёт шаблонные вопросы по пустым полям.
  • Модель qwen2.5:3b используется только для русского и английского: вопросы появляются примерно за 3–9 секунд на тестовом ноутбуке. По-казахски модель пишет с ошибками, поэтому в казахском интерфейсе всегда работает локальная заглушка.
  • Прогресс учитывается одним этапом на отклик, полного трекера проекта нет.
  • Мобильная адаптация базовая.

Deployed-версия

Нет. Проект запускается локально.

Звёзды
⭐ 0
Форки
0
Язык
TypeScript
Последний push
в прошлом месяце
Коммиты
21
Авторы
4
Файлы
28
Ветки
3

Авторы коммитов

Ravil Serikuly 12khannn06 6Atlaanttt 2Y3sh1 2

История коммитов

  • 2026-09-23 17:55Merge pull request #7 from BAITC-Hacks/feat/domain-hardeningRavil Serikuly
  • 2026-09-23 17:551.0Ravil Serikuly
  • 2026-09-23 17:54Merge pull request #6 from BAITC-Hacks/feat/domain-hardeningRavil Serikuly
  • 2026-09-23 17:531.0Ravil Serikuly
  • 2026-09-23 17:31Merge pull request #5 from BAITC-Hacks/feat/domain-hardeningRavil Serikuly
  • 2026-09-23 17:280.9Ravil Serikuly
  • 2026-09-23 17:01Merge pull request #4 from BAITC-Hacks/feat/domain-hardeningRavil Serikuly
  • 2026-09-23 17:00UI/UX fixedRavil Serikuly
Все коммиты (21)
  • 2026-09-23 16:37fix: isolate scoring from AI clarification flowkhannn06
  • 2026-09-23 16:28Merge pull request #3 from BAITC-Hacks/codex/demo-presentationAtlaanttt
  • 2026-09-23 16:18fix: remove remaining Russian localization leakskhannn06
  • 2026-09-23 16:17refactor: localize interface and apply indigo design systemkhannn06
  • 2026-09-23 15:51Merge pull request #2 from BAITC-Hacks/feat/domain-hardeningRavil Serikuly
  • 2026-09-23 15:48Merge origin/feat/domain-hardening: combine parallel domain hardeningRavil Serikuly
  • 2026-09-23 15:46feat: add localized display preferenceskhannn06
  • 2026-09-23 15:410.3Ravil Serikuly
  • 2026-09-23 15:32Merge pull request #1 from BAITC-Hacks/codex/demo-presentationAtlaanttt
  • 2026-09-23 15:31feat: harden task domain and AI fallbackY3sh1
  • 2026-09-23 15:22feat: localize demo presentation componentskhannn06
  • 2026-09-23 15:070.2Y3sh1
  • 2026-09-23 14:230.1khannn06
Структура репозитория (28 файлов)
.env.example
.gitignore
README.md
docs/COMPLIANCE.md
docs/DOMAIN_HANDOFF.md
index.html
package-lock.json
package.json
server/task-doctor.mjs
src/App.tsx
src/components/AiContract.tsx
src/components/DemoJourney.tsx
src/components/Preferences.tsx
src/components/ScorePanel.tsx
src/components/TaskEditor.tsx
src/data/seed.ts
src/lib/ai.ts
src/lib/i18n.ts
src/lib/proposals.ts
src/lib/recommendations.ts
src/lib/scoring.ts
src/lib/storage.ts
src/main.tsx
src/styles.css
src/types/domain.ts
src/vite-env.d.ts
tests/domain.test.mjs
tsconfig.json
Ветки (3)

Обсуждение 0 комментариев

Войдите, чтобы комментировать

Пока нет комментариев — будьте первым.