chore: Untrack .kiro directory

This commit is contained in:
xucheng 2025-10-21 20:19:47 +08:00
parent 4d7aa56b4b
commit ce6cc1ddb8
3 changed files with 0 additions and 630 deletions

View File

@ -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响应
- 测试用例覆盖各种市场和股票类型

View File

@ -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. 当配置保存时,选股系统应当将配置持久化存储

View File

@ -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测试