ai-robot-core/docs/progress/intent-driven-script-backen...

95 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
context:
module: "intent-driven-script"
feature: "IDS-Backend"
status: "✅已完成"
version: "1.0.0"
active_ac_range: "AC-IDS-01~13"
role: "backend"
spec_references:
requirements: "spec/intent-driven-script/requirements.md"
design: "spec/intent-driven-script/design.md"
tasks: "spec/intent-driven-script/tasks.md"
openapi: "spec/intent-driven-script/openapi.admin.yaml"
overall_progress:
- [x] Phase 1: 数据模型与 API 扩展 (100%)
- [x] Phase 2: 后端话术生成引擎 (100%)
- [x] Phase 4: 测试与验证 (100%)
current_phase:
goal: "后端开发已完成"
sub_tasks:
- [x] Task 1.1: 扩展 Python 类型定义 ✅
- [x] Task 1.3: 更新 OpenAPI 契约 ✅ (已定义在 spec/)
- [x] Task 1.4: 验证 API 向后兼容性 ✅
- [x] Task 2.1: 创建 ScriptGenerator 模块 ✅
- [x] Task 2.2: 创建 TemplateEngine 模块 ✅
- [x] Task 2.3: 扩展 FlowEngine ✅
- [x] Task 2.4: 修改 FlowEngine.start() ✅
- [x] Task 2.5: 修改 FlowEngine.advance() ✅
- [x] Task 2.6: 实现 Fallback 机制 ✅
- [x] Phase 4: 单元测试 ✅ (32 tests passed)
next_action:
immediate: "后端开发完成,等待前端联调"
details:
file: "N/A"
action: "通知前端进行联调"
constraints: "无"
technical_context:
module_structure: "ai-service/app/services/flow/"
key_decisions:
- decision: "在现有 FlowStep SQLModel 中扩展字段"
reason: "steps 字段已经是 JSON 类型,可以直接扩展,无需数据库迁移"
impact: "保持向后兼容,现有流程无需修改"
- decision: "ScriptGenerator 和 TemplateEngine 作为独立模块"
reason: "遵循单一职责原则,便于测试和维护"
impact: "需要在 FlowEngine 中注入 LLM 客户端"
- decision: "LLM 调用超时设置为 2 秒"
reason: "对话系统需要快速响应2 秒是可接受的上限"
impact: "超时后返回 fallback 话术"
code_snippets: |
# FlowStep 扩展字段
script_mode: str = Field(default=ScriptMode.FIXED.value)
intent: str | None = Field(default=None)
intent_description: str | None = Field(default=None)
script_constraints: list[str] | None = Field(default=None)
expected_variables: list[str] | None = Field(default=None)
# FlowEngine 话术生成
async def _generate_step_content(step, context, history) -> str:
script_mode = step.get("script_mode", "fixed")
if script_mode == "fixed":
return step.get("content", "")
elif script_mode == "flexible":
return await self._script_generator.generate(...)
elif script_mode == "template":
return await self._template_engine.fill_template(...)
session_history:
- session: "Session #1 (2026-02-28)"
completed:
- Task 1.1: 扩展 Python 类型定义
- Task 2.1: 创建 ScriptGenerator 模块
- Task 2.2: 创建 TemplateEngine 模块
- Task 2.3-2.6: 扩展 FlowEngine
- Phase 4: 单元测试 (32 tests)
changes:
- ai-service/app/models/entities.py (新增 ScriptMode 枚举,扩展 FlowStep)
- ai-service/app/services/flow/script_generator.py (新建)
- ai-service/app/services/flow/template_engine.py (新建)
- ai-service/app/services/flow/engine.py (重构)
- ai-service/app/services/flow/__init__.py (更新导出)
- ai-service/tests/test_script_generator.py (新建)
- ai-service/tests/test_template_engine.py (新建)
- ai-service/tests/test_flow_engine_script_generation.py (新建)
startup_guide:
- "Step 1: 读取本进度文档"
- "Step 2: 读取 spec_references 中的规范"
- "Step 3: 执行 next_action"
---