AAYMA
RU
Войти

TASKER

Платформа бизнес-задач для студенческих команд: каталог опубликованных задач с серверным рейтингом готовности, паспорт задачи, команды, отклики; на…

Прототип
Команда «RM Edtech» 4💬 0 комментариевс 23 сентября 2026 г.

О проекте

Команда: RM Edtech
Кейс HackAlem.ai: Образование — AI Sana
Стадия: Прототип

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

Суть

Платформа бизнес-задач для студенческих команд: каталог опубликованных задач с серверным рейтингом готовности, паспорт задачи, команды, отклики; на backend есть AI-анализ задачи через OpenAI с локальным fallback.

Как устроено

Сервер на чистом Node.js без зависимостей хранит состояние в JSON-файле (атомарная запись через временный файл и rename). Рейтинг задачи правиловый: баллы за подтверждённые поля (контекст и потребность по 10, данные 20, результат и критерии успеха по 15 и т.д.), максимум 100, с уровнями «требует уточнения / рабочая / готовая / приоритетная». AI-анализ (src/ai) обращается к OpenAI с защитой и локальным fallback. В восстановленном интерфейсе формы создания задачи, AI и отклики не подключены, хотя серверные реализации есть.

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

  • правиловый скоринг готовности задачи
  • OpenAI-анализ с локальным fallback
  • версионирование снимков задачи (защита от конфликтов)
  • JSON-хранилище

Особенности

Прозрачная шкала готовности задачи с весами по полям и расшифровкой баллов в паспорте. 135 тестов при нуле сторонних зависимостей. Но из-за отката интерфейса ключевой AI-сценарий в UI не виден.

Стек

Node.js · JavaScript (ESM) · HTML/CSS · node:test

Модели

OpenAI


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

README

README.md

TASKER

Платформа бизнес-задач для студенческих команд на HackAlem. Бизнес формулирует потребность, команды изучают условия в паспорте задачи. В одной сборке объединены актуальный backend и исходный интерфейс 3600d55^ с именем TASKER и увеличенными шрифтами. В браузере работают открытый каталог, серверный рейтинг, фильтры, команды, избранное и паспорт задачи. Формы создания, AI, подтверждения, публикации, отправки откликов и решений бизнеса в восстановленном интерфейсе отсутствуют; серверные реализации сохранены.

Запуск

Node.js 20 или новее. Сторонние зависимости не нужны.

node --version
npm start

Открыть http://127.0.0.1:3000/ без ?preview=1. Данные загружаются через API; в шапке отображается «API подключён». Сервер слушает только локальный адрес. Это демонстрационный проект с синтетическими примерами и переключателем ролей, без настоящей аутентификации.

npm test

135 тестов проверяют рейтинг, фильтры, HTTP API v1, хранение, AI и fallback, отклики и принятые этапы, внутренние сервисы v2 и транспорт интерфейса. POST не повторяется автоматически при неопределённом сетевом результате; preview не отправляет записи. Объединённая сборка проверена на Node 20.9.0; серверный автор также проверял Node 24.19.0.

Переменные окружения:

ИмяПо умолчаниюНазначение
PORT3000Локальный порт, целое число 1–65535
DATA_FILEdata/state.jsonJSON-база; относительный путь считается от рабочей папки процесса

При первом запуске база создаётся из seed. На один DATA_FILE запускается только один сервер. База и секреты не входят в Git. PORT и DATA_FILE задаются окружением запуска. Настройки серверного AI описаны в src/ai/README.md; ключи и локальные .env не публикуются.

Для самостоятельного предпросмотра интерфейса: npm run preview, адрес http://127.0.0.1:4173/?preview=1. Этот явный режим читает статическую фикстуру и не используется вместо API при ошибках.

Архитектура

  • public/ — интерфейс и транспорт API; официальный рейтинг не рассчитывается в браузере.
  • server.mjs — стандартный HTTP-сервер Node и раздача public/.
  • src/domain.mjs — поля, шкала, валидация и каталог.
  • src/store.mjs — последовательная запись JSON через временный файл и rename.
  • src/state.mjs — выдача состояния и расчёт баллов команд из подтверждённых этапов.
  • src/seed.mjs — по пять синтетических черновиков, задач, команд и откликов.
  • tests/ — серверные, интеграционные и транспортные тесты.

Backend 725948c сохранён целиком: реализованы все endpoints API v1 из docs/API_CONTRACT.md. Исходный app.js вызывает только GET /api/state и GET /api/catalog; createTask сохранён в транспорте для последующего подключения формы. Сервисы v2 пока не подключены к HTTP и экранам, живой Google-вход отложен. Актуальные границы готовности — docs/FRONTEND_STATUS.md и docs/BACKEND_STATUS.md.

Айдентика и продуктовые решения: docs/BRAND_DIRECTION.md. Исходная карточка показывает серверный балл, в паспорте раскрывается серверная расшифровка по семи группам. Баллы браузер не пересчитывает. Прежняя витрина /tasker-system.html сохранена для истории и больше не определяет рабочий дизайн.

Рейтинг

Баллы начисляются только за непустые подтверждённые поля. Контекст и потребность — по 10; данные — 20; результат и критерии успеха — по 15; ограничения и пользователи — по 10; контакт — 3, формат взаимодействия — 3, обратная связь — 4. Максимум 100. Название нужно для публикации, баллов не даёт.

0–39 — требует уточнения; 40–69 — рабочая; 70–89 — готовая; 90–100 — приоритетная. Каталог включает все опубликованные задачи, даже с нулевым рейтингом, и сортирует их по баллам. При равенстве раньше показана задача с более ранней публикацией. Поиск работает по полям, компании, отрасли и тегам. Неопубликованный черновик в каталог не попадает.

Проверка первого этапа вручную

  1. Открыть приложение без preview: пять задач с рейтингами 100, 90, 65, 45, 20.
  2. Найти «Карты»: остаётся туристическая задача. Сбросить фильтры: вернутся все пять.
  3. Открыть задачу студии с 20 баллами: увидеть заполненные и отсутствующие поля и причины рейтинга.
  4. Проверить фильтры отрасли и готовности, избранное и список команд.
  5. Повторно запустить сервер: существующая база читается без пересоздания seed.
  6. Проверить ширины 1440/664/390: каталог обоими видами, команды и диалог задачи, без горизонтального переполнения.

Работа команды

Правила и владельцы: AGENTS.md и docs/COORDINATION.md. Перед небольшим этапом выполнить npm run team:sync -- frontend или npm run team:sync -- backend. Команда получает опубликованные изменения и читает статус коллеги; рабочие файлы не меняет.

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

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

amlrltd 26foldichannel 11

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

  • 2026-09-23 18:06Connect platform HTTP API and local portfolio assistanceamlrltd
  • 2026-09-23 18:02Merge remote-tracking branch 'origin/feat/frontend' into feat/backendamlrltd
  • 2026-09-23 18:01Preserve confirmed order readiness and safe editingamlrltd
  • 2026-09-23 17:58Restore original TASKER interface on shared backendfoldichannel
  • 2026-09-23 17:58Merge remote-tracking branch 'origin/feat/backend' into feat/frontendfoldichannel
  • 2026-09-23 17:52Start complete three-page and AI integrationamlrltd
  • 2026-09-23 17:50docs: reserve original TASKER rollback on shared backendfoldichannel
  • 2026-09-23 17:43Verify integrated Commissioner design and functional ownershipamlrltd
