SanaBusiness
React-MVP в духе Challenge Hub: бизнес описывает задачу, AI задаёт уточняющие вопросы и заполняет карточку, система оценивает готовность задачи и…
О проекте
Команда: LogicX
Кейс HackAlem.ai: Образование — AI Sana
Стадия: Рабочий MVP
Задача кейса: Challenge Hub: превратить задачу бизнеса в задание для студенческих команд
Суть
React-MVP в духе Challenge Hub: бизнес описывает задачу, AI задаёт уточняющие вопросы и заполняет карточку, система оценивает готовность задачи и публикует её в каталоге, а студенческие команды отправляют отклики, которые бизнес принимает или отклоняет.
Как устроено
React-интерфейс отправляет короткое описание в серверный эндпоинт /api/ai (Vite middleware). Там OpenAI Responses API с JSON-схемой генерирует уточняющие вопросы и автозаполнение полей, а ответ проходит валидацию. calculateScore.js считает рейтинг готовности по набору взвешенных критериев. Отклики команд (идея, план, срок, ссылка на прототип) валидируются и получают статусы; всё состояние хранится в localStorage.
Ключевые решения
- JSON Schema structured output
- AI-опросник
- взвешенный рейтинг готовности
- mock AI режим
Особенности
Есть mock-режим AI, так что демо работает без ключа. Команда в README прямо указывает, что шаг 8 ТЗ (баллы студентам за этап) не реализован.
Стек
React 18 · Vite · Tailwind CSS · Node.js · localStorage · node --test
Модели
gpt-4o-mini
Проект создан за 5 часов на финале хакатона HackAlem.ai (23 сентября 2026, Астана). Код — BAITC-Hacks/hack-c09433ab-logicx.
README
README.mdHackAlem AI — LogicX
Описание проекта
SanaBusiness — это MVP-платформа для бизнес-задач, которая помогает структурировать идею, оценивать её готовность к реализации и находить подходящие студенческие команды для выполнения проекта. Решение создано как демонстрационный продукт для хакатона и предназначено для двух ролей: бизнеса и команды.
Бизнес может быстро описать задачу, получить уточняющие вопросы от AI, проверить предварительный рейтинг готовности и опубликовать карточку в каталоге. Команда может найти подходящий проект, отправить отклик, указать идею решения, план работ, срок и ссылку на прототип, после чего бизнес принимает решение: выбрать команду, отклонить отклик или вернуть его на доработку.
Проблема, которую решает проект
Часто бизнес описывает задачу слишком коротко, поэтому студентам сложно понять, за что браться. В таком виде задача не всегда достаточно ясна, плохо структурирована и не имеет понятных критериев качества. SanaBusiness помогает перевести неформальную идею в понятную карточку с ограничениями, критериями и ожидаемым результатом.
Что реализовано
- Формирование карточки задачи в режиме бизнеса;
- AI-опросник для уточнения ключевых моментов задачи;
- предварительная оценка готовности задачи по набору критериев;
- каталог опубликованных задач с сортировкой по рейтингу;
- режим команды для отправки откликов;
- статусы откликов: на рассмотрении, выбрана, отклонена;
- редактирование опубликованной задачи бизнесом;
- сохранение состояния в localStorage браузера;
- проверка данных при валидации ответов и ссылок на прототип;
- поддержка серверной интеграции с OpenAI для AI-подсказок.
Основной пользовательский сценарий
- Бизнес открывает интерфейс в роли «Бизнес».
- Он описывает задачу в краткой форме.
- AI задаёт уточняющие вопросы и помогает заполнить поля карточки.
- Система оценивает готовность задачи по рейтингу.
- Бизнес подтверждает карточку и публикует её в каталоге.
- Команда в роли «Команда» открывает задачу и отправляет отклик.
- Бизнес просматривает отклики, выбирает подходящую команду или отклоняет часть заявок.
- Данные сохраняются локально в браузере и доступны после перезагрузки страницы.
Технологии
Frontend
- React 18
- Vite
- JavaScript / JSX
- Tailwind CSS
Backend / server-side
- Node.js
- Vite dev/preview middleware
- собственный API endpoint
/api/ai
AI и интеграции
- OpenAI Responses API
- модель по умолчанию:
gpt-4o-mini - переменные окружения:
OPENAI_API_KEY,OPENAI_MODEL
Инструменты и проверки
- Node.js test runner (
node --test) - Vite build
- локальное хранение в
localStorage
Архитектура проекта
Проект состоит из нескольких ключевых частей:
src/App.jsx— координация состояния приложения, роли пользователя и бизнес-логики.src/components/TaskForm.jsx— форма создания задачи и AI-подсказок.src/components/Catalog.jsx— каталог задач и фильтрация/сортировка.src/components/TaskDetails.jsx— карточка задачи, отклики команды и управление решениями бизнеса.src/components/TaskEditor.jsx— редактор уже опубликованной задачи.src/utils/calculateScore.js— расчёт рейтинга готовности задачи.src/utils/submissions.js— валидация откликов, безопасные ссылки, статусы решений.src/utils/taskEditing.js— логика редактирования и подтверждения изменений.server/ai.js— серверный слой для вызова OpenAI и проверки входных данных.server/check-ai.js— проверка AI-сервиса через HTTP.data/initialData.jsonиsrc/data/initialData.json— стартовые данные для демонстрации и совместимости.
Основной поток взаимодействия:
- пользовательский интерфейс React отправляет запросы к серверному
/api/ai; - сервер вызывает OpenAI с JSON-схемой;
- ответ проходит валидацию и используется для заполнения карточки или подсказки;
- данные хранятся в
localStorageбраузера и используются далее в интерфейсе.
Установка и запуск
Требования
- Node.js 20+ (в проекте проверялся на Node.js 22)
- доступ к OpenAI API key для AI-функций
Шаги установки
- Клонируйте репозиторий.
- Установите зависимости:
npm install
- Создайте файл
.envрядом сpackage.jsonна основе.env.example:
cp .env.example .env
На Windows PowerShell:
Copy-Item .env.example .env
- В
.envдобавьте ключ OpenAI:
OPENAI_API_KEY=your_key_here
OPENAI_MODEL=gpt-4o-mini
Ключ не должен попадать в Git-репозиторий. В проекте используется
.env.exampleкак шаблон.
Запуск проекта
Локальная разработка
npm run dev
После этого откройте адрес, который покажет Vite в терминале.
Проверка сборки
npm run build
npm run preview
Не открывайте
dist/index.htmlнапрямую. Для корректной работы AI и приложения нужен HTTP-сервер.
Запуск тестов
npm test
Проверка AI напрямую
npm run ai:check
Эта команда выполняет реальные вызовы к OpenAI и может потребовать API-кредиты.
Как проверить решение
Для жюри можно повторить следующий сценарий:
- Открыть проект в браузере.
- В роли «Бизнес» ввести краткую идею задачи.
- Использовать AI-уточнение, чтобы получить вопросы и заполнить карточку.
- Подтвердить и опубликовать задачу в каталоге.
- Переключиться в роль «Команда» и открыть карточку.
- Заполнить отклик: идея решения, план, срок, ссылка на прототип.
- Отправить отклик.
- Вернуться в роль «Бизнес» и принять или отклонить отклик.
- Перезагрузить страницу и убедиться, что данные сохраняются.
- Проверить, что поля с пустыми значениями или некорректной ссылкой не проходят валидацию.
Данные и интеграции
Источники данных
- стартовые демо-данные в
data/initialData.json; - локальные данные в
localStorage; - миграция старых данных через
src/utils/demoState.js.
Внешние сервисы
- OpenAI Responses API для генерации вопросов и подсказок;
- Vite dev server и preview server для доступа к
/api/ai.
Ограничения по данным
- данные хранятся только в локальном браузерном хранилище;
- авторизация между пользователями не реализована;
- роли демонстрационные и используются только в UI.
Ограничения текущей версии
- Проект является демонстрационной MVP-версией, а не полноценной production-системой.
- AI работает только через серверный endpoint и требует корректного
.envсOPENAI_API_KEY. - Статическая сборка без HTTP-сервера не поддерживает AI-функции.
- В текущей версии отсутствует реальная синхронизация между устройствами и пользователями.
- В проекте не реализованы баллы студентам за подтверждённый этап по шагу 8 ТЗ, что отмечено в документации команды.
- Для полного демонстрационного сценария нужно вручную проверить интерфейс в браузере.
Deployed-версия
Ссылка на deployed-версию в текущем репозитории не указана. Проект представляет собой локальную демонстрационную версию, рассчитанную на запуск в среде разработчика или на локальном сервере.
Дополнительные материалы
- TEAM_TASKS.md — распределение задач и финальная проверка команды.
- prompts.txt — исходные AI-промпты.
- server/ai.js — серверная логика AI.
Итог
SanaBusiness — это локальная демонстрационная платформа, которая объединяет AI, бизнес-задачи и командный поиск исполнителей. Она позволяет структурировать задачу, оценивать её готовность, публиковать проект в каталоге и управлять откликами команд, оставаясь в пределах MVP-подхода и реального репозитория проекта.
Авторы коммитов
История коммитов
- 2026-09-23 17:55Update project name from LogicX to SanaBusinessDilnaz
- 2026-09-23 17:54Rename project from LogicX to SanaBusinessDilnaz
- 2026-09-23 17:53Update project name from LogicX to SanaBusinessDilnaz
- 2026-09-23 17:50Revise README for HackAlem AI projectDilnaz
- 2026-09-23 17:39Rebrand application as SanaBusinessAdolf
- 2026-09-23 17:25Improve AI hints and remove demo badgeAdolf
- 2026-09-23 17:23Fix deadline input to date-onlyDilnaz
- 2026-09-23 17:03Fix header contrast and highlight active roleAdolf
Все коммиты (32)
- 2026-09-23 16:55Fix unclosed font styles and remove markdown fences from HTMLAdolf
- 2026-09-23 16:53Refactor App component for clarity and structurekakeseakerke02-oss
- 2026-09-23 16:52Refactor global styles and add custom colorskakeseakerke02-oss
- 2026-09-23 16:47Refactor HTML structure and add favicon linkDilnaz
- 2026-09-23 16:39Add favicon.svg with cloud designDilnaz
- 2026-09-23 16:29Document reviewer API setup and preserve questionnaire answersAdolf
- 2026-09-23 15:52Connect server-side OpenAI API and document team verificationAdolf
- 2026-09-23 15:46Update TaskDetails component to display submissionskakeseakerke02-oss
- 2026-09-23 15:45Add team selection and response fields in TaskDetailskakeseakerke02-oss
- 2026-09-23 15:36Align score logic and task form with team updatesAdolf
- 2026-09-23 15:24WIP: sync local team updatesAdolf
- 2026-09-23 15:20Enhance AI service with mock mode and new promptskakeseakerke02-oss
- 2026-09-23 15:14Refactor aiService.js for mock AI functionalityDilnaz
- 2026-09-23 15:13Refactor TaskDetails component for improved readabilitykakeseakerke02-oss
- 2026-09-23 15:11Refactor App component for improved readabilitykakeseakerke02-oss
- 2026-09-23 15:05Refactor ScoreBadge component for improved claritykakeseakerke02-oss
- 2026-09-23 15:04Add new fields and improve task confirmation logickakeseakerke02-oss
- 2026-09-23 15:01Refactor calculateScore function and weightskakeseakerke02-oss
- 2026-09-23 14:47Update MVP with Smart Builder and score flowAdolf
- 2026-09-23 14:34Add AI prompts for business task analysis and suggestionsDilnaz
- 2026-09-23 14:30Add AI prompts for questionnaire and autofillDilnaz
- 2026-09-23 14:29Merge pull request #1 from BAITC-Hacks/initial-datakakeseakerke02-oss
- 2026-09-23 14:21Initial MVP: AI task builderAdolf
- 2026-09-23 14:17Create initialData.json with project datakakeseakerke02-oss
Структура репозитория (40 файлов)
.env.example .gitignore README.md TEAM_TASKS.md data/initialData.json favicon.svg index.html package-lock.json package.json postcss.config.js prompts.txt server/ai.js server/check-ai.js src/App.jsx src/components/Catalog.jsx src/components/ScoreBadge.jsx src/components/ScoreBreakdown.jsx src/components/TaskDetails.jsx src/components/TaskEditor.jsx src/components/TaskForm.jsx src/components/TaskPanel.jsx src/data/initialData.json src/index.css src/main.jsx src/services/aiService.js src/services/mockAiService.js src/utils/aiValidation.js src/utils/calculateScore.js src/utils/demoState.js src/utils/questionAnswers.js src/utils/submissions.js src/utils/taskEditing.js tailwind.config.js tests/aiServer.test.js tests/aiValidation.test.js tests/quality.test.js tests/questionAnswers.test.js tests/taskEditing.test.js tests/workflow.test.js vite.config.js
Ветки (2)
Обсуждение 0 комментариев
Войдите, чтобы комментироватьПока нет комментариев — будьте первым.