中心页预警泛化与年度小结生成法
适用场景
对 HFMS 七域通用中心页(templates._center_body(dom))做两类增强时套用:
1. 异常预警泛化——把原本硬编码的 30 天临期、以及仅 HL 有的数值越界(HL_THRESHOLDS),推广为「按域可配临期窗口 + 通用状态异常 + 通用数值越界」三合一。
2. 各域年度小结自动生成——仿 ledgers.hl_r01_draft 的聚合思路,给任意域一键生成当年统计小结页。
操作步骤
A. 预警泛化(落 ledgers.py + templates.py)
ledgers.py加三件套(放在HL_THRESHOLDS之后):
-ALERT_WINDOWS = {'se':90,'op_f05':90,'da':7}+alert_window(key)(默认 30);
-ANOMALY_STATUS = {'已过期','已失效','待更新','已过期待更新','已注销'}(通用状态类异常);
-DOM_THRESHOLDS = {'re':{'score':[('<',60,'满意度偏低')]}}+check_thresholds(key,rows)。reminder_items()把dl > 30改成dl > alert_window(spec['key'])(通知中心与中心页窗口一致)。templates._center_body循环内:win = ledgers.alert_window(key);临期判定dl <= 30改dl <= win;循环内累计「状态异常」(status ∈ ANOMALY_STATUS → anom_items);循环后ledgers.check_thresholds(key,rows)累计「数值越界」;构建abn_html卡(表头:来源台账/事项/异常说明);返回序追加abn_html。- overview 文案「近 30 天临期」改「临近提醒」(窗口无关)。
B. 年度小结(落 templates.py + app.py)
templates.domain_year_summary_page(dom, year=None):遍历ledgers.ALL中k==dom or s.get('dom')==dom的子表,按_dom_date_col取年份过滤;累计记录数/临期(用 alert_window)/逾期/状态异常/完成率(progress)/成员分布;输出文字综述 + 子表统计表 +_member_bars+ 年份切换链接 + 打印按钮。app.py加路由elif path.endswith('/year-summary'):取 dom 校验ledgers.SPECS,调_center_yearsum;add_row里加「📝 生成年度小结」入口(不改导航锁版)。
注意边界
- 改动半径:只动
ledgers.py(增配置/函数,不动 SPEC 字段)、templates.py、app.py;绝不碰导航/菜单/配色锁版。 - sqlite3.Row 红线:取列一律
r[col]+in r.keys()守卫,禁止.get()(_re_insight等已示范)。 - 内容驱动:年度图/临期/洞察均按"有数据才显示",空表不显非缺陷。
- 隐私红线:演示数据须显式标
【示例】+ 备注声明,并给清除脚本(见反例避雷)。
反例避雷
- ❌ 临期硬编码 30 天 → 不同域节奏不同(SE 每季度核查、DA 周巡检),必须用
alert_window可配。 - ❌ 伪造家庭真实台账(应急物资位置/药品/证照)→ 误事且污染数据;户主授权"自动填"也只能写
【示例】占位,并附_clean_demo_*.py一键清除。 - ❌ 在中心页改导航/样式 → 触发界面锁版红线,须先方案→确认→执行。
- ❌ 测试数据清理用
i==seed[-1]推断表路由 → id 重复即误删/残留,必须(表,id)成对逐条删。
关联笔记
MEMORY.md「V2.2 深化项 ①⑥⑦落地」节;2026-10-06.md第八节(含完整验证与 PID/路由)。- 前置技能:
04-开发-通知中心与临期中心聚合流程、04-开发-仪表盘聚合视图接入流程。
实战战绩
- 2026-10-06 实跑:SE/RE 中心页出「异常预警」卡 + 年度小结页(
/re|se/year-summary?year=2026全 200);RE 满意度趋势 SVG + 成员分布同步验证。三文件 py_compile 通过,重启服务(PowerShellStop-Process -Id <pid>+ venv python 8765)生效。
版本记录
- v1.0.0(2026-10-06)首版:预警泛化(可配窗口+状态/数值异常)+ 年度小结页,从 V2.2 落地复盘抽象。