feat(report): 形象深度诊断全链路——POST /reports/{id}/full 派生 tier=full 报告,复用 basic 输入与 32 维结果;full 流水线(无视觉阶段)LLM 扩写四大块(十二季定位/规则色板/4场景穿搭/30天计划),三重校验+语义重试+规则兜底降级;删除终身一次硬校验(40920 下线,重复生成由配额兜底);validation 枚举一致性校验放宽(十二季词表);迁移 0003 SSOT 补 full_report 规则行
This commit is contained in:
@@ -197,6 +197,23 @@ async def regenerate_report(
|
||||
return ok(_submit_payload(submission))
|
||||
|
||||
|
||||
@router.post(
|
||||
"/{report_id}/full",
|
||||
summary="生成深度诊断报告(基于该基础报告派生 tier=full,走 full_report 日配额)",
|
||||
)
|
||||
async def derive_full_report(
|
||||
report_id: int,
|
||||
payload: ReportRegenerateRequest,
|
||||
user_id: CurrentUserId,
|
||||
service: ReportServiceDep,
|
||||
) -> dict[str, object]:
|
||||
request_key = payload.request_key or f"report-full:{user_id}:{report_id}:{uuid.uuid4().hex}"
|
||||
submission = await service.derive_full_report(
|
||||
user_id=user_id, report_id=report_id, request_key=request_key
|
||||
)
|
||||
return ok(_submit_payload(submission))
|
||||
|
||||
|
||||
@router.post(
|
||||
"/{report_id}/export", summary="导出形象报告 PDF(走 hd_export 日配额,tier2 熔断可拦)"
|
||||
)
|
||||
|
||||
@@ -213,7 +213,12 @@ async def _generate_report(task_id: int) -> dict[str, Any]:
|
||||
|
||||
gateway = build_llm_gateway(settings)
|
||||
try:
|
||||
stages = assemble_stages(settings)
|
||||
if report.tier == "full":
|
||||
# 深度诊断:复用 basic 报告的 derived_features,无视觉阶段,
|
||||
# 文案/校验换 full 专用阶段(产出 result.full 四大块)。
|
||||
stages = assemble_stages(settings, paths=settings.report_full_pipeline_stages)
|
||||
else:
|
||||
stages = assemble_stages(settings)
|
||||
ctx = ReportContext(
|
||||
report=report,
|
||||
report_input=report_input,
|
||||
|
||||
Reference in New Issue
Block a user