网站 V2.1:三轴重构与迁移记录
交付范围
网站重建为五个独立页面:指挥台、质量池、价格线、月报、总纲。质量档、价格距离、人工验证分别维护;网站不执行交易。旧静态站完整保存在 site_legacy_v1/,旧构建器保存在 legacy/build_v1.py。生产入口仍为 /value/。
唯一公司事实源为 data/v21/companies.json。构建器不读取旧watchlist、评分簿或研究目录;迁移后的研究全文嵌入公司记录,渲染成新的本地全文页。build.py成为新构建器的兼容入口,monthly_rerun.py直接调用build_v21.py。
迁移映射与优先级
| 新字段 | 原始来源与规则 |
|---|---|
| code / market | 原代码字符串保留前导零;A六位/H五位。相同港股不重复计数;A/H不同证券分别标币种,不直接相加估值。 |
| name / industry | 本地stock_names;watchlist行业优先,其次ROE行业资料/漏斗行业/港股行业。未知显示“行业待核验”。 |
| quality_tier | quality_pools_V2显式档位优先;茅台gold、腾讯silver按本轮用户指定。新ROE深研4★映射silver,3★映射bronze,2★不进质量池。 |
| in_quality_pool | 显式质量池保留;与旧回避/看不清冲突另标quality_conflict,交人工复核。不把价格混合判断用于自动质量降级。无显式档位的回避/看不清保留档案、不进池。 |
| score / verdict | 三批ROE深研及复利四家深研优先,原评分簿/完整研究/观察清单随后。支持4★、★★★★☆、4/5三种写法,避免腾讯4★被读成1星。 |
| dupont | 按三批深研各自结构提取,百分数统一为0—1;合并简单平均ROE与归母桥接分开标注;缺失不以PB/PE替代。 |
| roe_series / roe_min | A股8月末TTM面板与港股FY归母平均权益面板分别保留,不声称同会计口径。 |
| channels | 最新L1文件逐代码交叉;HK代理候选用proxy_candidate独立标记,不冒充正式value通过。 |
| death_risk | 原risk_death / risks_and_premortem / risks;缺失明确待深研,不自动生成研究判断。 |
| price_lines.watch | 已有深研结构化条件价与总纲显式金额;茅台按用户指定1079 CNY,腾讯353 HKD。原研究1079.93/352.87保留全文,指定展示阈值差异可追溯。 |
| price_lines.good / fat | 只有已核验内在价值锚才按70%/50%定价。本轮未把模型情景或击球线认证为内在价值,因此保持空值。 |
| buy_conditions | 最新ROE/复利研究条件优先,再用watchlist;保留原句、verify、anchor、source,不从句子猜测事件是否满足。旧值完整保留在原文件,字段来源写入provenance。 |
| current | 同日未复权腾讯报价;A/H PE/股息率映射不同,分别解析;市值CNY/HKD分开。每项有日期及单源声明。 |
| distance_pct | (现价/击球线−1)×100%;≤0仅价格到线。无数值击球线、报价缺失、未来或超过7日时为空,不排成“0%机会”。 |
| research_file | 新本地research/代码.html;原全文及三批深研完整迁移。候补后续复核作为补充记录保留。 |
每家公司保存provenance;迁移输入文件SHA256保存在公司库metadata。旧原件不修改。迁移命令默认拒绝覆盖现有库,--replace只供明确重做迁移,不用于月度刷新。
计数核对:不为凑数覆盖研究
- 评分簿125条已包含00700/01308/02020三港股,并非125+3=128。
- 原全文135份,加独立复利四家全文,迁移同时保留旧观察与候选。
- 合并全部原件、质量池、HK代理候选及复利候选:207条唯一证券档案。
- 在池169家:金1、银17、铜26、候补54、待验71;38条历史回避/看不清档案不进池。
- 银17的形成:旧池14家(含腾讯),再加海天603288、法拉600563、豪迈002595三家新4★研究。未将任何一家擅自降级来凑16。
- 54候补中的旧文字冲突会在卡片显示。池内不等于获准买入;这些冲突必须由Hermes派发复核。
- 125为原评分簿已研计数,不把所有207条档案称为已深研;HK代理待验不自动授予质量标。
月度与维护
monthly_rerun.py正常模式仍执行漏斗,配置watchlist路径改读统一库;随后同步发现通道成员,检查全部质量池公司,更新统一库的行情/距离,生成正式月报和新站。--report-only只执行全池条件与价格检查、月报、构建,不改变漏斗基线。root cron不变。
行情原文、公司库、人工reviews和规则随月报留快照。同月重跑先归档上一稿。买入规则仍须原条件哈希匹配、有效日期、人工核验,不把数值价格触发直接升级为买入。
data/v21/trigger_history.json只追加实际观察到的价格到线记录,同日期/证券/价格线/价格去重;不会凭当前面板倒填过去触发历史。没有记录须显示“尚无已记录触发”,不承诺历史从未到线。
月度只更新行情和通道,质量档/评分/死法/价格模型由研究更新统一库。新发现仍走深研队列,不能由漏斗自动增加评级。
新站与旧链接
index.html:击球距离前10、月报摘要、体系计数。quality.html:五段质量卡片,质量/行业/A-H/来源组合筛选,距离/ROE/市场内市值排序,原地展开全文依据与验证。price.html:全池价格表、门外候补、实际触发记录。reports.html:最新月报全文、历史月报。doctrine.html:V2总纲、三轴、数据边界及全部被排除档案入口。- 真正HTTP 301:ledger/tier→quality,updates→reports,method/traps→doctrine;旧data.json→companies.v21.json(结构升级,不保证旧客户端兼容)。静态预览另有重定向兜底页。
桌面保留顶部页面导航,≤768px显示五个底部tab。没有远程字体、框架、统计脚本或外链依赖。Markdown正文正确渲染标题、列表和表格;原始外部来源仅显示文字。
复验命令
/tmp/ame-venv/bin/python -m unittest discover -s tests
node --test tests/*.test.cjs
/tmp/ame-venv/bin/python build_v21.py --output site
/tmp/ame-venv/bin/python scripts/check_site.py site
node scripts/v21_browser_check.cjs http://127.0.0.1:8105/
375px截图及浏览器检查覆盖五页、筛选组合、持久排序、展开、加载更多、研究全文、桌面切换及零外链。Lighthouse原始结果和最终部署验证见交付记录。
本轮验收记录
- 56项Python、7项JS回归通过;迁移覆盖125条、三港股去重、质量映射、1079/353、八年ROE、缺失/未来/陈旧报价、A/H行情字段、币种排序和触发去重。
- 169家在池报价均在有效日期范围内;其中18家有可比较的明确数值击球线,其他151家保留原PE/股息率/事件条件或待深研,不虚构每股价格。21条总档案数值线中3条属于未入池档案,不列机会榜。
- 当前没有已记录价格触发;人工买入核验169家均待复核,不自动声明可买入。
- 165个静态HTML、139份研究全文、2230处本地引用、零外链;166个线上状态检查(含旧data.json)全部符合预期:新页面200,旧入口301。
- 375×812手机及1440px桌面检查通过:五tab、当前页、组合筛选、排序记忆、重置、展开、加载更多、全文阅读;无横向溢出或JS错误。手机筛选默认折叠,减少表单挤占首屏。
- Lighthouse 12.8.2线上移动模式最终复测:index/reports/doctrine性能100、quality性能95、price性能94;五页无障碍、最佳实践、SEO均100。原始JSON在reports/validation/,截图在reports/screenshots/v21-*。
- 已发布
/var/www/value,nginx仅价值站路由/压缩配置变更;旧发布站与nginx配置备份在deploy/backups/v21-20261002T054012Z/。系统原有重复server_name等警告保持原状,配置测试与reload成功。cron未变。