diff --git a/.workbuddy/memory/2026-10-13.md b/.workbuddy/memory/2026-10-13.md index d56e2c2..a65660e 100644 --- a/.workbuddy/memory/2026-10-13.md +++ b/.workbuddy/memory/2026-10-13.md @@ -33,3 +33,17 @@ 「pane 不存在」,`--wait 8` 才稳。别把「还没初始化」当成「功能没生效」。 - `--eval-file` 里写 `(async function(){...})()` 却**不加 `--await`**,CDP 拿到的是 Promise, `returnByValue` 序列化成 `{}` —— 看着像脚本没执行,其实是漏了参数。 + +### 处置:补「参照物」(提交 6aee7e4) + +用户选定「加比例尺 + 标注直径」。几何逻辑**一行没动** —— 因为问题本来就不在几何: + +- 编辑器地图加 `L.control.scale`(公制,`position:'bottomleft'`,跟前台一致)。 +- 新增纯函数 `spanLabel(radiusKm)`:半径 →「约 40 公里宽」(直径);<1 公里改用米, + 免得出现「约 0.1 公里宽」。圆列表每行标,**「新圆半径」旁边也实时跟着变**(落点前就能判断)。 +- 守卫 `TestTopicAreaEditorGivesSizeReference` 钉住比例尺与跨度标注(变异验证过)。 + ⚠️ 它当场抓到我自己的疏漏:模板的 init 调用漏传 `spanId`,靠脚本默认值兜着 —— + 已改成显式传参(**新增 opts 时记得在模板里也写出来**,否则守卫和外人都看不出这层耦合)。 + +教训:这次「bug」的本质是**界面缺参照物**,不是算错。以后遇到「大小看起来不对」类反馈, +先问「用户手上有什么可以量」,而不只是去验算几何。 diff --git a/.workbuddy/memory/MEMORY-details.md b/.workbuddy/memory/MEMORY-details.md index fc1b761..043458c 100644 --- a/.workbuddy/memory/MEMORY-details.md +++ b/.workbuddy/memory/MEMORY-details.md @@ -1229,6 +1229,15 @@ HTML,一行里必然带 ``,一拒就把正常用法挡死了(我 小坑:半径输入框得套一层**定宽容器**(`.area-km-box`)——站点全局 input 规则是 `width:100%` 且带 10 个 `:not()`(特异性 (0,11,1)),直接给 input 写宽度压不过。 +⚠️ **给几何参数配「参照物」**:2026-10-13 用户反馈「圆无论怎么缩放大小都一样、20km 却覆盖了 +整个南宁」,实测三处画圆(编辑器 `L.circle`、改半径把手、前台迷雾裁剪圆)**全是地理锚定、 +随缩放正确变化**,半径值也确实生效 —— 复现不出「大小不变」。真正缺的是**参照物**: +编辑器地图以前没有比例尺(前台一直有),圈圆时只能靠地名猜。 +⇒ 规矩:**编辑器地图必须有 `L.control.scale`,且半径旁要标出跨度**(`spanLabel()`: +半径 20 →「约 40 公里宽」;<1 公里改用米,别写「约 0.1 公里宽」)。 +守卫 `TestTopicAreaEditorGivesSizeReference`。教训:遇到「大小看起来不对」, +先问「用户手上有什么可以量」,而不是只去验算几何。 + ⚠️ **`` 的 `step` 是相对 `min` 递增的**,不是「`step` 的整数倍」: `min=0.05` + `step=0.5` 的合法值只有 0.05/0.55/1.05…,用户填 3 或 3.5 会被 Chrome 判非法、 提交时弹「请输入有效值。两个最接近的有效值分别为 2.55 和 3.05」。**这是浏览器原生提示,