chore: Untrack .kiro directory
This commit is contained in:
parent
4d7aa56b4b
commit
ce6cc1ddb8
@ -1,351 +0,0 @@
|
|||||||
# 设计文档 - 基本面选股系统
|
|
||||||
|
|
||||||
## 概览
|
|
||||||
|
|
||||||
基本面选股系统是一个全栈Web应用,采用前后端分离架构。前端使用Next.js和shadcn/ui构建响应式中文界面,后端使用Python FastAPI提供API服务。系统通过多个专业分析模块,结合财务数据API、AI大模型和实时数据,为用户提供全面的股票基本面分析报告。
|
|
||||||
|
|
||||||
## 架构
|
|
||||||
|
|
||||||
### 系统架构图
|
|
||||||
|
|
||||||
```mermaid
|
|
||||||
graph TB
|
|
||||||
subgraph "前端层"
|
|
||||||
A[Next.js应用] --> B[shadcn/ui UI组件]
|
|
||||||
A --> C[TradingView图表组件]
|
|
||||||
end
|
|
||||||
|
|
||||||
subgraph "后端层"
|
|
||||||
D[FastAPI服务器] --> E[报告生成引擎]
|
|
||||||
D --> F[数据获取服务]
|
|
||||||
D --> G[配置管理服务]
|
|
||||||
end
|
|
||||||
|
|
||||||
subgraph "外部服务"
|
|
||||||
H[Tushare API]
|
|
||||||
I[Gemini API]
|
|
||||||
J[其他数据源APIs]
|
|
||||||
end
|
|
||||||
|
|
||||||
subgraph "数据层"
|
|
||||||
K[PostgreSQL数据库]
|
|
||||||
end
|
|
||||||
|
|
||||||
A --> D
|
|
||||||
F --> H
|
|
||||||
F --> I
|
|
||||||
F --> J
|
|
||||||
E --> K
|
|
||||||
G --> K
|
|
||||||
```
|
|
||||||
|
|
||||||
### 技术栈
|
|
||||||
|
|
||||||
**前端:**
|
|
||||||
- Next.js 14 (App Router)
|
|
||||||
- TypeScript
|
|
||||||
- shadcn/ui组件库 (https://ui.shadcn.com/)
|
|
||||||
- TradingView Charting Library
|
|
||||||
- Tailwind CSS
|
|
||||||
- Radix UI (shadcn/ui的底层组件)
|
|
||||||
|
|
||||||
**后端:**
|
|
||||||
- Python 3.11+
|
|
||||||
- FastAPI
|
|
||||||
- SQLAlchemy (ORM)
|
|
||||||
- Alembic (数据库迁移)
|
|
||||||
- Pydantic (数据验证)
|
|
||||||
- httpx (HTTP客户端)
|
|
||||||
|
|
||||||
**数据库:**
|
|
||||||
- PostgreSQL 15+
|
|
||||||
|
|
||||||
**外部服务:**
|
|
||||||
- Tushare API (中国股票数据)
|
|
||||||
- Google Gemini API (AI分析)
|
|
||||||
- 其他市场数据源APIs
|
|
||||||
|
|
||||||
## 组件和接口
|
|
||||||
|
|
||||||
### shadcn/ui组件使用规划
|
|
||||||
|
|
||||||
系统将使用shadcn/ui (https://ui.shadcn.com/) 的官方组件来构建一致的用户界面:
|
|
||||||
|
|
||||||
**核心组件使用:**
|
|
||||||
- `Button`: 主要操作按钮(生成报告、保存配置等)
|
|
||||||
- `Input`: 证券代码输入框
|
|
||||||
- `Select`: 交易市场选择器
|
|
||||||
- `Card`: 分析模块容器、报告卡片
|
|
||||||
- `Progress`: 报告生成进度条
|
|
||||||
- `Badge`: 状态标识(完成、进行中、失败)
|
|
||||||
- `Tabs`: 分析模块切换
|
|
||||||
- `Form`: 配置表单、搜索表单
|
|
||||||
- `Alert`: 错误提示、成功消息
|
|
||||||
- `Separator`: 内容分隔线
|
|
||||||
- `Skeleton`: 加载占位符
|
|
||||||
- `Toast`: 操作反馈通知
|
|
||||||
- `Table`: 财务数据展示表格(资产负债表、利润表、现金流量表等)
|
|
||||||
|
|
||||||
**主题配置:**
|
|
||||||
- 使用默认主题,支持深色/浅色模式切换
|
|
||||||
- 自定义中文字体配置
|
|
||||||
- 适配中文内容的间距和排版
|
|
||||||
|
|
||||||
### 前端组件结构
|
|
||||||
|
|
||||||
```
|
|
||||||
src/
|
|
||||||
├── app/
|
|
||||||
│ ├── page.tsx # 首页
|
|
||||||
│ ├── report/[symbol]/page.tsx # 报告页面
|
|
||||||
│ ├── config/page.tsx # 配置页面
|
|
||||||
│ └── layout.tsx # 根布局
|
|
||||||
├── components/
|
|
||||||
│ ├── ui/ # shadcn/ui基础组件 (Button, Input, Card, etc.)
|
|
||||||
│ ├── StockSearchForm.tsx # 股票搜索表单 (使用Form, Input, Select)
|
|
||||||
│ ├── ReportProgress.tsx # 报告生成进度 (使用Progress, Badge, Card)
|
|
||||||
│ ├── TradingViewChart.tsx # TradingView图表
|
|
||||||
│ ├── AnalysisModule.tsx # 分析模块容器 (使用Card, Tabs, Separator)
|
|
||||||
│ ├── FinancialDataTable.tsx # 财务数据表格 (使用Table, TableHeader, TableBody, TableRow, TableCell)
|
|
||||||
│ └── ConfigForm.tsx # 配置表单 (使用Form, Input, Button, Alert)
|
|
||||||
├── lib/
|
|
||||||
│ ├── api.ts # API客户端
|
|
||||||
│ ├── types.ts # TypeScript类型定义
|
|
||||||
│ └── utils.ts # 工具函数
|
|
||||||
└── hooks/
|
|
||||||
├── useReport.ts # 报告数据钩子
|
|
||||||
└── useProgress.ts # 进度追踪钩子
|
|
||||||
```
|
|
||||||
|
|
||||||
### 后端API结构
|
|
||||||
|
|
||||||
```
|
|
||||||
app/
|
|
||||||
├── main.py # FastAPI应用入口
|
|
||||||
├── models/
|
|
||||||
│ ├── __init__.py
|
|
||||||
│ ├── report.py # 报告数据模型
|
|
||||||
│ ├── config.py # 配置数据模型
|
|
||||||
│ └── progress.py # 进度追踪模型
|
|
||||||
├── schemas/
|
|
||||||
│ ├── __init__.py
|
|
||||||
│ ├── report.py # 报告Pydantic模式
|
|
||||||
│ ├── config.py # 配置Pydantic模式
|
|
||||||
│ └── progress.py # 进度Pydantic模式
|
|
||||||
├── services/
|
|
||||||
│ ├── __init__.py
|
|
||||||
│ ├── data_fetcher.py # 数据获取服务
|
|
||||||
│ ├── ai_analyzer.py # AI分析服务
|
|
||||||
│ ├── report_generator.py # 报告生成服务
|
|
||||||
│ └── config_manager.py # 配置管理服务
|
|
||||||
├── routers/
|
|
||||||
│ ├── __init__.py
|
|
||||||
│ ├── reports.py # 报告相关API
|
|
||||||
│ ├── config.py # 配置相关API
|
|
||||||
│ └── progress.py # 进度相关API
|
|
||||||
└── core/
|
|
||||||
├── __init__.py
|
|
||||||
├── database.py # 数据库连接
|
|
||||||
├── config.py # 应用配置
|
|
||||||
└── dependencies.py # 依赖注入
|
|
||||||
```
|
|
||||||
|
|
||||||
### 核心API接口
|
|
||||||
|
|
||||||
#### 报告相关API
|
|
||||||
|
|
||||||
```python
|
|
||||||
# GET /api/reports/{symbol}?market={market}
|
|
||||||
# 获取或生成股票报告
|
|
||||||
class ReportResponse:
|
|
||||||
symbol: str
|
|
||||||
market: str
|
|
||||||
report_id: str
|
|
||||||
status: str # "existing" | "generating" | "completed" | "failed"
|
|
||||||
created_at: datetime
|
|
||||||
updated_at: datetime
|
|
||||||
modules: List[AnalysisModule]
|
|
||||||
|
|
||||||
# POST /api/reports/{symbol}/regenerate?market={market}
|
|
||||||
# 重新生成报告
|
|
||||||
class RegenerateRequest:
|
|
||||||
force: bool = False
|
|
||||||
|
|
||||||
# GET /api/reports/{report_id}/progress
|
|
||||||
# 获取报告生成进度
|
|
||||||
class ProgressResponse:
|
|
||||||
report_id: str
|
|
||||||
current_step: int
|
|
||||||
total_steps: int
|
|
||||||
current_step_name: str
|
|
||||||
status: str # "running" | "completed" | "failed"
|
|
||||||
step_timings: List[StepTiming]
|
|
||||||
estimated_remaining: Optional[int]
|
|
||||||
```
|
|
||||||
|
|
||||||
#### 配置相关API
|
|
||||||
|
|
||||||
```python
|
|
||||||
# GET /api/config
|
|
||||||
# 获取系统配置
|
|
||||||
class ConfigResponse:
|
|
||||||
database: DatabaseConfig
|
|
||||||
gemini_api: GeminiConfig
|
|
||||||
data_sources: Dict[str, DataSourceConfig]
|
|
||||||
|
|
||||||
# PUT /api/config
|
|
||||||
# 更新系统配置
|
|
||||||
class ConfigUpdateRequest:
|
|
||||||
database: Optional[DatabaseConfig]
|
|
||||||
gemini_api: Optional[GeminiConfig]
|
|
||||||
data_sources: Optional[Dict[str, DataSourceConfig]]
|
|
||||||
|
|
||||||
# POST /api/config/test
|
|
||||||
# 测试配置连接
|
|
||||||
class ConfigTestRequest:
|
|
||||||
config_type: str # "database" | "gemini" | "data_source"
|
|
||||||
config_data: Dict[str, Any]
|
|
||||||
```
|
|
||||||
|
|
||||||
## 数据模型
|
|
||||||
|
|
||||||
### 数据库表结构
|
|
||||||
|
|
||||||
```sql
|
|
||||||
-- 报告表
|
|
||||||
CREATE TABLE reports (
|
|
||||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
||||||
symbol VARCHAR(20) NOT NULL,
|
|
||||||
market VARCHAR(20) NOT NULL,
|
|
||||||
status VARCHAR(20) NOT NULL DEFAULT 'generating',
|
|
||||||
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
|
||||||
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
|
||||||
UNIQUE(symbol, market)
|
|
||||||
);
|
|
||||||
|
|
||||||
-- 分析模块表
|
|
||||||
CREATE TABLE analysis_modules (
|
|
||||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
||||||
report_id UUID REFERENCES reports(id) ON DELETE CASCADE,
|
|
||||||
module_type VARCHAR(50) NOT NULL,
|
|
||||||
module_order INTEGER NOT NULL,
|
|
||||||
title VARCHAR(200) NOT NULL,
|
|
||||||
content JSONB,
|
|
||||||
status VARCHAR(20) NOT NULL DEFAULT 'pending',
|
|
||||||
started_at TIMESTAMP WITH TIME ZONE,
|
|
||||||
completed_at TIMESTAMP WITH TIME ZONE,
|
|
||||||
error_message TEXT
|
|
||||||
);
|
|
||||||
|
|
||||||
-- 进度追踪表
|
|
||||||
CREATE TABLE progress_tracking (
|
|
||||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
||||||
report_id UUID REFERENCES reports(id) ON DELETE CASCADE,
|
|
||||||
step_name VARCHAR(100) NOT NULL,
|
|
||||||
step_order INTEGER NOT NULL,
|
|
||||||
status VARCHAR(20) NOT NULL DEFAULT 'pending',
|
|
||||||
started_at TIMESTAMP WITH TIME ZONE,
|
|
||||||
completed_at TIMESTAMP WITH TIME ZONE,
|
|
||||||
duration_ms INTEGER,
|
|
||||||
error_message TEXT
|
|
||||||
);
|
|
||||||
|
|
||||||
-- 系统配置表
|
|
||||||
CREATE TABLE system_config (
|
|
||||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
||||||
config_key VARCHAR(100) UNIQUE NOT NULL,
|
|
||||||
config_value JSONB NOT NULL,
|
|
||||||
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
|
|
||||||
);
|
|
||||||
```
|
|
||||||
|
|
||||||
### 分析模块类型定义
|
|
||||||
|
|
||||||
```python
|
|
||||||
class AnalysisModuleType(Enum):
|
|
||||||
TRADING_VIEW_CHART = "trading_view_chart"
|
|
||||||
FINANCIAL_DATA = "financial_data"
|
|
||||||
BUSINESS_INFO = "business_info"
|
|
||||||
FUNDAMENTAL_ANALYSIS = "fundamental_analysis"
|
|
||||||
BULLISH_ANALYSIS = "bullish_analysis"
|
|
||||||
BEARISH_ANALYSIS = "bearish_analysis"
|
|
||||||
MARKET_ANALYSIS = "market_analysis"
|
|
||||||
NEWS_ANALYSIS = "news_analysis"
|
|
||||||
TRADING_ANALYSIS = "trading_analysis"
|
|
||||||
INSIDER_ANALYSIS = "insider_analysis"
|
|
||||||
FINAL_CONCLUSION = "final_conclusion"
|
|
||||||
|
|
||||||
class AnalysisModule(BaseModel):
|
|
||||||
id: UUID
|
|
||||||
module_type: AnalysisModuleType
|
|
||||||
title: str
|
|
||||||
content: Dict[str, Any]
|
|
||||||
status: str
|
|
||||||
duration_ms: Optional[int]
|
|
||||||
error_message: Optional[str]
|
|
||||||
```
|
|
||||||
|
|
||||||
## 错误处理
|
|
||||||
|
|
||||||
### 错误类型定义
|
|
||||||
|
|
||||||
```python
|
|
||||||
class StockAnalysisError(Exception):
|
|
||||||
"""基础异常类"""
|
|
||||||
pass
|
|
||||||
|
|
||||||
class DataSourceError(StockAnalysisError):
|
|
||||||
"""数据源错误"""
|
|
||||||
pass
|
|
||||||
|
|
||||||
class AIAnalysisError(StockAnalysisError):
|
|
||||||
"""AI分析错误"""
|
|
||||||
pass
|
|
||||||
|
|
||||||
class ConfigurationError(StockAnalysisError):
|
|
||||||
"""配置错误"""
|
|
||||||
pass
|
|
||||||
|
|
||||||
class DatabaseError(StockAnalysisError):
|
|
||||||
"""数据库错误"""
|
|
||||||
pass
|
|
||||||
```
|
|
||||||
|
|
||||||
### 错误处理策略
|
|
||||||
|
|
||||||
1. **数据获取失败**: 重试机制,最多3次重试,指数退避
|
|
||||||
2. **AI分析失败**: 记录错误,继续其他模块,最后汇总失败信息
|
|
||||||
3. **数据库连接失败**: 使用连接池,自动重连
|
|
||||||
4. **配置错误**: 提供详细错误信息,阻止系统启动
|
|
||||||
5. **前端错误**: Toast通知,错误边界组件
|
|
||||||
|
|
||||||
## 测试策略
|
|
||||||
|
|
||||||
### 测试层级
|
|
||||||
|
|
||||||
1. **单元测试**
|
|
||||||
- 后端服务函数测试
|
|
||||||
- 前端组件测试
|
|
||||||
- 数据模型验证测试
|
|
||||||
|
|
||||||
2. **集成测试**
|
|
||||||
- API端点测试
|
|
||||||
- 数据库操作测试
|
|
||||||
- 外部服务集成测试
|
|
||||||
|
|
||||||
3. **端到端测试**
|
|
||||||
- 完整报告生成流程测试
|
|
||||||
- 用户界面交互测试
|
|
||||||
|
|
||||||
### 测试工具
|
|
||||||
|
|
||||||
- **后端**: pytest, pytest-asyncio, httpx
|
|
||||||
- **前端**: Jest, React Testing Library, Playwright
|
|
||||||
- **数据库**: pytest-postgresql
|
|
||||||
- **API测试**: FastAPI TestClient
|
|
||||||
|
|
||||||
### 测试数据
|
|
||||||
|
|
||||||
- 使用测试数据库和模拟数据
|
|
||||||
- 外部API使用mock响应
|
|
||||||
- 测试用例覆盖各种市场和股票类型
|
|
||||||
@ -1,112 +0,0 @@
|
|||||||
# 需求文档 - MVP版本
|
|
||||||
|
|
||||||
## 介绍
|
|
||||||
|
|
||||||
基本面选股系统MVP是一个综合的中文网站,允许用户输入证券代码和交易市场,生成包含多维度分析的详细股票基本面报告。系统通过多个专业分析模块,结合财务数据、AI分析和市场信息,为用户提供全面的投资决策支持。
|
|
||||||
|
|
||||||
## 术语表
|
|
||||||
|
|
||||||
- **选股系统 (Stock_Selection_System)**: 提供基本面分析和报告生成的主要系统
|
|
||||||
- **用户 (User)**: 使用系统进行股票分析的终端用户
|
|
||||||
- **证券代码 (Security_Code)**: 股票在特定交易市场的唯一标识符
|
|
||||||
- **交易市场 (Trading_Market)**: 股票交易的地理区域,包括中国、香港、美国、日本
|
|
||||||
- **基本面报告 (Fundamental_Report)**: 包含九个分析模块的综合股票分析报告
|
|
||||||
- **TradingView图表 (TradingView_Chart)**: 使用TradingView高级图表组件显示的股价图表
|
|
||||||
- **Tushare_API**: 用于获取中国股票财务数据的数据源接口
|
|
||||||
- **Gemini_Model**: Google的大语言模型,用于生成业务分析内容
|
|
||||||
- **景林模型 (Jinglin_Model)**: 基本面分析师使用的问题集分析框架
|
|
||||||
- **PostgreSQL数据库 (PostgreSQL_Database)**: 用于存储报告数据的关系型数据库
|
|
||||||
- **分析模块 (Analysis_Module)**: 报告中的独立分析部分,每个模块对应一个显示页面
|
|
||||||
|
|
||||||
## 需求
|
|
||||||
|
|
||||||
### 需求 1
|
|
||||||
|
|
||||||
**用户故事:** 作为投资者,我希望能够输入股票代码和选择交易市场,以便获取该股票的综合基本面分析报告
|
|
||||||
|
|
||||||
#### 验收标准
|
|
||||||
|
|
||||||
1. 当用户访问首页时,选股系统应当显示证券代码输入框和交易市场选择器
|
|
||||||
2. 当用户选择交易市场时,选股系统应当提供中国、香港、美国、日本四个选项
|
|
||||||
3. 当用户提交证券代码和交易市场时,选股系统应当处理用户请求并跳转到报告页面
|
|
||||||
|
|
||||||
### 需求 2
|
|
||||||
|
|
||||||
**用户故事:** 作为投资者,我希望系统能够检查历史报告,以便决定是查看现有报告还是生成新报告
|
|
||||||
|
|
||||||
#### 验收标准
|
|
||||||
|
|
||||||
1. 当用户提交证券代码和交易市场后,选股系统应当在PostgreSQL数据库中查询对应的历史报告
|
|
||||||
2. 如果存在历史报告,选股系统应当显示历史报告内容和"生成最新报告"按钮
|
|
||||||
3. 如果不存在历史报告,选股系统应当自动启动九步报告生成流程
|
|
||||||
|
|
||||||
### 需求 3
|
|
||||||
|
|
||||||
**用户故事:** 作为投资者,我希望系统能够获取准确的财务数据,以便进行可靠的基本面分析
|
|
||||||
|
|
||||||
#### 验收标准
|
|
||||||
|
|
||||||
1. 当生成中国股票报告时,选股系统应当使用Tushare_API获取财务信息
|
|
||||||
2. 当处理其他市场股票时,选股系统应当根据交易市场选择相应的数据源
|
|
||||||
3. 当财务数据获取完成时,选股系统应当将数据作为后续分析的基础
|
|
||||||
|
|
||||||
### 需求 4
|
|
||||||
|
|
||||||
**用户故事:** 作为投资者,我希望系统能够通过AI分析获取公司业务信息,以便了解公司的全面情况
|
|
||||||
|
|
||||||
#### 验收标准
|
|
||||||
|
|
||||||
1. 当需要业务信息时,选股系统应当使用Gemini生成公司概览、主营业务、发展历程、核心团队、供应链、主要客户及销售模式、未来展望
|
|
||||||
2. 当调用Gemini_Model时,选股系统应当使用配置的API密钥进行身份验证
|
|
||||||
3. 当业务信息生成完成时,选股系统应当将内容整合到报告的第二部分
|
|
||||||
|
|
||||||
### 需求 5
|
|
||||||
|
|
||||||
**用户故事:** 作为投资者,我希望系统能够提供多维度的专业分析,以便获得全面的投资决策支持
|
|
||||||
|
|
||||||
#### 验收标准
|
|
||||||
|
|
||||||
1. 当生成报告时,选股系统应当按顺序执行10个分析模块:财务信息、业务信息、基本面分析、看涨分析、看跌分析、市场分析、新闻分析、交易分析、内部人与机构动向分析、最终结论
|
|
||||||
2. 当执行基本面分析时,选股系统应当使用问题集进行分析
|
|
||||||
3. 当执行看涨分析时,选股系统应当研究潜在隐藏资产和护城河竞争优势
|
|
||||||
4. 当执行看跌分析时,选股系统应当分析公司价值底线和最坏情况
|
|
||||||
5. 当执行市场分析时,选股系统应当研究市场情绪分歧点与变化驱动
|
|
||||||
6. 当执行新闻分析时,选股系统应当研究股价催化剂与拐点预判
|
|
||||||
7. 当执行交易分析时,选股系统应当研究市场体量与增长路径
|
|
||||||
8. 当执行内部人分析时,选股系统应当研究内部人与机构动向
|
|
||||||
9. 当生成最终结论时,选股系统应当指出关键矛盾与预期差以及拐点的临近
|
|
||||||
|
|
||||||
### 需求 6
|
|
||||||
|
|
||||||
**用户故事:** 作为投资者,我希望每个分析模块都能独立查看,以便专注于特定的分析维度
|
|
||||||
|
|
||||||
#### 验收标准
|
|
||||||
|
|
||||||
1. 当显示报告时,选股系统应当为每个分析模块提供独立的显示页面
|
|
||||||
2. 当用户在模块间切换时,选股系统应当保持导航的流畅性
|
|
||||||
3. 当所有模块完成时,选股系统应当将完整报告保存到PostgreSQL数据库
|
|
||||||
|
|
||||||
### 需求 7
|
|
||||||
|
|
||||||
**用户故事:** 作为投资者,我希望在报告生成过程中能够看到实时进度,以便了解当前状态和预估完成时间
|
|
||||||
|
|
||||||
#### 验收标准
|
|
||||||
|
|
||||||
1. 当开始生成报告时,选股系统应当显示进度指示器展示所有分析步骤
|
|
||||||
2. 当执行每个分析步骤时,选股系统应当高亮显示当前正在进行的步骤
|
|
||||||
3. 当每个步骤完成时,选股系统应当更新步骤状态为已完成
|
|
||||||
4. 当执行分析步骤时,选股系统应当记录每个步骤的开始时间和完成时间
|
|
||||||
5. 当显示进度时,选股系统应当展示每个步骤的耗时统计
|
|
||||||
6. 当步骤执行失败时,选股系统应当显示错误状态和错误信息
|
|
||||||
|
|
||||||
### 需求 8
|
|
||||||
|
|
||||||
**用户故事:** 作为系统管理员,我希望能够配置系统参数,以便系统能够正常连接外部服务
|
|
||||||
|
|
||||||
#### 验收标准
|
|
||||||
|
|
||||||
1. 选股系统应当提供配置页面用于设置数据库连接参数
|
|
||||||
2. 选股系统应当提供配置页面用于设置Gemini_API密钥
|
|
||||||
3. 选股系统应当提供配置页面用于设置各市场的数据源配置
|
|
||||||
4. 当配置更新时,选股系统应当验证配置的有效性
|
|
||||||
5. 当配置保存时,选股系统应当将配置持久化存储
|
|
||||||
@ -1,167 +0,0 @@
|
|||||||
# 实施计划
|
|
||||||
|
|
||||||
- [x] 1. 后端项目初始化和基础架构
|
|
||||||
- 创建Python FastAPI项目结构
|
|
||||||
- 设置虚拟环境和依赖管理(requirements.txt或pyproject.toml)
|
|
||||||
- 配置FastAPI应用入口(main.py)
|
|
||||||
- 创建核心目录结构(models, schemas, services, routers, core)
|
|
||||||
- 设置基础配置管理(core/config.py)
|
|
||||||
- _需求: 8.1, 8.2_
|
|
||||||
|
|
||||||
- [x] 2. 数据库设置和模型定义
|
|
||||||
- 配置PostgreSQL数据库连接(core/database.py)
|
|
||||||
- 创建SQLAlchemy数据模型(reports, analysis_modules, progress_tracking, system_config)
|
|
||||||
- 设置Alembic数据库迁移工具
|
|
||||||
- 创建初始数据库迁移脚本
|
|
||||||
- 实现数据库会话管理和依赖注入
|
|
||||||
- _需求: 6.3, 8.1_
|
|
||||||
|
|
||||||
- [x] 3. Pydantic模式和基础服务
|
|
||||||
- 创建Pydantic数据验证模式(schemas/)
|
|
||||||
- 实现配置管理服务(services/config_manager.py)
|
|
||||||
- 创建数据获取服务基础架构(services/data_fetcher.py)
|
|
||||||
- 实现基础错误处理和异常类
|
|
||||||
- _需求: 8.2, 8.3, 8.4, 8.5_
|
|
||||||
|
|
||||||
- [x] 4. 外部API集成服务
|
|
||||||
- 实现Tushare API集成(中国股票数据获取)
|
|
||||||
- 实现Gemini API集成(AI分析服务)
|
|
||||||
- 创建数据源配置和切换逻辑
|
|
||||||
- 添加API调用错误处理和重试机制
|
|
||||||
- _需求: 3.1, 3.2, 4.1, 4.2_
|
|
||||||
|
|
||||||
- [x] 5. 报告生成引擎核心
|
|
||||||
- 创建报告生成服务(services/report_generator.py)
|
|
||||||
- 实现分析模块执行框架
|
|
||||||
- 创建进度追踪服务(services/progress_tracker.py)
|
|
||||||
- 实现步骤计时和状态管理
|
|
||||||
- _需求: 5.1, 7.1, 7.2, 7.3, 7.4, 7.5_
|
|
||||||
|
|
||||||
- [x] 6. 后端API路由实现
|
|
||||||
- 实现报告相关API端点(routers/reports.py)
|
|
||||||
- 创建配置管理API端点(routers/config.py)
|
|
||||||
- 实现进度追踪API端点(routers/progress.py)
|
|
||||||
- 添加API文档和验证
|
|
||||||
- _需求: 2.1, 2.2, 2.3, 8.1, 8.2, 8.3_
|
|
||||||
|
|
||||||
- [x] 7. 前端项目初始化
|
|
||||||
- 创建Next.js项目并配置TypeScript
|
|
||||||
- 安装和配置shadcn/ui组件库
|
|
||||||
- 设置Tailwind CSS和基础样式
|
|
||||||
- 配置项目文件夹结构(components, lib, hooks, app)
|
|
||||||
- 创建基础布局和主题配置
|
|
||||||
- _需求: 1.1_
|
|
||||||
|
|
||||||
- [x] 8. 前端核心组件开发
|
|
||||||
- 安装和配置shadcn/ui基础组件
|
|
||||||
- 实现StockSearchForm组件(使用Form, Input, Select, Button)
|
|
||||||
- 创建ReportProgress组件(使用Progress, Badge, Card)
|
|
||||||
- 实现AnalysisModule组件(使用Card, Tabs, Separator)
|
|
||||||
- 创建FinancialDataTable组件(使用Table组件系列)
|
|
||||||
- _需求: 1.1, 1.2, 7.1, 7.2_
|
|
||||||
|
|
||||||
- [x] 9. 首页和股票搜索功能
|
|
||||||
- 实现首页布局和设计(app/page.tsx)
|
|
||||||
- 创建股票代码输入和市场选择功能
|
|
||||||
- 实现表单验证和提交逻辑
|
|
||||||
- 添加中文界面文本和错误提示
|
|
||||||
- 连接前端表单到后端API
|
|
||||||
- _需求: 1.1, 1.2, 1.3_
|
|
||||||
|
|
||||||
- [x] 10. 报告页面和历史报告功能
|
|
||||||
- 实现报告页面路由(app/report/[symbol]/page.tsx)
|
|
||||||
- 创建历史报告检查和显示逻辑
|
|
||||||
- 实现"生成最新报告"按钮功能
|
|
||||||
- 添加报告加载状态和错误处理
|
|
||||||
- _需求: 2.1, 2.2, 2.3_
|
|
||||||
|
|
||||||
- [x] 11. TradingView图表集成
|
|
||||||
- 集成TradingView高级图表组件
|
|
||||||
- 实现图表配置和参数设置
|
|
||||||
- 根据证券代码和市场配置图表
|
|
||||||
- 处理图表加载错误和异常情况
|
|
||||||
- _需求: 5.1, 5.2, 5.3, 5.4_
|
|
||||||
|
|
||||||
- [x] 12. 财务数据分析模块
|
|
||||||
- 实现财务数据获取和处理逻辑
|
|
||||||
- 创建财务数据格式化和展示
|
|
||||||
- 实现FinancialDataTable的数据绑定
|
|
||||||
- 添加财务数据的错误处理和重试
|
|
||||||
- _需求: 3.1, 3.2, 3.3_
|
|
||||||
|
|
||||||
- [x] 13. AI业务信息分析模块
|
|
||||||
- 实现Gemini API调用逻辑和提示词模板
|
|
||||||
- 创建业务信息分析内容生成
|
|
||||||
- 实现公司概览、主营业务、发展历程等内容
|
|
||||||
- 添加AI分析结果的格式化和展示
|
|
||||||
- _需求: 4.1, 4.2, 4.3_
|
|
||||||
|
|
||||||
- [x] 14. 专业分析模块实现
|
|
||||||
- 实现景林模型基本面分析模块
|
|
||||||
- 创建看涨分析师模块(隐藏资产、护城河分析)
|
|
||||||
- 实现看跌分析师模块(价值底线、最坏情况分析)
|
|
||||||
- 创建市场分析师模块(市场情绪分歧点分析)
|
|
||||||
- 实现新闻分析师模块(股价催化剂分析)
|
|
||||||
- 创建交易分析模块(市场体量与增长路径)
|
|
||||||
- 实现内部人与机构动向分析模块
|
|
||||||
- 创建最终结论模块(关键矛盾与拐点分析)
|
|
||||||
- _需求: 5.1, 5.2, 5.3, 5.4, 5.5, 5.6, 5.7, 5.8, 5.9_
|
|
||||||
|
|
||||||
- [x] 15. 报告生成流程整合
|
|
||||||
- 整合所有分析模块到报告生成引擎
|
|
||||||
- 实现模块间的数据传递和依赖关系
|
|
||||||
- 创建报告生成的错误处理和重试机制
|
|
||||||
- 实现报告完成后的数据库保存
|
|
||||||
- _需求: 5.1, 6.3_
|
|
||||||
|
|
||||||
- [x] 16. 实时进度显示功能
|
|
||||||
- 实现前端进度追踪钩子(useProgress)
|
|
||||||
- 连接WebSocket或Server-Sent Events到进度显示
|
|
||||||
- 添加步骤高亮和状态更新
|
|
||||||
- 实现计时显示和预估完成时间
|
|
||||||
- 添加错误状态显示
|
|
||||||
- _需求: 7.1, 7.2, 7.3, 7.4, 7.5, 7.6_
|
|
||||||
|
|
||||||
- [x] 17. 配置管理页面
|
|
||||||
- 创建配置页面布局和表单(app/config/page.tsx)
|
|
||||||
- 实现数据库配置界面
|
|
||||||
- 添加Gemini API配置功能
|
|
||||||
- 创建数据源配置管理
|
|
||||||
- 实现配置验证和测试功能
|
|
||||||
- _需求: 8.1, 8.2, 8.3, 8.4, 8.5_
|
|
||||||
|
|
||||||
- [x] 18. 报告展示和导航优化
|
|
||||||
- 实现分析模块的独立页面展示
|
|
||||||
- 创建模块间的流畅导航
|
|
||||||
- 添加报告概览和目录功能
|
|
||||||
- 优化移动端响应式显示
|
|
||||||
- _需求: 6.1, 6.2_
|
|
||||||
|
|
||||||
- [x] 19. 错误处理和用户体验优化
|
|
||||||
- 实现全局错误处理和错误边界
|
|
||||||
- 添加Toast通知系统
|
|
||||||
- 创建加载状态和骨架屏
|
|
||||||
- 优化中文界面和用户反馈
|
|
||||||
- 添加操作确认和提示
|
|
||||||
- _需求: 7.6, 1.1_
|
|
||||||
|
|
||||||
- [x] 20. 测试实现
|
|
||||||
- [x] 20.1 后端单元测试
|
|
||||||
- 为数据获取服务编写单元测试
|
|
||||||
- 为AI分析服务编写单元测试
|
|
||||||
- 为报告生成引擎编写单元测试
|
|
||||||
- 为配置管理服务编写单元测试
|
|
||||||
|
|
||||||
- [x] 20.2 前端组件测试
|
|
||||||
- 为核心组件编写React Testing Library测试
|
|
||||||
- 为表单组件编写交互测试
|
|
||||||
- 为进度组件编写状态测试
|
|
||||||
|
|
||||||
- [x] 20.3 API集成测试
|
|
||||||
- 为报告生成API编写集成测试
|
|
||||||
- 为配置管理API编写集成测试
|
|
||||||
- 为进度追踪API编写集成测试
|
|
||||||
|
|
||||||
- [x] 20.4 端到端测试
|
|
||||||
- 编写完整报告生成流程的E2E测试
|
|
||||||
- 编写配置管理流程的E2E测试
|
|
||||||
Loading…
Reference in New Issue
Block a user