docs: 文档治理2026-08-11——归档7份过时文档+57份研究过程文档,重写README,新增doc-audit核实报告

This commit is contained in:
xxm
2026-08-11 03:31:14 +08:00
parent d3990cc3b1
commit a5a0a46fe9
72 changed files with 267 additions and 18 deletions
+8 -3
View File
@@ -2367,11 +2367,16 @@ def read_mtf_cache(conn, code: str) -> dict:
def write_capital_flow_cache(conn, data: dict):
"""写入资金流缓存(替代 capital_flow_cache.json"""
"""写入资金流缓存(替代 capital_flow_cache.json
2026-08-11 修复: 原 DELETE 全表 + INSERT 在大库(mofin.db 6GB)上
持写锁过久,导致并发 cron (candidate_filter 等) database is locked。
改为固定 id=1 单行 upsert,锁持有时间从秒级降至毫秒级。
"""
import json
conn.execute("DELETE FROM capital_flow_cache")
conn.execute(
"INSERT INTO capital_flow_cache (cache_json, updated_at) VALUES (?,datetime('now','localtime'))",
"INSERT INTO capital_flow_cache (id, cache_json, updated_at) VALUES (1,?,datetime('now','localtime')) "
"ON CONFLICT(id) DO UPDATE SET cache_json=excluded.cache_json, updated_at=excluded.updated_at",
(json.dumps(data, ensure_ascii=False),)
)
+22 -15
View File
@@ -1,6 +1,7 @@
# MoFin 文档中心
> 文档驱动开发。每次代码变更必须同步更新对应文档。
> 最后更新:2026-08-11(文档治理:归档 7 份过时文档 + 57 份研究过程文档,见 doc-audit-20260811.md
---
@@ -10,10 +11,11 @@
| # | 文档 | 内容 | 时间 |
|---|------|------|------|
| 1 | **[SYSTEM_ARCHITECTURE.md](SYSTEM_ARCHITECTURE.md)** | 系统总览:架构图、数据流、模块职责 | 10 min |
| 2 | **[portfolio-data-model.md](portfolio-data-model.md)** | 核心数据模型:表结构、币种规则、常见错误 | 10 min |
| 3 | **[DEVELOPMENT_STANDARDS.md](DEVELOPMENT_STANDARDS.md)** | 开发规范:代码结构、DB 规范、Prompt 规范、开发流程 | 15 min |
| 4 | **[CHANGELOG.md](../CHANGELOG.md)** | 变更日志:所有改动的完整记录 | 5 min |
| 1 | [portfolio-data-model.md](portfolio-data-model.md) | 核心数据模型:表结构、币种规则、常见错误 | 10 min |
| 2 | [DEVELOPMENT_STANDARDS.md](DEVELOPMENT_STANDARDS.md) | 开发规范:代码结构、DB 规范、Prompt 规范、开发流程 | 15 min |
| 3 | [CHANGELOG.md](../CHANGELOG.md) | 变更日志:所有改动的完整记录 | 5 min |
> 系统架构总览已归档(archive/SYSTEM_ARCHITECTURE-root.md)——当前架构以数据模型 + 方法论文档为准。
### 🔧 日常开发
@@ -27,29 +29,33 @@
| 文档 | 内容 |
|------|------|
| [cron-catalog.md](cron-catalog.md) | Cron 任务清单(知微维护) |
| [decisions-db-migration.md](decisions-db-migration.md) | JSON→DB 迁移记录(✅ 已完成) |
| [cron-review-poversold-20260811.md](cron-review-poversold-20260811.md) | **Cron 梳理报告**(对照 p_oversold 部署,停8/保持30/调整8/新增2)|
| [cron-catalog.md](cron-catalog.md) | Cron 任务清单(⚠️ 6/27 版,过时待重建)|
| [QUICKSTART.md](QUICKSTART.md) | 快速操作手册 |
| [DASHBOARD.md](DASHBOARD.md) | Dashboard API 参考 |
| [HEALTH-PIPELINE.md](HEALTH-PIPELINE.md) | 健康监控管线 |
| [doc-audit-20260811.md](doc-audit-20260811.md) | **文档治理核实报告**15 份文档对照系统实际)|
### 📈 策略研究(2026-08 起,小小莫维护)
| 文档 | 内容 |
|------|------|
| [strategy_research_methodology.md](strategy_research_methodology.md) | **研究方法论**:由果及因/12维预测/铁律/支撑压力规范 |
| [predictive_oversold_strategy.md](predictive_oversold_strategy.md) | **预测超跌反弹策略**(年化14.75%达标|
| [research/README.md](research/README.md) | 研究总索引(过程文档+脚本+数据|
| [predictive_oversold_strategy.md](predictive_oversold_strategy.md) | **预测超跌反弹策略**(年化 18.57% 达标 v5|
| [deployment-plan-predictive-oversold.md](deployment-plan-predictive-oversold.md) | **部署计划**(策略整合 MoFin 全流程|
| [research/methodology.md](research/methodology.md) | 方法论总纲(含铁律0-5|
| [research/research-log.md](research/research-log.md) | 研究日志(08-08 ~ 08-10 完整历程)|
| [research/research-scripts.md](research/research-scripts.md) | 研究脚本清单 |
| [research/research-status.md](research/research-status.md) | 策略现状与待办 |
| [research/2026-08-06-low-drawdown-study.md](research/2026-08-06-low-drawdown-study.md) | 低回撤组合策略研究 |
| [research/2026-08-08-experience-lessons.md](research/2026-08-08-experience-lessons.md) | 研究经验教训 |
| [research/2026-08-0*.md](research/) | 研究过程文档(57份,08-06~08-09 各策略实验)|
> 研究脚本见 `scripts/research/`(含 README.md 索引)
> 研究过程文档(57 份单次实验记录)已归档至 `research/archive/`,结论已汇总进 methodology.md。
> 研究脚本见 `scripts/research/`(含 README.md 索引)。
### 📦 历史文档(archive/
旧的设计文档、需求文档、分析报告。仅供参考,不代表当前系统状态。
旧的设计文档、需求文档、分析报告、已废弃组件文档。仅供参考,不代表当前系统状态。
---
@@ -60,10 +66,11 @@
- 不直接删除旧文档,移到 `archive/` 保留
- 交叉引用使用相对路径 `[xxx](xxx.md)`
## 当前系统状态
## 当前系统状态2026-08-11 核实)
- **数据**:纯 SQLite`/home/hmo/web-dashboard/data/mofin.db`
- **数据**:纯 SQLite`/home/hmo/MoFin/data/mofin.db`47 表)。`web-dashboard` 是 MoFin 软链别名
- **币种**:港股存 HKD,A 股存 CNY,汇总时转换
- **JSON**已全部移除,无残留
- **JSON**decisions.json / watchlist.json 已移除;**portfolio.json 仍在用**update_data.py 写、stock_profile.py 读)
- **服务**`mofin-dashboard.service`:8899API+Dashboard 一体);无独立 mofin-api 服务
- **测试**`scripts/run_all_tests.py` — 33/33 通过
- **最新**`CHANGELOG.md` 查看完整变更
- **最新**`CHANGELOG.md` 查看完整变更
+184
View File
@@ -0,0 +1,184 @@
# MoFin Cron 梳理报告 —— 对照预测超跌反弹策略(p_oversold)部署
> 状态:📋 初稿(待老莫逐部分确认)
> 创建:2026-08-11 | 对照策略:预测超跌反弹 v5docs/predictive_oversold_strategy.md
> 依据:docs/deployment-plan-predictive-oversold.md(部署计划)+ 58 个启用 cron 实际功能核查
> 范围:/home/hmo/.hermes/profiles/position-analyst/cron/jobs.json 启用任务 58 个 + mohe 2 个(mohe 不涉及)
## 〇〇、方法论对齐(2026-08-11 补充:3+6+12 视角)
> 依据:docs/research/2026-08-06-low-drawdown-study.md §7(老莫纠正原话)+
> docs/research/methodology.md(总纲)+ docs/strategy_research_methodology.md(由果及因)
### 3+6+12 定义(权威)
**3/6/12 = 3次重评 + 6步推导 + 12维全评**
| 组成 | 内容 | 落地文档 |
|------|------|---------|
| **3次重评** | 选股初评 → 入场重评 → 出场重评 | low-drawdown-study §7 / v_mr_strategy §19 |
| **6步推导** | 研究流程:果→因→全市场筛→负面剔除→正负合并→稳健验证 | methodology §3.2 / learned.md L14 |
| **12维全评** | 大盘/行业/个股 × 消息/基本/技术/资金 | methodology §3 / strategy_research_methodology §2 |
### cron 评估的 3+6+12 视角(核心)
从策略组合角度,每个 cron 应支撑以下环节之一:
**3次重评(运行态决策)**
- 选股初评 → 主力建仓扫描 / p_oversold 扫描器 / 候选过滤 / 候选提拔
- 入场重评 → 盘前全量重评(regenerate_all/ 12维补全 / 自选自动清理
- 出场重评 → ⚠️ **缺口**low-drawdown-study L134:出场由 watchlist 12维 LLM 接管,非确定性规则,不可回测)→ 需补机械兜底+12维倾斜双层规则
**6步推导(研究态)**
- 数据采集(stock_daily/stock_weekly/fundamentals/capital_flow)→ 研究数据基础
- 策略评估 / 策略复盘 / 建议对账 → 验证闭环
**12维全评(数据基础)**
- 大盘维:市场数据采集(mkt_rsi/mkt_dd60)、宏观上下文、宏观新闻
- 行业维:行业富集-cninfo、市场数据采集(板块)
- 个股维:基本面刷新、资金流采集、多周期缓存、价格监控
- 消息维:宏观新闻采集、知微洞察
### 由此得出的 cron 评估原则
1. **支撑 3+6+12 任一环节的 cron = 保留**(数据管道是策略的生命线)
2. **与 3+6+12 无关的 cron = 候选停**(如纯运维/重复/停摆)
3. **3次重评有缺口的环节 = 需新增/调整**(尤其出场重评)
4. **6步推导第6步"稳健验证"依赖数据完整性** → 数据采集类 cron 绝不能停
## 〇、分析框架
新策略 p_oversold 的核心需求:
1. 扫描器写入 candidatessector=p_oversold)→ 需调度
2. 候选评估:p_oversold 有自己的选股条件,**不适配 accumulation 的 6阶段评分 + RR>=2 门槛**
3. 盘前重评(regenerate_all)需覆盖新策略候选
4. 健康监控/简报需体现新策略
基于此,58 个 cron 分四类:停 / 保持 / 调整 / 新增。
---
## 一、可以直接停止的(8 个)
依据:与新策略无关 + 功能冗余/过时 + 持续失败无价值
| # | cron | 调度 | 脚本 | 为什么停 |
|---|------|------|------|---------|
| 1 | 策略评估-每日 | 0 21 * * 1-5 | stale_detector.py | ❌ error 8/6 起(Connection error)。与策略评估-每周重复,每日版是早期半成品 |
| 2 | 市场精选推荐-每日 | 0 16 * * 1-5 | prompt型(无script) | ❌ 7/31 起停摆(部署计划 §11.2 明确)。与新策略无关——新策略有专属扫描器,不需要通用精选 |
| 3 | 跨市场背离检测-周末 | 30 8-16/2 * * 0,6 | divergence_detector.py | 与跨市场背离检测(*/30 8-15 工作日)完全同脚本,周末单独重复 |
| 4 | 宏观风险扫描-午间 | 30 11 * * 1-5 | prompt型 | 与宏观风险扫描(8:30)重复度 80%,午间版冗余 |
| 5 | 宏观风险扫描-周末 | 0 10 * * 0,6 | prompt型 | 与宏观风险扫描(8:30)同脚本,周末重复 |
| 6 | 行业富集-cninfo-午间 | 45 12 * * 1-5 | sector_enrich_cninfo.py | 与行业富集-早间(7:50)同脚本。早间已覆盖全部 active 策略,cninfo 一天一次就够 |
| 7 | 基本面刷新-午间 | 47 12 * * 1-5 | fundamentals_refresh.py | 同脚本早晚各一次。基本面(PE/PB)一天变一次,午间版冗余 |
| 8 | 自选12维分析补全-每日午间 | 30 12 * * 1-5 | watchlist_12d_backfill.py | ⚠️ 待定:调度注释说"约80分钟",与午间其他任务重叠;若 p_oversold 有自己的评估,此任务价值下降 |
> ⚠️ 注:#8 自选12维补全是否停,需确认它与 p_oversold 专属评估是否冲突——若 p_oversold 走独立评估,此通用 12 维补全可降频或停。
---
## 二、必须保持不动(30 个)
依据:系统核心运转依赖,与新策略无冲突。
### 2.1 候选管道核心(5 个)——p_oversold 依赖它们
| cron | 调度 | 保持理由 |
|------|------|---------|
| 主力建仓扫描-每15分 | */10 9-15 | accumulation 扫描器——保留,新策略加独立扫描器不冲突 |
| 候选股过滤管道-每30分 | */30 9-15 | 保留(但见第三类"调整":RR/评分适配问题)|
| 候选股自动提拔-每30分 | */30 9-15 | 保留(但见第三类"调整"|
| 盘前全量重评-自选退出 | 10 8 * * 1-5 | 保留(2026-08-11 已修缓存预热 7:50)——p_oversold 候选进 holding_strategies 后自动被重评 |
| 自选自动清理-开盘前 | 5 9 * * 1-5 | 保留——管道收尾 |
### 2.2 数据基础(5 个)
| cron | 调度 | 保持理由 |
|------|------|---------|
| 价格监控-高频 | */2 9-16 | 实时价格唯一入口,p_oversold 也需要 |
| 市场数据采集 | */10 9-11,13-15 | 大盘/板块数据,p_oversold 门控依赖(mkt_rsi/mkt_dd60|
| 资金流采集-盘中 | 1,31 9-15 | 2026-08-11 已修(DELETE全表→单行upsert),p_oversold 可用资金流验证 |
| 多周期缓存刷新-盘中 | 50 7,11,14 | 2026-08-11 已修(补flush + 提前7:50)——**p_oversold 重评依赖它的缓存** |
| 数据采集-策略评估前 | 30 20 * * 1-5 | 策略评估数据源 |
### 2.3 LLM 分析/报告(5 个)
| cron | 调度 | 保持理由 |
|------|------|---------|
| 策略复盘-每日 | 0 20 * * 1-5 | 每日策略复盘,含新策略后自动覆盖 |
| 分析师-持仓复查 | 0 20 * * 4 | 周四持仓复查 |
| 开盘简报 | 35 9 * * 1-5 | 每日简报(部署计划 §五要求简报提及新策略)|
| 收盘简报 | 10 16 * * 1-5 | 每日简报 |
| 知微洞察生成 | 35 15 * * 1-5 | 知微日报(部署计划 §五要求交接)|
### 2.4 宏观/风险(4 个)
| cron | 调度 | 保持理由 |
|------|------|---------|
| 宏观新闻采集 | */30 8-16 | 数据源 |
| 宏观风险信号消费 | 5,20,35,50 9-15 | 消费信号 |
| 宏观上下文刷新-每30分 | */30 9-15 | p_oversold 门控用 macro_bias |
| 跨市场背离检测(工作日)| */30 8-15 | 保留(停周末版)|
### 2.5 系统维护/自愈(11 个)——绝不能停
| cron | 调度 | 保持理由 |
|------|------|---------|
| Gateway看门狗-知微 | every 10m | 系统自愈 |
| 部署一致性守卫 | */15 | 防代码漂移 |
| 元监控-自检系统的自检-L4 | 5 * * * * | 防螺旋 |
| agent螺旋监控 | */10 | 防螺旋(2026-07-21 事件后补)|
| 自愈执行器-TODO自动处理-v2 | */10 8-22 | 自动修复 |
| LLM修复循环-L3 | */30 9-16,20-22 | 自动修复 |
| 功能健康检查-L1 | */15 9-16,20-22 | 监控 |
| 健康监控数据采集-每15分 | */15 9-16,20-22 | 监控(但见第三类调整:注册 p_oversold 项)|
| 系统卫生审计-每日 | 20 8 * * * | 维护 |
| 系统全局审计 | 30 17 * * 1-5 | 维护 |
| DB每日备份-0750 | 50 7 * * * | 数据安全 |
| state.db真空整理-每周 | 0 3 * * 6 | 维护 |
| cron报告推XMPP-每5分 | */5 9-16 | 报告分发 |
| 记忆守卫-每日 | 0 7 * * * | 记忆管理 |
> 注:2.5 实际 14 个(标题写 11,含全),保持不动。
---
## 三、需要调整的(8 个)
| # | cron | 当前问题 | 调整方案 |
|---|------|---------|---------|
| 1 | 候选股过滤管道 | 6阶段评分为 accumulation 设计(量价放大/中低位),p_oversold 候选(深跌+低估值)评分不适配 | **方案A(推荐)**p_oversold 候选写 candidates 时直接标记高分+pass_final=1,绕过 candidate_filter;或让 candidate_filter 按 sector 分流 |
| 2 | 候选股自动提拔 | **RR>=2.0 硬门槛**promote_candidates.py:130)——超跌候选 RR 天然 <2(部署计划 §8.2 实测 40+/57 被拒)| 加 sector 判断:p_oversold 候选跳过 RR>=2 门槛(用专属评估替代)|
| 3 | 主力建仓扫描 | 只扫 accumulation | 保持——新增 p_oversold 独立扫描器 |
| 4 | 健康监控数据采集 | 无 p_oversold 项 | 注册 p_oversold 健康检查项(部署计划 §五)|
| 5 | 开盘简报 | 模板无新策略 | 模板提及新策略 |
| 6 | 知微洞察生成 | 未交接新策略 | 简报模板 + 策略文档 |
| 7 | 开盘前钉对钉 | ✅ 2026-08-11 已修(registry 路径,18/18 通过)| 保持,未来加 p_oversold 检查项 |
| 8 | MoFin 系统常规体检-开盘前 | 清单自动扩展 | 加 p_oversold 健康项 |
---
## 四、需要新增的(2 个)
| 新 cron | 说明 |
|---------|------|
| predictive_oversold_scanner | p_oversold 扫描器(腾讯行情源 + 大盘门控 + 写 candidates sector=p_oversold + 当日幂等 + 单例守卫 + 600s 护栏)。**调度方式待老莫定**:独立 cron vs market_watch 链式 |
| p_oversold 专属评估 | 按选股逻辑评估(不复用 accumulation 的 RR>=2)——可并入 scanner 或独立 |
---
## 五、汇总
| 类别 | 数量 | 说明 |
|------|------|------|
| 🛑 停 | 8 | 策略评估-每日、市场精选、跨市场背离-周末、宏观风险×2(午间/周末)、行业富集-午间、基本面-午间、自选12维补全(待定) |
| ✅ 保持 | 30 | 系统核心 + 数据基础 + 监控自愈 |
| 🔧 调整 | 8 | 候选管道×3(RR/评分适配)、健康监控/简报/体检×5(注册新策略)|
| 新增 | 2 | p_oversold 扫描器 + 专属评估 |
| ⚠️ 观察 | 3 | 策略评估-每日(停)、LLM修复循环、候选股过滤(已修,观察恢复)|
---
## 六、待老莫拍板
1. **停 8 个确认吗?**(尤其"市场精选推荐"——7/31 停摆,是否彻底废弃?)
2. **候选管道适配**:方案Ap_oversold 绕过 filter 直接标记高分)还是方案B(改管道门槛)?
3. **p_oversold 扫描器调度**:独立 cron 还是 market_watch 链式?
+53
View File
@@ -0,0 +1,53 @@
# MoFin 文档治理核实报告(对照系统实际)
> 状态:✅ 已核实(2026-08-11,实测 246 服务器)
> 范围:15 份"系统实现相关"文档 vs MoFin 实际状态(DB 47表 / crontab / systemd / 进程 / API
> 方法:数据库 sqlite_master 实查、crontab 实查、systemd 实查、端口/进程实查、API 实测、脚本文件存在性核查
## 一、核实总表
| # | 文档 | 结论 | 一句话 |
|---|------|------|--------|
| 1 | 根目录 SYSTEM_ARCHITECTURE.md | 过时 | 表/模块/DB路径仍准,但 4 个 cron 已停、regenerate_all 已改名、"JSON 全移除"错误 |
| 2 | docs/SYSTEM_ARCHITECTURE.md | 过时+放错目录 | 讲的是 Hermes/XMPP 系统,非 MoFin;端口/PID/bot路径全对不上 |
| 3 | docs/portfolio-data-model.md | 基本一致 | 9 张表全存在、公式/币种正确;唯一错:portfolio.json 仍在用 |
| 4 | docs/decisions-db-migration.md | 过时(历史文档) | 完成声明属实,但正文 strategies 表从未建成(实际 holding_strategies|
| 5 | docs/QUICKSTART.md | 大体有效(2处硬错) | mofin-api 服务不存在、dashboard.log 路径不存在 |
| 6 | docs/DASHBOARD.md | 基本一致 | 全部端点 200、monitor 状态逐字吻合;示例服务数 5 vs 实际 4 |
| 7 | docs/HEALTH-PIPELINE.md | 基本一致 | Tier1 精确到源码;仅 Tier2 "规划中"过时(已部署)|
| 8 | docs/xiaoguo-signal-pipeline.md | 已废弃 | 小果 7/9 停跑、7/20 归档,无 cron |
| 9 | docs/xiaoguo-scanner-design.md | 已废弃 | 同上 |
| 10 | docs/market-screening-pipeline.md | 过时 | 描述的 17 信号管道已停摆,被 accumulation→candidate 取代 |
| 11 | docs/lifecycle-management.md | 部分过时 | 框架有效、已落地;JSON 中心说法过时、xiaoguo 缺口失效 |
| 12 | docs/morning-health-check.md | 机制有效、细节过期 | 8:00 运行 ✓;但 48 项→40 项、存储改 DB 表 |
| 13 | docs/strategy-review-loop.md | 基本一致(已实施) | 闭环全落地,accuracy_stats 已闭环 |
| 14 | docs/SELF_GROWTH_SYSTEM.md | 部分过时 | 三件套都在跑;cron 表/xiaoguo 章节过期 |
| 15 | docs/TDX_RELAY_COLLAB.md | 已废弃 | TDX relay 7/20 归档,集成逻辑已移除 |
## 二、处置建议
| 处置 | 文档 |
|------|------|
| 归档(7份) | 根 SYSTEM_ARCHITECTURE、docs/SYSTEM_ARCHITECTURE、decisions-db-migration、xiaoguo×2、TDX_RELAY_COLLAB、market-screening-pipeline |
| 保留+更新(6份) | portfolio-data-model、QUICKSTART、DASHBOARD、HEALTH-PIPELINE、morning-health-check、lifecycle-management、SELF_GROWTH_SYSTEM |
| 保留(1份) | strategy-review-loop(标注已实施)|
## 三、关键横切发现
1. **数据库唯一**data/mofin.db6.4GB47表);根目录 market.db/market_data.db/stock_analysis.db/state.db 全是 0 字节占位
2. **web-dashboard 是软链** → MoFin(6-20 创建),非两套部署
3. **JSON 真实现状**decisions.json/watchlist.json 已删;**portfolio.json 仍活着**update_data.py 写、stock_profile.py 读)
4. **调度真实现状**crontab 39 条;market_screener/system_audit/stale_push_wlin/strategy_review 均未在系统 cron(在 hermes jobs.json
5. **服务真实现状**:只有 mofin-dashboard.service= server.py :8899API+Dashboard 一体);无 mofin-api.service
6. **已暂停 5 个 job2026-08-10 22:43-44**:全部合理,无需恢复
- 系统健康检查:被 morning_health_check8:00 更全面)替代
- 小果市场筛选:小果已废弃
- 300308 盯盘×2:临时任务结束
- 自选买入区提醒(per_stock_reassess):由 watchlist_12d_backfill 承接
## 四、待清理项(独立治理 TODO)
- [ ] 小果残留文件:MoFin 顶层 3 个(xiaoguo_scanner.py / xiaoguo_news_processor.py / inject_xiaoguo_insight.py+ 运行时目录 4 个
- [ ] server.py /api/update/realtime 死端点(TDX 归档后残留)
- [ ] mofin_db.py / mofin_health.py / system_audit.py 中 xiaoguo 字符串(无害遗留,system_audit 统计恒为 0
- [ ] candidate_filter / refresh_mtf_cache 近期 database is locked2026-08-11 已修资金流长锁,观察)