Все коммиты (37)
  • 2026-09-23 17:38Merge remote-tracking branch 'origin/feat/frontend' into feat/backendamlrltd
  • 2026-09-23 17:38Assign design to frontend and functional integration to backendamlrltd
  • 2026-09-23 17:33Add private platform services for Google accounts and student ordersamlrltd
  • 2026-09-23 17:33Build Commissioner showcase with field lighting and weighted windowsfoldichannel
  • 2026-09-23 17:21Propose three-page platform API and reserve account servicesamlrltd
  • 2026-09-23 17:11docs: reserve Commissioner and field-lighting showcase revisionfoldichannel
  • 2026-09-23 17:03Complete proposal lifecycle and add guarded OpenAI analysisamlrltd
  • 2026-09-23 16:50docs: publish integrated preview and reserve remaining server flowsamlrltd
  • 2026-09-23 16:46Merge remote-tracking branch 'origin/feat/frontend' into feat/backendamlrltd
  • 2026-09-23 16:46docs: start integrated preview and remaining backend workamlrltd
  • 2026-09-23 16:44Build isolated TASKER component showcase with fixed palettefoldichannel
  • 2026-09-23 16:36docs: reserve approved TASKER component showcasefoldichannel
  • 2026-09-23 16:35feat: publish confirmed tasks and record student experience decisionsamlrltd
  • 2026-09-23 16:24docs: propose individual participation and evidence-based student casesamlrltd
  • 2026-09-23 16:18docs: record shared product decisions and role-first entryamlrltd
  • 2026-09-23 16:03feat: confirm task snapshots with version conflict protectionamlrltd
  • 2026-09-23 16:01Build alem identity, readiness passports and business draft flowfoldichannel
  • 2026-09-23 15:55docs: set practical learning goals and reserve confirmation stepamlrltd
  • 2026-09-23 15:48feat: add validated local AI analysis with safe fallbackamlrltd
  • 2026-09-23 15:45docs: reserve identity and draft-creation frontend workfoldichannel
  • 2026-09-23 15:39docs: publish shared-base integration and AI stage scopeamlrltd
  • 2026-09-23 15:38Merge remote-tracking branch 'origin/feat/frontend' into feat/backendamlrltd
  • 2026-09-23 15:21feat: create validated persisted business draftsamlrltd
  • 2026-09-23 15:18Merge published backend history and confirm stage-one integrationfoldichannel
  • 2026-09-23 15:17docs: reserve backend draft-creation stepamlrltd
  • 2026-09-23 15:16Integrate stage-one catalog UI and backendfoldichannel
  • 2026-09-23 15:16docs: coordinate backend progress through GitHub branchesamlrltd
  • 2026-09-23 15:01feat: serve persisted state and catalog with backend testsamlrltd
  • 2026-09-23 14:55chore: import supplied team starter and frontend stage oneamlrltd
Структура репозитория (77 файлов)
.gitignore
AGENTS.md
README.md
docs/API_CONTRACT.md
docs/BACKEND_STATUS.md
docs/BRAND_DIRECTION.md
docs/COORDINATION.md
docs/FIRST_CODEX_HANDOFF_PROMPT.md
docs/FRONTEND_README.md
docs/FRONTEND_STATUS.md
docs/PLATFORM_V2_PROPOSAL.md
docs/PRODUCT_QUALITY.md
docs/SECOND_CODEX_PROMPT.md
docs/STUDENT_CASES_PROPOSAL.md
docs/TEAM_PLAN.md
package.json
public/api.js
public/app.js
public/favicon.svg
public/index.html
public/preview-data.json
public/styles.css
public/tasker-system.html
public/tasker/fonts/Commissioner-Variable.woff2
public/tasker/fonts/OFL.txt
public/tasker/fonts/README.md
public/tasker/mark.svg
public/tasker/system.css
public/tasker/system.js
public/tasker/tokens.css
scripts/demo.mjs
scripts/preview.mjs
scripts/team-sync.mjs
server.mjs
src/ai/README.md
src/ai/analyze.mjs
src/ai/config.mjs
src/ai/examples.json
src/ai/local.mjs
src/ai/openai.mjs
src/ai/prompt.mjs
src/domain.mjs
src/http-json.mjs
src/platform/README.md
src/platform/assist.mjs
src/platform/auth.mjs
src/platform/cases.mjs
src/platform/demo.mjs
src/platform/files.mjs
src/platform/http.mjs
src/platform/orders.mjs
src/platform/profile.mjs
src/platform/reviews.mjs
src/platform/store.mjs
src/proposals.mjs
src/seed.mjs
src/state.mjs
src/store.mjs
src/tasks.mjs
tests/backend/ai.test.mjs
tests/backend/domain.test.mjs
tests/backend/helpers.mjs
tests/backend/http.test.mjs
tests/backend/lifecycle.test.mjs
tests/backend/platform-assist.test.mjs
tests/backend/platform-auth.test.mjs
tests/backend/platform-cases.test.mjs
tests/backend/platform-files.test.mjs
tests/backend/platform-http.test.mjs
tests/backend/platform-journey.test.mjs
tests/backend/platform-orders.test.mjs
tests/backend/platform-profile.test.mjs
tests/backend/platform-reviews.test.mjs
tests/backend/proposals.test.mjs
tests/backend/remote-ai.test.mjs
tests/backend/store.test.mjs
tests/e2e/catalog-api.test.mjs
Ветки (3)

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

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

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