diff --git a/deploy/profile-scripts/mofin_db.py b/deploy/profile-scripts/mofin_db.py index c31f664a..8498e8d2 100644 --- a/deploy/profile-scripts/mofin_db.py +++ b/deploy/profile-scripts/mofin_db.py @@ -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),) ) diff --git a/docs/README.md b/docs/README.md index e15e5d21..2476b128 100644 --- a/docs/README.md +++ b/docs/README.md @@ -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`(:8899,API+Dashboard 一体);无独立 mofin-api 服务 - **测试**:`scripts/run_all_tests.py` — 33/33 通过 -- **最新**:`CHANGELOG.md` 查看完整变更 +- **最新**:`CHANGELOG.md` 查看完整变更 \ No newline at end of file diff --git a/SYSTEM_ARCHITECTURE.md b/docs/archive/SYSTEM_ARCHITECTURE-root.md similarity index 100% rename from SYSTEM_ARCHITECTURE.md rename to docs/archive/SYSTEM_ARCHITECTURE-root.md diff --git a/docs/SYSTEM_ARCHITECTURE.md b/docs/archive/SYSTEM_ARCHITECTURE.md similarity index 100% rename from docs/SYSTEM_ARCHITECTURE.md rename to docs/archive/SYSTEM_ARCHITECTURE.md diff --git a/docs/TDX_RELAY_COLLAB.md b/docs/archive/TDX_RELAY_COLLAB.md similarity index 100% rename from docs/TDX_RELAY_COLLAB.md rename to docs/archive/TDX_RELAY_COLLAB.md diff --git a/data/analyst-knowledge-log.md b/docs/archive/analyst-knowledge-log-data.md similarity index 100% rename from data/analyst-knowledge-log.md rename to docs/archive/analyst-knowledge-log-data.md diff --git a/docs/analyst-knowledge-log.md b/docs/archive/analyst-knowledge-log-docs.md similarity index 100% rename from docs/analyst-knowledge-log.md rename to docs/archive/analyst-knowledge-log-docs.md diff --git a/docs/decisions-db-migration.md b/docs/archive/decisions-db-migration.md similarity index 100% rename from docs/decisions-db-migration.md rename to docs/archive/decisions-db-migration.md diff --git a/docs/market-screening-pipeline.md b/docs/archive/market-screening-pipeline.md similarity index 100% rename from docs/market-screening-pipeline.md rename to docs/archive/market-screening-pipeline.md diff --git a/docs/xiaoguo-scanner-design.md b/docs/archive/xiaoguo-scanner-design.md similarity index 100% rename from docs/xiaoguo-scanner-design.md rename to docs/archive/xiaoguo-scanner-design.md diff --git a/docs/xiaoguo-signal-pipeline.md b/docs/archive/xiaoguo-signal-pipeline.md similarity index 100% rename from docs/xiaoguo-signal-pipeline.md rename to docs/archive/xiaoguo-signal-pipeline.md diff --git a/docs/zhiwei-briefing-20260720.md b/docs/archive/zhiwei-briefing-20260720.md similarity index 100% rename from docs/zhiwei-briefing-20260720.md rename to docs/archive/zhiwei-briefing-20260720.md diff --git a/docs/zhiwei-reply-cron-errors-20260720.md b/docs/archive/zhiwei-reply-cron-errors-20260720.md similarity index 100% rename from docs/zhiwei-reply-cron-errors-20260720.md rename to docs/archive/zhiwei-reply-cron-errors-20260720.md diff --git a/docs/cron-review-poversold-20260811.md b/docs/cron-review-poversold-20260811.md new file mode 100644 index 00000000..6dcfad71 --- /dev/null +++ b/docs/cron-review-poversold-20260811.md @@ -0,0 +1,184 @@ +# MoFin Cron 梳理报告 —— 对照预测超跌反弹策略(p_oversold)部署 + +> 状态:📋 初稿(待老莫逐部分确认) +> 创建:2026-08-11 | 对照策略:预测超跌反弹 v5(docs/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. 扫描器写入 candidates(sector=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. **候选管道适配**:方案A(p_oversold 绕过 filter 直接标记高分)还是方案B(改管道门槛)? +3. **p_oversold 扫描器调度**:独立 cron 还是 market_watch 链式? \ No newline at end of file diff --git a/docs/doc-audit-20260811.md b/docs/doc-audit-20260811.md new file mode 100644 index 00000000..22247b3d --- /dev/null +++ b/docs/doc-audit-20260811.md @@ -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.db(6.4GB,47表);根目录 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 :8899,API+Dashboard 一体);无 mofin-api.service +6. **已暂停 5 个 job(2026-08-10 22:43-44)**:全部合理,无需恢复 + - 系统健康检查:被 morning_health_check(8: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 locked(2026-08-11 已修资金流长锁,观察) \ No newline at end of file diff --git a/docs/research/2026-08-08-mofin_breakout_confirm.md b/docs/research/archive/2026-08-08-mofin_breakout_confirm.md similarity index 100% rename from docs/research/2026-08-08-mofin_breakout_confirm.md rename to docs/research/archive/2026-08-08-mofin_breakout_confirm.md diff --git a/docs/research/2026-08-08-mofin_breakout_full.md b/docs/research/archive/2026-08-08-mofin_breakout_full.md similarity index 100% rename from docs/research/2026-08-08-mofin_breakout_full.md rename to docs/research/archive/2026-08-08-mofin_breakout_full.md diff --git a/docs/research/2026-08-08-mofin_bsp_inverse.md b/docs/research/archive/2026-08-08-mofin_bsp_inverse.md similarity index 100% rename from docs/research/2026-08-08-mofin_bsp_inverse.md rename to docs/research/archive/2026-08-08-mofin_bsp_inverse.md diff --git a/docs/research/2026-08-08-mofin_bull_features.md b/docs/research/archive/2026-08-08-mofin_bull_features.md similarity index 100% rename from docs/research/2026-08-08-mofin_bull_features.md rename to docs/research/archive/2026-08-08-mofin_bull_features.md diff --git a/docs/research/2026-08-08-mofin_bull_panel.md b/docs/research/archive/2026-08-08-mofin_bull_panel.md similarity index 100% rename from docs/research/2026-08-08-mofin_bull_panel.md rename to docs/research/archive/2026-08-08-mofin_bull_panel.md diff --git a/docs/research/2026-08-08-mofin_bull_pullback.md b/docs/research/archive/2026-08-08-mofin_bull_pullback.md similarity index 100% rename from docs/research/2026-08-08-mofin_bull_pullback.md rename to docs/research/archive/2026-08-08-mofin_bull_pullback.md diff --git a/docs/research/2026-08-08-mofin_bull_v1.md b/docs/research/archive/2026-08-08-mofin_bull_v1.md similarity index 100% rename from docs/research/2026-08-08-mofin_bull_v1.md rename to docs/research/archive/2026-08-08-mofin_bull_v1.md diff --git a/docs/research/2026-08-08-mofin_bull_v2.md b/docs/research/archive/2026-08-08-mofin_bull_v2.md similarity index 100% rename from docs/research/2026-08-08-mofin_bull_v2.md rename to docs/research/archive/2026-08-08-mofin_bull_v2.md diff --git a/docs/research/2026-08-08-mofin_buy_period_v2.md b/docs/research/archive/2026-08-08-mofin_buy_period_v2.md similarity index 100% rename from docs/research/2026-08-08-mofin_buy_period_v2.md rename to docs/research/archive/2026-08-08-mofin_buy_period_v2.md diff --git a/docs/research/2026-08-08-mofin_capital_oversold.md b/docs/research/archive/2026-08-08-mofin_capital_oversold.md similarity index 100% rename from docs/research/2026-08-08-mofin_capital_oversold.md rename to docs/research/archive/2026-08-08-mofin_capital_oversold.md diff --git a/docs/research/2026-08-08-mofin_capital_oversold_v2.md b/docs/research/archive/2026-08-08-mofin_capital_oversold_v2.md similarity index 100% rename from docs/research/2026-08-08-mofin_capital_oversold_v2.md rename to docs/research/archive/2026-08-08-mofin_capital_oversold_v2.md diff --git a/docs/research/2026-08-08-mofin_capital_v3_cycle.md b/docs/research/archive/2026-08-08-mofin_capital_v3_cycle.md similarity index 100% rename from docs/research/2026-08-08-mofin_capital_v3_cycle.md rename to docs/research/archive/2026-08-08-mofin_capital_v3_cycle.md diff --git a/docs/research/2026-08-08-mofin_capital_v5.md b/docs/research/archive/2026-08-08-mofin_capital_v5.md similarity index 100% rename from docs/research/2026-08-08-mofin_capital_v5.md rename to docs/research/archive/2026-08-08-mofin_capital_v5.md diff --git a/docs/research/2026-08-08-mofin_capital_v6b.md b/docs/research/archive/2026-08-08-mofin_capital_v6b.md similarity index 100% rename from docs/research/2026-08-08-mofin_capital_v6b.md rename to docs/research/archive/2026-08-08-mofin_capital_v6b.md diff --git a/docs/research/2026-08-08-mofin_cycle_v3.md b/docs/research/archive/2026-08-08-mofin_cycle_v3.md similarity index 100% rename from docs/research/2026-08-08-mofin_cycle_v3.md rename to docs/research/archive/2026-08-08-mofin_cycle_v3.md diff --git a/docs/research/2026-08-08-mofin_final_combo.md b/docs/research/archive/2026-08-08-mofin_final_combo.md similarity index 100% rename from docs/research/2026-08-08-mofin_final_combo.md rename to docs/research/archive/2026-08-08-mofin_final_combo.md diff --git a/docs/research/2026-08-08-mofin_leader_stock.md b/docs/research/archive/2026-08-08-mofin_leader_stock.md similarity index 100% rename from docs/research/2026-08-08-mofin_leader_stock.md rename to docs/research/archive/2026-08-08-mofin_leader_stock.md diff --git a/docs/research/2026-08-08-mofin_main_sector.md b/docs/research/archive/2026-08-08-mofin_main_sector.md similarity index 100% rename from docs/research/2026-08-08-mofin_main_sector.md rename to docs/research/archive/2026-08-08-mofin_main_sector.md diff --git a/docs/research/2026-08-08-mofin_market_interaction.md b/docs/research/archive/2026-08-08-mofin_market_interaction.md similarity index 100% rename from docs/research/2026-08-08-mofin_market_interaction.md rename to docs/research/archive/2026-08-08-mofin_market_interaction.md diff --git a/docs/research/2026-08-08-mofin_market_structure.md b/docs/research/archive/2026-08-08-mofin_market_structure.md similarity index 100% rename from docs/research/2026-08-08-mofin_market_structure.md rename to docs/research/archive/2026-08-08-mofin_market_structure.md diff --git a/docs/research/2026-08-08-mofin_oversold_bounce.md b/docs/research/archive/2026-08-08-mofin_oversold_bounce.md similarity index 100% rename from docs/research/2026-08-08-mofin_oversold_bounce.md rename to docs/research/archive/2026-08-08-mofin_oversold_bounce.md diff --git a/docs/research/2026-08-08-mofin_oversold_filter.md b/docs/research/archive/2026-08-08-mofin_oversold_filter.md similarity index 100% rename from docs/research/2026-08-08-mofin_oversold_filter.md rename to docs/research/archive/2026-08-08-mofin_oversold_filter.md diff --git a/docs/research/2026-08-08-mofin_oversold_period.md b/docs/research/archive/2026-08-08-mofin_oversold_period.md similarity index 100% rename from docs/research/2026-08-08-mofin_oversold_period.md rename to docs/research/archive/2026-08-08-mofin_oversold_period.md diff --git a/docs/research/2026-08-08-mofin_pattern_v2.md b/docs/research/archive/2026-08-08-mofin_pattern_v2.md similarity index 100% rename from docs/research/2026-08-08-mofin_pattern_v2.md rename to docs/research/archive/2026-08-08-mofin_pattern_v2.md diff --git a/docs/research/2026-08-08-mofin_recent_eco.md b/docs/research/archive/2026-08-08-mofin_recent_eco.md similarity index 100% rename from docs/research/2026-08-08-mofin_recent_eco.md rename to docs/research/archive/2026-08-08-mofin_recent_eco.md diff --git a/docs/research/2026-08-08-mofin_rs5_real.md b/docs/research/archive/2026-08-08-mofin_rs5_real.md similarity index 100% rename from docs/research/2026-08-08-mofin_rs5_real.md rename to docs/research/archive/2026-08-08-mofin_rs5_real.md diff --git a/docs/research/2026-08-08-mofin_rs_confirm.md b/docs/research/archive/2026-08-08-mofin_rs_confirm.md similarity index 100% rename from docs/research/2026-08-08-mofin_rs_confirm.md rename to docs/research/archive/2026-08-08-mofin_rs_confirm.md diff --git a/docs/research/2026-08-08-mofin_sector_strategy.md b/docs/research/archive/2026-08-08-mofin_sector_strategy.md similarity index 100% rename from docs/research/2026-08-08-mofin_sector_strategy.md rename to docs/research/archive/2026-08-08-mofin_sector_strategy.md diff --git a/docs/research/2026-08-08-mofin_sell_inverse.md b/docs/research/archive/2026-08-08-mofin_sell_inverse.md similarity index 100% rename from docs/research/2026-08-08-mofin_sell_inverse.md rename to docs/research/archive/2026-08-08-mofin_sell_inverse.md diff --git a/docs/research/2026-08-08-mofin_shallow_launch.md b/docs/research/archive/2026-08-08-mofin_shallow_launch.md similarity index 100% rename from docs/research/2026-08-08-mofin_shallow_launch.md rename to docs/research/archive/2026-08-08-mofin_shallow_launch.md diff --git a/docs/research/2026-08-08-mofin_stop_diag.md b/docs/research/archive/2026-08-08-mofin_stop_diag.md similarity index 100% rename from docs/research/2026-08-08-mofin_stop_diag.md rename to docs/research/archive/2026-08-08-mofin_stop_diag.md diff --git a/docs/research/2026-08-08-mofin_swing_bull.md b/docs/research/archive/2026-08-08-mofin_swing_bull.md similarity index 100% rename from docs/research/2026-08-08-mofin_swing_bull.md rename to docs/research/archive/2026-08-08-mofin_swing_bull.md diff --git a/docs/research/2026-08-08-mofin_v4_enhance.md b/docs/research/archive/2026-08-08-mofin_v4_enhance.md similarity index 100% rename from docs/research/2026-08-08-mofin_v4_enhance.md rename to docs/research/archive/2026-08-08-mofin_v4_enhance.md diff --git a/docs/research/2026-08-09-MoFin仓位管理规则.md b/docs/research/archive/2026-08-09-MoFin仓位管理规则.md similarity index 100% rename from docs/research/2026-08-09-MoFin仓位管理规则.md rename to docs/research/archive/2026-08-09-MoFin仓位管理规则.md diff --git a/docs/research/2026-08-09-mofin_batch_v2.md b/docs/research/archive/2026-08-09-mofin_batch_v2.md similarity index 100% rename from docs/research/2026-08-09-mofin_batch_v2.md rename to docs/research/archive/2026-08-09-mofin_batch_v2.md diff --git a/docs/research/2026-08-09-mofin_batch_v3.md b/docs/research/archive/2026-08-09-mofin_batch_v3.md similarity index 100% rename from docs/research/2026-08-09-mofin_batch_v3.md rename to docs/research/archive/2026-08-09-mofin_batch_v3.md diff --git a/docs/research/2026-08-09-mofin_batch_v4.md b/docs/research/archive/2026-08-09-mofin_batch_v4.md similarity index 100% rename from docs/research/2026-08-09-mofin_batch_v4.md rename to docs/research/archive/2026-08-09-mofin_batch_v4.md diff --git a/docs/research/2026-08-09-mofin_batch_v5.md b/docs/research/archive/2026-08-09-mofin_batch_v5.md similarity index 100% rename from docs/research/2026-08-09-mofin_batch_v5.md rename to docs/research/archive/2026-08-09-mofin_batch_v5.md diff --git a/docs/research/2026-08-09-mofin_combined_sim.md b/docs/research/archive/2026-08-09-mofin_combined_sim.md similarity index 100% rename from docs/research/2026-08-09-mofin_combined_sim.md rename to docs/research/archive/2026-08-09-mofin_combined_sim.md diff --git a/docs/research/2026-08-09-mofin_combined_sim_v2.md b/docs/research/archive/2026-08-09-mofin_combined_sim_v2.md similarity index 100% rename from docs/research/2026-08-09-mofin_combined_sim_v2.md rename to docs/research/archive/2026-08-09-mofin_combined_sim_v2.md diff --git a/docs/research/2026-08-09-mofin_fair_compare.md b/docs/research/archive/2026-08-09-mofin_fair_compare.md similarity index 100% rename from docs/research/2026-08-09-mofin_fair_compare.md rename to docs/research/archive/2026-08-09-mofin_fair_compare.md diff --git a/docs/research/2026-08-09-mofin_final_combo2.md b/docs/research/archive/2026-08-09-mofin_final_combo2.md similarity index 100% rename from docs/research/2026-08-09-mofin_final_combo2.md rename to docs/research/archive/2026-08-09-mofin_final_combo2.md diff --git a/docs/research/2026-08-09-mofin_leader_oversold.md b/docs/research/archive/2026-08-09-mofin_leader_oversold.md similarity index 100% rename from docs/research/2026-08-09-mofin_leader_oversold.md rename to docs/research/archive/2026-08-09-mofin_leader_oversold.md diff --git a/docs/research/2026-08-09-mofin_leader_sim.md b/docs/research/archive/2026-08-09-mofin_leader_sim.md similarity index 100% rename from docs/research/2026-08-09-mofin_leader_sim.md rename to docs/research/archive/2026-08-09-mofin_leader_sim.md diff --git a/docs/research/2026-08-09-mofin_narr_leader.md b/docs/research/archive/2026-08-09-mofin_narr_leader.md similarity index 100% rename from docs/research/2026-08-09-mofin_narr_leader.md rename to docs/research/archive/2026-08-09-mofin_narr_leader.md diff --git a/docs/research/2026-08-09-mofin_narr_opt.md b/docs/research/archive/2026-08-09-mofin_narr_opt.md similarity index 100% rename from docs/research/2026-08-09-mofin_narr_opt.md rename to docs/research/archive/2026-08-09-mofin_narr_opt.md diff --git a/docs/research/2026-08-09-mofin_narr_sim.md b/docs/research/archive/2026-08-09-mofin_narr_sim.md similarity index 100% rename from docs/research/2026-08-09-mofin_narr_sim.md rename to docs/research/archive/2026-08-09-mofin_narr_sim.md diff --git a/docs/research/2026-08-09-mofin_narrative.md b/docs/research/archive/2026-08-09-mofin_narrative.md similarity index 100% rename from docs/research/2026-08-09-mofin_narrative.md rename to docs/research/archive/2026-08-09-mofin_narrative.md diff --git a/docs/research/2026-08-09-mofin_sci_sr.md b/docs/research/archive/2026-08-09-mofin_sci_sr.md similarity index 100% rename from docs/research/2026-08-09-mofin_sci_sr.md rename to docs/research/archive/2026-08-09-mofin_sci_sr.md diff --git a/docs/research/2026-08-09-mofin_sel_diag.md b/docs/research/archive/2026-08-09-mofin_sel_diag.md similarity index 100% rename from docs/research/2026-08-09-mofin_sel_diag.md rename to docs/research/archive/2026-08-09-mofin_sel_diag.md diff --git a/docs/research/2026-08-09-mofin_select_factors.md b/docs/research/archive/2026-08-09-mofin_select_factors.md similarity index 100% rename from docs/research/2026-08-09-mofin_select_factors.md rename to docs/research/archive/2026-08-09-mofin_select_factors.md diff --git a/docs/research/2026-08-09-mofin_select_strategy.md b/docs/research/archive/2026-08-09-mofin_select_strategy.md similarity index 100% rename from docs/research/2026-08-09-mofin_select_strategy.md rename to docs/research/archive/2026-08-09-mofin_select_strategy.md diff --git a/docs/research/2026-08-09-mofin_short_win.md b/docs/research/archive/2026-08-09-mofin_short_win.md similarity index 100% rename from docs/research/2026-08-09-mofin_short_win.md rename to docs/research/archive/2026-08-09-mofin_short_win.md diff --git a/docs/research/2026-08-09-mofin_sr_exit.md b/docs/research/archive/2026-08-09-mofin_sr_exit.md similarity index 100% rename from docs/research/2026-08-09-mofin_sr_exit.md rename to docs/research/archive/2026-08-09-mofin_sr_exit.md diff --git a/docs/research/2026-08-09-mofin_timing_check.md b/docs/research/archive/2026-08-09-mofin_timing_check.md similarity index 100% rename from docs/research/2026-08-09-mofin_timing_check.md rename to docs/research/archive/2026-08-09-mofin_timing_check.md diff --git a/docs/research/2026-08-09-mofin_trade_count.md b/docs/research/archive/2026-08-09-mofin_trade_count.md similarity index 100% rename from docs/research/2026-08-09-mofin_trade_count.md rename to docs/research/archive/2026-08-09-mofin_trade_count.md diff --git a/docs/research/2026-08-09-mofin_window_sens.md b/docs/research/archive/2026-08-09-mofin_window_sens.md similarity index 100% rename from docs/research/2026-08-09-mofin_window_sens.md rename to docs/research/archive/2026-08-09-mofin_window_sens.md