为 43 个静态专区页注入一套通用适配层:右下角悬浮按钮 📊 → 展开实时数据面板。 适配层自动探测响应结构(数组/统计数字),无需每页手写渲染逻辑。
</body> 前追加,不动原有布局与文案/api/xxx(80 端口已反向代理到 8979,无需硬编码端口)实测发现 4 个数据层是空的(market / quality / agent_broker / storage),
灌入真实中药材业务数据(市场档案 / 质检报告 / 居间台账 / 库存记录)。
market/stats、quality/stats、agent_broker/stats、storage/stats 立刻报 500 Internal Server Error。
x["status"]、x["data_type"]、x["warn_status"],没有字段防御。
数据文件为空时循环体不执行、侥幸不报错;一旦有数据就 KeyError 崩溃。
| 问题写法 | 修复后 |
|---|---|
x["status"] == "正常运营" | x.get("status") == "正常运营" |
float(x.get("fee",0) or 0) | _safe_float(x.get("fee"))(容错文本/None) |
同时修复字段语义不匹配:如 market 用 normal_running(1/0) 而非 status 文本;quality 用 qualified(1/0) 而非 test_result 文本 —— 已做双字段兼容。
| 路由 | 字段防御 | 路由 | 字段防御 |
|---|---|---|---|
| agri_warn | 7 处 | labor | 7 处 |
| seed_machine | 7 处 | supply | 7 处 |
| bidding | 6 处 | labor_v2 | 6 处 |
| expert | 6 处 | live_trace_v2 | 6 处 |
| processing_factory | 6 处 | processing_v2 | 6 处 |
| seeding | 5 处 | trade | 5 处 |
| community | 4 处 | info_news | 4 处 |
| storage | 4 处 | agent_broker | 3 处 |
| market | 3 处 | bulk_trade | 2 + 1 处 |
| group_buy | 2 + 1 处 | quality | 2 处 |
| storage_know | 2 处 | live_trace / mediation / processing | 安全转数 1/3/1 处 |
71/71 文件 py_compile 全通过;改前全部备份于 原稿留底/5a路由修复前备份_20261006/。
| 接口 | 状态 | 返回真数据 |
|---|---|---|
api/market/stats | 200 | {total_market:6, normal_running:6} |
api/quality/stats | 200 | {total_report:9, qualified:9} |
api/storage/stats | 200 | {stock_total:5} |
api/agent_broker/stats | 200 | {total_record:5} |
api/processing/stats | 200 | {total_order:9} |
api/info_news/stats | 200 | {total_news:9, published_count:9} |
api/bulk_trade/stats | 200 | {total_order:3, total_trade_amount:262000.0} |
api/labor/worker_list | 200 | 8 名工人(黄芪采挖劳务队…) |
api/seedling/list | 200 | 4 条种苗(黄芪 优质种苗…) |
api/seed_machine/seed_list | 200 | 5 条种子(黄芪优质种苗…) |
api/market_fair/list | 200 | 5 个药材市场(亳州…) |
api/bidding/project_list | 200 | 8 个招标项目(岷县当归…) |
api/mediation/ledger/stats | 200 | {total_orders:1, total_amount:120000, commission:1200} |
api/expert/expert_list | 200 | 4 位专家(张教授…) |
api/land/list | 200 | 4 宗地块(甘肃定西 126亩…) |
api/agri_warn/warn_list | 200 | 4 条预警(陇西产区干旱预警…) |
16/16 全 200 且返回真实业务数据。
修复 24 个路由后,抽查原有核心接口:
8/8 全 200 —— ops_monitor(服务器概览/告警)、trade(行情/订单)、mall_cart、logistics_trans、address_book、goods_publish
融合模块 7/7 全 200 —— total_board / global_config / short_video / ad_slot / plant_base / agent_dispatch / agent_role
(测试中出现的若干 404 均为路径名差异,非故障 —— 真实端点名与猜测不同,用正确路径全部 200。)
| 阶段 | 纯静态业务页 | 变化 |
|---|---|---|
| 5-a 之前 | 64 | — |
| 5-a 之后 | 21 | -43(收敛 67%) |
剩余 21 页 = 国风 gf_* 风格线(5-c)+ 罗盘/首页(5-d)+ 少量拼音旧版(5-b)。
</body> 前追加,原布局文案零改动/api/xxx,无硬编码端口原稿留底/5a注入前备份_20261006/(43 个 .bak)+ 5a路由修复前备份_20261006/(24 个 .bak)