Archibalt
Challenge Hub: AI-чат уточняет бизнес-проблему и собирает карточку задачи из 10 полей с детерминированным рейтингом готовности; студенческие команды…
О проекте
Команда: archibalt
Кейс HackAlem.ai: Образование — AI Sana
Стадия: Доведённый продукт
Задача кейса: Challenge Hub: превратить задачу бизнеса в задание для студенческих команд
Суть
Challenge Hub: AI-чат уточняет бизнес-проблему и собирает карточку задачи из 10 полей с детерминированным рейтингом готовности; студенческие команды откликаются, бизнес вручную выбирает команду и подтверждает этапы.
Как устроено
Бизнес без входа начинает чат (WebSocket), агент задаёт 3–10 уточняющих вопросов и предлагает варианты первого результата (быстрая модель gpt-5.4-mini), затем собирает карточку (gpt-6-sol) через OpenAI Responses API. Guard проверяет карточку на выдуманные факты, при сбое срабатывает mock. Рейтинг по 7 показателям с весами из ТЗ считается чистой функцией на Go (internal/rating), AI на балл не влияет. Go net/http раздаёт API и собранный Vite/React-фронт, данные в PostgreSQL 16 (карточка и рейтинг в jsonb); есть визуальный концепт задачи через gpt-image-1.
Ключевые решения
- OpenAI Responses API
- guard против выдуманных фактов
- mock-режим с повтором
- детерминированный рейтинг
- WebSocket-чат
- генерация визуального концепта gpt-image-1
- демо-OTP авторизация
Особенности
Выстроенный агентный процесс разработки: 245 коммитов, скилл jury-review, «Red Team Judge», протоколы передачи контекста между агентами, матрица приёмки и много research-файлов (конкуренты, UX, QA-кейсы рейтинга). Для уточнений и сборки карточки используются разные модели, генерируется визуальный концепт задачи.
Стек
Go · PostgreSQL 16 · React · Vite · TypeScript · Docker Compose · Makefile
Модели
gpt-6-sol · gpt-5.4-mini · gpt-image-1
Проект создан за 5 часов на финале хакатона HackAlem.ai (23 сентября 2026, Астана). Код — BAITC-Hacks/hack-fee6d244-archibalt.
README
README.mdArchibalt — AI Sana Challenge Hub: от бизнес-задачи к студенческой команде
Archibalt помогает бизнесу превратить описание проблемы в понятное задание, а студентам — найти реальный проект и предложить решение. AI уточняет потребность и собирает карточку; бизнес проверяет её, публикует и сам выбирает команду по откликам.
MVP для кейса «Рейтинг качества бизнес-задач и открытый выбор команд» (HackAlem AI, трек Education, задание 01). Официальное задание — TASK.md.
Какую проблему решаем
Запрос «нужно приложение для учёта заявок» ещё не объясняет, кто будет им пользоваться, какие данные есть и как проверить результат. Archibalt помогает уточнить эти сведения до начала работы со студенческой командой.
Рейтинг готовности 0–100 показывает, насколько подробно описана задача и чего не хватает. Бизнес дополняет карточку и подтверждает изменения — балл пересчитывается, позиция в каталоге обновляется. Даже на задачу с низким баллом можно откликнуться.
Как это работает
- Бизнес описывает проблему в чате без входа и готового ТЗ. AI задаёт минимум три уточняющих вопроса и предлагает варианты первого результата.
- Бизнес проверяет карточку из 10 полей: от контекста и данных до результата, критериев успеха и связи. Перед сборкой нужен демо-вход; текст можно исправить вручную.
- Подтверждённая задача попадает в каталог. Рейтинг объясняет начисленные баллы и подсказывает, что дописать. По умолчанию выше стоят более готовые задачи.
- Студенческая команда выбирает проект и отправляет идею, план, срок и ссылку на прототип. Бизнес сравнивает предложения и вручную выбирает одну, несколько или ни одной команды. За подтверждённый бизнесом этап команда получает 10 баллов.
AI помогает оформить задачу; публикация, выбор команды и подтверждение результата остаются за человеком. Проверка текста AI снижает риск выдуманных фактов, но не заменяет проверку карточки заявителем.
Команда: Абылай (архитектура, бэкенд, AI, рейтинг), Ильяс (продукт, фронтенд, данные, демо). В работе использовались AI-инструменты разработки.
Быстрый запуск (для проверки экспертами)
Нужен Docker с Compose v2 (проверка: docker compose version). Раздел одинаков для macOS, Linux и Windows. Аккаунт OpenAI и API-ключ не нужны: без OPENAI_API_KEY AI работает в локальном mock-режиме с тем же форматом входа и выхода. Для действий бизнеса и команды используется демо-вход по email или телефону с кодом 000000; код никуда не отправляется.
git clone https://github.com/BAITC-Hacks/hack-fee6d244-archibalt.git
cd hack-fee6d244-archibalt
docker compose up --build
Откройте http://localhost:8080. Оба порта слушают только 127.0.0.1: 8080 (приложение) и 5432 (Postgres). Если 8080 занят: APP_PORT=8081 docker compose up --build. Проверка, что всё живо: http://localhost:8080/api/health → {"ok":true,"db":true,"ai_mode":"mock"}.
На пустой БД автоматически появятся 5 задач, 5 команд и 5 откликов. Начните с «Обсудить задачу» на главной или откройте каталог.
Живой AI через OpenAI (по желанию): скопируйте .env.example в .env, впишите OPENAI_API_KEY, перезапустите docker compose up --build. /api/health покажет ai_mode:"openai"; при сбое OpenAI система один раз повторяет запрос, откатывается на mock и показывает mock, не роняя сценарий.
Остановить контейнеры с сохранением данных: docker compose down. Удалить локальные данные и заново загрузить демо-набор: docker compose down -v, затем docker compose up --build.
Запуск без Docker (разработка)
Раздел для macOS/Linux; на Windows используйте Docker-запуск выше. Требуется Go 1.25+, Node 22+, PostgreSQL 16 (или make db, который поднимает только БД в Docker). Команды выполняются из корня репозитория.
Терминал 1 — база и API:
make db # postgres на localhost:5432, пароль hack
make run # Go API на :8080, seed загружается при пустой БД
Терминал 2 — фронтенд:
cd web
npm ci
npm run dev # http://localhost:5173, proxy /api → :8080
make run не загружает .env автоматически. Для живого AI экспортируйте переменные в терминале API перед запуском. Если вы уже заполнили собственный .env из примера:
set -a
. ./.env
set +a
make run
С другой БД задайте DATABASE_URL перед make run; make db в этом случае не нужен. Проверки описаны в разделе «Тестовые сценарии» ниже.
Параметры окружения
| Переменная | По умолчанию | Назначение |
|---|---|---|
PORT | 8080 | порт HTTP-сервера внутри контейнера; на хост Compose пробрасывает 127.0.0.1:${APP_PORT:-8080} |
APP_PORT | 8080 | только для Compose: порт приложения на хосте |
DATABASE_URL | postgres://postgres:hack@localhost:5432/hack?sslmode=disable | строка подключения Postgres; в Compose хост заменён на db |
OPENAI_API_KEY | пусто → mock | ключ OpenAI; не коммитить, .env в .gitignore |
OPENAI_MODEL | gpt-6-sol | модель для сборки карточки |
OPENAI_MODEL_FAST | gpt-5.4-mini в Compose | модель для уточняющих вопросов; при прямом запуске незаданное или пустое значение — как OPENAI_MODEL |
OPENAI_IMAGE_MODEL | gpt-image-1 | модель визуального концепта (POST /api/tasks/{id}/visual) |
OPENAI_IMAGE_QUALITY | low | качество визуального концепта |
SEED_DIR | ./seed | папка с демо-данными |
STATIC_DIR | ./web/dist | собранный фронт |
REQUIRE_TEAM_LOGIN | true | false — отклик без входа по team_id из тела (страховка для демо) |
DEMO_OTP | 000000 | общий демо-код входа бизнеса и команд; реальная отправка не реализована |
WS_ORIGINS | localhost:*,127.0.0.1:* | разрешённые Origin для WebSocket-чата, через запятую |
DEV_PROXY | пусто | адрес Vite (http://127.0.0.1:5173) для dev без сборки фронта |
TEST_DATABASE_URL | пусто → тесты store пропускаются | БД для интеграционных тестов internal/store |
Compose читает .env из корня сам; пустой OPENAI_MODEL_FAST там заменяется на gpt-5.4-mini. Чтобы использовать одну модель для всех текстовых вызовов, явно задайте одинаковые OPENAI_MODEL_FAST и OPENAI_MODEL.
Архитектура
web/ (Vite + React + TS) ──fetch /api/*──▶ Go net/http ──database/sql──▶ PostgreSQL 16
├─ internal/http хендлеры, валидация, SPA-раздача
├─ internal/rating формула рейтинга (чистая функция)
├─ internal/ai OpenAI Responses API + mock + Guard
├─ internal/store запросы, миграция db/schema.sql, seed
└─ internal/model типы = TS-типы фронта (API_CONTRACT.md)
- Один бинарник Go раздаёт и API (
/api/*), и собранный фронт (/, SPA-fallback). Одинdocker compose up. - Две роли: «Я бизнес / Я команда» переключаются на фронте; обе входят по email или телефону с демо-кодом
000000. Разговор с агентом начинается без входа (анонимный черновик); вход заявителя нужен, чтобы выбрать вариант результата или собрать карточку, править её, публиковать и решать по откликам — задача присваивается вошедшему. Команда входит перед откликом. Смотреть каталог можно без входа. Сессии хранятся в памяти API: после перезапуска нужен повторный вход. - Контракт API с типами и всеми эндпоинтами:
API_CONTRACT.md. - Схема БД:
db/schema.sql—teams,tasks(карточка вjsonb, рейтинг вjsonb+score),proposals,messages(чат по отклику),task_visuals(визуальный концепт).
Сквозной сценарий (ТЗ §2) → API
| Шаг | Экран | API |
|---|---|---|
| 1 Разговор без входа | чат с главной («Обсудить задачу») | POST /api/tasks {draft_text, industry, mode:"dynamic"} без токена → анонимный черновик |
| 2 Уточнение (3–10 вопросов, до 12 по запросу) | тот же чат | POST /api/tasks/{id}/next-question {answer}; варианты результата POST …/result-options |
| 2а Вход и присвоение | модалка «Войти» при сборке карточки | POST /api/auth/business/verify → business_token; POST /api/tasks/{id}/owner {}; POST …/apply-result, POST …/answers {} |
| 3 Карточка (редактируемая) | /task/:id/edit | PUT /api/tasks/{id}/fields |
| 4 Рейтинг и подсказки | там же | score, breakdown, missing в каждом ответе |
| 5 Публикация после подтверждения | кнопка «Подтвердить и опубликовать» | POST /api/tasks/{id}/confirm |
| 6 Каталог, отклик команды | /catalog, /task/:id | GET /api/tasks?industry=&level=, POST /api/tasks/{id}/proposals |
| 7 Ручной выбор бизнеса | /task/:id | POST /api/proposals/{id}/select / reject |
| 8 Баллы команде за этап | /task/:id | POST /api/proposals/{id}/confirm-stage (+10 баллов команде) |
Формула рейтинга готовности (ТЗ §4)
Рейтинг измеряет готовность конкретной задачи к работе со студентами, а не известность компании. Считается детерминированно в коде (internal/rating), AI на балл не влияет.
Семь показателей с весами из ТЗ, сумма 100:
| Показатель | Вес | Поля карточки | Полный балл, если |
|---|---|---|---|
| Контекст и потребность | 20 | context, need | оба поля содержательно описаны: что происходит сейчас и что нужно изменить |
| Данные и материалы | 20 | data | назван материал (выгрузка, таблица, CRM, API, примеры, интервью) и способ или срок передачи |
| Ожидаемый результат | 15 | expected_result | назван конкретный артефакт (прототип, отчёт, сервис, дашборд, модель) с функцией |
| Критерии успеха | 15 | success_criteria | есть число с метрикой или единицей, либо описан способ проверки |
| Ограничения | 10 | constraints | указаны сроки, технологии, доступы или иные границы |
| Пользователи | 10 | users | названа роль или группа, для кого решение |
| Связь с бизнесом | 10 | contact, interaction_format | пригодный контакт (email, Telegram, телефон) и канал с ритмом встреч или сроком ответа |
Начисление на показатель: 0 — пусто, заглушка (x, -, todo, «не знаю», в том числе внутри текста), текст без признаков короче трёх значимых слов, отказ без плана («данных не будет», «встреч не будет») или телефон из одинаковых цифр; половина веса (округление вниз) — заполнено, но признак полноты не найден (например, «передадим позже» без срока и способа); полный вес — условие из таблицы выполнено, причина называет найденный признак. У составных показателей половина, если закрыто одно поле из двух. Длина текста — вспомогательный сигнал, повтор фраз и пробелы балл не поднимают.
Известное ограничение: признаки — ключевые слова и регулярные выражения, а не понимание смысла. Осмысленный текст простыми словами без ключевых признаков получит половину веса, а длинная бессмыслица в полях «контекст» и «потребность» — полный. Список правил открыт в internal/rating/rating.go и на странице «Как работает AI».
score = Σ earned. Уровни: 0–39 черновик (виден в каталоге с пометкой), 40–69 рабочая (можно откликаться и рекомендовать), 70–89 готовая (повышенная позиция), 90–100 приоритетная (выделена). Низкий рейтинг задачу не скрывает и отклик не запрещает.
breakdown объясняет каждый показатель словами, missing перечисляет, что дописать и сколько это даст (gain = weight − earned), отсортировано по выгоде. Рейтинг пересчитывается при каждом сохранении.
Предварительный и официальный балл. До ручного подтверждения балл предварительный, задачи нет в каталоге. Подтверждение публикует карточку с официальным баллом. Правка опубликованной карточки снимает её с каталога до повторного подтверждения (известное упрощение MVP: версия-снимок не хранится).
Правила каталога
- В каталоге только подтверждённые задачи. Все видны всем командам, ограничений на просмотр нет.
- По умолчанию:
scoreпо убыванию, при равенстве раньше опубликованная выше. В интерфейсе также есть «Сначала новые» и «Меньше откликов»; номер места на карточке остаётся местом по готовности во всём каталоге. - Фильтры: отрасль (
industry) и уровень готовности (level). В интерфейсе есть текстовый поиск; запрос, фильтры и выбранная сортировка сохраняются в URL. - Отклики не лимитируются: любая команда может откликнуться на любую задачу, включая черновики.
- Автоназначения нет: только ручные
select/rejectпо каждому отклику; можно выбрать 0, 1 или несколько команд. - Начать черновик и ответить на вопросы можно без входа. После присвоения задачи вошедшему заявителю только он может менять карточку, публиковать её и принимать решения по откликам (
select/reject/hold/confirm-stage). В текущем демо-наборе у всех пяти задач есть заявители; их контакты для проверки указаны ниже. - Рекомендации (
GET /api/teams/{id}/recommended) — дополнение: пересечение навыков и интересов команды со словами карточки, только задачи от уровня «рабочая»; общий каталог они не ограничивают.
AI-функция (ТЗ §5)
Вызовы OpenAI Responses API со строгой JSON-схемой (strict: true), без SDK. Промпты и схемы — в internal/ai/prompts.go, интерфейс с пояснениями — /ai, диагностика в JSON — GET /api/ai:
- Вопросы: уточнить проблему, рабочий сценарий и ожидаемую пользу; минимум три вопроса. Пошаговый режим описан ниже, API также поддерживает получение списка вопросов сразу.
- Карточка: собрать 10 полей только из черновика и ответов; для отсутствующих сведений вернуть пустую строку.
Визуальный концепт (необязательно): после выбора варианта первого результата агент сам рисует картинку через OpenAI GPT Image (gpt-image-1, quality=low) — ключевой экран, схему процесса или пример отчёта по полям карточки; подпись «Концепт для обсуждения, не обещание объёма».
Без ключа — помеченная mock-заглушка; ошибка генерации не блокирует сборку карточки (internal/ai/image.go, internal/http/visual.go).
Пошаговый режим (mode: "dynamic", эндпоинт POST /api/tasks/{id}/next-question): агент задаёт по одному вопросу с учётом всего разговора. Промпт направляет его сначала разобраться в проблеме, пользователях и рабочем процессе, затем предложить подходящий первый результат и способ проверки. Частичный ответ можно уточнить; исправления и отказ от предложенного решения учитываются в следующих вопросах. Варианты ответов служат подсказками, можно написать свой текст. Контакт разрешено дописать в редакторе.
Минимум — 3 вопроса; 10 — предохранитель от бесконечного разговора, а не обязательная длина беседы. Кнопка «Спросить ещё» позволяет продолжить до 12 вопросов всего. Код ограничивает повтор одной темы двумя вопросами и учитывает явный пропуск; ответ «данных нет» считается сведением для диалога, но не даёт баллов за готовность данных. В чате можно раскрыть предварительную карточку и её балл. Итоговую карточку собирает вызов с Guard, затем её проверяет человек. Mock использует заготовленные вопросы и правила вместо смыслового анализа моделью.
Защита от выдуманных фактов (internal/ai/guard.go, работает и для OpenAI, и для mock): каждое непустое поле, включая название, проверяется на пересечение слов с исходным текстом пользователя, а любое число должно встречаться в исходнике рядом с тем же словом («2 недели» нельзя превратить в «2 оператора»); иначе поле очищается. Последний реальный вызов с сырым ответом модели и списком вырезанных полей виден в GET /api/ai → last_call. Ограничение: для полей «контекст» и «потребность» смена смысла через отрицание словами из исходника не ловится (для остальных полей полярность проверяется), поэтому карточку подтверждает человек. Человек редактирует и подтверждает карточку до публикации.
Обработка ошибок текстового AI: таймаут 10 с на попытку, при ошибке сети, статуса или невалидного JSON один повтор, затем локальный mock с тем же форматом; текст последней ошибки виден в GET /api/ai → last_error. Mock детерминирован: вопросы по таблице ключевых слов и приоритету весов, карточка из ответов. У генерации изображения отдельный таймаут 60 с; ошибка показывается без подмены картинки mock-заглушкой.
Пример живого вызова OpenAI на слабом черновике (вопросы, собранная карточка, что вырезал Guard): docs/ai-live-sample.json; текущее состояние — GET /api/ai → last_call.
AI не выставляет баллы, не выбирает команды и не публикует задачи. Персональные признаки участников не используются.
Тестовые сценарии
Из корня репозитория:
make test # формула, AI, хендлеры; без внешнего AI и БД
npm --prefix web ci
npm --prefix web run build # проверка TypeScript и сборка фронтенда
Тесты хранилища без TEST_DATABASE_URL пропускаются. Они создают и удаляют собственную временную схему, не затрагивая таблицы приложения. После make db запустите:
TEST_DATABASE_URL='postgres://postgres:hack@localhost:5432/hack?sslmode=disable' go test ./internal/store/
Go-тесты проверяют формулу (включая заглушки), AI (mock, Guard, откат при 500), хендлеры (сквозной путь и ошибки 400/404), а с тестовой БД — миграцию, seed, внешние ключи и баллы за этап.
Ручная проверка основного сценария (5 минут, всё в интерфейсе):
- Открыть
/catalogна свежей БД: видны 5 демо-задач со всеми четырьмя уровнями от «черновик» до «приоритетная», сортировка по баллу, фильтры работают. - «Обсудить задачу» на главной открывает чат сразу, без входа. Ожидаемо: агент задаёт не меньше 3 вопросов с кнопками-подсказками (в mock — по ключевым словам черновика). Агент спрашивает, чем занимается бизнес и что мешает; первое сообщение становится черновиком, например: «Нужно приложение для учёта заявок, сейчас всё в Excel и теряется». Дальше — по одному вопросу с подсказками-кнопками. Проверить, что вопросы уточняют проблему и ожидаемый результат; при непонятном ответе агент помогает уточнить тему, при явном пропуске идёт дальше. Минимум 3 вопроса, предел 10; «Спросить ещё» после завершения — до 12.
- После вопросов агент предлагает 2–3 варианта первого проверяемого результата (результат / как проверим / что нужно / ~недель · оценка AI). «Выбрать» → появляется модалка входа заявителя (например,
[email protected], код000000, демо-режим) — беседа сохраняется, задача присваивается вошедшему. После выбора агент сам рисует визуальный концепт (GPT Image; без ключа — помеченная заглушка), «Собрать карточку» его не ждёт. Заявители пяти стартовых задач (чтобы показать решение бизнеса по откликам на seed-данных):[email protected],[email protected],[email protected],[email protected],[email protected]— задачи 1–5 соответственно, код000000. - «Собрать карточку» → редактор: проверить соответствие текста черновику, ответам и выбранному результату. Исправить неточности, проверить незаполненные поля. Балл, разбивка по 7 показателям, список «что дописать» с
+N. - Дописать критерии успеха с числом («снизить время обработки на 30%») и контакт с email и ритмом созвонов → сохранить → балл вырос, уровень изменился.
- «Подтвердить и опубликовать» → задача в каталоге на позиции по баллу.
- Переключиться в режим «Я команда» → открыть задачу → отправить отклик (идея, план, срок, ссылка). Вход команды: «Я команда» → любой email или телефон (например,
[email protected]) → код000000(демо-режим, код не отправляется, подсказка на экране); новый контакт создаёт новую команду. Второй отклик: выйти, войти как[email protected], отправить отклик на ту же задачу. - Режим «Я бизнес» → вход тем же контактом, что на шаге 3 (
[email protected]; для seed-задачи 1 —[email protected]) → «Мои задачи»: кто откликнулся и статусы → выбрать один отклик, отклонить другой. Можно выбрать несколько или отклонить все. - (Дополнительно) «Подтвердить этап» у выбранного отклика → команде начислены баллы.
В интерфейсе и через API (см. API_CONTRACT.md): «Мои отклики» (GET /api/me); «Мои задачи» заявителя (/api/business/me: отклики с командой, статусом и датами); принятие проекта командой (accept/decline); чат команды и заявителя по отклику (REST + WebSocket). Проверки серверной логики — в internal/http/*_test.go, сценарий через curl — в контракте.
Проверка ошибок: пустой черновик → сообщение, отклик без ссылки → сообщение, /api/tasks/999 → 404.
Тот же сценарий через curl — в API_CONTRACT.md; демо-набор — в seed/. Сервер загружает tasks.json, teams.json и proposals.json; drafts.json содержит 5 исходных описаний для ручной проверки и не создаёт дополнительных задач в БД.
Служебные файлы репозитория
Код продукта: cmd/, internal/, db/, web/, seed/, Dockerfile, docker-compose.yml. Остальные Markdown-файлы в корне (кроме TASK.md с заданием и API_CONTRACT.md с контрактом API) и папка research/ — рабочие заметки команды, на запуск не влияют.
Границы MVP и ограничения
- Есть две роли и демо-вход. Полноценная регистрация, восстановление доступа и реальная отправка email/SMS не реализованы; общий код
000000предназначен для демонстрации. - Рейтинг и проверка текста AI основаны на правилах и могут ошибаться. Карточку перед публикацией проверяет человек.
- Неопубликованную задачу можно прочитать по числовому ID; анонимный черновик до присвоения не защищён отдельным секретом.
- Правка опубликованной карточки убирает задачу из каталога до повторного подтверждения.
- Нет уведомлений, файлового хранилища, платежей, полного трекера проекта и инфраструктуры для промышленной эксплуатации.
Подробности и известные дефекты — в KNOWN_ISSUES.md. Текущее состояние командной приёмки — в STATUS.md.
Дальнейшее развитие
- Куратор AI Sana как эскроу. Третья роль (модератор платформы) держит грант или оплату на холде и выпускает после того, как обе стороны подтвердили этап. Механика статусов
selected → accepted → этап подтверждёнуже в API, статусon_holdзаложен; остаётся роль куратора и интеграция с платёжным или грантовым контуром. - Реальная отправка одноразовых кодов на email/SMS вместо демо-кода
000000. - Версия-снимок опубликованной карточки при правке, чтобы задача не пропадала из каталога.
- Рекомендации командам по смыслу, а не по пересечению слов.
Сторонние компоненты
| Компонент | Лицензия | Назначение |
|---|---|---|
Go stdlib (net/http, database/sql, encoding/json) | BSD-3 | сервер, БД, JSON |
github.com/jackc/pgx/v5 | MIT | драйвер PostgreSQL |
jackc/pgpassfile, jackc/pgservicefile, jackc/puddle/v2 | MIT | косвенные зависимости pgx |
golang.org/x/sync, golang.org/x/text | BSD-3 | косвенные зависимости pgx |
github.com/coder/websocket | ISC | WebSocket-чат отклика |
PostgreSQL 16 (Docker image postgres:16-alpine) | PostgreSQL License | база данных |
React 18, react-dom, react-router-dom 6, @types/react, @types/react-dom | MIT | фронтенд |
Vite 6, @vitejs/plugin-react, TypeScript 5 | MIT / Apache-2.0 | сборка фронта |
| OpenAI API (Responses) | по условиям OpenAI | AI-вопросы и карточка; опционально |
Docker-образы golang:1.26-alpine, node:22-alpine, alpine:3.22 | BSD-3 / MIT / смешанная (musl MIT, busybox GPL-2.0) | сборка и рантайм |
Транзитивные npm-зависимости — в web/package-lock.json. Демо-данные в seed/ синтетические, созданы командой. Код продукта (cmd/, internal/, db/, web/, seed/, Docker-файлы) написан во время соревновательной части 23.09.2026 13:00–18:00; до старта в репозитории были только правила хакатона, документы для AI-агентов и заметки исследования рынка (research/).
Авторы коммитов
История коммитов
- 2026-09-23 18:02Зафиксировать ссылку на запись демо без приёмкиiagadilov
- 2026-09-23 18:01Link demo recording in README and demo guideiagadilov
- 2026-09-23 17:49Добавь скачивание ТЗ и следующий шаг после выбора командыiagadilov
- 2026-09-23 17:49README: убери раздел про облако, запуск описан вышеabylay
- 2026-09-23 17:48README: как задеплоить в облакоabylay
- 2026-09-23 17:43Отметить готовность материалов демо без приёмкиiagadilov
- 2026-09-23 17:42Match demo proposal path to new student UIiagadilov
- 2026-09-23 17:42Add current jury hook and demo pathsiagadilov
Все коммиты (245)
- 2026-09-23 17:41Добавь быстрый отклик, подбор проектов и уведомления студентамiagadilov
- 2026-09-23 17:39Статус: чистый запуск и ревью README закрыты на 144989eabylay
- 2026-09-23 17:38README по замечаниям жюри: точные версии, порты, входы в сценарии, полный список компонентов; compose без env_file, APP_PORTabylay
- 2026-09-23 17:33Зафиксируй пересборку стенда с лендингомabylay
- 2026-09-23 17:32Отметь фактический пробел быстрого студенческого откликаiagadilov
- 2026-09-23 17:31Зафиксируй минимальный продуктовый путь студенческой ролиiagadilov
- 2026-09-23 17:30Верни анимированный лендинг и навигациюabylay
- 2026-09-23 17:24Персонализируй интерфейс для студента и бизнесаabylay
- 2026-09-23 17:22Опиши продукт и актуализируй READMEabylay
- 2026-09-23 17:19Направь диалог к выбору подходящего решенияabylay
- 2026-09-23 17:19Обнови контракт и проверки динамического диалогаabylay
- 2026-09-23 17:19Научи агента разбирать задачу и уточнять решениеabylay
- 2026-09-23 17:15Диалог: id сообщений сразу в push — пузырь 401 гасится после входаabylay
- 2026-09-23 17:14Статус: жюри №4abylay
- 2026-09-23 17:14Жюри №4: сводный отчёт Chair 81/100, техотбор пройден, сырые отчётыabylay
- 2026-09-23 17:11По жюри №4: README без противоречий про вход и гарантию, лимит генераций концепта на задачу, KNOWN_ISSUESabylay
- 2026-09-23 17:08Устрани наложение аккаунта на навигациюabylay
- 2026-09-23 17:07Переделай редактор задачи для понятной публикацииabylay
- 2026-09-23 17:04Статус: QA-5 PASS, финальный SHA 5cb22bbabylay
- 2026-09-23 17:03По QA-5: шум не попадает в варианты результата, честная причина завершения, скрывать пузырь ошибки после входаabylay
- 2026-09-23 17:01Обнови модалку чата в стиле Codexabylay
- 2026-09-23 16:58README: сценарий через чат без входа; KNOWN_ISSUES: концепт, анонимный черновик, heroabylay
- 2026-09-23 16:57Обновить демо под вход и адаптивный диалог с лендингаiagadilov
- 2026-09-23 16:57Merge: копирайт главной (агент D)abylay
- 2026-09-23 16:56Статус: A/B/C в main, что проверено и что отложеноabylay
- 2026-09-23 16:56Главная: шаги, рейтинг, FAQ и CTA по утверждённому копирайтуabylay
- 2026-09-23 16:55Открывай чат задачи сразу без промежуточной страницыabylay
- 2026-09-23 16:55Merge remote-tracking branch 'origin/main'abylay
- 2026-09-23 16:54Merge: визуальный концепт (агент C)abylay
- 2026-09-23 16:54Открывай чат задачи сразу без промежуточной страницыabylay
- 2026-09-23 16:53Уточнить гейт гостевого чата и первого экранаiagadilov
- 2026-09-23 16:53Добавь визуальный концепт выбранного результата через GPT Imageabylay
- 2026-09-23 16:53Главная: тексты hero по копирайту, приветствие чатаabylay
- 2026-09-23 16:52Разговор без входа: анонимный черновик, вход и присвоение при сборке карточкиabylay
- 2026-09-23 16:52Диалог без входа: анонимная задача, вход и присвоение только при сборке карточкиabylay
- 2026-09-23 16:52Тесты и контракт под анонимный черновикabylay
- 2026-09-23 16:50Упростить тексты главной: продукт, прямой чат и ясный путь для жюриiagadilov
- 2026-09-23 16:50Зафиксировать открытые выпускные гейтыiagadilov
- 2026-09-23 16:47Документировать выпускные гейты Education MVPiagadilov
- 2026-09-23 16:46Единый текст кнопки «Обсудить задачу»abylay
- 2026-09-23 16:45Главная: кнопки «Обсудить задачу» и «Найти задачу» вместо поля; чат без черновика спрашивает суть первым сообщениемabylay
- 2026-09-23 16:45Merge branch 'worktree-agent-a35226a35574ac69f'abylay
- 2026-09-23 16:43Переделай каталог команд и добавь поискabylay
- 2026-09-23 16:43Диалог: при коротком черновике сначала спрашивать о бизнесе и болиabylay
- 2026-09-23 16:42Диалог: при отклонённом вопросе модели сначала ключевые пробелыabylay
- 2026-09-23 16:41Диалог: не завершать при пробеле в ключевом поле до 5 вопросовabylay
- 2026-09-23 16:40Шум по контексту поля: «всё», «пока ничего» — факт для данных; бессмысленный черновик не идёт в превьюabylay
- 2026-09-23 16:39Тест: уточнение темы после шума поверх ответа моделиabylay
- 2026-09-23 16:39Диалог: после ответа без сведений уточнять ту же тему, приоритеты в промптеabylay
- 2026-09-23 16:37Диалог: переспрашивать поле после шума, «Спросить ещё» до 8 вопросовabylay
- 2026-09-23 16:37Открывать диалог с агентом сразу с лендинга, убрать форму темы перед чатомabylay
- 2026-09-23 16:30Диалог: приветствия и «не знаю» не заполняют поля превью карточки; статус по фидбеку Ильясаabylay
- 2026-09-23 16:30docs: add requirement for real UI icons and sourced imageryiagadilov
- 2026-09-23 16:26docs: hand off Ilyas live product feedback and acceptance scenariosiagadilov
- 2026-09-23 16:17Рейтинг: обзор, сводка, таблица, форма — артефакты ожидаемого результатаabylay
- 2026-09-23 16:07Статус: seed с заявителями, ответ на handoffabylay
- 2026-09-23 16:07Seed: заявители у пяти стартовых задач, коды входа в READMEabylay
- 2026-09-23 16:05docs: consolidate approved product handoff for Abylaiiagadilov
- 2026-09-23 16:01docs: accept MVP decisions and specify GPT Image chat artifactiagadilov
- 2026-09-23 16:00Жюри №3: сводный отчёт Chair 81/100, сырые отчёты, статусabylay
- 2026-09-23 15:59Упрости и выровняй форму откликаabylay
- 2026-09-23 15:58По жюри №3: подсказки-кнопки через guard, годы не считаются метрикой, роли куратор/завуч, везде «3–5 вопросов»abylay
- 2026-09-23 15:56По жюри №3: rank в «Моих задачах», критерий заявителя не затирается вариантом, имя команды без телефона, дубль контекст=потребность даёт половину, READMEabylay
- 2026-09-23 15:53docs: close product discovery with client evidence and MVP decisionsiagadilov
- 2026-09-23 15:50README: websocket в компонентах; лендинг без обещания «0 фактов»; известная проблема доступа к черновикамabylay
- 2026-09-23 15:50Сделай страницу задачи понятной исполнителюabylay
- 2026-09-23 15:48Срок в вариантах результата помечен как оценка AIabylay
- 2026-09-23 15:43Учитывай окончания слов в поиске задачabylay
- 2026-09-23 15:42Уточни свободу выбора и быстрый поиск задач для командiagadilov
- 2026-09-23 15:42Статус: браузерный e2e диалога с вариантами прошёлabylay
- 2026-09-23 15:42Статус: диалог с вариантами результата проверен по APIabylay
- 2026-09-23 15:41Починить ширину диалога с агентом на мобильномabylay
- 2026-09-23 15:41Обнови дизайн и навигацию каталогаabylay
- 2026-09-23 15:40Диалог: minmax(0,1fr) против переполнения широкого сообщенияabylay
- 2026-09-23 15:40Контракт: раздел «Варианты первого результата»abylay
- 2026-09-23 15:39Подключить динамические вопросы и варианты результата в диалогabylay
- 2026-09-23 15:38Refresh team status from Abblay handoffiagadilov
- 2026-09-23 15:38Тесты эндпоинтов вариантов результатаabylay
- 2026-09-23 15:37Варианты первого результата: AI-функция с mock и защитой, эндпоинты result-options и apply-result; сборка main восстановленаabylay
- 2026-09-23 15:36Передать Qutty как дизайн-референс UI командеiagadilov
- 2026-09-23 15:35WIP агентов: диалог с агентом (AgentChat), варианты результата — промежуточное состояние, собирается и проходит тестыabylay
- 2026-09-23 15:33Hero: обещание в заголовке, пояснённое до/после, мини-каталог с откликами на первом экранеabylay
- 2026-09-23 15:32Document product interview and scoped AI handoffiagadilov
- 2026-09-23 15:29Сравнение без внутреннего скролла; число откликов на карточках каталогаabylay
- 2026-09-23 15:28API: число откликов у задач каталогаabylay
- 2026-09-23 15:26Чат: пустая история по WebSocket не ломает списокabylay
- 2026-09-23 15:26Лендинг: счётчики фактов, строки сравнения по очереди, фон финального блока без срезаabylay
- 2026-09-23 15:25Как работает AI: живой последний вызов вместо пересказа, промпты свёрнутыabylay
- 2026-09-23 15:24Навбар: переключатель режима виден на средних экранахabylay
- 2026-09-23 15:23Навбар: плавающая стеклянная капсулаabylay
- 2026-09-23 15:22Лендинг: scroll-история одной задачи, живой фон в hero и финальном блоке, стеклянное поле вводаabylay
- 2026-09-23 15:22Динамические вопросы: не спрашивать название, не переспрашивать контекст при длинном черновикеabylay
- 2026-09-23 15:20Guard: не применять проверку отрицаний к контексту и потребности; промпт карточки сохраняет слова пользователяabylay
- 2026-09-23 15:18Быстрая модель для уточняющих вопросов (OPENAI_MODEL_FAST)abylay
- 2026-09-23 15:18Страница задачи: таблица откликов на всю ширину со ссылкой и статусом словами, чат по WebSocket с запасным REST, баннер выбранной командеabylay
- 2026-09-23 15:18Добавить модалку диалога с агентомabylay
- 2026-09-23 15:16Динамические вопросы: следующий вопрос по ответам, типы ответа и варианты, живая карточка и балл в диалогеabylay
- 2026-09-23 15:16Редактор: пометка пустых полей, подсказки рейтинга ведут к полю, анимация прироста баллаabylay
- 2026-09-23 15:15Каталог: сетка карточек с чипами-фильтрамиabylay
- 2026-09-23 15:14Главная как лендинг: одно поле с кнопкой «Отправить», до/после с чипами метрик, сравнение, шаги, FAQ; каталог на /catalogabylay
- 2026-09-23 15:11Подключить Inter локально вместо Google Fontsabylay
- 2026-09-23 15:09Вопросы: пример ответа под полем, цена пропуска, плавный переход и сводка ответов перед сборкой карточкиabylay
- 2026-09-23 15:09Обновить известные ограничения после обязательного заявителяabylay
- 2026-09-23 15:07Черновик: автосохранение и на первом экране, подпись «черновик сохранён», пример-плейсхолдерabylay
- 2026-09-23 15:07Показать подсказку «+N к готовности» у полей карточки; не слать owner_contact при созданииabylay
- 2026-09-23 15:06Добавить вход заявителя, «Мои задачи», таблицу откликов с чатом и черновик на первом экранеabylay
- 2026-09-23 15:04Заявитель обязателен: создание и изменения задачи, решения по откликам и чат только после входа; stats для каталога; owner_contact в seedabylay
- 2026-09-23 15:04Промпт вопросов: не более четырёх, не переспрашивать известноеabylay
- 2026-09-23 15:00Добавить UX-ресерч живых конкурентов: Profi.ru, Riipen, hh.ru, Upworkabylay
- 2026-09-23 14:59Убрать выбор демо-команды из входа: привязка по имени отключенаabylay
- 2026-09-23 14:58Убрать дёрганость: плавные фильтры, стабильная высота, переходы; вынести выход команды в шапкуabylay
- 2026-09-23 14:58Вход: нельзя войти в чужую команду по имени, у каждого контакта своя командаabylay
- 2026-09-23 14:56Промпт вопросов: сначала боль и текущий процесс, простые слова, пример ответаabylay
- 2026-09-23 14:54Добавить логотипabylay
- 2026-09-23 14:53Разбить App.tsx на страницы и перевести формы на UI-kitabylay
- 2026-09-23 14:51dev: Go на 8080 проксирует фронт в Vite при отсутствии сборкиabylay
- 2026-09-23 14:51Заметка о соседнем проекте и плане видимой отличимостиabylay
- 2026-09-23 14:50Добавить UI-kitabylay
- 2026-09-23 14:49Guard: стемы, выдуманные имена, отрицания; формула: отрицания у признака, заглушки-фразы, бессмыслица, телефоныabylay
- 2026-09-23 14:48dev.sh: не убивать сервер при неудачной сборке, Vite только на localhostabylay
- 2026-09-23 14:46API: место в каталоге, прогноз места после подтверждения, предыдущий балл, до следующего уровняabylay
- 2026-09-23 14:42Добавить dev.sh: локальный стенд с горячей перезагрузкой Go и Vite HMRabylay
- 2026-09-23 14:40Добавить пример живого вызова OpenAI для проверки AI-функцииabylay
- 2026-09-23 14:40Синхронизировать сценарий репетиции с демо-коммитомiagadilov
- 2026-09-23 14:39Уточнить озвучку роста рейтинга для репетицииiagadilov
- 2026-09-23 14:38Исправить метки времени в документах (были на 2 часа вперёд)abylay
- 2026-09-23 14:38Зафиксировать границы QA и отсутствие web-правок до репетицииiagadilov
- 2026-09-23 14:37Сверить сценарий на свежей сборке и приоритет репетицииiagadilov
- 2026-09-23 14:36Подготовить чистый стенд на Mac и записать jury QAiagadilov
- 2026-09-23 14:34Уточнить чатовый онбординг и поток контекстаiagadilov
- 2026-09-23 14:33Принять регресс критического пути на новом backendiagadilov
- 2026-09-23 14:32Добавить результаты второго жюри в статусiagadilov
- 2026-09-23 14:32Синхронизировать stage QA и новый backend-контрактiagadilov
- 2026-09-23 14:31Жюри-ревью №2: отчёт Chair, известные ограниченияabylay
- 2026-09-23 14:30Закрыть функциональный stage gate после QAiagadilov
- 2026-09-23 14:30Замечания жюри №2: владелец правит и подтверждает задачу с контактом, машина статусов отклика, отказ с «доступ закрыт», телефон строже, маскирование last_call; контракт и README синхронизированыabylay
- 2026-09-23 14:29Отметить браузерную проверку этапа и ожидание QAiagadilov
- 2026-09-23 14:28Добавить гипотезу чатового создания задач в продуктовую картуiagadilov
- 2026-09-23 14:28Уточнить проверку этапа после совместимого APIiagadilov
- 2026-09-23 14:27Зафиксировать дефект перехода selected в acceptediagadilov
- 2026-09-23 14:26Подтверждение этапа из selected (UI без кнопки принятия); README: что в интерфейсе, что только в APIabylay
- 2026-09-23 14:26Зафиксировать QA основного пути и границу входа бизнесаiagadilov
- 2026-09-23 14:25Восстановить актуальный QA и демо-статусiagadilov
- 2026-09-23 14:23Поделиться Excalidraw-картой продукта с командойiagadilov
- 2026-09-23 14:22Статус и ограничения после входа бизнеса и чатаabylay
- 2026-09-23 14:22Подтвердить полный демо-путь с входом командыiagadilov
- 2026-09-23 14:22Закрыть auth-блокер после независимого QAiagadilov
- 2026-09-23 14:20Вход бизнеса по контакту заявителя, «Мои задачи», решения владельца; двустороннее принятие, холд; чат по отклику на WebSocketabylay
- 2026-09-23 14:19Отметить опубликованный вход команды и ожидание QAiagadilov
- 2026-09-23 14:18Добавить UX-ресерч: куда смотреть, главное действие, микротекст по экранамabylay
- 2026-09-23 14:17Добавить вход команды перед откликомiagadilov
- 2026-09-23 14:17README: дальнейшее развитие (куратор-эскроу), известное ограничениеabylay
- 2026-09-23 14:16Уточнить контроль входа команды и резервный демо-режимiagadilov
- 2026-09-23 14:15Уточнить демо по новой формуле и блокеру входа командыiagadilov
- 2026-09-23 14:14Отметить блокер входа команды в демоiagadilov
- 2026-09-23 14:13Контракт: чат по отклику, двустороннее принятие, холдabylay
- 2026-09-23 14:11Контракт: контакт заявителя и вход бизнеса по кодуabylay
- 2026-09-23 14:10Флаг REQUIRE_TEAM_LOGIN: отклик без входа как страховка для демоabylay
- 2026-09-23 14:10Закрыть cold UX-гейт и уточнить рейтинг QAiagadilov
- 2026-09-23 14:09Обновить статус визуального UX и свежего демо-стендаiagadilov
- 2026-09-23 14:06Контракт и статус: вход команд, контакт скрыт, известные ограниченияabylay
- 2026-09-23 14:05Уточнить первый экран и ключевые шаги UIiagadilov
- 2026-09-23 14:05Вход команд по одноразовому коду (демо 000000), мои отклики, отклик по токену, контакт скрыт из публичного спискаabylay
- 2026-09-23 14:05Зафиксировать визуальный UX-анализ аналоговiagadilov
- 2026-09-23 14:03Формула: «доступны» не план передачи, расширены роли; тест на кейсы QA; seed 3 = 70abylay
- 2026-09-23 14:01Уточнить результат повторного QA рейтингаiagadilov
- 2026-09-23 14:00Контракт: вход по одноразовому коду, демо-код 000000abylay
- 2026-09-23 14:00Отметить визуальный ресерч и промежуточный UX-гейтiagadilov
- 2026-09-23 13:59Контракт: вход команды, мои отклики, отклик по токенуabylay
- 2026-09-23 13:58Добавить список известных ограничений MVPabylay
- 2026-09-23 13:58README: правила формулы и Guard после ревью; статусabylay
- 2026-09-23 13:58Уточнить первые десять секунд продуктового показаiagadilov
- 2026-09-23 13:57Формула: мусор, отрицания, заглушки в тексте, телефон, причины с признаком; Guard: title и число+единица; mock need и titleabylay
- 2026-09-23 13:56Добавить десятисекундный UX-гейт Ильясаiagadilov
- 2026-09-23 13:53Зафиксировать семантические кейсы рейтинга от QAiagadilov
- 2026-09-23 13:52Жюри-ревью №1: отчёт Chair, таймаут AI 10 сabylay
- 2026-09-23 13:49Отразить обновлённый сценарий и контроль времениiagadilov
- 2026-09-23 13:49Замечания Technical Judge: порт БД только localhost, таймаут AI 20 с, валидация ссылки, last_call в /api/ai, предварительный балл черновикаabylay
- 2026-09-23 13:48Зафиксировать стенд и репетицию на Mac Ильясаiagadilov
- 2026-09-23 13:48Привязать сценарий демо к живому UX и репетицииiagadilov
- 2026-09-23 13:42Пересчитывать рейтинги текущей формулой при стартеabylay
- 2026-09-23 13:40Уточнить расположение QA-инстанса и демо-запускiagadilov
- 2026-09-23 13:39Собрать UX-аналоги для AI Sana Challenge Hubiagadilov
- 2026-09-23 13:39Отразить чистый QA-прогон и новый jury gateiagadilov
- 2026-09-23 13:38Отметить устаревшие баллы в запущенной базеiagadilov
- 2026-09-23 13:37Выбрать gpt-6-sol по бенчмарку пяти моделей, таймаут 60 с, добавить бенч-тестabylay
- 2026-09-23 13:37Зафиксировать обезличенные выводы из звонков заказчиковiagadilov
- 2026-09-23 13:35Зафиксировать предварительный jury gateiagadilov
- 2026-09-23 13:34Зафиксировать React e2e и регрессию рейтингаiagadilov
- 2026-09-23 13:33Ужесточить формулу против заглушек, регрессия на seed, модель gpt-5.4-mini, порт только localhostabylay
- 2026-09-23 13:31Уточнить промпт карточки: определения полей, ограничения только явныеabylay
- 2026-09-23 13:30Отразить API QA и расхождение seed-балловiagadilov
- 2026-09-23 13:29Написать README: запуск, архитектура, формула рейтинга, правила каталога, AI, тестовые сценарииabylay
- 2026-09-23 13:29Обновить статус интеграции и продуктового ресерчаiagadilov
- 2026-09-23 13:27Исправить время исследовательской запискиiagadilov
- 2026-09-23 13:27Обновить статус: Go API в main, ресерч, ужесточение рейтингаabylay
- 2026-09-23 13:26Добавить ICP и дерево решений для AI Sana MVPiagadilov
- 2026-09-23 13:26Добавить ресерч Astra: аналоги, контрпримеры к формуле, рекомендацииabylay
- 2026-09-23 13:25Добавить Go API: сервер, хранилище Postgres, seed-загрузчик, Docker, сквозные тестыabylay
- 2026-09-23 13:23Показать позицию задачи в каталогеiagadilov
- 2026-09-23 13:23Добавить веб-ресерч по рейтингу готовности и аналогамabylay
- 2026-09-23 13:22Игнорировать локальные env-файлы и отметить черновик демоiagadilov
- 2026-09-23 13:21Уточнить в контракте предварительный и официальный баллabylay
- 2026-09-23 13:20Добавить черновик сценария продуктового демоiagadilov
- 2026-09-23 13:19Собрать React-поток задачи и открытого каталогаiagadilov
- 2026-09-23 13:19Обновить статус MVP и разделение задачiagadilov
- 2026-09-23 13:18Добавить AI-модуль: OpenAI Responses API, mock-режим, защита от выдуманных фактовabylay
- 2026-09-23 13:17Добавить модель данных и модуль рейтинга готовности с тестамиabylay
- 2026-09-23 13:17Добавить синтетические демо-данные для задач и откликовiagadilov
- 2026-09-23 13:13Зафиксировать формат seed-файлов и порядок загрузкиabylay
- 2026-09-23 13:12Перевести фронт на Vite + React, заменить контракт шаблонов на API-контрактabylay
- 2026-09-23 13:11Сменить стек на Go и Postgres, обновить план и контракт шаблоновabylay
- 2026-09-23 13:11Добавить независимую техническую оценку MVPiagadilov
- 2026-09-23 13:10Добавить контракт main.py → шаблоны и критический путь демоabylay
- 2026-09-23 13:08Отметить получение Education-ТЗ и план MVPiagadilov
- 2026-09-23 13:08Добавить матрицу приёмки Education MVPiagadilov
- 2026-09-23 13:07Добавить технический план MVP с разделением файлов и рискамиabylay
- 2026-09-23 13:07Зафиксировать варианты MVP по официальному ТЗiagadilov
- 2026-09-23 13:06Обновить TASK.md полным текстом ТЗ из первоисточникаabylay
- 2026-09-23 13:05Добавить официальное ТЗ дословно в TASK.mdabylay
- 2026-09-23 13:05Зафиксировать официальное ТЗ Education с источникомiagadilov
- 2026-09-23 12:55Поставить Astra на роль Red Team Judge в жюри-ревьюabylay
- 2026-09-23 12:51Зафиксировать варианты использования активированных кредитовiagadilov
- 2026-09-23 12:43Обновить статус двустороннего SSH-каналаiagadilov
- 2026-09-23 12:42Зафиксировать доступность хакатонных кредитов без кодовiagadilov
- 2026-09-23 12:37Отметить завершение исследования конкурентовiagadilov
- 2026-09-23 12:33Добавить карту конкурентов и победителей Educationiagadilov
- 2026-09-23 12:33Отметить сохранённый ресерч организаторовiagadilov
- 2026-09-23 12:32Зафиксировать протокол передачи контекста между агентамиiagadilov
- 2026-09-23 12:32Добавить исследование сигналов для Educationiagadilov
- 2026-09-23 12:23Согласовать жюри-ревью с JUDGE_AGENT_PROMPT и стратегией, обновить статус, добавить gitignoreabylay
- 2026-09-23 12:22Добавить общий статус и стратегию командыiagadilov
- 2026-09-23 11:57Честный балл жюри, дедлайн ролика как неизвестный, запасная рубрика без READY TO SUBMITabylay
- 2026-09-23 11:52Согласовать правила с стратегией: этапы оценки, условия остановки жюри, роли агентов, пометки источников; добавить файл скилла jury-reviewabylay
- 2026-09-23 11:47Добавить правила работы в дуо и гит-дисциплинуabylay
- 2026-09-23 11:45Добавить процедуру жюри-ревью и скилл jury-reviewabylay
- 2026-09-23 11:41Добавить правила и критерии хакатона для агентовabylay
Структура репозитория (193 файлов)
.claude/skills/jury-review/SKILL.md .dockerignore .env.example .gitignore AGENTS.md AGENT_HANDOFF.md API_CONTRACT.md CLAUDE.md Dockerfile HACKATHON_RULES.md HACKATHON_STRATEGY.md JUDGE_AGENT_PROMPT.md KNOWN_ISSUES.md Makefile PLAN.md PRODUCT_IMPLEMENTATION_HANDOFF.md README.md STATUS.md TASK.md cmd/server/main.go db/db.go db/schema.sql demo/hook.md demo/script.md dev.sh docker-compose.yml docs/ai-live-sample.json docs/brainstorm/README.md docs/brainstorm/ai-sana-product-map.excalidraw.md go.mod go.sum internal/ai/ai.go internal/ai/ai_test.go internal/ai/bench_test.go internal/ai/discovery_test.go internal/ai/guard.go internal/ai/image.go internal/ai/mock.go internal/ai/next_test.go internal/ai/openai.go internal/ai/options.go internal/ai/options_test.go internal/ai/prompts.go internal/ai/suggestions_test.go internal/http/auth.go internal/http/auth_test.go internal/http/chat_test.go internal/http/dynamic_test.go internal/http/fakeai_test.go internal/http/handler.go internal/http/handler_test.go internal/http/owner_edit_test.go internal/http/recommend.go internal/http/result_options_test.go internal/http/static.go internal/http/student_test.go internal/http/testutil_test.go internal/http/visual.go internal/http/ws.go internal/model/model.go internal/rating/noise.go internal/rating/noise_test.go internal/rating/qa_cases_test.go internal/rating/rating.go internal/rating/rating_dup_test.go internal/rating/rating_test.go internal/rating/seed_test.go internal/store/auth.go internal/store/seed.go internal/store/stats.go internal/store/store.go internal/store/store_test.go internal/store/testdata/proposals.json internal/store/testdata/tasks.json internal/store/testdata/teams.json internal/store/visual.go research/acceptance-matrix.md research/analogues-ux.md research/analogues-visual-ux.md research/analogues-visual-ux/archibalt-demo-home.png research/analogues-visual-ux/archibalt-demo-new.png research/analogues-visual-ux/catchafire-deliverables-help.png research/analogues-visual-ux/parker-dewey-home.png research/analogues-visual-ux/riipen-builder-help.png research/analogues-visual-ux/riipen-edit-help.png research/analogues-visual-ux/typeform-clarify-help.png research/astra-readiness.md research/competitor-lan-note.md research/credits-options.md research/design-reference-qutty.md research/fable-readiness.md research/icp-ux-decision-tree.md research/jury-review-1.md research/jury-review-2.md research/jury-review-3-raw.md research/jury-review-3.md research/jury-review-4-raw.md research/jury-review-4.md research/landing-copy-2026-09-23.md research/landscape.md research/organizers.md research/product-feedback-2026-09-23.md research/product-interview-2026-09-23.md research/product-options.md research/product-scope-closure-2026-09-23.md research/rating-qa-cases.md research/release-acceptance-2026-09-23.md research/spec-visualization-api.md research/student-mvp-2026-09-23.md research/tech-plan.md research/ux-clarity.md research/ux-competitors.md research/voice-of-customer.md seed/drafts.json seed/proposals.json seed/tasks.json seed/teams.json web/.gitignore web/catalog-check.mjs web/chat-entry-check.mjs web/index.html web/package-lock.json web/package.json web/public/favicon.svg web/public/fonts/inter-var.woff2 web/public/logo.svg web/src/App.tsx web/src/api.ts web/src/components/AgentChat/AgentChat.css web/src/components/AgentChat/AgentChat.tsx web/src/components/AgentChat/context.ts web/src/components/AgentChat/index.tsx web/src/components/AgentChat/mock.ts web/src/components/AgentChat/transport.ts web/src/components/AgentChat/types.ts web/src/components/AnimatedBackground.tsx web/src/components/BeforeAfter.tsx web/src/components/Layout.tsx web/src/components/LoginModal.tsx web/src/components/PageState.tsx web/src/components/ProposalCard.tsx web/src/components/ProposalChat.tsx web/src/components/RatingPanel.tsx web/src/components/Reveal.tsx web/src/components/ScrollStory.tsx web/src/components/SessionMenu.tsx web/src/components/StudentHub.css web/src/components/StudentHub.tsx web/src/components/student-state.ts web/src/fields.ts web/src/main.tsx web/src/pages/AiPage.tsx web/src/pages/Catalog.css web/src/pages/Catalog.tsx web/src/pages/Clarify.tsx web/src/pages/Landing.tsx web/src/pages/MyTasks.tsx web/src/pages/TaskEdit.css web/src/pages/TaskEdit.tsx web/src/pages/TaskNew.tsx web/src/pages/TaskShow.css web/src/pages/TaskShow.tsx web/src/pages/Teams.css web/src/pages/Teams.tsx web/src/pages/catalog-model.ts web/src/pages/teams-model.ts web/src/session.tsx web/src/styles.css web/src/ui/Alert.tsx web/src/ui/Badge.tsx web/src/ui/Button.tsx web/src/ui/Chips.tsx web/src/ui/ConfirmDialog.tsx web/src/ui/EmptyState.tsx web/src/ui/Field.tsx web/src/ui/Input.tsx web/src/ui/Logo.tsx web/src/ui/Meter.tsx web/src/ui/Modal.tsx web/src/ui/Segmented.tsx web/src/ui/Select.tsx web/src/ui/Spinner.tsx web/src/ui/Toast.tsx web/src/ui/cx.ts web/src/ui/icons.tsx web/src/ui/index.ts web/src/ui/ui.css web/src/useLoad.ts web/student-flow-check.mjs web/task-edit-check.mjs web/teams-check.mjs web/tsconfig.json web/vite.config.ts
Ветки (2)
Обсуждение 0 комментариев
Войдите, чтобы комментироватьПока нет комментариев — будьте первым.