记忆:专题显示区一组圆(存储/查询/裁剪纪律)+ 前端单测挂进 verify.sh

This commit is contained in:
tamakyi
2026-10-12 16:46:53 +08:00
parent 44763dfc3f
commit b40160867e
3 changed files with 126 additions and 3 deletions
+3 -3
View File
@@ -1,6 +1,6 @@
# rond-with-you 硬规矩(索引)
> 全文:`.workbuddy/memory/MEMORY-details.md`(46 节);验证机制:技能 `rond-fix-verify`;备份包解析/导出:技能 `rond-backup-parse`。本文件只做关键词索引——**新规矩写 details,别堆这里**。
> 全文:`.workbuddy/memory/MEMORY-details.md`(47 节);验证机制:技能 `rond-fix-verify`;备份包解析/导出:技能 `rond-backup-parse`。本文件只做关键词索引——**新规矩写 details,别堆这里**。
>
> ⚠️ 本文件**按字符数**注入,硬上限 `MAX_MEMORY_CHARS = 1e4`(WorkBuddy `app.asar` 里 `getWorkingMemoryContent`;中文 1 字算 1,不是按字节)。超了会被 `substring(0,1e4)` 截断并写明「先整理再干活」——即整段尾部静默丢失。日常日志与本 details **不参与注入**,可以随便写。现值见 `wc -m`,留 20% 余量。
@@ -30,7 +30,7 @@
- 瓦片须与底图同 `crs`;带地图页须 `p.HasMap=true`。
- `tileDigits` 补前导 0;`tileName` 尾缀 `len(s)-2` 单数字编号时为 -1 ⇒ panic;解码守卫 `len(name)<8`。
- `fogIndexV` 必须 `atomic.Pointer`(普通指针=真 data race)。`fog_race_test.go`(-race)
- **专题页迷雾按区域收口**(`opts.fogArea`)=**单独 pane** + `clip-path`:不能裁 `tilePane`(底图也在里面);圆心须 `project()` 到底图坐标系;⚠️ 注册必须排在 `applyFit()` **之后** —— 视图未定时 `latLngToContainerPoint()` 会抛「Set map center and zoom first.」,把后续图层添加一起打断(实测=迷雾整片消失、不报错)。`TestTopicFogIsClippedToArea`(四十五)
- **专题显示区=一组圆(并集)**:存 `topics.areas` jsonb(不单开表,省掉归属口径/白名单/迁移顺序三件事),SQL 是 N 个圆的 **OR**(每圆 3 个占位符,编号须恰好覆盖 `[prefix+1, len(args)]`)。前台裁剪=**单独 pane**(不能裁 `tilePane`,底图在里面)+ `clip-path: path()`,每圆一段**同绕向**子路径(绕向反了重叠处会被挖成洞);圆心须 `project()`;⚠️ 注册必须排在 `applyFit()` **之后** —— 视图未定时 `latLngToContainerPoint()` 会抛「Set map center and zoom first.」,把后续图层添加一起打断(实测=迷雾整片消失、不报错)。`TestTopicFogIsClippedToAreas`(四十五、四十六)
## 前端 / 模板 / CSS(details 六~八、十七、廿三、廿八D、卅七)
- ⚠️ **对访客公开的块,措辞必须按身份分支**(`{{if .IsAdmin}}我的…{{else}}站长…{{end}}`):
@@ -40,7 +40,7 @@
- 改 Go 必须重启;模板/CSS/JS 只在 `debug=true` 热加载(`AssetV` 启动哈希)。⚠️ **新模板+旧二进制**=「渲染到一半仍 200」;启动自检 `smokeRender` 会拒启(四十一)。
- 字阶/圆角/阴影**只走令牌**,裸 `font-size: 13px` 有静态守卫 `TestNoBareFontSizePx`;卡片三档 `.card--hero/--quiet`。⚠️ 改**根字号**要查 Leaflet(`.75rem` 会跟着漂),(四十二)。
- 类型色走 `csscolor/csssoft`(**必须返回 `template.CSS`**,否则 `var()` 被换成 `ZgotmplZ` 且不报错);这套色连 3:1 都不到,**只能当圆点标记、别当文字色**。窄屏导航收进 `.nav-menu`,顶栏 `--z-nav` 必须高于地图浮层(四十三)。
- 日期控件一律走 `attachAll`(原生 `type=date` 的年段会吞 6 位数字 ⇒ 敲 20260606 变 `202606/06` 且值为空);模板里出现 `input[type=date]` 选择器有守卫。`.grid` 必须 `align-items:start`(四十四)。
- 日期控件一律走 `attachAll`(原生 `type=date` 的年段会吞 6 位数字 ⇒ 敲 20260606 变 `202606/06` 且值为空);模板里出现 `input[type=date]` 选择器有守卫。`.grid` 必须 `align-items:start`(四十四)。前端脚本单测(`static/js/*.test.js`)已挂进 verify.sh「第 1.5 段」,**node 缺失直接失败不跳过**;可测的纯函数要抽成独立文件(`rond-map.js` 是大 IIFE,函数取不出来)。(四十六)
- 拼查询串走返回 `template.URL` 的方法(`PlaceLink`/`EditPlaceLink`/`MapLink`/`EditLink`),勿手工转义。
- 窄屏覆盖写 `app.css` **末尾那块**;宽表堆叠类名**成对** `class="tb tb-stack"`;触控 44px。`tb_stack_test.go`
- 加表格列:`PlaceCols`/`scanPlace` **成对**、新列追加最后;CJK 挤换行只抬该表 `min-width`。