feat: 日报结构化入库(M10 前后端分离数据层)
- 新增 report_db 包: MySQL 连接/建表/幂等写入 (news_report/news_event, myquant 库) - 新增 report_import 包: 历史 178 份日报 HTML 解析入库, 表头驱动列映射 - reporter.py 完全切换: generate_report 结构化入库, 不再生成/上传 HTML - CLI: 新增 report-import 子命令 - 依赖: uv add pymysql; 配置: NEWS_DB_* / REPORT_HISTORY_DIR - 文档: docs/report_db_design.md(实现逻辑), docs/db_schema.md(表结构供 API/前端) - 测试: 24 个单测通过 (parser/builder/models/importer)
This commit is contained in:
+36
-3
@@ -1,6 +1,6 @@
|
||||
# continuation.md
|
||||
|
||||
> `checkpoint` @ 2026-07-17 07:51
|
||||
> `checkpoint` @ 2026-08-03 21:30
|
||||
|
||||
---
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
| --- | --- |
|
||||
| 新闻源 | 14 个(13 Web + 1 API: xwlb 新闻联播) |
|
||||
| Qdrant | 本地文件模式 `data/qdrant_storage/` |
|
||||
| 日报 | 5 板块: AI摘要 / 新闻联播 / 财经新闻 / 公告调研 / 数据总览 |
|
||||
| 日报 | **M10 完成: 结构化入库 MySQL(myquant 库 news_report/news_event 表),不再生成 HTML** |
|
||||
| 调度器 | APScheduler,systemd `a-share-research.service` |
|
||||
| LLM | `deepseek-v4-flash`(绝不允许擅自修改) |
|
||||
| 服务器 | `pi@192.168.1.160`,项目 `/home/pi/news/` |
|
||||
@@ -18,7 +18,40 @@
|
||||
|
||||
---
|
||||
|
||||
## 本次完成 (2026-07-17) — 禁用个股日报
|
||||
## 本次完成 (2026-08-03) — M10 日报结构化入库
|
||||
|
||||
**目标:** 日报前后端分离的数据层——日报内容结构化存入 MySQL(`news_` 前缀表),历史 178 份日报 HTML 解析入库;本项目不做 API/前端(用户另行实现)。
|
||||
|
||||
**表结构(myquant 库,见 docs/db_schema.md):**
|
||||
- `news_report`:主表,唯一键 (report_date, report_type, file_name);`file_name=''` 表示新生成日报(每天每类型一行,重复生成覆盖)
|
||||
- `news_event`:事件明细,section ∈ xwlb/news/cninfo/intl
|
||||
|
||||
**新增/修改文件:**
|
||||
- `report_db/`(models/schema/db):连接、建表、幂等 save_report
|
||||
- `report_import/`(parser/importer):历史 HTML 解析(表头驱动列映射)+ 批量导入
|
||||
- `scheduler/reporter.py`:`generate_report()` 完全切换为结构化入库;`_render_html/_upload` 标记废弃保留
|
||||
- `a_share_cli/main.py`:新增 `report-import` 子命令;`report` 命令改为入库提示
|
||||
- `pyproject.toml`:`uv add pymysql`(唯一新增依赖)
|
||||
- `.env`:新增 `NEWS_DB_*`(连接 127.0.0.1:13306,需 ssh 隧道)、`REPORT_HISTORY_DIR`
|
||||
- `docs/report_db_design.md`(实现逻辑)、`docs/db_schema.md`(表结构,供 API/前端)
|
||||
|
||||
**验证结果:**
|
||||
- 历史 178 份全部入库:scanned=178 imported=7(首轮)+170 skipped=171 failed=0;DB 177 行(finance 49 + intl 128,1 个跨目录同名文件被幂等合并)+ 事件 4222 条
|
||||
- 端到端:`a-share report --date 20260616` → report_id=180 入库成功,无 HTML 产出
|
||||
- 单测 24 个通过(parser 19 + builder 4 + models/import 补充)
|
||||
|
||||
**命令:**
|
||||
```bash
|
||||
ssh -L 13306:127.0.0.1:13306 pi # Mac 开发连库隧道
|
||||
uv run a-share report --date YYYYMMDD # 生成日报入库
|
||||
uv run a-share report-import # 历史导入(幂等)
|
||||
```
|
||||
|
||||
**注意:** 本机 .env 无 LLM API key,AI 摘要会降级 WARNING(不影响入库);生产 pi5 需配置 NEWS_DB_PASSWORD 且解决 13306 隧道可达性(见待确认项)。
|
||||
|
||||
---
|
||||
|
||||
## 历史 (2026-07-17) — 禁用个股日报
|
||||
|
||||
**操作:** `STOCK_REPORT_TIME=` 设为空,`run_scheduler.py` 加空值守卫。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user