Files
wiki/tasks/orchestrator/reports/dev-2026-06-02-orch6-multirepo.md
2026-06-02 22:20:01 +03:00

2.1 KiB
Raw Blame History

Dev Report: ORCH-6 — Multi-repo (фильтр проекта + маппинг repo per project)

Дата: 2026-06-02 Статус: IN PROGRESS

Задача

Plane-webhook ловит issue из любого проекта и льёт всё в default_repo=enduro-trails (хардкод). Нужно: реестр проектов (Plane project id → repo + prefix), фильтр webhook по проекту, resolve repo/prefix из маппинга, plane_sync в правильный проект.

ТЗ: tasks/orchestrator/DEV_TASK_ORCH6_MULTIREPO.md

Инфра

  • Сервер slin@82.22.50.71, репо /home/slin/repos/orchestrator (remote admin/orchestrator)
  • Контейнер orchestrator (port 8500)
  • Ветка: feature/ORCH-6-multirepo (от feature/ORCH-2-worktree)

Сделано

  • Task 0: прочитал ТЗ, аудит, весь релевантный код. Создал ветку.
  • Task 1: src/projects.py — реестр + резолверы + config.projects_json
  • Task 2: plane-webhook фильтр + resolve
  • Task 3: plane_sync параметризован по project_id (обратно совместимо)
  • Task 4: db.py prefix per project
  • Task 5: gitea неизвестный repo → ignored
  • Task 6: тесты + доки
  • Task 7: деплой + проверка резолва/фильтра

Изменённые файлы

(заполняется по ходу)

Результат

(в конце)

Проблемы и решения

  • ВАЖНО: существующие тесты в test_webhooks.py используют "project": "proj-1" — это НЕ в реестре. После добавления фильтра задача не создастся → тесты сломаются. Решение: зарегистрировать proj-1 через ORCH_PROJECTS_JSON в env тестов (gitea-тесты используют repo enduro-trails — уже в дефолтном реестре, ок).

Следующий шаг

Task 1 — создать src/projects.py