feat(api+app): 对话阶段化、回忆录流水线与客户端会话体验
- DB: segments 用户输入文本(Alembic 0002) - Chat: 阶段检测/阶段提示/回复限制,编排与访谈/画像 prompts 调整 - Memoir: 忠实度检查 agent,叙事与分类等链路更新 - Core: agent 日志、Alembic 启动、LangChain/日志/配置等 - Story: time_hints;Memory 检索与相关测试 - Expo: 助手头像、会话页与消息拆分、实时会话与文案/i18n - Docs/scripts/tests: 迁移脚本、LLM JSON/记忆检索文档、新增单测
This commit is contained in:
@@ -15,6 +15,7 @@ from app.features.memoir.asset_resolver import strip_asset_image_refs_from_markd
|
||||
from app.features.memoir import repo as memoir_repo
|
||||
from app.features.memoir.memoir_images.settings import MemoirImageSettings
|
||||
from app.features.story.image_intent_extractor import extract_primary_image_intent
|
||||
from app.features.story.time_hints import apply_infer_story_time_start_to_model
|
||||
from app.features.story.repo import (
|
||||
count_story_versions,
|
||||
create_story,
|
||||
@@ -49,7 +50,7 @@ async def _extract_and_store_image_intent(
|
||||
db, story.id, statuses=["pending", "failed"]
|
||||
)
|
||||
logger.debug(
|
||||
"story image intent skipped: body below min chars story=%s len=%s min=%s",
|
||||
"story image intent skipped: body below min chars story={} len={} min={}",
|
||||
story.id,
|
||||
len(plain),
|
||||
min_chars,
|
||||
@@ -133,6 +134,7 @@ class StoryService:
|
||||
canonical_markdown=md,
|
||||
)
|
||||
await self._db.flush()
|
||||
apply_infer_story_time_start_to_model(story)
|
||||
if md.strip():
|
||||
version = await create_story_version(
|
||||
self._db,
|
||||
@@ -160,11 +162,11 @@ class StoryService:
|
||||
try:
|
||||
generate_story_image.delay(story.id)
|
||||
except Exception as exc:
|
||||
logger.warning("派发 generate_story_image 失败: %s", exc)
|
||||
logger.warning("派发 generate_story_image 失败: {}", exc)
|
||||
try:
|
||||
recompose_chapters_for_story.delay(story.id)
|
||||
except Exception as exc:
|
||||
logger.warning("派发 recompose_chapters_for_story 失败: %s", exc)
|
||||
logger.warning("派发 recompose_chapters_for_story 失败: {}", exc)
|
||||
return story.id
|
||||
|
||||
async def append_version(
|
||||
@@ -197,6 +199,7 @@ class StoryService:
|
||||
version.change_summary = change_summary
|
||||
story.current_version_id = version.id
|
||||
story.canonical_markdown = md
|
||||
apply_infer_story_time_start_to_model(story)
|
||||
await _extract_and_store_image_intent(
|
||||
self._db,
|
||||
story=story,
|
||||
@@ -211,11 +214,11 @@ class StoryService:
|
||||
try:
|
||||
generate_story_image.delay(story_id)
|
||||
except Exception as exc:
|
||||
logger.warning("派发 generate_story_image 失败: %s", exc)
|
||||
logger.warning("派发 generate_story_image 失败: {}", exc)
|
||||
try:
|
||||
recompose_chapters_for_story.delay(story_id)
|
||||
except Exception as exc:
|
||||
logger.warning("派发 recompose_chapters_for_story 失败: %s", exc)
|
||||
logger.warning("派发 recompose_chapters_for_story 失败: {}", exc)
|
||||
return version.id
|
||||
|
||||
async def link_evidence(
|
||||
|
||||
Reference in New Issue
Block a user