# 后端改造需求清单 (配合前端重构) 日期: 2025-11-22 状态: **已完成** 为了支持新的 "Puppet Architecture" 前端设计,后端已完成以下适配性改造。 ## 1. API 规范与类型生成 (Service Kit 集成) - [已完成] **目标**: 利用项目现有的 `service_kit` 库,实现前端通过脚本自动从后端生成 TypeScript 类型定义 (Zod Schemas),确保前后端类型严格一致。 **实施情况**: * **Contract 层改造**: * 在 `common-contracts` 中,核心 Struct/Enum (如 `WorkflowEvent`, `TaskStatus`) 已全面使用 `#[api_dto]` 宏标注。 * `#[api_dto]` 自动注入了 `utoipa::ToSchema`,确保了 Schema 的正确导出。 * **API Gateway 改造 (混合模式)**: * 引入了 `utoipa` 和 `utoipa-swagger-ui` 依赖。 * 创建了 `services/api-gateway/src/openapi/mod.rs`,定义了 `ApiDoc` 结构体。 * 在 `services/api-gateway/src/api.rs` 中,手动为 Handler 添加了 `#[utoipa::path(...)]` 标注。 * 在 Router 中挂载了 `/swagger-ui` 和 `/api-docs/openapi.json`。 ## 2. 动态数据源 Schema 接口 - [已完成] **目标**: 实现数据源的插件化和动态发现。 **实施情况**: * 在 `api-gateway` 中新增了接口 `GET /v1/configs/data_sources/schema`。 * 定义了 `DataSourceSchemaResponse` 和 `DataSourceProviderSchema` DTOs。 * 接口返回了 Tushare, Finnhub, AlphaVantage, Yfinance 的配置 Schema。 ## 3. 任务进度 (Progress) 字段支持 - [已完成] **目标**: 支持在 UI 上展示细粒度的任务进度条。 **实施情况**: * **修改 Contract**: 在 `common-contracts` 的 `WorkflowEvent::TaskStateChanged` 中增加了 `progress: Option` 字段。 ```rust #[api_dto] pub struct TaskStateChanged { // ... existing fields pub progress: Option, // 0-100 } ``` ## 4. 下一步计划 * **前端对接**: 前端可以尝试访问 `http://localhost:4000/api-docs/openapi.json` 来生成类型定义。 * **集成测试**: 验证 `GET /v1/workflow/events/:id` 是否能正确返回带有 `progress` 字段的事件。