dzs/dzs_wx_appv1.1.281078a1(base) → 8469968(head)本次提交为 F4c 小批次修复(2026-10-08),共改动 4 个文件:
| 文件 | 类型 | 变更摘要 |
|---|---|---|
src/pages/price/card-detail.vue | 功能修复 | 价格卡详情「品类单位」改为读本地品类字典的内存副本(响应式),并新增 ensureCommodityUnit() 兜底:本地字典缺该品类时拉一次 /market/commodities 并落盘(失败静默)。 |
tests/price.test.ts | 测试 | 新增 卡详情单位兜底(F4c) 用例组(1 例源码守卫)。 |
tests/news-filter.test.ts | 测试 | 更新「品类单位来源」守卫:card-detail.vue 的断言由 commodityUnitOf 改为 readCommodityList() + ensureCommodityUnit()。 |
docs/followups-v1.1.md | 文档 | 第 43 行追加 F4c 说明(无代码影响)。 |
变更面极小,且集中在单页面 + 单测 + 文档,无新增依赖、无公共接口/类型变更。
数据来源:
codescan_issues_diff(base → head 对比),真实结果:修复 0 条。
本区间内静态质检问题无任何消失/修复(fixed = 0)。
说明:本次 F4c 改动的性质是功能补全(游客「首页 → 卡详情」冷启动时品类字典未落盘导致单位不显示),修复的是运行时行为缺陷(单位缺失),而该缺陷不属于既有静态质检问题清单中的条目,因此 issues_diff 的「修复」栏为 0 —— 这是预期结果,不代表本次无修复价值。该行为缺陷的修复效果由新增单测 + H5 游客态实测(卡面显示「3,830 元/吨」)保障。
数据来源:
codescan_issues_diff(base → head 对比),真实结果:新增 0 条。
本区间内未引入任何新的静态质检问题。改动代码未出现在 codescan_quality_list(head = v1.1.2)的问题清单中。
对核心改动 src/pages/price/card-detail.vue 逐点核查,结论:改动干净、无新增缺陷。
unit = computed(() => commodityUnitOf(...)) 直读 uni.getStorageSync,存储非响应式,字典落盘后视图不会刷新;新实现改为 commodityUnits = ref(readCommodityList()) 内存副本 + 兜底后 commodityUnits.value = readCommodityList() 主动刷新,修复了「异步拉取后单位不更新」的响应式问题。写法与价格列表页 / 品种详情页保持一致。void ensureCommodityUnit() 在 await fetchSpotDetail() 之后调用,此时 spot.value 已就绪,commodity_id 可读;void 前缀避免未处理 Promise。if (!cid || unit.value) return,已有单位或品类缺失即短路,retry / 重复 load 不会重复拉取字典。try/catch 吞掉异常,符合「单位空则不渲染、不阻塞页面其余内容」的既有口径。saveCommodityList(仅留 id/name/unit 三字段),未污染存储结构。fetchCommodities() 返回 { commodities },saveCommodityList 入参结构兼容,无类型不匹配。tests/news-filter.test.ts 旧断言 toContain('commodityUnitOf') 已同步更新,新增反向守卫 not.toContain('spot.unit') 与 tests/price.test.ts 的新用例共同锁定了「内存副本 + 兜底」实现,避免回归。潜在观察(非缺陷、仅供留意):
ensureCommodityUnit() 会在「品类字典已落盘但缺该品类」时也触发一次全量字典拉取;因字典接口为全量返回且非高频路径(仅在卡详情冷启动、单位缺失时),可接受。commodity_id 正确返回;若后端该字段缺失则单位保持不渲染(与既有「不兜底」口径一致),无异常放大。由于本次 0 新增 / 0 修复,head 的 47 条问题全部为跨版本存量问题,与本次改动无关。按严重度分布:
| 严重度 | 数量 | 主要类型 |
|---|---|---|
| Critical | 0 | — |
| High | 0 | — |
| Medium | 23 | 圈复杂度/嵌套/函数过长(useArticleData.ts、data-card.ts、request.ts、metric.ts 等)、高耦合(useShareCard.ts#drawShareCard、data-card.ts#cardMetricCards、metric.ts#layerRowsOf)、测试文件高扇出 |
| Low | 24 | 重复代码块(测试文件为主)、超长行(eslint.config.mjs:38、agreements.ts:8)、注释代码(data-card.test.ts:70)、扇入扇出异常(测试文件) |
观察:存量问题无 Critical/High,且多数(约半数)集中在 tests/**(重复代码块、扇入扇出异常、高耦合),属测试代码结构层面;源码侧问题集中在 data-card.ts / useArticleData.ts / request.ts / metric.ts 的复杂度与耦合,均为可维护性建议项,不构成功能风险。整体存量健康度良好。
data-card.ts / useArticleData.ts 的复杂度拆分),非本期阻塞项。ensureCommodityUnit 兜底对 /market/commodities 接口的额外调用;若后续字典体量增大,可考虑加节流或本地过期策略(当前非高频路径,暂无需动)。本报告「修复 bug / 新增问题」两章数据严格取自 codescan_issues_diff 工具真实输出,未做任何推断或补充;变更质量评估基于源文件人工核查。