auto-sync: 2026-05-17 13:04:56

This commit is contained in:
cfdaily
2026-05-17 13:04:56 +08:00
parent fa3d2f72a1
commit adbc30fa78
+60
View File
@@ -110,5 +110,65 @@ class Queries:
finally:
conn.close()
def task_detail(self, task_id: str) -> Optional[Dict[str, Any]]:
"""任务详情聚合(含关联数据)"""
conn = self._conn()
try:
row = conn.execute("SELECT * FROM tasks WHERE id=?", (task_id,)).fetchone()
if not row:
return None
task = dict(row)
# 关联评论数 + 产出数
task["comments_count"] = conn.execute(
"SELECT COUNT(*) FROM comments WHERE task_id=?", (task_id,)
).fetchone()[0]
task["outputs_count"] = conn.execute(
"SELECT COUNT(*) FROM outputs WHERE task_id=?", (task_id,)
).fetchone()[0]
# 最新审查状态
rev_row = conn.execute(
"SELECT verdict FROM reviews WHERE task_id=? ORDER BY created_at DESC LIMIT 1",
(task_id,),
).fetchone()
task["review_status"] = rev_row["verdict"] if rev_row else None
# 最新事件
evt_row = conn.execute(
"SELECT detail FROM events WHERE task_id=? ORDER BY created_at DESC LIMIT 1",
(task_id,),
).fetchone()
task["latest_event_detail"] = evt_row["detail"] if evt_row else None
return task
finally:
conn.close()
def task_events(self, task_id: str, limit: int = 50) -> List[Dict[str, Any]]:
"""任务事件列表"""
conn = self._conn()
try:
rows = conn.execute(
"SELECT * FROM events WHERE task_id=? ORDER BY created_at DESC LIMIT ?",
(task_id, limit),
).fetchall()
return [dict(r) for r in rows]
finally:
conn.close()
def task_experiences(self, task_id: str) -> List[Dict[str, Any]]:
"""任务关联经验"""
conn = self._conn()
try:
rows = conn.execute(
"""SELECT e.*, GROUP_CONCAT(et.tag) as tags
FROM experiences e
LEFT JOIN experience_tags et ON e.id = et.experience_id
WHERE e.source_task_id=?
GROUP BY e.id
ORDER BY e.created_at DESC""",
(task_id,),
).fetchall()
return [dict(r) for r in rows]
finally:
conn.close()
def db_size_bytes(self) -> int:
return self.db_path.stat().st_size if self.db_path.exists() else 0