TaskLab
Площадка на Go: бизнес через AI-конструктор превращает черновик в карточку задачи с рейтингом полноты, публикует её в каталог, команды откликаются…
О проекте
Команда: KILC
Кейс HackAlem.ai: Образование — AI Sana
Стадия: Доведённый продукт
Задача кейса: Challenge Hub: превратить задачу бизнеса в задание для студенческих команд
Суть
Площадка на Go: бизнес через AI-конструктор превращает черновик в карточку задачи с рейтингом полноты, публикует её в каталог, команды откликаются, бизнес вручную выбирает исполнителей, подтверждает этап и начисляет баллы. Есть рекомендации задач командам и AI-чат-помощник.
Как устроено
Сервер на Go net/http с SQLite (modernc, без CGO), статика встроена через embed.FS. Маршрут /api/ai/questions возвращает 3–5 вопросов, /api/ai/card строит карточку через Chat Completions-совместимый API. Затем validate.go отбрасывает поля, которых нет дословно в черновике или ответах, а fallback.go при ошибке переключает на заглушку. Все поля приходят неподтверждёнными, и рейтинг 0–100 начисляется только за подтверждённые поля по правилам (для полного балла за критерии успеха нужно число). Рекомендации строятся правилами по совпадению категории с интересами команды.
Ключевые решения
- Chat Completions API
- prompt grounding
- проверка ответа модели
- stub fallback
- rule-based рекомендации
- SQLite
Особенности
Строгая проверка вывода модели: текстовое поле принимается, только если состоит из предложений черновика или ответов, а правка поля снимает его подтверждение на сервере. Кроме ТЗ добавлены вознаграждение с бонусом к позиции в каталоге и подтверждение этапа с баллами. Проект развёрнут на Railway, из зависимостей Go только драйвер SQLite.
Стек
Go · net/http · html/template · SQLite · JavaScript · HTML/CSS · Railway
Модели
OpenAI gpt-4.1 · DeepSeek deepseek-chat
Проект создан за 5 часов на финале хакатона HackAlem.ai (23 сентября 2026, Астана). Код — BAITC-Hacks/hack-7c4211c3-kilc.
README
README.mdTaskLab — задачи бизнеса для студенческих команд
Хакатонный MVP команды KILC: площадка, где бизнес описывает задачу, оценивает полноту требований и публикует карточку, а студенческие команды предлагают решение. Представитель бизнеса сравнивает предложения, самостоятельно выбирает исполнителей и подтверждает выполненный этап.
Проект помогает бизнесу подготовить понятное задание, а командам — найти задачи с описанием результата, данных, ограничений и критериев успеха. Рейтинг отражает полноту и формальную конкретность описания, а не сложность задачи или качество будущего решения.
Текущее состояние: каталог, конструктор с AI-уточнением, команды, отклики, решения бизнеса, вознаграждение, смена роли и AI-чат-помощник работают через SQLite. Локально AI по умолчанию работает в режиме заглушки и не требует ключа; развёрнутая версия использует OpenAI
gpt-4.1.
Развёрнутая версия для проверки: https://hackalem-kilc-project-production.up.railway.app — без установки и go run .. Роль хранится в браузере; переключиться между бизнесом и командой можно кнопкой «Сменить роль» в верхней панели (или откройте второе окно инкогнито). Подробнее — в разделе «Развёрнутая версия».
Что реализовано
- Открытый каталог: все опубликованные задачи видны всем командам независимо от рейтинга. Порядок — по рейтингу с бонусом за подтверждённое вознаграждение (0/+5/+10), затем по рейтингу. Рейтинг 0–100 и уровень от вознаграждения не зависят. Фильтры по категории, отрасли и уровню (диапазон баллов).
- Карточка задачи с исходным описанием, контекстом, потребностью, пользователями, данными, ограничениями, ожидаемым результатом, критериями успеха, контактом и форматом взаимодействия.
- Создание, чтение, обновление и публикация задач через JSON API. Исходный черновик после сохранения изменить нельзя.
- Браузерный конструктор: черновик → 3–5 уточняющих вопросов → карточка от AI (поля приходят неподтверждёнными) → ручная правка и подтверждение каждого поля → сохранение → публикация. Рейтинг пересчитывается на сервере, есть подсказки и локальная резервная копия новой задачи.
- Рейтинг 0–100 с разбивкой, потенциальным баллом и подсказками. При изменении поля его подтверждение снимается; это проверяется и на сервере (
store/tasks.go). - Просмотр, поиск, создание и выбор команды; профиль содержит название, интересы, навыки и технологии.
- Предложения команд: идея, план, дата завершения и ссылка на прототип. Новое предложение получает статус
pending. - Вознаграждение команде (тип и описание) хранится в задаче; после подтверждения даёт бонус к позиции в каталоге, но не к рейтингу.
- Кабинет бизнеса: задачи своей компании, сравнение откликов, ручное принятие или отклонение. Можно принять несколько предложений.
- Однократное подтверждение этапа принятого предложения с начислением 1–100 баллов. Баллы команды вычисляются как сумма начислений.
- Рекомендации: до пяти опубликованных задач по совпадению категории с интересами команды, с рейтингом от 40. Это алгоритм по правилам, без AI; остальные опубликованные задачи остаются в общем каталоге.
- Смена роли без второго браузера: кнопка «Сменить роль» в верхней панели (
DELETE /api/session); задачи, команды и отклики сохраняются. - AI-чат-помощник (кнопка «Помощник»): объясняет рейтинг открытой задачи и подсказывает, как улучшить описание или отклик. Только советует, ничего не меняет в данных.
- Автоматическое заполнение демонстрационной базы и endpoint проверки состояния
/health.
Как считается рейтинг
Баллы начисляются только за заполненные и подтверждённые поля.
| Компонент | Максимум |
|---|---|
| Контекст и потребность | 20 |
| Данные и материалы | 20 |
| Ожидаемый результат | 15 |
| Критерии успеха | 15 |
| Ограничения | 10 |
| Пользователи | 10 |
| Связь с бизнесом | 10 |
| Всего | 100 |
Контекст и потребность дают до 10 баллов каждый; контакт и формат взаимодействия — до 5. Для обычных текстовых полей описание короче пяти слов получает половину максимума с округлением вниз. Для полного балла критерии успеха должны содержать число, контакт — символ @ или хотя бы семь цифр.
Уровни: 0–39 — черновик, 40–69 — рабочая, 70–89 — готовая, 90–100 — приоритетная. Уровень вычисляется из балла. Категория на него не влияет. Низкий рейтинг не запрещает публикацию и отправку предложения; для публикации нужны название и подтверждение заполненных полей рейтинга. Статус публикации и уровень «черновик» — разные свойства.
Как работает решение
- Пользователь выбирает роль. Бизнес указывает компанию и нажимает «Создать задачу».
- В конструкторе он вводит исходное описание и нажимает «Получить уточняющие вопросы» — появляются 3–5 вопросов. Неизвестный ответ можно оставить пустым.
- «Сформировать карточку» заполняет название, категорию и поля описания. Все они приходят неподтверждёнными, рейтинг за них — 0. Пользователь правит и подтверждает каждое поле: название, категорию, 9 полей рейтинга и вознаграждение. Изменение поля снимает его подтверждение — это обеспечивает сервер в
store/tasks.go. Затем задача сохраняется и публикуется отдельным действием; для публикации нужны название и подтверждение всех заполненных полей. - Команда выбирает задачу в каталоге и отправляет идею, план, срок и ссылку на прототип.
- Бизнес сравнивает отклики и вручную принимает или отклоняет каждый.
- После выполнения этапа бизнес подтверждает его и назначает баллы. Они отображаются в профиле команды.
Выбор роли и команды — серверная сессия браузера, а не вход в защищённый аккаунт.
Технологии и AI
| Область | Реализация |
|---|---|
| Сервер | Go 1.25.0 по go.mod, стандартный net/http |
| HTML | html/template для каталога; отдельные HTML-страницы для остальных сценариев |
| Клиент | HTML, CSS, обычный JavaScript и Fetch API; без Node.js и сборки |
| Хранилище | SQLite, database/sql, modernc.org/sqlite v1.59.0 — драйвер без CGO |
| Встраивание ресурсов | embed.FS: шаблоны, статика, схема и JSON-данные |
| Тесты | Go testing, HTTP-тесты и тесты хранилища |
| AI | Совместимый Chat Completions API: в развёрнутой версии OpenAI gpt-4.1; по умолчанию в коде — DeepSeek deepseek-chat; без ключа — локальная заглушка |
Единственная прямая сторонняя Go-зависимость — SQLite-драйвер; его транзитивные зависимости перечислены в go.mod. Веб-фреймворка, ORM и JS-зависимостей нет.
Пакет ai/ подключён к серверу: клиент создаётся в main.go через ai.New() и ai.NewChat(). Маршруты:
POST /api/ai/questions—{"draft_text": "..."}→{"questions": [{"field", "question"}], "source"}, 3–5 вопросов.POST /api/ai/card—{"draft_text", "qa": [{"field", "question", "answer"}]}→{"card": {...}, "source"}.POST /api/chat(api/chat.go, дополнительно к ТЗ) —{"message", "history": [{"role", "content"}], "context": {"page", "task_id"}}→{"reply": "..."}. Системный промпт задаёт сервер; роль, компания и команда — из серверной сессии; задача изcontextпроверяется на доступ. В режиме заглушки — 503: помощник не выдумывает ответы без модели.
- Режим. Без ключа или при
STUB, отличном от0, работает заглушка — это режим по умолчанию.sourceв ответе показываетmodelилиstub. - Промпты —
ai/prompts.go(QuestionsPrompt,CardPrompt): только факты из черновика и ответов, ничего не придумывать, строгий JSON. - Формат входа и выхода — типы
Question,QA,Cardвai/ai.go. Карточка:title, category, context, need, users, data, constraints, expected_result, success_criteria, contact, interaction_format. - Проверка ответа —
ai/validate.go: неизвестные ключи отбрасываются; текстовое поле принимается, только если это целые предложения или строки из черновика и ответов; категория — только код из фиксированного списка; превышение длины отбрасывает поле. - Некорректный ответ —
ai/fallback.go: при ошибке модели или невалидном JSON запрос переходит на заглушку, в лог пишетсяai: переход на заглушку: ...; отброшенные поля тоже логируются. Успешный результат не выдумывается. - Сохранение и публикация остаются ручными: AI только заполняет форму.
Подробности, пример .env и проверка — в ai/README.md.
Архитектура
Браузер
├─ GET / → HTML-каталог из templates/
└─ static/task-builder/ → JavaScript → JSON API (сессия в HttpOnly cookie)
├─ api/ai.go, api/chat.go → ai/ → модель или заглушка
├─ rating/ → оценка без БД и HTTP
└─ store/ → SQLite
main.go → .env → открытие БД → схема → демонстрационные данные → ai.New(), ai.NewChat() → HTTP-сервер
| Путь | Назначение |
|---|---|
main.go, env.go | Чтение .env, встраивание ресурсов, запуск БД, регистрация маршрутов, health-check |
api/ | Каталог, задачи, рейтинг, AI-маршруты, сессии, команды, предложения, действия бизнеса, рекомендации |
rating/ | Чистые функции оценки, уровни и расчёт бонуса вознаграждения |
store/ | SQL-запросы, валидация, сохранение и загрузка демонстрационных данных |
ai/ | Интерфейс из двух операций, промпты, заглушка, HTTP-клиент, проверка ответов и fallback; ai/chat.go — текстовый чат-помощник |
templates/ | Серверные HTML-шаблоны |
static/ | CSS, JavaScript и страницы конструктора, команд и кабинета бизнеса |
schema.sql | Схема таблиц задач, команд, предложений и сессий браузера |
data/*.json | Демонстрационные задачи, команды и предложения |
Рейтинг пересчитывается при сохранении задачи; балл и бонус хранятся для сортировки. Данные сохраняются между перезапусками в SQLite. Каталог отдаёт только опубликованные задачи.
Установка и запуск
Потребуются Git, Go 1.25+ и браузер. При первой загрузке зависимостей нужен интернет. API-ключ, отдельный сервер БД и C-компилятор не требуются.
-
Клонируйте репозиторий и перейдите в него:
git clone https://github.com/BAITC-Hacks/hack-7c4211c3-kilc.git cd hack-7c4211c3-kilc -
Проверьте Go и загрузите зависимости:
go version go mod download -
Запустите сервер:
go run . -
Откройте каталог или выбор роли.
При запуске применяется встроенная схема. Если таблица задач пуста, загружаются 5 черновиков, 5 опубликованных карточек, 5 команд и 5 предложений. Если задачи уже есть, загрузка пропускается.
HTML следует открывать через Go-сервер: рабочие операции требуют его API. После изменения встроенных HTML/CSS/JS сервер нужно перезапустить.
Настройки
При старте сервер автоматически читает .env из рабочей директории (env.go); файл необязателен. Переменные окружения процесса имеют приоритет над .env. Шаблон — .env.example; подробности формата — в ai/README.md.
| Переменная | Значение по умолчанию | Назначение |
|---|---|---|
PORT | 8080 | Порт HTTP-сервера |
DB_PATH | data.db | Путь к SQLite относительно рабочей директории |
STUB | Режим заглушки | Модель используется только при STUB=0 и непустом ключе |
AI_API_KEY | Пусто | Ключ AI-провайдера |
AI_BASE_URL | https://api.deepseek.com | Базовый адрес; клиент добавляет /chat/completions |
AI_MODEL | deepseek-chat | Имя модели |
Отдельная демонстрационная база:
DB_PATH=demo.db go run .
Используйте новое имя базы, если нужно повторно получить исходные примеры, сохранив предыдущие результаты.
Как проверить решение
Техническая проверка
Из корня репозитория:
go test ./rating/...
go run .
Во втором терминале:
curl -f http://localhost:8080/health
Ожидаемый ответ — HTTP 200 и {"status":"ok"}. В Windows PowerShell можно вызвать curl.exe -f http://localhost:8080/health.
Для проверки всех пакетов:
go test ./...
Сценарий для жюри (5 минут)
- Запустите сервер с новой базой:
DB_PATH=demo.db go run . - Откройте два окна браузера: обычное — бизнес, инкогнито — студент. Можно работать и в одном окне: кнопка «Сменить роль» в верхней панели сбрасывает сессию без потери данных.
- Бизнес: на выборе роли выберите бизнес, укажите компанию «Демо Кофейня» и нажмите «Создать задачу».
- Черновик: «Нужен бот для предзаказа кофе, очереди утром слишком длинные». Нажмите «Получить уточняющие вопросы» и ответьте:
- данные — «Выгрузка CSV из кассы за 3 месяца.»
- контекст — «У нас 3 кофейни в Астане.»
- потребность — «Утром очередь занимает 15 минут.»
- ожидаемый результат — «Нужен Telegram-бот для предзаказа кофе.» (не короче 5 слов, иначе поле даст половину балла)
- критерии успеха — «Ожидание не более 3 минут и 20% заказов через бота.»
- Нажмите «Сформировать карточку»: поля заполнены, рейтинг — 0, потому что ничего не подтверждено.
- Проверьте название, выберите категорию
ai_assistant(«Чат-бот / AI-ассистент»), укажите контакт[email скрыт]и подтвердите поля: рейтинг — 75, уровень «Готовая». Сохраните и опубликуйте. - Студент: в инкогнито (или после «Сменить роль» в том же окне) выберите роль студента и команду «Байт Батыры». Откройте задачу в каталоге и отправьте предложение: срок в формате
YYYY-MM-DD, ссылка —https://.... - Бизнес: «Мои задачи» → «Сравнить отклики» → «Выбрать команду» → подтвердите этап с 10 баллами. Сумма баллов команды увеличится на 10; повторное начисление за тот же этап недоступно.
- Дополнительно: на странице задачи нажмите «Помощник» и спросите «Как рассчитан рейтинг этой задачи?» — ответ опирается на поля и подсказки рейтинга этой задачи (нужен режим модели).
Данные и интеграции
- Источник начальных данных —
data/tasks.json,data/teams.jsonиdata/proposals.json. Это демонстрационные примеры, а не подтверждённые реальные заказчики или результаты проектов. - Пользовательские задачи, профили команд и предложения сохраняются в SQLite. Файлы и прототипы не загружаются: предложение хранит только URL.
- Профили команд содержат общие навыки и технологии, без личных данных об отдельных участниках.
- Роль, компания и команда — серверная сессия: таблица
browser_sessions, HttpOnly cookietasklab-session, логика вapi/session.go. Роль хранится в браузере до нажатия «Сменить роль» (DELETE /api/sessionудаляет сессию и cookie; задачи, команды и отклики сохраняются). Резервная копия новой задачи хранится вlocalStorage. - Внешний AI API вызывается только при
STUB=0и заданном ключе; иначе работает заглушка. Интеграций с CRM, мессенджерами и внешними источниками бизнес-данных нет. - Ссылки
example.comв начальных предложениях — демонстрационные адреса. - В демонстрационных данных одно предложение уже принято и по нему подтверждён этап (+10 баллов), ещё одно отклонено. Это заранее записанная история ручных решений бизнеса для наглядности кабинета; новые отклики всегда создаются в статусе
pending, и принять их может только представитель бизнеса кнопкой «Выбрать команду». - Дополнительно, вне рамок ТЗ: чат-помощник (кнопка «Помощник» на всех страницах).
POST /api/chat(api/chat.go) отвечает через ту же модель; роль, компания и команда берутся только из серверной сессии, задача из контекста проверяется на доступ (студенту — только опубликованные, бизнесу — только своей компании), история ограничена 12 сообщениями без ролиsystem, не чаще одного запроса в 2 секунды. Помощник только советует и ничего не меняет в данных. В режиме заглушки чат сообщает, что недоступен. Подробности — CHATBOT_INTEGRATION.md.
Ограничения текущей версии
- Нет полноценной аутентификации: сессия браузера закрепляет роль, но это не вход по паролю.
- Оценка использует простые текстовые правила; она не проверяет достоверность данных, реализуемость задания и качество решения.
- Проверка AI-ответа допускает только дословные предложения из источника, поэтому часть полей может остаться пустой и заполняется вручную.
- Нет уведомлений, загрузки файлов, управления участниками команды и полноценного трекера проекта.
- Лимит частоты чата хранится в памяти процесса и сбрасывается при перезапуске; история чата — только в текущей вкладке (
sessionStorage). - Клиент модели передаёт
temperature, поэтому модели семействаgpt-5, принимающие только значение по умолчанию, не поддерживаются: при их выборе вопросы и карточка переходят на заглушку, а чат возвращает понятную ошибку. Провереныgpt-4.1-miniиgpt-4.1. - Подтверждается один этап на предложение; повторное начисление и пересмотр уже принятого решения не предусмотрены.
- Репозиторий не содержит конфигурации промышленного развёртывания. Текущая версия предназначена для демонстрации MVP.
Развёрнутая версия
Публичная версия: https://hackalem-kilc-project-production.up.railway.app. Проверка состояния: /health возвращает {"status":"ok"}.
- Развёрнута на Railway из этого репозитория тем же бинарником, что и
go run .: шаблоны, статика, схема и демонстрационные данные встроены черезembed.FS. - AI работает на OpenAI
gpt-4.1(STUB=0, ключ хранится в переменных окружения Railway, а не в репозитории). Если модель недоступна или ответ некорректен, сервер записывает причину в лог и использует локальную заглушку — сценарий при этом не прерывается. - Роль (бизнес или студенческая команда) хранится в cookie сессии. Переключиться можно кнопкой «Сменить роль» в верхней панели; для одновременной проверки обеих сторон удобно обычное окно для бизнеса и окно инкогнито для команды.
- База — SQLite внутри сервиса, с теми же демонстрационными данными (5 черновиков, 5 карточек, 5 команд, 5 предложений). Данные, созданные при проверке, видны всем проверяющим.
Локальный запуск описан в разделе «Установка и запуск»; адрес после запуска: http://localhost:8080/.
Авторы коммитов
История коммитов
- 2026-09-23 17:59fix(ui): заменить системные confirm на диалог в стиле приложенияZhandos Kadyrkulov
- 2026-09-23 17:54fix(builder): публиковать после правки и подтверждения за один шагZhandos Kadyrkulov
- 2026-09-23 17:54Merge branch 'fix/confirm-publish-ux'Zhandos Kadyrkulov
- 2026-09-23 17:51docs(readme): описать чат-помощник, смену роли и модельZhandos Kadyrkulov
- 2026-09-23 17:50feat(chat): подключить чат-помощник к моделиZhandos Kadyrkulov
- 2026-09-23 17:47feat(session): добавить смену роли и итоговую проверкуZhandos Kadyrkulov
- 2026-09-23 17:42chore(repo): update gitignoreZhandos Kadyrkulov
- 2026-09-23 17:42docs(readme): добавить ссылку на развёрнутую версиюZhandos Kadyrkulov
Все коммиты (66)
- 2026-09-23 17:27progress(hour-5): контрольная точка, интеграция и проверка сценарияZhandos Kadyrkulov
- 2026-09-23 17:24docs(readme): актуализировать README под текущий MVPZhandos Kadyrkulov
- 2026-09-23 17:21fix(ai): проверять карточку по целым предложениям источникаZhandos Kadyrkulov
- 2026-09-23 17:15Revise README for TaskLab project overviewsciddles
- 2026-09-23 17:14fix(merge): объединить origin/main (сессии, bonus) с сохранением вознагражденияZhandos Kadyrkulov
- 2026-09-23 17:13fix(merge): объединить origin/main (сессии, bonus) с сохранением вознагражденияZhandos Kadyrkulov
- 2026-09-23 17:09feat(app): добавить роли, кабинеты компаний, reward и чатurapke
- 2026-09-23 16:51fix(merge): объединить сохранение вознаграждения с подтверждением полейZhandos Kadyrkulov
- 2026-09-23 16:47feat(store): сохранять вознаграждение задачиZhandos Kadyrkulov
- 2026-09-23 16:45Merge branch 'fix/confirmation'Zhandos Kadyrkulov
- 2026-09-23 16:43feat(ai): connected ai to the serviceZhandos Kadyrkulov
- 2026-09-23 16:42fix(store): enforce field confirmation on update and publishZhandos Kadyrkulov
- 2026-09-23 16:15Merge branch 'feat/reward'Zhandos Kadyrkulov
- 2026-09-23 16:14Merge remote-tracking branch 'origin/main' into feat/rewardZhandos Kadyrkulov
- 2026-09-23 16:14feat(builder): add reward controls and position bonusZhandos Kadyrkulov
- 2026-09-23 16:13Merge branch 'feat/navigation'Zhandos Kadyrkulov
- 2026-09-23 16:11feat(ui): unify navigation and role selectionZhandos Kadyrkulov
- 2026-09-23 16:05Merge branch 'main' of https://github.com/BAITC-Hacks/hack-7c4211c3-kilc into feat/rewardZhandos Kadyrkulov
- 2026-09-23 16:05feat(catalog): show reward bonuses in catalog and recommendationsZhandos Kadyrkulov
- 2026-09-23 15:59design uniformed, added features Please enter the commit message for your changes. Lines startingurapke
- 2026-09-23 15:55Merge branch 'main' of https://github.com/BAITC-Hacks/hack-7c4211c3-kilc into feat/rewardZhandos Kadyrkulov
- 2026-09-23 15:53feat(catalog): reward and testZhandos Kadyrkulov
- 2026-09-23 15:47rewardsciddles
- 2026-09-23 15:45fix(merge): объединить регистрацию APIurapke
- 2026-09-23 15:43feat(catalgo): add reward bonus and catalog positionZhandos Kadyrkulov
- 2026-09-23 15:40feat(business): добавить отклики и кабинет бизнесаurapke
- 2026-09-23 15:27Merge branch 'feat/navigation': catalog filters and recommendationsZhandos Kadyrkulov
- 2026-09-23 15:18feat(catalog): recommend tasks for selected teamZhandos Kadyrkulov
- 2026-09-23 15:12Merge branch 'feat/ai'Zhandos Kadyrkulov
- 2026-09-23 15:09feat(ai): добавить клиент модели с переходом на заглушкуZhandos Kadyrkulov
- 2026-09-23 15:07feat(catalog): add catalog filtersZhandos Kadyrkulov
- 2026-09-23 15:04feat(ai): проверять и очищать ответ моделиZhandos Kadyrkulov
- 2026-09-23 15:02feat(ai): добавить интерфейс Client, заглушку и промптыZhandos Kadyrkulov
- 2026-09-23 14:54chore(repo): add .DS_Store to .gitignoreZhandos Kadyrkulov
- 2026-09-23 14:51fix(merge): объединить каталог и API конструктораurapke
- 2026-09-23 14:45feat(ui): подключить страницы к Go API и SQLiteurapke
- 2026-09-23 14:41chore(repo): remove .DS_Store from repoZhandos Kadyrkulov
- 2026-09-23 14:40feat(api): подключить POST /api/rating в main.goZhandos Kadyrkulov
- 2026-09-23 14:40fix(rating): исправить ожидание порядка подсказок в тестеZhandos Kadyrkulov
- 2026-09-23 14:36level.go and modified PROGRESS.mdZhandos Kadyrkulov
- 2026-09-23 14:34Merge branch 'platform/skeleton': finished skeleton and api endpointsZhandos Kadyrkulov
- 2026-09-23 14:34feat(catalog): вывести каталог опубликованных задач по убыванию рейтингаZhandos Kadyrkulov
- 2026-09-23 14:32tamplatessciddles
- 2026-09-23 14:25data(seed): добавить демо-данные в JSON и заполнение пустой базы при стартеZhandos Kadyrkulov
- 2026-09-23 14:21Merge branch 'platform/skeleton': server skeleton, schema and CRUD tasksZhandos Kadyrkulov
- 2026-09-23 14:20[200~feat(store): добавить хранение команд и предложений с ручным решениемZhandos Kadyrkulov
- 2026-09-23 14:18POST API request for rating to call it from the frontendZhandos Kadyrkulov
- 2026-09-23 14:17feat(api): добавить endpoint для расчета рейтинга карточкиZhandos Kadyrkulov
- 2026-09-23 14:14Merge branch 'rating/contract'Zhandos Kadyrkulov
- 2026-09-23 14:11feat(ui): добавить конструктор бизнес-задачurapke
- 2026-09-23 14:09feat(rating): реализовать оценку карточки и уровниZhandos Kadyrkulov
- 2026-09-23 14:08feat(store): добавить CRUD задач с пересчётом рейтинга и запрос каталогаZhandos Kadyrkulov
- 2026-09-23 14:01infra(repo): добавить каркас сервера, схему SQLite и /healthZhandos Kadyrkulov
- 2026-09-23 13:45infra(repo): добавить go.mod и go.sum с драйвером SQLiteZhandos Kadyrkulov
- 2026-09-23 13:44docs(repo): уточнить модель данных в AGENTS.mdZhandos Kadyrkulov
- 2026-09-23 13:42docs(repo): добавить шаблон постановки задач для AI-агентаZhandos Kadyrkulov
- 2026-09-23 13:21docs(repo): добавить AGENTS.md с правилами для AI-агентовZhandos Kadyrkulov
- 2026-09-23 13:17docs(repo): добавить соглашение о коммитах и журнал разработкиZhandos Kadyrkulov
Структура репозитория (96 файлов)
.env.example .gitignore AGENTS.md CHATBOT_INTEGRATION.md COMMITS.md PROGRESS.md README.md TASK_EXAMPLE.md ai/README.md ai/ai.go ai/chat.go ai/fallback.go ai/model.go ai/model_test.go ai/new.go ai/prompts.go ai/stub.go ai/stub_test.go ai/validate.go ai/validate_test.go api/ai.go api/ai_test.go api/business.go api/business_test.go api/catalog.go api/catalog_test.go api/chat.go api/chat_test.go api/company_test.go api/frontend.go api/frontend_test.go api/proposals.go api/proposals_test.go api/rating.go api/rating_test.go api/recommend.go api/recommend_test.go api/reward.go api/session.go api/session_test.go data/proposals.json data/tasks.json data/teams.json env.go env_test.go go.mod go.sum main.go rating/levels.go rating/rating.go rating/rating_test.go rating/reward.go rating/reward_test.go rating/types.go schema.sql static/chat.css static/chat.js static/nav.js static/recommend.js static/style.css static/task-builder/README.md static/task-builder/account.css static/task-builder/account.js static/task-builder/app.js static/task-builder/business.html static/task-builder/business.js static/task-builder/client.js static/task-builder/company.html static/task-builder/company.js static/task-builder/index.html static/task-builder/login.html static/task-builder/styles.css static/task-builder/task.html static/task-builder/task.js static/task-builder/team-catalog.html static/task-builder/team-catalog.js static/task-builder/teams.html store/business.go store/business_test.go store/categories.go store/company_migration.go store/company_migration_test.go store/errors.go store/proposals.go store/proposals_test.go store/reward_migration.go store/reward_migration_test.go store/seed.go store/seed_test.go store/store.go store/store_test.go store/tasks.go store/tasks_test.go store/teams.go templates/catalog.html templates/layout.html
Обсуждение 0 комментариев
Войдите, чтобы комментироватьПока нет комментариев — будьте первым.