diff --git a/wwwroot/api/test_task_state.dspy b/wwwroot/api/test_task_state.dspy new file mode 100644 index 0000000..c66ca0f --- /dev/null +++ b/wwwroot/api/test_task_state.dspy @@ -0,0 +1,34 @@ +# test_task_state.dspy - 查看任务 km--pJq8 的状态 + +pid = 'T_2hWHTqqwgf8igNMHLQk' +tid = 'km--pJq85fFBoG6ftzCHT' + +dbname = get_module_dbname('pipeline-sdlc') +async with DBPools().sqlorContext(dbname) as sor: + task = await sor.sqlExe( + "SELECT id, title, role, state, claimed_by, params FROM pipeline_tasks WHERE id=${tid}$", + {"tid": tid}) + + # 所有 review/waiting 状态任务 + stuck = await sor.sqlExe( + "SELECT id, title, role, state FROM pipeline_tasks WHERE tenant_id=${pid}$ AND state IN ('review','waiting','running') ORDER BY created_at DESC", + {"pid": pid}) + + # PM review 交付件 + deliv = await sor.sqlExe( + "SELECT id, deliverable_type, review_status FROM pipeline_deliverables WHERE task_id=${tid}$ ORDER BY created_at DESC LIMIT 5", + {"tid": tid}) + +result = { + "task": [{"id": getattr(t,'id',''), "title": getattr(t,'title',''), + "role": getattr(t,'role',''), "state": getattr(t,'state',''), + "claimed_by": getattr(t,'claimed_by',''), + "params": getattr(t,'params','')[:200]} for t in (task or [])], + "stuck_tasks": [{"id": getattr(t,'id','')[:12], "title": getattr(t,'title','')[:40], + "role": getattr(t,'role',''), "state": getattr(t,'state','')} + for t in (stuck or [])], + "deliverables": [{"id": getattr(d,'id','')[:12], "type": getattr(d,'deliverable_type',''), + "review": getattr(d,'review_status','')} for d in (deliv or [])], +} + +return json.dumps(result, ensure_ascii=False, default=str)