Fundamental_Analysis/docs/frontend/backend_todos.md
Lv, Qi b41eaf8b99 Refactor frontend to Vite+React SPA and update docs
Major architectural shift from Next.js to a lightweight Vite + React SPA model ("Puppet Architecture") to better support real-time workflow visualization and strict type safety.

Key Changes:
1. **Architecture & Build**:
   - Initialized Vite + React + TypeScript project.
   - Configured Tailwind CSS v4 and Shadcn UI.
   - Archived legacy Next.js frontend to 'frontend/archive/v2_nextjs'.

2. **Core Features**:
   - **Dashboard**: Implemented startup page with Symbol, Market, and Template selection.
   - **Report Page**:
     - **Workflow Visualization**: Integrated ReactFlow to show dynamic DAG of analysis tasks.
     - **Real-time Status**: Implemented Mock SSE logic to simulate task progress, logs, and status changes.
     - **Multi-Tab Interface**: Dynamic tabs for 'Overview', 'Fundamental Data', and analysis modules.
     - **Streaming Markdown**: Enabled typewriter-style streaming rendering for analysis reports using 'react-markdown'.
   - **Config Page**: Implemented settings for AI Providers, Data Sources, and Templates using TanStack Query.

3. **Documentation**:
   - Created v2.0 User Guide ('docs/1_requirements/20251122_[Active]_user-guide_v2.md').
   - Implemented 'DocsPage' in frontend to render the user guide directly within the app.

4. **Backend Alignment**:
   - Created 'docs/frontend/backend_todos.md' outlining necessary backend adaptations (OpenAPI, Progress tracking).

This commit establishes the full frontend 'shell' ready for backend integration.
2025-11-22 19:37:36 +08:00

76 lines
3.2 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.

# 后端改造需求清单 (配合前端重构)
日期: 2025-11-22
状态: 待执行
为了支持新的 "Puppet Architecture" 前端设计,后端需要进行以下适配性改造。
## 1. API 规范与类型生成 (OpenAPI)
**目标**: 支持前端通过脚本自动从后端生成 TypeScript 类型定义 (Zod Schemas),确保前后端类型严格一致,实现 "Single Source of Truth"。
* **任务**: 在 `api-gateway` 中集成 `utoipa``utoipa-swagger-ui`
* **要求**:
* 暴露 `GET /api-docs/openapi.json` 路由。
* 确保所有核心 Struct (特别是 `WorkflowEvent`, `TaskStatus`, `LlmProvider`, `AnalysisTemplateSet`) 都在 Schema 中正确导出。
* 对于 Enum 类型,确保导出为带 `type` 字段的 Discriminated Union 格式(如果可能),或者前端通过 generator 处理。
## 2. 动态数据源 Schema 接口
**目标**: 实现数据源的插件化和动态发现。前端不应硬编码支持哪些数据源,也不应知道每个数据源需要哪些配置字段。
* **背景**: 未来数据源将作为微服务动态插拔。
* **任务**: 新增接口 `GET /v1/configs/data_sources/schema`
* **响应结构示例**:
```json
{
"providers": [
{
"id": "tushare",
"name": "Tushare Pro",
"description": "Official Tushare Data Provider",
"fields": [
{
"key": "api_token",
"label": "API Token",
"type": "password", // text, password, select, boolean
"required": true,
"placeholder": "Enter your token...",
"description": "Get it from https://tushare.pro"
},
{
"key": "api_url",
"label": "API Endpoint",
"type": "text",
"default": "http://api.tushare.pro",
"required": false
}
]
}
]
}
```
* **逻辑**: 该接口应聚合当前注册的所有 Data Provider 服务的配置元数据。
## 3. 任务进度 (Progress) 字段支持
**目标**: 支持在 UI 上展示细粒度的任务进度条 (0-100%),而不仅仅是状态切换。
* **背景**: Data Provider 抓取大量数据或 Deep Research 分析时,需要反馈进度。
* **任务**:
1. **修改 Contract**: 在 `common-contracts``WorkflowEvent::TaskStateChanged` 中增加 `progress` 字段。
```rust
pub struct TaskStateChanged {
// ... existing fields
pub progress: Option<u8>, // 0-100
}
```
2. **Orchestrator 适配**: 在处理任务更新时,支持透传进度值。
3. **Provider 适配**: 长耗时任务(如 `fetch_history`)应定期发送带有进度的状态更新。
4. **兼容性**: 对于不支持进度的瞬时任务,开始时为 0完成时为 100。
## 4. 确认项 (无需代码变更,仅作备忘)
* **Logs 处理**: `TaskStateChanged` 中的 `message` 字段将被视为增量日志。前端收到事件时,会将非空的 `message` 追加 (Append) 到该任务的日志列表中。
* **SSE 稳定性**: 确保 `workflow_events_stream` 在连接建立时立即发送 `WorkflowStateSnapshot` (已实现),以处理前端重连场景。