AAYMA
RU
Войти

AI Sana

Веб-приложение, где бизнес создаёт задачу с AI-уточнениями, собирает и публикует карточку, а студенческие команды видят каталог и отправляют…

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

О проекте

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

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

Суть

Веб-приложение, где бизнес создаёт задачу с AI-уточнениями, собирает и публикует карточку, а студенческие команды видят каталог и отправляют предложения, которые бизнес принимает или отклоняет.

Как устроено

Фронтенд на HTML/CSS/JS обращается к PHP JSON API, данные хранятся в SQLite с миграциями. ai_helper.php по промпту (prompts/card_assistant.txt) генерирует уточняющие вопросы и карточку через внешнюю модель (AI_API_KEY, AI_MODEL), при ошибке включается локальный помощник. Рейтинг считает сервер по рубрике 20/20/15/15/10/10/10, баллы идут только за поля, подтверждённые бизнесом. Команды AI не выбирает, это делает человек.

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

  • рубрика рейтинга готовности
  • уточняющие вопросы
  • локальный fallback-помощник
  • SQLite-миграции

Особенности

Баллы рейтинга начисляются только за поля, которые бизнес явно подтвердил, а любая правка карточки снимает её с публикации до повторного просмотра. router.php закрывает по HTTP доступ к базе, .env и служебным файлам.

Стек

PHP 8.2 · SQLite · HTML/CSS/JS · Node.js (тесты) · Playwright · Python (API-тесты)


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

README

README.md

AI Sana

Единое приложение для задач бизнеса и предложений студенческих команд: HTML/CSS/JavaScript → PHP JSON API → SQLite, с AI-помощником на сервере.

Бизнес создаёт черновик, получает уточняющие вопросы, собирает и проверяет карточку, подтверждает поля и публикует задачу. Команды видят общий каталог, отправляют предложения и получают решение бизнеса. Все рабочие данные сохраняются в SQLite; браузер хранит выбранные идентификаторы и ещё не отправленные правки.

Быстрый запуск на Windows

Запустите start.cmd двойным щелчком или из PowerShell:

.\start.cmd

Откройте http://127.0.0.1:8000/. Окно сервера должно оставаться открытым; для остановки нажмите Ctrl+C. Другой порт: start.cmd -Port 8080.

Скрипт находит PHP в .tools/php/php.exe, PATH или XAMPP; можно задать полный путь через PHP_BINARY. В текущей рабочей папке переносимый PHP уже подготовлен в .tools/. Эта папка и база данных не входят в Git.

При переносе проекта нужен PHP 8.2+ с расширением pdo_sqlite. Внешний AI дополнительно использует curl. Node.js нужен только для тестов, сборки frontend нет. Без Windows-скрипта запуск такой:

php seed.php
php -S 127.0.0.1:8000 -t . router.php

seed.php создаёт схему и добавляет примеры только в пустую базу. Повторный запуск сохраняет существующие задачи, команды и решения. Для обновления схемы без примеров используйте php migrate.php. Открытие HTML через file:// не запускает backend.

AI

Без ключа работает локальный помощник: уточняющие вопросы и карточка на основе описания и ответов. Он не обращается к языковой модели и не выдумывает отсутствующие данные. Интерфейс показывает источник результата.

Для внешней модели скопируйте .env.example в .env, укажите свой AI_API_KEY и при необходимости AI_MODEL, затем перезапустите сервер. Переменные окружения имеют приоритет над .env, включая явно пустой ключ.

Запросы к внешнему AI выполняет PHP. При сетевой ошибке, отказе модели или некорректном ответе применяется локальный вариант. Ключ не передаётся в браузер. Фактический запрос с вашим ключом требует отдельной проверки; автоматические тесты проверяют транспорт на подменённых ответах и локальный режим без платных запросов.

Правила работы

  • Рейтинг считает сервер: контекст 20, данные 20, результат 15, критерии успеха 15, ограничения 10, пользователи 10, связь с бизнесом 10. Баллы начисляются только за непустое поле, явно подтверждённое бизнесом.
  • Уровни: 0–39 «Черновик», 40–69 «Рабочая», 70–89 «Готовая», 90–100 «Приоритетная».
  • Название, тема, потребность и формат взаимодействия редактируются отдельно, баллов не дают. Публикация требует названия, контекста и подтверждения просмотра всей карточки. Минимального порога рейтинга нет.
  • Изменение карточки снимает её с публикации до повторного просмотра.
  • Бизнес может принять несколько предложений, отклонить любое или отменить своё решение. AI не выбирает команды.
  • Профиль команды можно сохранить, повторно использовать и отредактировать с тем же идентификатором. «Мои предложения» показывает предложения выбранной команды.

Структура

ПутьНазначение
frontend/Единственный рабочий интерфейс, стили и HTTP-клиент
index.htmlПереход в основной интерфейс
api/Задачи, карточки, публикация, каталог, команды и предложения
ai_helper.php, prompts/Внешний AI, локальный помощник, проверка ответов
rating.phpЕдиная формула рейтинга
db.php, schema.sql, lib/migrations.phpSQLite и миграции
config.php, .env.exampleСерверная конфигурация AI
seed.php, data/Примеры для первого запуска
router.php, start.ps1, start.cmdОбщий запуск UI и API
tests/Проверки PHP, HTTP, frontend и браузерного сценария

Старые корневые копии JS/CSS удалены. ai-sana-frontend.zip — исходный исторический архив; приложение его не использует. SOURCE_CODE.md обновляется командой node scripts/export-source.cjs из рабочего frontend.

