feat(health): santé du flux — goulots et cartes zombies (issue #9)

app/flow.py: séjours par colonne reconstruits du journal,
médianes, colonne la plus lente; zombies = aucune activité
(journal/Gitea) depuis KANBANTE_ZOMBIE_DAYS (30). Pages /health
et /health/{o}/{r} + actions rapides (commenter/backlog/fermer).
This commit is contained in:
Spark
2026-10-11 14:49:38 -04:00
parent 1932d11457
commit 6453b53df4
17 changed files with 321 additions and 1 deletions
+6 -1
View File
@@ -78,6 +78,9 @@ Environment variables:
column, min_age_days, label, wip_over.
Actions: add_label, notify, move_top.
A rule can never close an issue.
KANBANTE_ZOMBIE_DAYS Days without any activity after
which an open card is a "zombie"
on /health (issue #9). Default 30.
"""
import os
@@ -86,7 +89,7 @@ from pathlib import Path
BASE_DIR = Path(__file__).resolve().parent.parent
APP_VERSION = "0.13.0"
APP_VERSION = "0.14.0"
def _env_bool(name: str, default: bool) -> bool:
@@ -154,6 +157,7 @@ class Settings:
obsigate_mcp_args: str = '{"title": "{title}", "content": "{content}"}'
briefing_include_standup: bool = False
rules_raw: str = ""
zombie_days: int = 30
@property
def auth_enabled(self) -> bool:
@@ -198,4 +202,5 @@ def get_settings() -> Settings:
),
briefing_include_standup=_env_bool("KANBANTE_BRIEFING_INCLUDE_STANDUP", False),
rules_raw=os.getenv("KANBANTE_RULES", ""),
zombie_days=_env_int("KANBANTE_ZOMBIE_DAYS", 30),
)