ict-mastery-api

Cloudflare Worker — серверный слой курса. Что делает:

  • API прогресса учеников (KV) — Phase 3
  • Архивы AI-семинаров (KV) — Phase 4-5
  • Проксирование к Claude API + лимит-чек — Phase 5
  • Strategy parser / агрегаты для дашбордов — Phase 4.5b

Архитектура — 00-Plan/SPOSOB-3-RESEARCH.md §6.8. Чеклист — 00-Plan/SPOSOB-3-IMPLEMENTATION.md §4 Phase 3.

Быстрый старт (для Senat’а)

1. Установить wrangler (один раз глобально)

npm install -g wrangler

2. Войти в Cloudflare (один раз)

wrangler login

Откроется браузер → подтвердишь доступ → CLI запомнит токен в ~/.config/wrangler/. Дальше всё из консоли.

3. Установить зависимости

cd _worker
npm install

4. Запустить локально (mock-режим)

npm run dev

Worker запустится на http://localhost:8787. Проверка:

curl http://localhost:8787/
curl "http://localhost:8787/api/dashboard?u=test-mock-12345"

Должен вернуть JSON дашборда с моками M01-M02.

5. Создать KV namespace (Phase 3.2)

wrangler kv:namespace create ICT_PROGRESS
wrangler kv:namespace create ICT_PROGRESS --preview

Каждая команда выводит блок:

[[kv_namespaces]]
binding = "ICT_PROGRESS"
id = "abc123..."
preview_id = "def456..."

Этот блок — вставить в wrangler.toml (там закомментирован пустой шаблон).

6. Первый деплой в прод

wrangler deploy

URL после деплоя — что-то вроде https://ict-mastery-api.<account>.workers.dev. Проверка:

curl "https://ict-mastery-api.<account>.workers.dev/api/dashboard?u=test-mock-12345"

7. Привязать api.senatr.uk (UI Cloudflare)

dash.cloudflare.com → Workers & Pages → ict-mastery-api → Settings → Triggers → Custom Domains → Add Custom Domain → api.senatr.uk

Cloudflare сам добавит CNAME в зону senatr.uk. SSL — auto. Проверка через 1-5 мин:

curl "https://api.senatr.uk/api/dashboard?u=test-mock-12345"

Endpoints (Phase 3.1 mock)

МетодПутьЧто делает
GET/Health-check + список эндпоинтов
GET/api/dashboard?u=TOKENДашборд прогресса (MOCK)
POST/api/progressЗапись прогресса (MOCK, body: {u, kind, refId, data})

Mock-токены (в src/index.ts константа MOCK_LEARNERS):

  • test-mock-12345 — student
  • senat-author-mock-67890 — admin

После Phase 3.2 — реальные токены через learners ключ в KV.

Структура кода

_worker/
├── wrangler.toml        # Cloudflare config (Worker name, KV bindings, vars)
├── package.json         # npm scripts + devDependencies
├── tsconfig.json        # TypeScript strict
├── src/
│   └── index.ts         # Entry — routing + handlers + KV schema (в комментах)
├── .gitignore           # node_modules, .wrangler, .dev.vars
└── README.md            # этот файл

Полезные команды wrangler

wrangler dev              # local dev на localhost:8787
wrangler deploy           # push в прод
wrangler tail             # live-логи (console.log из Worker'а)
wrangler kv:key list --binding ICT_PROGRESS   # просмотр ключей KV
wrangler kv:key get "learners" --binding ICT_PROGRESS
wrangler secret put ANTHROPIC_API_KEY         # секреты (Phase 5)

Что НЕ хранится здесь

  • Anthropic API key — через wrangler secret put ANTHROPIC_API_KEY, не в коде.
  • Author admin token — через wrangler secret put AUTHOR_TOKEN.
  • Локально для wrangler dev — в .dev.vars.gitignore).