Fundamental_Analysis/docs/backend_requirements_for_frontend_refactor.md
Lv, Qi 0cb31e363e Refactor E2E tests and improve error handling in Orchestrator
- Fix `simple_test_analysis` template in E2E test setup to align with Orchestrator's data fetch logic.
- Implement and verify additional E2E scenarios:
    - Scenario C: Partial Provider Failure (verified error propagation fix in Orchestrator).
    - Scenario D: Invalid Symbol input.
    - Scenario E: Analysis Module failure.
- Update `WorkflowStateMachine::handle_report_failed` to correctly scope error broadcasting to the specific task instead of failing effectively silently or broadly.
- Update testing strategy documentation to reflect completed Phase 4 testing.
- Skip Scenario B (Orchestrator Restart) as persistence is not yet implemented (decision made to defer persistence).
2025-11-21 20:44:32 +08:00

3.3 KiB
Raw Permalink Blame History

Backend Requirements for Frontend Refactor

由于前端正在进行“破坏式”重构,删除了所有包含业务逻辑控制、状态推断、流程编排的代码(如 useReportEngine, ExecutionStepManager后端必须接管以下职责以支持纯被动式Puppet Mode的前端。

1. 核心原则

前端不再拥有“大脑”,只拥有“眼睛”和“耳朵”。所有状态变更、流程流转、错误判断全由后端指令驱动。

2. 接口需求

2.1 统一事件流 (Unified Event Stream)

前端将只连接一个长连接通道SSE 或 WebSocket用于接收整个分析周期的所有信息。

  • Endpoint: /api/v2/workflow/events?request_id={id} (建议)
  • 职责: 聚合 NATS (Data Fetching), Internal State (Report Generator), Database (Persistence) 的所有事件。

2.2 事件类型定义 (Protocol)

后端需要推送以下类型的事件,且 Payload 必须包含前端渲染所需的所有上下文,前端不再发起二次请求查询详情。

  1. WORKFLOW_START

    • 标志流程开始。
    • Payload: { symbol, market, template_id, timestamp }
  2. PHASE_CHANGED

    • 关键: 前端不再判断何时切换界面,完全依赖此事件。
    • Payload: { phase: 'DATA_FETCHING' | 'ANALYZING' | 'COMPLETED' | 'FAILED', previous_phase: '...' }
  3. TASK_PROGRESS (Data Fetching Phase)

    • 替代前端轮询 /api/tasks
    • Payload: { task_id, provider, status, progress, message }
    • 注意: 后端需负责聚合多个 Provider 的进度,前端只管展示列表。
  4. MODULE_PROGRESS (Analysis Phase)

    • 替代旧的 SSE 流。
    • Payload: { module_id, content_delta, status }
  5. WORKFLOW_ERROR

    • 关键: 包含错误级别Fatal/Warning。前端只展示不判断是否重试。
    • Payload: { code, message, is_fatal, suggestion }

3. 逻辑接管需求

3.1 状态机迁移 (State Transitions)

  • 旧逻辑 (已删): 前端轮询任务 -> if (all_tasks_done) start_analysis().
  • 新逻辑: 后端 Workflow Orchestrator 监听任务完成事件 -> 自动触发分析 -> 推送 PHASE_CHANGED: ANALYZING 给前端。

3.2 容错与部分成功 (Partial Success)

  • 旧逻辑 (已删): 前端判断 if (failed_tasks < total) continue.
  • 新逻辑: 后端决定数据缺失量是否允许继续分析。如果允许,直接进入分析阶段;如果不允许,推送 WORKFLOW_ERROR

3.3 超时控制 (Timeout)

  • 旧逻辑 (已删): 前端 setTimeout(10min).
  • 新逻辑: 后端设置执行超时。如果超时,主动推送 Error 事件关闭连接。前端仅处理网络层面的断开重连。

3.4 断点恢复 (Resume)

  • 需求: 当用户刷新页面重连 SSE 时,后端必须立即推送一条 SNAPSHOT 事件,包含当前所有已完成的任务、已生成的报告片段、当前所处的阶段。
  • 目的: 防止前端因为丢失历史事件而无法渲染完整界面。

4. 废弃接口

以下接口的前端调用代码已被删除,后端可酌情保留用于调试,但业务不再依赖:

  • GET /api/tasks/{id} (轮询接口)
  • GET /api/analysis-results/stream (旧的纯分析流,需升级为统一流)