AAYMA
RU
Войти

AI Sana MVP

MVP Challenge Hub на Node.js: бизнес вводит черновик задачи, локальный помощник задаёт уточняющие вопросы, из ответов собирается карточка с…

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

О проекте

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

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

Суть

MVP Challenge Hub на Node.js: бизнес вводит черновик задачи, локальный помощник задаёт уточняющие вопросы, из ответов собирается карточка с рейтингом готовности, команды откликаются, бизнес выбирает команду и подтверждает этапы.

Как устроено

Черновик → analyzeDraft (локальная заглушка по PROMPT) выдаёт 3–6 вопросов по недостающим критериям, parseAIResponse валидирует JSON и при ошибке переключается на local-fallback → редактируемая карточка подтверждается → рейтинг 20+20+15+15+10+10+10 → публикация в каталоге. assistant.mjs подбирает задачи по навыкам, есть отклики, сравнение предложений, этапы с баллами и защита от повторного начисления. Данные в SQLite.

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

  • rule-based анализ полноты
  • взвешенный рейтинг готовности
  • валидатор AI-ответа с fallback
  • поиск по навыкам

Особенности

Контракт AI-адаптера (вход, выход, валидатор, fallback) описан и покрыт тестами, так что локальную заглушку можно заменить на реальный LLM; приложение без внешних зависимостей, есть сценарий демо на 5 минут.

Стек

Node.js · SQLite · JavaScript · HTML/CSS


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

README

README.md

AI Sana — MVP каталога задач

Демо для кейса HackAlem AI: сервис превращает короткое описание бизнес-задачи в понятный бриф, показывает рейтинг готовности и публикует задачу в каталоге команд.

Как запустить

Нужен Node.js 24 или новее. Внешние зависимости не нужны. Откройте терминал в папке репозитория:

npm start

Откройте локальный сайт. Для проверки выполните npm test. В Windows также можно запустить start-site.cmd.

Открывать index.html двойным щелчком или через Python http.server больше не нужно: сайт использует API и SQLite. Данные сохраняются в data/sana.sqlite (исключён из Git). PORT и SANA_DB позволяют задать порт и отдельную базу.

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

  • ввод черновика бизнес-задачи;
  • локальные контекстные уточняющие вопросы и ввод ответов;
  • рейтинг готовности и рекомендации;
  • каталог задач;
  • настоящая публикация задач и сохранение откликов на сервере;
  • кабинет бизнеса с выбором команды-исполнителя.
  • рабочая навигация между экранами;
  • понятная форма с живым рейтингом готовности;
  • встроенный AI-помощник с подсказками;
  • подбор задач по профессии и навыкам прямо в AI-чате;
  • регистрация по телефону или электронной почте и личный профиль;
  • сохранение профилей, задач, откликов и этапов в SQLite;
  • поиск и фильтры по каталогу;
  • полноценные отклики: отправка, редактирование, отзыв и статусы;
  • сравнение предложений и ручной выбор одной, нескольких или ни одной команды;
  • подтверждение бизнесом фактического результата этапа перед начислением баллов;
  • серверная проверка владельца, валидация и защита от повторного начисления;
  • автоматические тесты сквозного API-сценария с разными аккаунтами и перезапуском сервера.

Соответствие требованиям кейса

  1. Бизнес вводит короткий черновик задачи.
  2. Локальный помощник определяет пробелы и задаёт контекстные вопросы; для продолжения обязательны минимум три ответа.
  3. Из ответов собирается редактируемая карточка, которую бизнес подтверждает отдельным действием.
  4. Рейтинг начисляется только после подтверждения полей. Веса: контекст 20, материалы 20, результат 15, критерии успеха 15, ограничения 10, пользователи 10, связь с бизнесом 10.
  5. Подтверждённая карточка публикуется в каталоге и занимает место по рейтингу.
  6. Специалист или команда находит задачу через каталог либо AI-рекомендации и отправляет предложение.
  7. Бизнес сравнивает предложения и может выбрать одну, несколько или ни одной команды.
  8. После выбора фиксируются этапы фактического прогресса и начисляются баллы за каждый подтверждённый результат.

Демонстрация до 5 минут

Откройте «Демо для жюри · бизнес и 5 команд». Это отдельные синтетические аккаунты; настоящие данные туда вводить не нужно. Действия в них сохраняются. Обычная регистрация и профили тоже работают.

  1. 0:00–1:30. Выберите «Демо-бизнес». В «Мои задачи» продолжите черновик, ответьте минимум на три вопроса, соберите редактируемую карточку, подтвердите и опубликуйте её. Покажите семь слагаемых рейтинга и опубликованную карточку в активных заданиях.
  2. 1:30–2:15. В каталоге покажите сортировку, поиск и уровни готовности. Низкий рейтинг не скрывает карточку и не блокирует отклик. Через «Дополнить задачу» добавьте сведения: старый рейтинг остаётся до подтверждения; затем карточка пересчитывается без потери откликов.
  3. 2:15–3:00. Переключитесь на kooper. В помощнике напишите «найди мне работу, я специалист IT». Откройте проект и отправьте идею, план, срок и ссылку.
  4. 3:00–4:00. Вернитесь в «Демо-бизнес» → «Мои задачи». Сравните предложения и вручную подтвердите одну, несколько или ни одной команды. Для быстрого сравнения уже есть пять предложений к задаче «Помощник службы поддержки студентов».
  5. 4:00–5:00. Выбранной командой отправьте результат первого этапа. До проверки баллов нет. Бизнесом примите этап: в профиле команды появится 20 баллов. Обновите страницу и покажите сохранённый результат.

Рейтинг и данные

