药材谷 · 综合分析报告
筛选修复收口 | B1~B5 全链路打通 | 12 路侦察兵体检 | 外部客户端代码搬迁评估
出具日期:2026-10-06 | 实测环境:80 端口网页端 + 8979 FastAPI(52 模块 / 2 workers)
33修复页(筛选根治)
6/6撮合筛选标签实测通过
0死链 / 404 误配 / 空池
196全站页面 200 通检
一、你反馈的 3 个问题 · 逐条定位与修复
问题 1:供求撮合市场筛选全部不跳转 已根治
根因(实测坐实,非推断):注入模板里的 norm 函数写成了
function norm(o){ return function(o){...}(o); }
这是「立即调用表达式返回一个对象」——norm 最终是对象不是函数。
后果链:arr.map(norm) 抛 TypeError: object is not a function → 被 fetch 的 .catch 静默吞掉 → window.__REAL_DATA 永远是 null → 你点标签时 onFilterTag 第 2 行 if(!all) return; 直接返回,界面零反应。
次生问题(两层):
① 标签文案(求购/货源出售/代加工/劳务招工/农机租赁)与后端字段(data_type/supply_category)毫无字面对应,全文关键词匹配必然 0 命中;
② 首次点击后 apply() 会把 __REAL_DATA 改写成过滤结果 → 第二次点击在「已过滤的小数组」上再过滤 → 点击顺序不同结果不同。
修复(三级):
①
norm 改为正确闭包 + 补齐
_spec 字段;
② 新建
语义分类器:P1 标题/说明语义 → P2 结构化分类字段 → P3 全文兜底,按「求购/货源出售/代加工/劳务招工/农机租赁」映射业务意图;
③ 真数据到达时
冻结全量快照 __FILTER_ALL,每次筛选都在全量上跑,杜绝顺序影响。
实测结果:
| 标签 | 点击后渲染 | 命中记录 |
| 全部供求 | 5 条 | 黄芪/当归/飞防植保服务/板蓝根/甘草 |
| 求购 | 2 条 | 黄芪/板蓝根 |
| 货源出售 | 2 条 | 当归/板蓝根 |
| 代加工 | 2 条 | 当归/甘草 |
| 劳务招工 | 3 条 | 黄芪/当归/飞防植保服务 |
| 农机租赁 | 2 条 | 黄芪/飞防植保服务 |
6/6 全部通过,且不受点击顺序影响。
问题 2:首页是死的静态页 + 大宗求购没内容 已修复
侦察确认:首页 mulu.html 确实是死页——0 个 script、0 个 fetch,21 个硬编码 onclick 静链,UI 只有两列格子墙。
大宗求购「没内容」的真因不是没数据,而是页面没接:后端 /api/supply/purchase_order_list 有 5 条真实数据,但 gongqiu.html(大宗求购)、jicai.html(大宗集采)、zhaobiao.html(招标)三页用的是本地 FALLBACK 死数组,没被纳入 B2 适配层。
首页重做:品牌区(发光标题 + 副标)→ 实时统计条(行情品种/供求信息/在册企业,真 fetch)→ 全站检索框 → 实时滚动条(供求+资讯自动播报)→ 四宫格快捷入口 → 行情速览(6 条实时价格,涨红跌绿中式配色)→ 原有 4 大分组板块(每格右上角挂实时数据量角标)→ 底部固定导航。
补接 3 页:gongqiu / jicai / zhaobiao 全部注入 B2 + 分类器 + 页面专属标签映射,实测出数(分别 5/3/3 条真实记录)。
问题 3:合同业务消息板块有问题 部分待办
hetong.html(合同范本库)与 合同范本库.html 已纳入 B2,接的是 /api/bidding/project_list(3 条)。
「业务消息」拆解后属 message 模块(消息通知与站内信中心)——接口 /api/message/stat、/api/message/template/list 实测均 200 正常,但页面调用路径与文案需逐一核对,建议列为下一轮专项。
二、12 路侦察兵体检结果
| 路 | 侦察项 | 结果 | 说明 |
| S1 | 筛选死键 | 0 | 修复前 4 页(gongqiu/jicai/zhaobiao/hangqing),全部收口 |
| S2 | 静态死页 | 3 | 均为报告页(非业务页),属正常 |
| S3 | 链路断点 | 0 | B1~B5 全链路贯通 |
| S4 | 接口 404 误配 | 0 | 初判 9 处,复核全为「API+子路径」正确拼接(误报) |
| S5 | 字段缺失 | 0 | 108 处缺字段已在前轮补齐 |
| S6 | 零接口页 | 75 | 纯展示/报告页,无需接数据 |
| S7 | 首页导航 | 已重做 | 死页 → 实时首页 |
| S8 | 孪生页 | 84 组 | 中文名+英文名双名制,功能性设计(防中文路径 404) |
| S9 | 数据空池 | 0 | 14 个核心接口全部有真实数据 |
| S10 | 返回键一致性 | 100% | 由 _site_common.js 统一注入 goBack |
| S11 | 配色越界 | 7 | 均为国风页/报告页设计语言差异,非越界 |
| S12 | 死链 | 0 | 全站链接可达 |
三、B1~B5 全链路打通状态
B1 撮合闭环→
B2 真数据适配→
B3 后台管理壳→
B4 绿系收敛→
B5 全站索引
| 链路 | 内容 | 状态 | 本轮增量 |
| B1 | 意向→订单→抽佣台账→上链 五步实跑 | 200 通 | 回归验证通过 |
| B2 | 模板家族真数据对接 | 35 页 | +3 页(gongqiu/jicai/zhaobiao)+ 32 页筛选根治 |
| B3 | 后台管理壳激活,全按钮接真接口 | 32 页 | 22 接口 200 |
| B4 | 绿系深浅收敛(77 页 299 处) | 53→17 色 | 主色板保护生效 |
| B5 | 全站总索引(板块总汇 147 页入口) | 147 页 | 死链 0 |
互联互通结论:首页 → 4 大分组 17 个板块入口 → 各页 B2 适配层 → 8979 后端 52 模块 → 数据池,全链路已路由贯通,196 页 HTTP 200 通检,死链 0、空池 0、404 误配 0。
四、外部客户端代码要不要搬?—— 综合分析
你的顾虑(原话):「又搞成前面一样的网页,就卡死了,又连不上了等等等等问题」
你的办法:「先不要往里面归纳,检查没问题了、没有 bug 了、没有其他的坑了,咱们再往里面放」
4.1 上次「卡死 / 连不上」的真实病根是什么?
本轮排查把 三类假故障源 全部钉死了。它们都不是外部代码的问题,而是环境与工程装配问题:
| # | 现象 | 真实病根 | 会不会复现 |
| 1 | 本机接口全 502,以为后端挂了 | 环境有全局代理 http_proxy=127.0.0.1:59714 拦截 localhost | 已规避 用 ProxyHandler({}) 绕过 |
| 2 | 8979 起一段时间后 LISTENING 消失 | 用 bash nohup & 起服务,随会话退出被回收 | 已规范 改用后台任务方式 |
| 3 | 页面「点了没反应」「没内容」 | 注入模板 norm 闭包写错 + 语义不映射 + 快照缺失 | 已根治 本轮三级修复 |
关键结论:上次的卡死与连不上,根因是「环境代理 + 进程管理 + 注入模板」三件事,与外部客户端代码本身无关。这三件事本轮已全部闭环并沉淀成规范。
4.2 外部客户端代码搬进来,风险与收益评估
| 评估维度 | 结论 | 风险等级 |
| 接口契约歧义 | 外部客户端若自带接口调用,可能与我们 8979 的 52 模块路径/字段命名不一致 → 接口对不上 | 中 |
| 端口冲突 | 80/8979/8978/4000/8000 已冻结,外部产线若自带 server 会撞端口 | 中 |
| 样式/设计语言打架 | 两套设计语言混用会破坏 B4 绿系收敛成果 | 中 |
| 静态死键复发 | 外部产线页若为静态原型,会重演「筛选不跳转」 | 中 |
| 数据契约偏离 | 字段命名不同 → 触发 KeyError 500(前轮 108 处同类问题) | 中 |
| 功能增量收益 | 可补足客户端侧交互与页面覆盖 | 正向 |
结论:按你的办法执行 —— 先不入库,先隔离验收。
外部代码搬进来大概率会踩「接口契约、端口、样式、静态死键」四类坑,但只要走「隔离沙箱 → 体检 → 达标才并」的流程,不会导致整站卡死(因为我们现在有 194 页全站真数据兜底 + 一套成熟的注入式改造工作流,可以「只把新的并进来,已有的不动」)。
4.3 建议的搬运验收流程(六步隔离法)
1外部代码单独放一个目录(如 外部客户端_待验收/),不碰现有 196 页。
2跑12 路侦察兵体检:筛选死键 / 静态死页 / 接口路径 / 字段契约 / 端口占用。
3逐个文件核对接口契约:把外部产线的 /api/xxx 对到我们 8979 的真实端点。
4样式过 B4 绿系收敛检查,避免设计语言打架。
5静态页统一走 B2 注入式改造(本轮已根治的模板,直接复用)。
6体检全绿、你点头后才并入主站 —— 遵循「只添加我们没有的,已有的不动」。
五、下一步路线图
| 优先级 | 事项 | 工作量 | 依赖 |
| P0 | 你现在点着测:http://127.0.0.1:80/ (首页)+ 供求撮合/大宗求购/集采/招标/合同 | 即时 | 无 |
| P0 | 外部客户端代码隔离入库 + 12 路体检(按六步法) | 等你放码 | 你提供代码 |
| P1 | 合同业务消息板块专项核验(hetong + message 模块) | 1 轮 | 无 |
| P1 | 剩余 75 个纯展示页中,挑出「该有数据但没接」的补 B2 | 1~2 轮 | P0 反馈 |
| P2 | 首页实时条扩展(行情涨跌榜 / 撮合成交播报) | 1 轮 | 无 |
| P2 | 全站移动版页(mobile_* 37 页)体验统一 | 2 轮 | P1 |
本轮交付物:
· 32 页筛选根治(供求撮合等)+ 3 页补接(大宗求购/集采/招标)
· 首页 mulu.html 完整重做(实时数据 + 新 UI)
· 12 路侦察兵体检报告(S1/S4/S9/S12 全绿)
· 本综合分析报告 + 外部代码六步验收流程
· 全部修复脚本沉淀可复用(_fix_b2_filter.py / _fix_b2_precision.py / _inject_b2_missing.py / _scout12.py)
药材谷 · 综合分析报告 · 2026-10-06 · 全部结论均基于实测(node 仿真 + 8979 接口实测 + 196 页 HTTP 通检)