auto-sync: 2026-05-17 13:04:56
This commit is contained in:
@@ -110,5 +110,65 @@ class Queries:
|
|||||||
finally:
|
finally:
|
||||||
conn.close()
|
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:
|
def db_size_bytes(self) -> int:
|
||||||
return self.db_path.stat().st_size if self.db_path.exists() else 0
|
return self.db_path.stat().st_size if self.db_path.exists() else 0
|
||||||
|
|||||||
Reference in New Issue
Block a user