诚实边界(不许说死「完善」):本页只覆盖服务器侧可自动取证的部分。 小程序真机渲染、公众号/平台后台开关、接收端分享卡、逐条历史日志考古、资金对账明细, 服务器侧全绿不等于对端正常,仍需要真机产物或平台后台取证;三类身份动作只能老板在平台侧点。
本次通知:汇报推送未确认送达 rc=0:[notify_cli] 闸门拦截,未发送:该脚本当天已发 3 条(上限 3) | 故障注入:语法错误检出:PASS;高危命令检出:PASS;死引用检出:PASS;告警链 fake CLI 调用:PASS(2026-11-05 01:26:19) | 跨天对比:较上次:待修 +0 / 关注 +0
| 阶段 | 做什么 | 落点 / 依据 | 状态 |
|---|---|---|---|
| 阶段 1 · 当场修完 | 代码端全量体检、垃圾归档、双副本同步、死链清理、白名单登记、标准写入器补漏洞 | 本页 + logs/code_health_latest.json + logs/code_fix_log.json | 已执行 |
| 阶段 2 · 固定循环 | code_health_scan.py 每日跑 → 重写本页 → 新增高危才推企微 → 去重记账 | cron + 告警第二通道 system_status.html | 已固定 |
| 阶段 3 · 交付闸门 | 把代码端体检接入 wb_gate.py,交付前强制过闸 | sudo python3 /home/ubuntu/wb_gate.py | 已固定 |
| 阶段 4 · 自证能力 | --selftest 故障注入:造语法错误 / 递归锁 / 死引用,验证能检出且告警链真调 | fake CLI,不发自检消息 | 已验证 |
| 阶段 5 · 存量迁移 | 未走 run_job 包装的 cron 任务、except:pass 守卫脚本按优先级逐步改造 | 每日清单自动带出,不靠记性 | 循环进行 |
| 阶段 6 · 身份动作 | 公众号草稿点发布 / 小红书扫码登录 / 短信执照材料 + SMS_SDKAPPID | 只能老板在平台侧点,AI 不代操作 | 待老板 |
| 时间 | 动作 | 内容 | 证据 |
|---|---|---|---|
| 2026-11-05 02:59:33 | 白名单自愈 | 运行时写入页缺登记 / 列表重复项,由常驻闸自动补齐去重 | 缺失 [];重复 ['pl_share'];复验=True |
| 2026-11-05 02:52:57 | 垃圾归档 | 把历史 .bak / 临时探针 / 站点目录备份 / 测试残留移出执行目录与 webroot | 归档 1 个(保留可回滚,未删除);引用保护跳过 0 个;失败 0 个 → /home/ubuntu/archive/code_cleanup_20261105_025257;样例 convert_silent.py.bak_conv_20261105_024450 |
| 2026-11-05 02:51:28 | 转换静默吞异常为记日志 | 将裸 except:pass / except Exception:pass 改为记日志(仅加日志,不改成功/失败流程),逐文件 py_compile 校验,失败自动回滚 | 编辑 0 个文件,转换 0 处;失败 0 |
| 2026-11-05 02:47:04 | 转换静默吞异常为记日志 | 将裸 except:pass / except Exception:pass 改为记日志(仅加日志,不改成功/失败流程),逐文件 py_compile 校验,失败自动回滚 | 编辑 0 个文件,转换 0 处;失败 0 |
| 2026-11-05 02:47:04 | 转换静默吞异常为记日志 | 将裸 except:pass / except Exception:pass 改为记日志(仅加日志,不改成功/失败流程),逐文件 py_compile 校验,失败自动回滚 | 编辑 47 个文件,转换 362 处;失败 0 |
| 2026-11-05 02:46:26 | 转换静默吞异常为记日志 | 将裸 except:pass / except Exception:pass 改为记日志(仅加日志,不改成功/失败流程),逐文件 py_compile 校验,失败自动回滚 | 编辑 0 个文件,转换 0 处;失败 47 |
| 2026-11-05 02:45:25 | 转换静默吞异常为记日志 | 将裸 except:pass / except Exception:pass 改为记日志(仅加日志,不改成功/失败流程),逐文件 py_compile 校验,失败自动回滚 | 编辑 36 个文件,转换 209 处;失败 47 |
| 2026-11-05 02:42:14 | 垃圾归档 | 把历史 .bak / 临时探针 / 站点目录备份 / 测试残留移出执行目录与 webroot | 归档 3 个(保留可回滚,未删除);引用保护跳过 0 个;失败 0 个 → /home/ubuntu/archive/code_cleanup_20261105_024214;样例 webroot_lock_guard.py.bak_guardfix_20261105_024011, code_health_scan.py.bak_scanfix_20261105_024011, admin_routes_api.py.bak_ssr_20261105_015847 |
| 2026-11-05 02:41:29 | 白名单自愈 | 运行时写入页缺登记 / 列表重复项,由常驻闸自动补齐去重 | 缺失 [];重复 ['pl_share'];复验=True |
| 2026-11-05 02:23:14 | 白名单自愈 | 运行时写入页缺登记 / 列表重复项,由常驻闸自动补齐去重 | 缺失 [];重复 ['pl_share'];复验=True |
| 2026-11-05 02:02:45 | 垃圾归档 | 把历史 .bak / 临时探针 / 站点目录备份 / 测试残留移出执行目录与 webroot | 归档 1 个(保留可回滚,未删除);引用保护跳过 0 个;失败 0 个 → /home/ubuntu/archive/code_cleanup_20261105_020244;样例 _new_admin_routes_api.py.bak_ssr_20261105_015847 |
| 2026-11-05 02:02:04 | 转换静默吞异常为记日志 | 将裸 except:pass / except Exception:pass 改为记日志(仅加日志,不改成功/失败流程),逐文件 py_compile 校验,失败自动回滚 | 编辑 184 个文件,转换 1094 处;失败 0 |
| 2026-11-05 01:58:48 | SSR 死调用改可见 | _new_admin_routes_api 把静默吞掉的 _ssr_cron.py 死调用改为「文件缺失/异常时记日志」,不再跑空 | 替换 1 处;py_compile 0;import 1;已回锁 +i |
| 2026-11-05 01:58:47 | SSR 死调用改可见 | admin_routes_api 把静默吞掉的 _ssr_cron.py 死调用改为「文件缺失/异常时记日志」,不再跑空 | 替换 1 处;py_compile 0;import 1;已回锁 +i |
· 每日 cron:code_health_scan.py 经 wb_cron.sh add 登记,走 run_job.sh 包装留 START/END 与 rc。
· 出页面:写 webroot 一律走 wb_write.py(解锁→写→回锁→审计),machine_report.html 已登记守卫白名单。
· 告警:仅「新增待修项」推企微,按 fingerprint 去重;判定送达只认 [notify-personal] True;
不推「无需动手」类消息,但全部记账,绝不静默吞事。
· 自证:--selftest 在临时目录造坏样本(语法错误 / 递归目录锁 / 死引用 / 重复 cron),
验证能检出、能用 fake CLI 走通告警链,不发任何自检消息。
· 第二通道:system_status.html 与 daily_report.html 均挂本页入口, 企微没收到也能在门户看到。