Проверки

Из корня проекта, когда PHP, Python 3 и Node.js доступны в PATH:

php -n tests/ai_helper_test.php
php -n tests/ai_transport_test.php
php tests/rating_test.php
php -n tests/config_test.php
python tests/api_test.py
python tests/ai_api_test.py --php php
npm ci
npm run test:frontend
npm run test:browser

В Windows для локально подготовленных инструментов:

$env:PHP_BINARY = (Resolve-Path .tools/php/php.exe).Path
$env:Path = "$(Resolve-Path .tools/node-v24.21.0-win-x64);$env:Path"
& $env:PHP_BINARY -n tests/ai_helper_test.php
& $env:PHP_BINARY -n tests/ai_transport_test.php
& $env:PHP_BINARY tests/rating_test.php
& $env:PHP_BINARY -n tests/config_test.php
python tests/api_test.py
python tests/ai_api_test.py --php $env:PHP_BINARY
npm.cmd run test:frontend
npm.cmd run test:browser

Браузерный тест использует установленный Microsoft Edge. Для другого окружения установите поддерживаемый Playwright браузер и укажите BROWSER_CHANNEL, например chromium или chrome. HTTP- и браузерные сценарии создают временные базы и не изменяют рабочую database.sqlite.

Проект рассчитан на локальную демонстрацию. Переключение роли не является авторизацией; для публичного сервиса нужна проверка пользователей и прав доступа. Запуск через router.php закрывает по HTTP базу, .env, служебные PHP-файлы и архивы.

Контракты: API.md, AI: AI_HELPER.md, интерфейс: FRONTEND.md, демонстрация: DEMO.md, приёмка: INTEGRATION_CHECKLIST.md.

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

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

daniyar280407 11NehonaYa 10diko-cat 5

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

  • 2026-09-23 17:31finalNehonaYa
  • 2026-09-23 17:13ggggdaniyar280407
  • 2026-09-23 16:51измена 3daniyar280407
  • 2026-09-23 16:42obonova ot promtaNehonaYa
  • 2026-09-23 16:36dNehonaYa
  • 2026-09-23 16:24Fix committed merge conflicts and preserve both API flowsNehonaYa
  • 2026-09-23 16:20jNehonaYa
  • 2026-09-23 16:18ai_obnovaNehonaYa
Все коммиты (26)
  • 2026-09-23 16:15такdaniyar280407
  • 2026-09-23 16:04фронтенд ждуdiko-cat
  • 2026-09-23 16:03wNehonaYa
  • 2026-09-23 15:52Merge branch 'main' of https://github.com/BAITC-Hacks/hack-9711a9ba-ddaniyar280407
  • 2026-09-23 15:51Merge branch 'main' of https://github.com/BAITC-Hacks/hack-9711a9ba-ddaniyar280407
  • 2026-09-23 15:50ъзхdaniyar280407
  • 2026-09-23 15:37api И data обновленияdiko-cat
  • 2026-09-23 14:50Merge branch 'main' of https://github.com/BAITC-Hacks/hack-9711a9ba-ddiko-cat
  • 2026-09-23 14:48api и datadiko-cat
  • 2026-09-23 14:46измена11daniyar280407
  • 2026-09-23 14:45Merge branch 'main' of https://github.com/BAITC-Hacks/hack-9711a9ba-ddaniyar280407
  • 2026-09-23 14:44readmeFinalNehonaYa
  • 2026-09-23 14:42Merge branch 'main' of https://github.com/BAITC-Hacks/hack-9711a9ba-ddaniyar280407
  • 2026-09-23 14:42измена1daniyar280407
  • 2026-09-23 14:38readme.trueNehonaYa
  • 2026-09-23 14:23readme obnovaNehonaYa
  • 2026-09-23 14:14база данныхdiko-cat
  • 2026-09-23 14:02началоdaniyar280407
Структура репозитория (67 файлов)
.env.example
.gitignore
AI_HELPER.md
API.md
DEMO.md
FRONTEND.md
INTEGRATION_CHECKLIST.md
README.md
SOURCE_CODE.md
ai-sana-frontend.zip
ai_helper.php
api/_common.php
api/cards.php
api/catalog.php
api/choose.php
api/generate.php
api/proposals.php
api/publish.php
api/questions.php
api/tasks.php
api/teams.php
config.php
data/cards_seed.json
data/proposals_seed.json
data/tasks_seed.json
data/teams_seed.json
db.php
frontend/business/card.html
frontend/business/new-task.html
frontend/business/proposals.html
frontend/business/questions.html
frontend/css/style.css
frontend/index.html
frontend/js/api.js
frontend/js/business.js
frontend/js/catalog.js
frontend/js/navigation.js
frontend/js/proposals.js
frontend/js/ratings.js
frontend/js/team.js
frontend/js/ui.js
frontend/team/catalog.html
frontend/team/my-proposals.html
frontend/team/profile.html
frontend/team/task-view.html
index.html
lib/migrations.php
migrate.php
package-lock.json
package.json
prompts/card_assistant.txt
rating.php
router.php
schema.sql
scripts/export-source.cjs
seed.php
start.cmd
start.ps1
tests/ai_api_test.py
tests/ai_helper_test.php
tests/ai_transport_test.php
tests/api_test.py
tests/config_test.php
tests/fixtures/schema_v0.sql
tests/frontend-flow.cjs
tests/frontend.test.cjs
tests/rating_test.php

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

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

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