Update project

This commit is contained in:
wanghep
2026-04-08 20:04:40 +08:00
parent 2eab960303
commit 862235ea89
130 changed files with 60206 additions and 231 deletions

View File

@ -0,0 +1,346 @@
# 主力资金动向需求文档
## 1. 项目目标
建设一个“主力资金动向”模块,用于接收用户上传的资金流向截图,调用 Kimi 多模态模型进行识别,生成结构化数据,并在人工校对后保存到数据库中。
该模块分为两部分:
1. 列表查询页
2. 新增/识别/校对/保存页
本阶段以数据库存储为准,不再使用 JSON 作为正式业务存储。
## 2. 业务背景
当前无法直接依赖 Wind API 获取相关数据,因此改为通过截图识别的方式采集“主力资金动向”数据。
识别链路要求如下:
1. 用户上传图片
2. 后端调用 Kimi 进行视觉识别
3. 模型返回结构化识别结果
4. 前端展示识别结果供用户人工校对
5. 用户确认或修改后点击保存
6. 数据写入数据库
说明:
1. 每个交易日只生成一条记录
2. 图片需要保留原始文件,支持列表点击查看详情
3. `intraday_summary` 只描述日内资金走势,不重复金额字段
## 3. 功能范围
### 3.1 列表页
列表页用于查看已保存的“主力资金动向”记录。
列表字段包括:
1. 日期
2. 机构资金
3. 主力资金
4. 大户资金
5. 散户资金
6. 走势
7. 总结
8. 图片详情入口
列表能力要求:
1. 支持按日期倒序展示
2. 支持点击某一行查看详情
3. 支持点击图片或详情按钮查看原图
4. 默认一页展示最近记录
### 3.2 新增页
新增页用于生成并保存当日记录。
页面交互流程:
1. 用户点击“新增”
2. 选择并上传图片
3. 后端调用 Kimi 识别
4. 前端展示识别结果
5. 用户可手动修改识别结果
6. 用户点击“保存”
7. 后端进行唯一性校验并写入数据库
新增页展示字段:
1. 日期
2. 机构资金
3. 主力资金
4. 大户资金
5. 散户资金
6. 走势
7. 总结
8. 原始图片预览
### 3.3 详情页
详情页用于查看某日记录完整内容。
详情页内容包括:
1. 原图
2. 日期
3. 机构资金
4. 主力资金
5. 大户资金
6. 散户资金
7. 走势
8. 总结
9. 创建时间
10. 更新时间
## 4. 业务规则
### 4.1 唯一性规则
同一个日期只允许存在一条正式记录。
处理策略建议:
1. 保存时按 `trade_date` 做唯一校验
2. 若当天数据已存在,则提示“该日期记录已存在”
3. 后续如需要覆盖更新,可增加“编辑”模式,不在本期范围内默认覆盖
### 4.2 识别规则
Kimi 识别后返回字段:
1. `trade_date`
2. `subject`
3. `snapshot_time`
4. `main_force_amount_yi`
5. `institution_amount_yi`
6. `large_household_amount_yi`
7. `retail_amount_yi`
8. `overall_trend`
9. `intraday_summary`
识别要求:
1. 金额字段单独存储
2. 总结只描述走势,不重复罗列金额
3. 如果图片中未显示日期,则允许前端人工填写
4. 如果识别结果不准确,用户可直接修改后再保存
### 4.3 图片存储规则
1. 原图必须保存
2. 数据库中保存图片访问路径
3. 后续列表和详情页通过路径展示图片
## 5. 前端需求
### 5.1 页面结构
主力资金动向模块包括:
1. 列表页
2. 新增弹窗或新增页面
3. 图片详情预览能力
### 5.2 列表页交互
页面顶部:
1. 模块标题:“主力资金动向”
2. 新增按钮
页面主体:
1. 表格展示历史记录
2. 每行可查看图片详情
3. 每行可点击进入详情
建议字段顺序:
1. 日期
2. 机构资金
3. 主力资金
4. 大户资金
5. 散户资金
6. 走势
7. 总结
8. 图片详情
### 5.3 新增页交互
新增页流程:
1. 上传图片
2. 点击“识别”
3. 等待 Kimi 返回结果
4. 展示识别结果表单
5. 用户人工修正
6. 点击“保存”
新增页按钮建议:
1. 上传图片
2. 开始识别
3. 保存
4. 取消
状态要求:
1. 识别中需要显示加载状态
2. 识别失败时需要显示错误提示
3. 保存成功后返回列表并刷新
## 6. 后端需求
### 6.1 接口设计
建议后端提供以下接口:
1. `GET /api/main-capital-flows`
用于获取列表数据
2. `GET /api/main-capital-flows/{id}`
用于获取详情数据
3. `POST /api/main-capital-flows/recognize`
用于上传图片并调用 Kimi 识别,返回识别结果,但不落正式业务表
4. `POST /api/main-capital-flows`
用于保存经人工确认后的正式数据
5. `GET /main-capital-flow-images/{filename}`
用于访问原图
### 6.2 后端处理流程
识别接口:
1. 接收图片
2. 保存临时图片
3. 调用 Kimi
4. 解析模型返回 JSON
5. 返回给前端展示
保存接口:
1. 接收前端确认后的字段
2. 校验日期是否已存在
3. 保存原图路径和业务数据
4. 返回保存结果
## 7. 数据库设计
建议建立表:`main_capital_flow`
字段设计如下:
1. `id`
主键,自增或 UUID
2. `trade_date`
交易日期,`DATE`,唯一
3. `subject`
标的名称,`VARCHAR(64)`,可为空
4. `snapshot_time`
图片中截图时间,`VARCHAR(16)`,可为空
5. `institution_amount_yi`
机构资金,`DECIMAL(12,2)`,可为空
6. `main_force_amount_yi`
主力资金,`DECIMAL(12,2)`,可为空
7. `large_household_amount_yi`
大户资金,`DECIMAL(12,2)`,可为空
8. `retail_amount_yi`
散户资金,`DECIMAL(12,2)`,可为空
9. `overall_trend`
整体走势,`VARCHAR(64)`,可为空
10. `intraday_summary`
日内走势总结,`TEXT`
11. `image_path`
图片路径,`VARCHAR(255)`
12. `image_name`
图片原始名称,`VARCHAR(255)`
13. `created_at`
创建时间,`DATETIME`
14. `updated_at`
更新时间,`DATETIME`
建议索引:
1. `UNIQUE KEY uk_trade_date (trade_date)`
2. `KEY idx_created_at (created_at)`
建议建表 SQL
```sql
CREATE TABLE main_capital_flow (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
trade_date DATE NOT NULL,
subject VARCHAR(64) NULL,
snapshot_time VARCHAR(16) NULL,
institution_amount_yi DECIMAL(12,2) NULL,
main_force_amount_yi DECIMAL(12,2) NULL,
large_household_amount_yi DECIMAL(12,2) NULL,
retail_amount_yi DECIMAL(12,2) NULL,
overall_trend VARCHAR(64) NULL,
intraday_summary TEXT NOT NULL,
image_path VARCHAR(255) NOT NULL,
image_name VARCHAR(255) NOT NULL,
created_at DATETIME NOT NULL,
updated_at DATETIME NOT NULL,
UNIQUE KEY uk_trade_date (trade_date),
KEY idx_created_at (created_at)
);
```
## 8. 非功能要求
1. 识别结果返回时间尽量控制在 10 到 60 秒内
2. 图片原图必须可追溯
3. 保存前必须支持人工校正
4. 保存接口必须防止重复日期写入
5. 后端日志中要记录识别失败原因,便于排查 Kimi 调用问题
## 9. 本期开发范围
本期要完成:
1. 数据库建表
2. 后端识别接口
3. 后端保存接口
4. 后端列表接口
5. 后端详情接口
6. 前端列表页
7. 前端新增并人工校对页面
8. 原图预览
本期暂不做:
1. 编辑历史记录
2. 删除功能
3. 批量上传
4. 多用户权限管理
## 10. 验收标准
1. 用户可以上传一张资金流向截图
2. Kimi 可以返回结构化识别结果
3. 用户可以在保存前修改识别结果
4. 点击保存后数据成功写入数据库
5. 列表页能展示已保存记录
6. 每条记录都可以查看原图和详情
7. 同一天不能重复保存两条正式记录