Баллы начисляются за заполненные и подтверждённые поля: 20 + 20 + 15 + 15 + 10 + 10 + 10 = 100. Для связи с бизнесом нужны одновременно контакт, формат консультаций и порядок обратной связи. Заглушки вроде «неизвестно» не считаются заполнением. Критерий успеха должен содержать проверяемое условие; в MVP это локальная текстовая эвристика, а не доказательство содержательной корректности.

Уровни: 0–39 — черновик, 40–69 — рабочая, 70–89 — готовая, 90–100 — приоритетная. Общий каталог доступен при любом рейтинге; рекомендации включают только открытые задачи от 40 баллов. Черновик готовности — опубликованная карточка низкого качества; личный неопубликованный черновик виден только автору.

При первом запуске seed.mjs загружает fixtures/synthetic.json: 5 черновиков, 5 опубликованных карточек, 5 профилей команд и 5 предложений. Есть все четыре уровня (100, 75, 55, 30 и 0 баллов). Загрузка идемпотентна: перезапуск не дублирует примеры и не сбрасывает результаты. Старые пользовательские записи сохраняются. Переменная SANA_DEMO=0 отключает демо-вход и начальную загрузку примеров; существующие данные не удаляются.

AI-функция и контракт

Работает разрешённая кейсом локальная заглушка, без внешнего LLM и API-ключа. server.mjs вызывает analyzeDraft из ai.mjs. Полный промпт находится в экспортируемой константе PROMPT: анализировать только переданный черновик, задавать 3–6 вопросов по пропущенным критериям, не придумывать факты и не выбирать исполнителя.

Вход для адаптера:

{
  "draft": {"problem": "Студенты долго ждут ответы поддержки", "category": "Образование"},
  "missingCriteria": [{"key": "goal", "label": "Критерии успеха", "points": 15}]
}

Фрагмент формата выхода (в полном ответе 3–6 уникальных вопросов):

{"questions":[{"key":"goal","label":"Какой измеримый результат покажет, что проблема решена?","hint":"Например: сократить время ожидания с 20 до 5 минут."}]}

parseAIResponse проверяет JSON, число вопросов, допустимые и уникальные ключи, типы и длину текста. При ошибке генератора или неверном ответе analyzeDraft возвращает локальные вопросы с mode: "local-fallback" и понятным уведомлением. Входные поля не изменяются; ответы и карточку подтверждает человек. Тесты проверяют некорректный JSON, пустые/неверные/повторные вопросы и сохранность входа.

assistant.mjs использует актуальный каталог: ищет проекты по профессиональным навыкам, сообщает об отсутствии совпадений, открывает нужные разделы и объясняет рейтинг. Персональные чувствительные признаки для подбора не используются. Помощник не назначает команды, не публикует карточки и не выдаёт проекты за гарантированные вакансии.

Ограничения и следующий этап

Это локальный хакатонный прототип команды kooper. SMS/почтовое подтверждение и восстановление пароля не подключены. Вход работает по почте/телефону и паролю. Подбор и уточнения работают локально по правилам, внешний LLM не используется. Система не придумывает ответы за бизнес и не назначает исполнителей.

Не производственная система: нет внешних уведомлений, файлового хранилища и сложной ролевой модели. SQLite и сервер по умолчанию работают только на локальном компьютере. Перед публичным размещением нужны отдельная оценка безопасности, HTTPS и отключение демо-входа. Синтетические ссылки иллюстрируют формат и не доказывают реальную работу команды; результаты проверяет бизнес.

Организационные правила участия (личное присутствие, бейдж, перерывы и личный вклад каждого участника) невозможно проверить или обеспечить кодом сайта. В правилах зачёта участия нет требования коммитить каждый час. История Git должна отражать реальную работу, не подменять личный вклад.

Структура

  • index.html, style.css, app.js — интерфейс.
  • server.mjs — HTTP API, SQLite, аккаунты и права доступа.
  • core.mjs — рейтинг, вопросы, рекомендации и этапы.
  • ai.mjs — подключённые анализ полноты, промпт, валидатор и восстановление при ошибке.
  • assistant.mjs — помощник по актуальным задачам и навыкам.
  • seed.mjs — безопасная начальная загрузка демонстрационных данных.
  • fixtures/synthetic.json — синтетические черновики, карточки, команды и предложения.
  • tests/workflow.test.mjs — тесты рейтинга, синтетических данных, прав, публикации, дополнений, откликов, этапов и перезапуска.
  • tests/search-assistant.test.mjs — тесты поиска, четырёх уровней, помощника и AI-контракта.
  • QA-REPORT.md — результаты трёх кругов проверки сайта и кода.
Звёзды
⭐ 0
Форки
0
Язык
JavaScript
Последний push
в прошлом месяце
Коммиты
7
Авторы
1
Файлы
17
Ветки
1

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

rashamma872-droid 7

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

  • 2026-09-23 17:25Complete hackathon workflow, demo data and confirmed readiness updatesrashamma872-droid
  • 2026-09-23 16:41Fix task publication visibility, live assistant and catalog searchrashamma872-droid
  • 2026-09-23 16:25Implement persistent eight-step workflow, readiness scoring and testsrashamma872-droid
  • 2026-09-23 15:21Redesign AI Sana interface and add interactive flowsrashamma872-droid
  • 2026-09-23 14:46Update AI Sana MVP with team selectionrashamma872-droid
  • 2026-09-23 14:10Add files via uploadrashamma872-droid
  • 2026-09-23 14:01Add files via uploadrashamma872-droid
Структура репозитория (17 файлов)
.gitignore
QA-REPORT.md
README.md
ai-sana-mvp.zip
ai.mjs
app.js
assistant.mjs
core.mjs
fixtures/synthetic.json
index.html
package.json
seed.mjs
server.mjs
start-site.cmd
style.css
tests/search-assistant.test.mjs
tests/workflow.test.mjs

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

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

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