2026-04-17 21:20:26 +08:00
|
|
|
|
# lhbfx 技术文档
|
|
|
|
|
|
|
|
|
|
|
|
## 1. 技术栈
|
|
|
|
|
|
|
|
|
|
|
|
### 1.1 前端
|
|
|
|
|
|
|
|
|
|
|
|
- Vue 3
|
|
|
|
|
|
- TypeScript
|
|
|
|
|
|
- Vite
|
|
|
|
|
|
|
|
|
|
|
|
### 1.2 后端
|
|
|
|
|
|
|
|
|
|
|
|
- FastAPI
|
|
|
|
|
|
- PyMySQL
|
|
|
|
|
|
- PyYAML
|
|
|
|
|
|
- Requests / BeautifulSoup
|
|
|
|
|
|
|
|
|
|
|
|
### 1.3 数据库
|
|
|
|
|
|
|
|
|
|
|
|
- MySQL
|
|
|
|
|
|
|
|
|
|
|
|
## 2. 工程结构
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
longhubang/
|
|
|
|
|
|
├─ backend/
|
|
|
|
|
|
│ ├─ config.example.yaml
|
|
|
|
|
|
│ ├─ pyproject.toml
|
|
|
|
|
|
│ ├─ scripts/
|
|
|
|
|
|
│ └─ src/lhbfx/
|
|
|
|
|
|
├─ frontend/
|
|
|
|
|
|
│ ├─ package.json
|
|
|
|
|
|
│ ├─ vite.config.ts
|
|
|
|
|
|
│ └─ src/
|
|
|
|
|
|
├─ docs/
|
|
|
|
|
|
├─ start-dev.ps1
|
|
|
|
|
|
├─ .gitignore
|
|
|
|
|
|
└─ README.md
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 3. 后端架构
|
|
|
|
|
|
|
|
|
|
|
|
### 3.1 入口
|
|
|
|
|
|
|
|
|
|
|
|
- `backend/scripts/run_api.py`
|
|
|
|
|
|
- `backend/src/lhbfx/app.py`
|
|
|
|
|
|
|
|
|
|
|
|
`app.py` 提供 API 路由与前端静态文件挂载能力。
|
|
|
|
|
|
|
|
|
|
|
|
### 3.2 配置
|
|
|
|
|
|
|
|
|
|
|
|
- 运行时配置文件:`backend/config.yaml`
|
|
|
|
|
|
- 示例配置文件:`backend/config.example.yaml`
|
|
|
|
|
|
|
|
|
|
|
|
为避免泄露本地敏感信息,实际 `config.yaml` 已加入 `.gitignore`。
|
|
|
|
|
|
|
|
|
|
|
|
### 3.3 数据层
|
|
|
|
|
|
|
|
|
|
|
|
数据库相关逻辑集中在:
|
|
|
|
|
|
|
|
|
|
|
|
- `backend/src/lhbfx/db.py`
|
|
|
|
|
|
- `backend/src/lhbfx/schema.sql`
|
|
|
|
|
|
- `backend/src/lhbfx/queries.py`
|
|
|
|
|
|
|
|
|
|
|
|
当前主要表:
|
|
|
|
|
|
|
|
|
|
|
|
- `stocks`
|
|
|
|
|
|
- `lhb_overview`
|
|
|
|
|
|
- `lhb_detail_seats`
|
|
|
|
|
|
- `warning_events`
|
|
|
|
|
|
- `watchlist_entries`
|
|
|
|
|
|
- `traders`
|
|
|
|
|
|
- `trader_seats`
|
|
|
|
|
|
|
|
|
|
|
|
### 3.4 数据处理管线
|
|
|
|
|
|
|
|
|
|
|
|
`backend/src/lhbfx/pipeline.py` 负责:
|
|
|
|
|
|
|
|
|
|
|
|
- 龙虎榜日度导入
|
|
|
|
|
|
- 席位匹配
|
|
|
|
|
|
- 预警生成
|
|
|
|
|
|
- 管线状态统计
|
|
|
|
|
|
|
|
|
|
|
|
配套脚本位于 `backend/scripts/`:
|
|
|
|
|
|
|
|
|
|
|
|
- `init_db.py`
|
|
|
|
|
|
- `import_ths_daily.py`
|
|
|
|
|
|
- `import_ths_year.py`
|
|
|
|
|
|
- `generate_warnings.py`
|
|
|
|
|
|
- `rematch_traders.py`
|
|
|
|
|
|
|
|
|
|
|
|
### 3.5 首页关键接口
|
|
|
|
|
|
|
|
|
|
|
|
#### `/api/actions`
|
|
|
|
|
|
|
|
|
|
|
|
用途:
|
|
|
|
|
|
|
|
|
|
|
|
- 为首页左侧关注池流水和右侧候选区提供原始操作数据
|
|
|
|
|
|
|
|
|
|
|
|
当前返回字段包括:
|
|
|
|
|
|
|
|
|
|
|
|
- 股票代码、股票名称
|
|
|
|
|
|
- 游资名称
|
|
|
|
|
|
- 买入、卖出、净额
|
|
|
|
|
|
- 当前价格、涨跌幅
|
|
|
|
|
|
- 行业、市场、总市值、流通市值
|
|
|
|
|
|
- 操作方向
|
|
|
|
|
|
|
|
|
|
|
|
#### `/api/watchlist`
|
|
|
|
|
|
|
|
|
|
|
|
用途:
|
|
|
|
|
|
|
|
|
|
|
|
- 保存和读取用户关注池
|
|
|
|
|
|
|
|
|
|
|
|
行为:
|
|
|
|
|
|
|
|
|
|
|
|
- `GET /api/watchlist`:获取当前关注池
|
|
|
|
|
|
- `POST /api/watchlist`:加入关注
|
|
|
|
|
|
- `DELETE /api/watchlist/{stock_code}`:取消关注并删除记录
|
|
|
|
|
|
|
|
|
|
|
|
## 4. 前端架构
|
|
|
|
|
|
|
|
|
|
|
|
### 4.1 前端入口
|
|
|
|
|
|
|
|
|
|
|
|
- `frontend/src/main.ts`
|
|
|
|
|
|
- `frontend/src/App.vue`
|
|
|
|
|
|
|
|
|
|
|
|
`App.vue` 负责页面切换、初始化数据和页面级事件绑定。
|
|
|
|
|
|
|
|
|
|
|
|
### 4.2 数据管理
|
|
|
|
|
|
|
|
|
|
|
|
`frontend/src/composables/useDashboardData.ts` 是首页和多页面共享数据的核心数据层,负责:
|
|
|
|
|
|
|
|
|
|
|
|
- 获取摘要数据
|
|
|
|
|
|
- 获取预警数据
|
|
|
|
|
|
- 获取游资列表
|
|
|
|
|
|
- 获取首页操作流水
|
|
|
|
|
|
- 获取和维护关注池
|
|
|
|
|
|
|
|
|
|
|
|
### 4.3 页面组件
|
|
|
|
|
|
|
|
|
|
|
|
- `HomeControlScreen.vue`:首页总控台
|
2026-04-18 13:06:11 +08:00
|
|
|
|
- `TraderDetailScreen.vue`:游资详情,采用单列全宽股票列表,支持时间、名称、净额连续增大筛选,并展示行业、板块、总市值、净额和预警标签
|
2026-04-17 21:20:26 +08:00
|
|
|
|
- `StockDetailScreen.vue`:个股详情
|
|
|
|
|
|
- `WarningCenterScreen.vue`:预警中心
|
|
|
|
|
|
|
|
|
|
|
|
首页当前拆分重点组件:
|
|
|
|
|
|
|
|
|
|
|
|
- `frontend/src/components/home/CandidateWatchCard.vue`
|
|
|
|
|
|
|
|
|
|
|
|
### 4.4 首页展示逻辑
|
|
|
|
|
|
|
|
|
|
|
|
#### 左侧关注池与操作流水
|
|
|
|
|
|
|
|
|
|
|
|
在前端中按以下维度合并:
|
|
|
|
|
|
|
|
|
|
|
|
- 股票
|
|
|
|
|
|
- 日期
|
|
|
|
|
|
- 游资
|
|
|
|
|
|
- 标准化席位名
|
|
|
|
|
|
|
|
|
|
|
|
用于解决同一席位同时出现在买入榜与卖出榜时被拆成两条的问题。
|
|
|
|
|
|
|
|
|
|
|
|
#### 右侧待加入关注
|
|
|
|
|
|
|
|
|
|
|
|
候选列表卡片设计目标:
|
|
|
|
|
|
|
|
|
|
|
|
- 固定高度
|
|
|
|
|
|
- 同屏显示更多
|
|
|
|
|
|
- 信息完整
|
|
|
|
|
|
- 净额优先
|
|
|
|
|
|
|
|
|
|
|
|
## 5. 启动与运行
|
|
|
|
|
|
|
|
|
|
|
|
### 5.1 一键启动
|
|
|
|
|
|
|
|
|
|
|
|
使用根目录脚本:
|
|
|
|
|
|
|
|
|
|
|
|
```powershell
|
|
|
|
|
|
powershell -ExecutionPolicy Bypass -File .\start-dev.ps1
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 5.2 手动启动
|
|
|
|
|
|
|
|
|
|
|
|
后端:
|
|
|
|
|
|
|
|
|
|
|
|
```powershell
|
|
|
|
|
|
python backend/scripts/run_api.py
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
前端:
|
|
|
|
|
|
|
|
|
|
|
|
```powershell
|
|
|
|
|
|
cd frontend
|
|
|
|
|
|
npm install
|
|
|
|
|
|
npm run dev -- --host 127.0.0.1 --port 5173
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 6. 仓库管理建议
|
|
|
|
|
|
|
|
|
|
|
|
### 6.1 已加入忽略项
|
|
|
|
|
|
|
|
|
|
|
|
- `frontend/node_modules/`
|
|
|
|
|
|
- `frontend/dist/`
|
|
|
|
|
|
- `logs/`
|
|
|
|
|
|
- `output/`
|
|
|
|
|
|
- `.playwright-cli/`
|
|
|
|
|
|
- `backend/config.yaml`
|
|
|
|
|
|
|
|
|
|
|
|
### 6.2 行尾与文本规则
|
|
|
|
|
|
|
|
|
|
|
|
仓库已添加 `.gitattributes`:
|
|
|
|
|
|
|
|
|
|
|
|
- 默认文本文件统一由 git 管理行尾
|
|
|
|
|
|
- Windows 脚本保留 `crlf`
|
|
|
|
|
|
|
|
|
|
|
|
## 7. 测试与验证建议
|
|
|
|
|
|
|
|
|
|
|
|
当前建议至少执行三类验证:
|
|
|
|
|
|
|
|
|
|
|
|
### 7.1 静态验证
|
|
|
|
|
|
|
|
|
|
|
|
- `npm run build`
|
|
|
|
|
|
- `python -m compileall backend/src`
|
|
|
|
|
|
|
|
|
|
|
|
### 7.2 接口验证
|
|
|
|
|
|
|
|
|
|
|
|
- `GET /api/actions`
|
|
|
|
|
|
- `GET /api/watchlist`
|
|
|
|
|
|
- `GET /api/stocks/{stock_code}`
|
|
|
|
|
|
|
|
|
|
|
|
### 7.3 页面验证
|
|
|
|
|
|
|
|
|
|
|
|
建议引入或固化以下检查:
|
|
|
|
|
|
|
|
|
|
|
|
- 首页强制刷新后布局是否完整
|
|
|
|
|
|
- 关注池流水是否正确合并
|
|
|
|
|
|
- 候选卡片是否在固定高度内完整显示
|
|
|
|
|
|
- 关键页面至少保留一份 Playwright 截图回归
|
|
|
|
|
|
|
|
|
|
|
|
## 8. 当前技术债
|
|
|
|
|
|
|
|
|
|
|
|
目前仍需持续处理的问题:
|
|
|
|
|
|
|
|
|
|
|
|
- 历史文档与部分配置存在中文乱码
|
|
|
|
|
|
- 部分来源数据原始字段编码不稳定
|
|
|
|
|
|
- 页面样式近期经历多轮快速调整,仍建议补视觉回归测试
|
2026-04-18 14:46:24 +08:00
|
|
|
|
|
|
|
|
|
|
## 9. 定时更新与邮件报送方案
|
|
|
|
|
|
|
|
|
|
|
|
为满足“每天下午 17:00 自动更新并发送盘后邮件”的新增需求,建议增加一个独立的调度与报送模块。
|
|
|
|
|
|
|
|
|
|
|
|
### 9.1 调度方式
|
|
|
|
|
|
|
|
|
|
|
|
建议采用以下任一方式:
|
|
|
|
|
|
|
|
|
|
|
|
- 服务器 `cron`
|
|
|
|
|
|
- Windows 任务计划程序
|
|
|
|
|
|
- 后续统一接入独立任务调度器
|
|
|
|
|
|
|
|
|
|
|
|
默认调度时间:
|
|
|
|
|
|
|
|
|
|
|
|
- 每天下午 `17:00`
|
|
|
|
|
|
|
|
|
|
|
|
### 9.2 推荐执行流程
|
|
|
|
|
|
|
|
|
|
|
|
每日任务执行顺序建议如下:
|
|
|
|
|
|
|
|
|
|
|
|
1. 拉取当日龙虎榜与行情数据
|
|
|
|
|
|
2. 更新数据库
|
|
|
|
|
|
3. 重新生成预警数据
|
|
|
|
|
|
4. 统计关注池情况
|
|
|
|
|
|
5. 统计待加入关注候选列表
|
|
|
|
|
|
6. 生成 PDF 日报
|
|
|
|
|
|
7. 发送邮件正文与附件
|
|
|
|
|
|
8. 记录执行日志
|
|
|
|
|
|
|
|
|
|
|
|
### 9.3 建议新增模块
|
|
|
|
|
|
|
|
|
|
|
|
建议新增以下能力:
|
|
|
|
|
|
|
|
|
|
|
|
- `backend/scripts/daily_report.py`
|
|
|
|
|
|
- 串联数据更新、统计、PDF 生成、邮件发送
|
|
|
|
|
|
- `backend/src/lhbfx/reporting.py`
|
|
|
|
|
|
- 负责报表数据整理
|
|
|
|
|
|
- `backend/src/lhbfx/mailer.py`
|
|
|
|
|
|
- 负责 SMTP 或邮件服务发送
|
|
|
|
|
|
- `backend/src/lhbfx/pdf_export.py`
|
|
|
|
|
|
- 负责 PDF 生成
|
|
|
|
|
|
|
|
|
|
|
|
### 9.4 配置项建议
|
|
|
|
|
|
|
|
|
|
|
|
建议在配置文件中新增:
|
|
|
|
|
|
|
|
|
|
|
|
- 是否启用邮件报送
|
|
|
|
|
|
- SMTP 主机
|
|
|
|
|
|
- SMTP 端口
|
|
|
|
|
|
- 发件人账号
|
|
|
|
|
|
- 发件人密码或授权码
|
|
|
|
|
|
- 收件人列表
|
|
|
|
|
|
- 抄送列表
|
|
|
|
|
|
- 日报输出目录
|
|
|
|
|
|
- 调度时间
|
|
|
|
|
|
|
|
|
|
|
|
### 9.5 PDF 生成建议
|
|
|
|
|
|
|
|
|
|
|
|
PDF 附件可以通过以下方式生成:
|
|
|
|
|
|
|
|
|
|
|
|
- 基于 HTML 模板渲染后导出 PDF
|
|
|
|
|
|
- 或直接使用 Python PDF 库生成结构化报告
|
|
|
|
|
|
|
|
|
|
|
|
推荐内容结构:
|
|
|
|
|
|
|
|
|
|
|
|
1. 标题页
|
|
|
|
|
|
2. 数据更新时间
|
|
|
|
|
|
3. 关注池总览
|
|
|
|
|
|
4. 关注池流水摘要
|
|
|
|
|
|
5. 今日待加入关注列表
|
|
|
|
|
|
6. 风险与预警摘要
|
|
|
|
|
|
|
|
|
|
|
|
### 9.6 邮件正文建议
|
|
|
|
|
|
|
|
|
|
|
|
正文采用简洁摘要形式,便于手机查看:
|
|
|
|
|
|
|
|
|
|
|
|
- 今日关注池概况
|
|
|
|
|
|
- 今日关注池重点动作
|
|
|
|
|
|
- 今日待加入关注候选
|
|
|
|
|
|
- 风险提示
|
|
|
|
|
|
- 附件说明
|
|
|
|
|
|
|
|
|
|
|
|
### 9.7 测试建议
|
|
|
|
|
|
|
|
|
|
|
|
新增该需求后,应补充以下验证:
|
|
|
|
|
|
|
|
|
|
|
|
- 17:00 定时任务是否被正确触发
|
|
|
|
|
|
- 更新失败时是否生成错误日志
|
|
|
|
|
|
- PDF 是否成功生成
|
|
|
|
|
|
- 邮件正文是否包含关键摘要
|
|
|
|
|
|
- 附件是否能正常打开
|
|
|
|
|
|
- 多收件人场景是否发送成功
|