Compliencer — Процесс разработки (Development Process)

Обновлено: 2026-04-01 · Версия оркестратора: v5 (Python)
Человек (Human)
GitLab Доска (Kanban Board)
Docker Агенты (Docker Agents)
Оркестратор (Orchestrator)
Развёртывание (Deployment)
Наблюдатель (Watchdog)
%%{init: {
  'theme': 'dark',
  'themeVariables': {
    'primaryColor': '#1e293b',
    'primaryBorderColor': '#475569',
    'primaryTextColor': '#f1f5f9',
    'lineColor': '#64748b',
    'secondaryColor': '#334155',
    'tertiaryColor': '#0f172a',
    'fontSize': '13px'
  }
}}%%

flowchart TB

    subgraph HUMAN["ЧЕЛОВЕК (Human)"]
        style HUMAN fill:#422006,stroke:#f59e0b,stroke-width:2px,color:#fef3c7

        N1["1. Иван создаёт задачу\nв GitLab Issues"]
        N2["2. Определяет сложность\nи приоритет задачи"]
        N3["3. Назначает метки:\nstatus/backlog, bot/developer,\npriority/medium, type/feature"]
        N40["40. Человек проверяет результат\nна dev-compliencer.zentrolink.de"]
        N41["41. Ревью кода\nв Merge Request:\ndiff, pipeline, тесты"]

        N1 --> N2 --> N3
    end

    subgraph GITLAB["GITLAB ДОСКА (Kanban Board)"]
        style GITLAB fill:#431407,stroke:#f97316,stroke-width:2px,color:#fed7aa

        N4["4. BACKLOG\nОчередь задач"]
        N10["10. IN-PROGRESS\nВ работе"]
        N20["20. CHECK-IT\nНа проверке у Codex"]
        N30["30. DONE\nВыполнено"]
        N31["31. FAILED\nПровалено после 3 попыток"]
    end

    subgraph AGENTS["DOCKER АГЕНТЫ (agent-loop.sh)"]
        style AGENTS fill:#083344,stroke:#22d3ee,stroke-width:2px,color:#cffafe

        N5["5. Агент опрашивает GitLab API\nкаждые 5 минут:\nGET /issues?labels=status/backlog"]
        N6["6. Проверяет совместимость\nпо модели: sonnet / opus"]
        N7["7. Забирает задачу:\nкомментарий + метка agent/ID\n+ status/in-progress"]
        N8["8. Скачивает код, создаёт ветку:\nfeat/agent-ID-gl-IID-slug"]
        N9["9. Запускает Claude Code\nс загруженными Skills и Memory"]
        N11["11. Claude пишет код и тесты\nпо описанию из Issue"]
        N12["12. git push ветки\nтолько feature branch, не dev"]
        N13["13. Записывает результат:\n/tmp/agent_result.txt\nSTATUS, SUMMARY, BRANCH"]
        N14["14. Постит результат\nкак комментарий в GitLab Issue"]

        N5 --> N6 --> N7 --> N8 --> N9 --> N11 --> N12 --> N13 --> N14
    end

    subgraph ORCH["ОРКЕСТРАТОР (orchestrator.py v5)"]
        style ORCH fill:#2e1065,stroke:#a78bfa,stroke-width:2px,color:#ede9fe

        N15["15. Цикл каждые 60 секунд:\nпроверяет статусы задач"]
        N16["16. Проверяет IN-PROGRESS:\nесть ли комментарий\nAgent Result от агента?"]
        N17["17. Результат найден:\nперемещает задачу\nв status/check-it"]
        N18["18. Задача зависла\nбольше 2 часов\nбез результата?"]
        N19["19. Попытка меньше 3:\nвозвращает в status/backlog\nинкремент счётчика попыток"]
        N21["21. CODEX REVIEW\nкаждые 5 минут:\nавтоматический код-ревью\nветки агента"]
        N22["22. Генерирует diff:\ngit diff origin/dev\n...origin/branch"]
        N23["23. Claude Sonnet оценивает\nкод по 10-балльной шкале:\nбезопасность, тесты, качество"]
        N24{"24. Оценка >= 7 из 10?\nПорог одобрения"}
        N25["25. ОДОБРЕНО:\nмерж ветки в dev\ngit merge + push"]
        N26["26. ОТКЛОНЕНО:\nвозврат в status/backlog\nдля доработки агентом"]
        N27["27. Постит результат\nCodex Review как комментарий\nс оценкой и замечаниями"]
        N28["28. Отправляет уведомление\nв Telegram:\nзадача готова или проблема"]
        N29["29. Проверяет status/done:\nавтозакрытие issues"]

        N15 --> N16
        N16 -->|"Результат есть"| N17
        N16 -->|"Результата нет"| N18
        N18 -->|"Меньше 2 часов"| N15
        N18 -->|"Больше 2ч, попытка до 3"| N19
        N18 -->|"Больше 2ч, попытка = 3"| N31
        N17 --> N21
        N21 --> N22 --> N23 --> N24
        N24 -->|"Оценка >= 7"| N25
        N24 -->|"Оценка < 7"| N26
        N25 --> N27
        N26 --> N27
        N27 --> N28
    end

    subgraph DEPLOY["РАЗВЁРТЫВАНИЕ (Deployment)"]
        style DEPLOY fill:#052e16,stroke:#34d399,stroke-width:2px,color:#d1fae5

        N32["32. Код в ветке dev\nпосле мержа Codex"]
        N33["33. Автодеплой на DEV:\ndev-compliencer.zentrolink.de\nscripts/deploy-dev.sh"]
        N34["34. Человек даёт аппрув:\nмерж в main или деплой на прод"]
        N35["35. git merge dev в main"]
        N36["36. Деплой на PROD:\ncompliencer.zentrolink.de\nscripts/deploy-prod.sh"]

        N32 --> N33 --> N34
        N34 -->|"Аппрув Ивана"| N35 --> N36
    end

    subgraph WATCHDOG["НАБЛЮДАТЕЛЬ (Watchdog)"]
        style WATCHDOG fill:#4c0519,stroke:#fb7185,stroke-width:2px,color:#ffe4e6

        N37["37. Cron каждые 30 минут:\nclaude-watchdog.sh"]
        N38["38. Убивает Claude-процессы\nстарше 6 часов"]
        N39["39. Проверяет лимит:\nне более 3 Claude одновременно"]
    end

    N3 -->|"Задача создана\nв GitLab"| N4
    N4 -->|"Агент видит задачу\nчерез API"| N5
    N7 -->|"Меняет метку\nна in-progress"| N10
    N14 -->|"Результат опубликован\nв GitLab"| N10
    N10 -->|"Оркестратор\nмониторит"| N16
    N17 --> N20
    N19 -->|"Повторная попытка"| N4
    N25 -->|"Мерж в dev"| N30
    N25 --> N32
    N26 -->|"Возврат на доработку"| N4
    N29 -->|"Автозакрытие"| N30
    N28 -->|"Уведомление\nв Telegram"| N40
    N40 --> N41
    N41 -->|"Всё ОК"| N34
    N41 -->|"Нужны правки"| N4

    N37 -.->|"Контроль"| AGENTS
    N38 -.->|"Убивает зомби"| AGENTS
    N39 -.->|"Лимит процессов"| AGENTS

    style N1 fill:#78350f,stroke:#fbbf24,color:#fef3c7
    style N2 fill:#78350f,stroke:#fbbf24,color:#fef3c7
    style N3 fill:#78350f,stroke:#fbbf24,color:#fef3c7
    style N40 fill:#78350f,stroke:#fbbf24,color:#fef3c7
    style N41 fill:#78350f,stroke:#fbbf24,color:#fef3c7

    style N4 fill:#7c2d12,stroke:#fb923c,color:#fed7aa
    style N10 fill:#7c2d12,stroke:#fb923c,color:#fed7aa
    style N20 fill:#7c2d12,stroke:#fb923c,color:#fed7aa
    style N30 fill:#166534,stroke:#4ade80,color:#dcfce7
    style N31 fill:#991b1b,stroke:#f87171,color:#fee2e2

    style N5 fill:#164e63,stroke:#22d3ee,color:#cffafe
    style N6 fill:#164e63,stroke:#22d3ee,color:#cffafe
    style N7 fill:#164e63,stroke:#22d3ee,color:#cffafe
    style N8 fill:#164e63,stroke:#22d3ee,color:#cffafe
    style N9 fill:#164e63,stroke:#22d3ee,color:#cffafe
    style N11 fill:#164e63,stroke:#22d3ee,color:#cffafe
    style N12 fill:#164e63,stroke:#22d3ee,color:#cffafe
    style N13 fill:#164e63,stroke:#22d3ee,color:#cffafe
    style N14 fill:#164e63,stroke:#22d3ee,color:#cffafe

    style N15 fill:#3b0764,stroke:#a78bfa,color:#ede9fe
    style N16 fill:#3b0764,stroke:#a78bfa,color:#ede9fe
    style N17 fill:#3b0764,stroke:#a78bfa,color:#ede9fe
    style N18 fill:#3b0764,stroke:#a78bfa,color:#ede9fe
    style N19 fill:#3b0764,stroke:#a78bfa,color:#ede9fe
    style N21 fill:#3b0764,stroke:#c084fc,color:#f5f3ff
    style N22 fill:#3b0764,stroke:#c084fc,color:#f5f3ff
    style N23 fill:#3b0764,stroke:#c084fc,color:#f5f3ff
    style N24 fill:#3b0764,stroke:#c084fc,color:#f5f3ff
    style N25 fill:#3b0764,stroke:#c084fc,color:#f5f3ff
    style N26 fill:#3b0764,stroke:#c084fc,color:#f5f3ff
    style N27 fill:#3b0764,stroke:#c084fc,color:#f5f3ff
    style N28 fill:#3b0764,stroke:#a78bfa,color:#ede9fe
    style N29 fill:#3b0764,stroke:#a78bfa,color:#ede9fe

    style N32 fill:#14532d,stroke:#34d399,color:#d1fae5
    style N33 fill:#14532d,stroke:#34d399,color:#d1fae5
    style N34 fill:#14532d,stroke:#34d399,color:#d1fae5
    style N35 fill:#14532d,stroke:#34d399,color:#d1fae5
    style N36 fill:#14532d,stroke:#34d399,color:#d1fae5

    style N37 fill:#881337,stroke:#fb7185,color:#ffe4e6
    style N38 fill:#881337,stroke:#fb7185,color:#ffe4e6
    style N39 fill:#881337,stroke:#fb7185,color:#ffe4e6