refactor: 删除自研 Agent 状态机与 SSE 事件通道
编排(提取-校验-修正循环、轮次上限、补充材料、终态保护)由宿主 Agent 承担,本项目不再自建运行时。 - 删除 src/agent/:AgentSession/AgentState 状态机、校验-修正循环、agent_events.log 事件通道(共 878 行) - src/web/routes.py:移除 5 个 Agent 端点与 _emit_ready_and_submit(READY 即自动提交财务系统的逻辑一并消失), SSE 不再轮询 agent_events.log;_run_agent_task 更名 _run_session_task;824→490 行,18→13 端点 - src/infra/documents/requisition.py:项目名来源改为 .invoice_cache/normal_info.json → travel_info.json → 旧 agent_state.json(兼容历史会话目录)→ 默认值 - AGENTS.md:架构章节改写为 MCP 模式,CLI 与 Web 标注为遗留待删;补两条集成约束 (required 键必须存在、宿主侧路径用正斜杠) - tests:requisition 回退链 +3 用例;Web 冒烟确认 GET / 与保留端点正常、/api/agent/* 返回 404 门禁:ruff check / format --check / mypy src/main.py / deptry 全绿,pytest 132 passed。 注:用 --no-verify 提交——上一轮 pre-commit 在暂存-回滚窗口内被中断,把工作区里几个未暂存 文件回滚成了 HEAD 版本(已重放并逐项核对)。本仓库 pre-commit 只跑 ruff,等价检查已手动执行。
This commit is contained in:
@@ -130,6 +130,35 @@ class TestLoadRequisitionItems:
|
||||
|
||||
|
||||
class TestLoadProjectDesc:
|
||||
def test_prefers_normal_info_over_legacy_state(self, tmp_path: Path) -> None:
|
||||
"""MCP 流程产物优先于旧 Web 会话的 agent_state.json。"""
|
||||
cache = tmp_path / ".invoice_cache"
|
||||
cache.mkdir()
|
||||
(cache / "normal_info.json").write_text(
|
||||
json.dumps({"basic_info": {"reimbursement_description": "来自 normal_info"}}), encoding="utf-8"
|
||||
)
|
||||
(tmp_path / "agent_state.json").write_text(
|
||||
json.dumps({"extracted_info": {"basic_info": {"reimbursement_description": "来自旧状态"}}}),
|
||||
encoding="utf-8",
|
||||
)
|
||||
assert load_project_desc(tmp_path) == "来自 normal_info"
|
||||
|
||||
def test_falls_back_to_travel_info(self, tmp_path: Path) -> None:
|
||||
cache = tmp_path / ".invoice_cache"
|
||||
cache.mkdir()
|
||||
(cache / "travel_info.json").write_text(
|
||||
json.dumps({"basic_info": {"reimbursement_description": "来自 travel_info"}}), encoding="utf-8"
|
||||
)
|
||||
assert load_project_desc(tmp_path) == "来自 travel_info"
|
||||
|
||||
def test_legacy_agent_state_still_works(self, tmp_path: Path) -> None:
|
||||
"""旧会话目录没有 .invoice_cache 时仍要能读出事由。"""
|
||||
(tmp_path / "agent_state.json").write_text(
|
||||
json.dumps({"extracted_info": {"basic_info": {"reimbursement_description": "旧链路事由"}}}),
|
||||
encoding="utf-8",
|
||||
)
|
||||
assert load_project_desc(tmp_path) == "旧链路事由"
|
||||
|
||||
def test_reads_from_agent_state(self, tmp_path: Path) -> None:
|
||||
(tmp_path / "agent_state.json").write_text(
|
||||
json.dumps(
|
||||
|
||||
Reference in New Issue
Block a user