feat(api): 拆分章节物化与 Story 后处理,并加固 Redis 锁与腾讯 ASR
回忆录 Story 流水线(同步) - 同步路径仅写入 Story 与章节关联,改为 mark_chapter_dirty_sync,不再内联 compose - 物化由 Celery recompose_chapter 异步完成;compose 不变量与异常时保留 dirty 的语义在 repo 中补充说明 - Evidence:大批次时降低 top_k;路由候选 story 携带 char_count/version_count;append 超长/版本过多时强制新开 story - 叙事 prompt:relevant_chunks 去重,减少重复证据噪声 - 叙事回退与忠实度 gate:返回 fallback 类型并记录结构化日志(含耗时、JSON 有效性等) Post-commit 与任务编排 - 新增 post_commit.enqueue_story_post_commit_effects:统一派发 generate_story_image(Redis 去重)、延迟 recompose_chapter、可选 memory compaction - memoir_tasks / story_service / story_image_tasks 改为调用 post-commit 入口;主图回填后按关联章节重算并调度物化与 compacs(锁委托、Redis 单例、ASR to_thread) - 更新 test_narrative_pipeline 以适配 _apply_narrative_fallbacks 返回值
This commit is contained in:
@@ -145,6 +145,19 @@ class Settings(BaseSettings):
|
||||
memoir_image_download_hosts: str = ""
|
||||
# Story 正文至少多少字才创建主图 intent / 调图(0 表示不限制)
|
||||
story_image_min_body_chars: int = 400
|
||||
# generate_story_image 入队去重(Redis SET NX,秒)
|
||||
story_image_enqueue_dedup_ttl: int = Field(default=300, ge=30, le=86400)
|
||||
# 章节物化异步任务延迟入队(秒),削峰
|
||||
recompose_chapter_delay_seconds: int = Field(default=8, ge=0, le=600)
|
||||
# 与 memoir pipeline 一致的章节互斥锁 TTL(秒)
|
||||
chapter_pipeline_lock_ttl_seconds: int = Field(default=120, ge=10, le=3600)
|
||||
# Append 硬上限:canonical 字符数、版本数(超限强制 new_story)
|
||||
story_append_max_canonical_chars: int = Field(default=12000, ge=1000, le=500_000)
|
||||
story_append_max_versions: int = Field(default=20, ge=1, le=500)
|
||||
# Evidence 检索 top_k:大批次 unit 时降低检索量
|
||||
evidence_top_k_default: int = Field(default=10, ge=1, le=50)
|
||||
evidence_top_k_large_batch: int = Field(default=5, ge=1, le=50)
|
||||
evidence_large_batch_threshold: int = Field(default=3, ge=1, le=100)
|
||||
# 叙事输出相对口述过短则回退为口述原文(比例与下限)
|
||||
memoir_narrative_fallback_body_ratio: float = 0.5
|
||||
memoir_narrative_fallback_min_chars: int = 20
|
||||
|
||||
Reference in New Issue
Block a user