feat(db): per-project work-item prefix in get_next_work_item_id
ORCH-6: get_next_work_item_id(repo, prefix="ET") numbers per (repo, prefix) so orchestrator issues number ORCH-001 independently of the ET sequence. Default prefix stays ET for backward compatibility.
This commit is contained in:
22
src/db.py
22
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 <PREFIX>-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}"
|
||||
|
||||
Reference in New Issue
Block a user