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 wrangler2. Войти в Cloudflare (один раз)
wrangler loginОткроется браузер → подтвердишь доступ → CLI запомнит токен в ~/.config/wrangler/. Дальше всё из консоли.
3. Установить зависимости
cd _worker
npm install4. Запустить локально (mock-режим)
npm run devWorker запустится на 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 deployURL после деплоя — что-то вроде 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— studentsenat-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).