MCPcopy
hub / github.com/HisMax/RedInk / scan_and_sync_task_images

Method scan_and_sync_task_images

backend/services/history.py:552–642  ·  view source on GitHub ↗

扫描任务文件夹,同步图片列表 根据实际生成的图片数量自动更新记录状态: - 无图片 -> draft(草稿) - 部分图片 -> partial(部分完成) - 全部图片 -> completed(已完成) Args: task_id: 任务 ID Returns: Dict[str, Any]: 扫描结果 - success: 是否成功 - record_id:

(self, task_id: str)

Source from the content-addressed store, hash-verified

550 }
551
552 def scan_and_sync_task_images(self, task_id: str) -> Dict[str, Any]:
553 """
554 扫描任务文件夹,同步图片列表
555
556 根据实际生成的图片数量自动更新记录状态:
557 - 无图片 -> draft(草稿)
558 - 部分图片 -> partial(部分完成)
559 - 全部图片 -> completed(已完成)
560
561 Args:
562 task_id: 任务 ID
563
564 Returns:
565 Dict[str, Any]: 扫描结果
566 - success: 是否成功
567 - record_id: 关联的记录 ID
568 - task_id: 任务 ID
569 - images_count: 图片数量
570 - images: 图片文件名列表
571 - status: 更新后的状态
572 - error: 错误信息(失败时)
573 """
574 task_dir = os.path.join(self.history_dir, task_id)
575
576 if not os.path.exists(task_dir) or not os.path.isdir(task_dir):
577 return {
578 "success": False,
579 "error": f"任务目录不存在: {task_id}"
580 }
581
582 try:
583 files_by_index = HistoryImageMerger.files_by_index(self.history_dir, task_id)
584 image_files = list(files_by_index.values())
585
586 # 查找关联的历史记录
587 index = self._load_index()
588 record_id = None
589 for rec in index.get("records", []):
590 # 通过遍历所有记录,找到 task_id 匹配的记录
591 record_detail = self.get_record(rec["id"])
592 if record_detail and record_detail.get("images", {}).get("task_id") == task_id:
593 record_id = rec["id"]
594 break
595
596 if record_id:
597 # 更新历史记录
598 record = self.get_record(record_id)
599 if record:
600 expected_count = len(record.get("outline", {}).get("pages", []))
601 existing_generated = record.get("images", {}).get("generated", [])
602 merged_images = HistoryImageMerger.merge_many(
603 existing_generated,
604 files_by_index,
605 expected_count,
606 )
607 status = HistoryImageMerger.compute_status(merged_images, expected_count)
608
609 # 更新图片列表和状态

Callers 2

scan_all_tasksMethod · 0.95
scan_taskFunction · 0.80

Calls 8

_load_indexMethod · 0.95
get_recordMethod · 0.95
update_recordMethod · 0.95
files_by_indexMethod · 0.80
getMethod · 0.80
merge_manyMethod · 0.80
compute_statusMethod · 0.80
first_imageMethod · 0.80

Tested by

no test coverage detected