完善附件管理与生成任务跟踪
This commit is contained in:
@@ -12,6 +12,7 @@ from models.generation_log import GenerationLog
|
||||
from models.paragraph import Paragraph
|
||||
from models.template import Template
|
||||
from services.ai_service import call_ai
|
||||
from services.file_summary import summarize_minio_files
|
||||
|
||||
generation_progress: dict[int, dict] = {}
|
||||
generation_cancel_flags: dict[int, bool] = {}
|
||||
@@ -90,6 +91,13 @@ async def run_generation(document_id: int, template_id: int):
|
||||
)
|
||||
paragraphs = result.scalars().all()
|
||||
total = len(paragraphs)
|
||||
request_payload = {}
|
||||
if document.request_payload_json:
|
||||
try:
|
||||
request_payload = json.loads(document.request_payload_json)
|
||||
except Exception:
|
||||
request_payload = {}
|
||||
file_map = request_payload.get("file_map", {}) if isinstance(request_payload, dict) else {}
|
||||
update_progress(document_id, status="generating", total=total, done=0, percent=0, message="开始生成...")
|
||||
|
||||
done_count = 0
|
||||
@@ -114,11 +122,25 @@ async def run_generation(document_id: int, template_id: int):
|
||||
model = await get_effective_model(paragraph)
|
||||
model_id = model.id if model is not None else paragraph.model_id
|
||||
try:
|
||||
selected_file_paths = file_map.get(str(paragraph.id), [])
|
||||
file_summaries = []
|
||||
if selected_file_paths:
|
||||
file_name_mapping = {}
|
||||
for paragraph_item in request_payload.get("paragraphs", []):
|
||||
for selected_file in paragraph_item.get("selected_files", []):
|
||||
file_path = selected_file.get("file_path")
|
||||
if file_path in selected_file_paths:
|
||||
file_name_mapping[file_path] = selected_file.get("file_name")
|
||||
file_summaries = await asyncio.to_thread(
|
||||
summarize_minio_files,
|
||||
selected_file_paths,
|
||||
file_name_mapping,
|
||||
)
|
||||
if model is None:
|
||||
content = build_mock_content(paragraph)
|
||||
else:
|
||||
setattr(paragraph, "enable_reasoning", bool(model.enable_reasoning))
|
||||
result_data = await call_ai(paragraph, model)
|
||||
result_data = await call_ai(paragraph, model, file_summaries)
|
||||
content = result_data.content
|
||||
status = "success"
|
||||
error_message = ""
|
||||
|
||||
Reference in New Issue
Block a user