27 lines
1.0 KiB
Plaintext
27 lines
1.0 KiB
Plaintext
# fix_stuck.dspy - 清除卡住任务的 claimed_by
|
|
|
|
dbname = get_module_dbname('pipeline-sdlc')
|
|
async with DBPools().sqlorContext(dbname) as sor:
|
|
# 清除 submitted 状态但有 claimed_by 的僵尸任务
|
|
result = await sor.sqlExe(
|
|
"UPDATE pipeline_tasks SET claimed_by=NULL WHERE state='submitted' AND claimed_by IS NOT NULL",
|
|
{})
|
|
# 同时清除 review 状态但有 claimed_by 的(超时未处理的)
|
|
result2 = await sor.sqlExe(
|
|
"UPDATE pipeline_tasks SET claimed_by=NULL WHERE state='review' AND claimed_by IS NOT NULL",
|
|
{})
|
|
|
|
# 查看还有多少卡住的
|
|
stuck = await sor.sqlExe(
|
|
"SELECT id, title, role, state, claimed_by FROM pipeline_tasks WHERE claimed_by IS NOT NULL",
|
|
{})
|
|
|
|
result = {
|
|
"cleared_submitted": "done",
|
|
"cleared_review": "done",
|
|
"remaining_stuck": [{"id": getattr(t,'id','')[:12], "state": getattr(t,'state',''),
|
|
"claimed_by": getattr(t,'claimed_by','')[:8]} for t in (stuck or [])]
|
|
}
|
|
|
|
return json.dumps(result, ensure_ascii=False)
|