diff --git a/src/db.py b/src/db.py index 1a4fb50..693b954 100644 --- a/src/db.py +++ b/src/db.py @@ -79,21 +79,29 @@ def update_task_stage(task_id: int, stage: str): conn.close() -def get_next_work_item_id(repo: str) -> str: - """Generate next work item ID (e.g., ET-003).""" +def get_next_work_item_id(repo: str, prefix: str = "ET") -> str: + """Generate next work item ID (e.g., ET-003 / ORCH-001). + + ORCH-6: numbering is per (repo, prefix). The prefix comes from the project + registry (proj.work_item_prefix), so orchestrator issues number ORCH-001, + ORCH-002 independently of the ET sequence in enduro-trails. Default prefix + stays "ET" for backward compatibility with existing callers. + """ conn = get_db() row = conn.execute( - "SELECT work_item_id FROM tasks WHERE repo = ? AND work_item_id IS NOT NULL ORDER BY id DESC LIMIT 1", - (repo,), + "SELECT work_item_id FROM tasks " + "WHERE repo = ? AND work_item_id LIKE ? AND work_item_id IS NOT NULL " + "ORDER BY id DESC LIMIT 1", + (repo, f"{prefix}-%"), ).fetchone() conn.close() if row and row["work_item_id"]: - # Parse ET-003 -> 3, increment - prefix, num = row["work_item_id"].rsplit("-", 1) + # Parse -003 -> 3, increment (keep the existing prefix). + existing_prefix, num = row["work_item_id"].rsplit("-", 1) + prefix = existing_prefix next_num = int(num) + 1 else: - prefix = "ET" next_num = 1 return f"{prefix}-{next_num:03d}"