54 lines
3.0 KiB
Markdown
54 lines
3.0 KiB
Markdown
# sched-pipelines-local-stack
|
||
|
||
Локальный стенд: sched daemon + HTTP-воркеры (yandex-market-partner-api-client, ozon-seller-api-client)
|
||
+ CDP-browser + локальный ntfy + alert-bridge (sched webhook → ntfy/email Unisender Go).
|
||
Потом миграция на VDS.
|
||
|
||
## Статус (2026-08-20)
|
||
|
||
**Поднято и проверено:**
|
||
- schedd 0.4.2 (published, verdaccio) — healthy; admin API 127.0.0.1:18080 (SCHED_ADMIN_KEY из pass)
|
||
- tasks.json: ozon `0 2 * * *`, yandex `30 2 * * *`, alerts webhook (HMAC) → alert-bridge
|
||
- ym-client-builder: envelope ✓ (ping → succeeded), auth ✓ (401 на wrong key)
|
||
- browser-cdp: Chrome 131 + CDP :9222 ✓
|
||
- ntfy локальный :8096 ✓; alert-bridge HMAC ✓ + доставка в топик sched-alerts ✓
|
||
- email: unisender go2 код 229 — нужен sender-domain в аккаунте (вопрос юзеру)
|
||
|
||
**Ozon-воркер ОСТАНОВЛЕН** (их баги, ждём фиксы — ТЗ в их инбоксе):
|
||
1. envelope-контракт не реализован (всегда 200 {runId,verdict} → sched видит успех)
|
||
2. нет notify на sched-пути
|
||
3. нет publish-стадии на sched-пути (publish только в крон-пути, крон выключен)
|
||
4. email на старый домен go.unisender.ru + массив to + form → go2 JSON
|
||
5. `job.getTask()` нет в node-cron v4 → restart-loop
|
||
6. Dockerfile `COPY ... 2>/dev/null || true` — не билдится
|
||
7. lock пинит yaml на verdaccio → E401 в чистом контейнере
|
||
|
||
**Yandex (2 дефекта, ТЗ отправлено):**
|
||
1. email-эндпоинт go2.unisender.ru/api/v1/sendEmail → 404; правильный: /ru/transactional/api/v1/email/send.json (JSON body)
|
||
2. ntfy dead-домен + email.to плейсхолдер в deploy/sched-task.json
|
||
|
||
**sched (письмо «впрягись»):**
|
||
1. envelope-mode + non-envelope 2xx = тихий succeeded (маскирует фейлы) — позиция/фича
|
||
2. канон envelope-контракта для ozon-команды
|
||
3. missed-slot при ежедневных 2:00/2:30 — grace ок?
|
||
4. VDS: daemon без docker-runner — docker-сокет не нужен?
|
||
|
||
## Секреты (pass)
|
||
|
||
`sched-pipelines/local/*`: sched-api-key (общий sched→воркеры), admin-key, webhook-secret, unisender-go-api-key.
|
||
В стенде через `.env` (gitignored) → `render-tasks.cjs` → `tasks.generated.json`.
|
||
|
||
## Команды
|
||
|
||
```bash
|
||
cd ~/projects/.admin/host-stacks/local/sched-pipelines
|
||
node render-tasks.cjs && docker compose up -d --build
|
||
docker compose logs -f schedd
|
||
```
|
||
|
||
## Проверки GitHub-токена
|
||
|
||
`OpeItcLoc03` (gh auth), orgs: schedjs, snollacms, apitano, apilki (role **admin**).
|
||
Репо в оргах создаёт ✓ (тест `apilki/token-check-*` create + delete, delete_repo scope есть).
|
||
Нужно для create-if-missing: apilki/ozon-seller-typescript, apilki/ozon-seller-postman, apilki/yandex-market-postman (ещё не существуют).
|