%%{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