feat(deploy): inject OBJECTIVE_API_KEY into backend/.env.runtime #311
No reviewers
Labels
No labels
admin
analytics
auth
automation
bug
business
chore
ci
compliance
data
data-moat
docs
duplicate
dx
enhancement
Fable 5 ревью
feedback/max
generative
GG-форсайт
needs-discussion
needs-human
observability
pause-bots
performance
priority/p0
priority/p1
priority/p2
priority/p3
scope/backend
scope/db
scope/devops
scope/frontend
scope/qa
scrapers
security
site-finder
stage/1
stage/2
status/blocked
status/done
status/needs-analysis
status/needs-fix
status/qa
status/ready
status/review
status/wip
tech-debt
tradein
ux
week ревью 1
wontfix
вторичка
ИРД
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: lekss361/gendesign#311
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "feat/obj-key-prod-env"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Цель
Активировать live Objective scraper в production — сейчас
OBJECTIVE_API_KEYотсутствует в env прод-контейнеров (backend, worker, beat), из-за чего:POST /api/v1/admin/scrape/objective/sync-our→ HTTP 503 (OBJECTIVE_API_KEY не задан)tasks.scrape_objective.sync_all_groupsкаждый вторник 06:00 UTC early-returns с{"skipped": true, "reason": "no_api_key"}objective_scrape_runs= 0 строк (никогда не запускался)objective_raw_reports= 0 строкobjective_lots(303k) — это разовый импорт SQLite (May 10), не liveЧто меняет
.forgejo/workflows/deploy.yml— 3 hunks в jobdeploy:env:—OBJECTIVE_API_KEY: ${{ secrets.OBJECTIVE_API_KEY }}envs:whitelist (passthrough в ssh-action) — добавленOBJECTIVE_API_KEYbackend/.env.runtime— тот же паттерн что используется дляGLITCHTIP_DSN/SENTRY_RELEASEAcceptance
После merge + deploy:
docker compose -p gendesign exec backend env | grep OBJECTIVE_API_KEYпоказывает ключcurl -X POST -H "X-Admin-Token: $TOK" https://gendsgn.ru/api/v1/admin/scrape/objective/sync-our→ 200 + task_id (не 503)objective_scrape_runsполучит первую строку, через ~12-15 мин —objective_lots.raw_id IS NOT NULLдля свежих строкReferences
code/patterns/Objective_Data_Source_May17.md— single source of truthcode/patterns/DomRF_Scraper_Roadmap_May17.md§ Objective goldmineevents/Objective_Integration_May07_2026.md— confirmed prod env missed key с самого начала integrationRisk
Минимальный:
--force-recreate --no-deps backend worker beatуже в workflow — env подхватится без manual restartUseDkp=trueбез ComplexName работает на "Свердловская область" (200, 324k rows)Forgejo secret
OBJECTIVE_API_KEYуже добавлен.Merged via deep-code-reviewer — verdict APPROVE.
Squash merge:
a93bef4147af36e4e3fbee70512ad98a4813056a. Forgejo Actions deploy job триггерится автоматически (push в main). Через ~5-8 мин--force-recreate --no-deps backend worker beatподхватит новый env изbackend/.env.runtime.Verification checklist (post-deploy ~5-8 min)
docker compose -p gendesign exec backend env | grep OBJECTIVE_API_KEY→ должен показатьOBJECTIVE_API_KEY=623f...curl -X POST -H "X-Admin-Token: $TOK" https://gendsgn.ru/api/v1/admin/scrape/objective/sync-our→ 200 + task_id (не 503)SELECT COUNT(*) FROM objective_scrape_runs→ должен стать >0 после первого manual / scheduled триггераSELECT COUNT(*) FROM objective_raw_reports WHERE created_at >= NOW() - interval '1 hour'→ >0tasks.scrape_objective.sync_all_groups(вторник 06:00 UTC) — следующий запуск проверить что не early-returnsno_api_key