Skip to content

fix(schedule): 修复组合式语音模式异步分类未执行 #331

Description

@znnnnnnn-wil

背景

TimeFlow 已切换到 ASR → 文本 LLM → Tool Calling → TTS 组合式语音链路。语音创建日程可以正常调用 Tool 并写入数据库,首次创建时 category=null 也符合预期。

现有自动分类能力只在端到端实时 Agent 的组合根中完成装配;组合式 Agent 创建 ScheduleApplicationService 时未注入 LlmScheduleCategoryClassifier 和 category 事件 publisher,导致创建成功后没有提交异步分类任务,PostgreSQL 与客户端中的 category 持续为 null

需求

1. 组合式 Agent 注入日程分类器

  • 复用现有 LlmScheduleCategoryClassifierOpenAICompatibleJsonLlm
  • 与组合式文本 LLM 使用同一套 OpenAI-compatible base_url、API Key 和 model 配置。
  • 沿用 TIMEFLOW_SCHEDULE_CATEGORY_TIMEOUT_SECONDS 分类专用超时。
  • 保持创建日程首次以 category=null 提交,分类继续异步执行。

2. 分类结果继续同步到客户端

  • 将现有 WebSocketResultSink.publish_schedule_category_updated 注入组合式日程服务。
  • 分类写库 commit 后继续发布 schedule.category.updated
  • 复用现有客户端 SQLite category patch,不新增协议、轮询或平行实现。

3. 保持失败隔离

  • 分类失败、超时或事件发送失败不得影响主日程创建成功率。
  • 不修改现有 8 种 category 定义、分类 Prompt、JSON 校验和 PostgreSQL 更新条件。

验收标准

  • 组合式工厂自动化测试确认分类器、分类专用超时和事件 publisher 均被注入。
  • 应用组合根测试确认 mode 2 传递 schedule.category.updated publisher。
  • 现有分类器、异步写库、事件和客户端分类 patch 测试保持通过。
  • 后端全量测试、Ruff、Mypy 和改动格式检查通过。

实现

#330 完成。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions