diff --git a/.workbuddy/memory/2026-10-01.md b/.workbuddy/memory/2026-10-01.md index f462a21..84db61a 100644 --- a/.workbuddy/memory/2026-10-01.md +++ b/.workbuddy/memory/2026-10-01.md @@ -50,3 +50,23 @@ 上一轮跑剩的票会被算进来。新增 `isolateVoteState` 按 place_key 清两张表(前置 + cleanup)。 顺带订正 README:那里还写着站长结论「按 src_pk 存」,其实早就是坐标键了。 + +## 措辞分身份:访客不该看到「我的结论」(02:05) + +用户:「无论是否登陆,都显示『推荐 & 踩雷(我的结论)』,这对访客是不是会产生困扰,再检查类似的表述」。 +顺着 `grep "[我你咱]"` 把访客可见模板 + `static/js` 过了一遍,共 4 处同病(都是**站在站长视角下笔、 +而那一块对访客公开**): + +1. `stats.html`:标题「我的结论」→ 按身份分支(站长「我的结论」/ 访客「站长结论」); + 副标题「只统计你自己…」→ 站长「你自己」/ 访客「站长」;两列「我推荐/我踩雷的地点」同理。 +2. `stats.html` 访客块副标题:「你标你的,访客投访客的」→ 对两边都成立的「各存各的表,谁也不会覆盖谁」。 +3. `home.html`:「我的标签」→「足迹标签」(同级卡片全是中性的:足迹地图/城市足迹/天气足迹…)。 +4. `report.html`:「这一年里,**你**第一次踏足…」→ 去掉人称(年报是站长的回顾)。 + +已写对的(照它学):`place.html` 投票区早就是 `{{if .IsAdmin}}` 分支,`rond-map.js` 气泡同理。 + +门禁 `TestVisitorPagesUseThirdPersonCopy`:以访客 ctx(无 user)渲染 `/`、`/stats`、`/report`, +逐个禁用词断言,同时确认站长那份仍说「我的」(别改过头)。 + +⚠️ 变异验证又踩老坑:**直接 `go test -run` 缺环境变量会静默 skip 并报 ok**(0.17s 就 ok,一眼假绿), +必须走 `verify.sh`。改用 verify.sh 后变异被正确抓住(`visitor_copy_test.go:85` 报「我的结论」)。 diff --git a/.workbuddy/memory/MEMORY-details.md b/.workbuddy/memory/MEMORY-details.md index 464a713..f8159ff 100644 --- a/.workbuddy/memory/MEMORY-details.md +++ b/.workbuddy/memory/MEMORY-details.md @@ -753,3 +753,32 @@ Core Data 元数据、索引、持久化历史、`ZRAWVISIT` 采样点、`ZTRIP* 比数总数更能证明两块真的没串台。 顺带订正 README:那里还写着站长结论「按 `src_pk` 存」,其实早就是**坐标键**了。 + + +--- + +## 三十七、措辞要分「站长视角」与「访客视角」(2026-10-01) + +用户发现:**未登录也显示「推荐 & 踩雷(我的结论)」**,访客没法解读「谁的我的」。 +顺着做了一次系统排查(`grep "[我你咱]"` 扫访客可见模板 + `static/js`), +发现同一个毛病还有三处,都是**写模板时站在站长视角下笔、而那一块对访客公开**: + +| 位置 | 原文 | 改成 | +|---|---|---| +| `stats.html` 标题/副标题/两列小标题 | 我的结论 / 只统计**你自己**… / 我推荐的地点 / 我踩雷的地点 | `{{if .IsAdmin}}我的…{{else}}站长…{{end}}`(**按身份分支**) | +| `stats.html` 访客块副标题 | 与「我的结论」互不影响:**你标你的**,访客投访客的 | 「与上面的站长结论互不影响:各存各的表,谁也不会覆盖谁」 | +| `home.html` 标签卡标题 | 我的标签(同级卡片都是中性的:足迹地图/城市足迹/天气足迹…) | 足迹标签 | +| `report.html` | 这一年里,**你**第一次踏足的这些城市(年报是站长的回顾) | 这一年里第一次踏足的这些城市 | + +**已经写对的(照它学)**:`place.html` 的投票区早就是 `{{if .IsAdmin}}` 分支 +(站长「我的结论」/ 访客「大家怎么说」),`rond-map.js` 的气泡同理; +`layout.html`/`map.html` 的「含家/工作」chip 与一串「只有你自己能看到」都在 `{{if .IsAdmin}}` 里,没问题。 + +**门禁用例** `TestVisitorPagesUseThirdPersonCopy`:以**访客身份**(`context.Background()`,ctx 里没有 user) +取回 `/stats`、`/`、`/report`,逐个禁用词断言(`visitorCopyForbidden`), +同时断言站长那份**仍旧说「我的」**(别把站长自己的视角也改成第三人称)。 +前置要把 `settings.site.marks_public` 打开(访客才看得到那一块),用完还原。 + +⚠️ 变异验证踩的坑(老坑,载入史册):**直接 `go test -run …` 会因为缺 `ROND_TEST_CONF`/`ROND_SRC` +静默 skip 并报 ok** —— 我第一次做变异就是这么「假绿」的(0.17s 就 ok,明显不对)。 +变异验证必须走 `./scripts/verify.sh --pkg … --run …`(它会拦住 SKIP)。 diff --git a/.workbuddy/memory/MEMORY.md b/.workbuddy/memory/MEMORY.md index ae2a2bc..7f99650 100644 --- a/.workbuddy/memory/MEMORY.md +++ b/.workbuddy/memory/MEMORY.md @@ -1,6 +1,6 @@ # rond-with-you 硬规矩(索引) -> 全文:`.workbuddy/memory/MEMORY-details.md`(37 节);验证机制:技能 `rond-fix-verify`;备份包解析/导出:技能 `rond-backup-parse`。本文件只做关键词索引——**新规矩写 details,别堆这里**。 +> 全文:`.workbuddy/memory/MEMORY-details.md`(38 节);验证机制:技能 `rond-fix-verify`;备份包解析/导出:技能 `rond-backup-parse`。本文件只做关键词索引——**新规矩写 details,别堆这里**。 > > ⚠️ 本文件**按字符数**注入,硬上限 `MAX_MEMORY_CHARS = 1e4`(WorkBuddy `app.asar` 里 `getWorkingMemoryContent`;中文 1 字算 1,不是按字节)。超了会被 `substring(0,1e4)` 截断并写明「先整理再干活」——即整段尾部静默丢失。日常日志与本 details **不参与注入**,可以随便写。现值见 `wc -m`,留 20% 余量。 @@ -31,7 +31,11 @@ - `tileDigits` 补前导 0;`tileName` 尾缀 `len(s)-2` 单数字编号时为 -1 ⇒ panic;解码守卫 `len(name)<8`。 - `fogIndexV` 必须 `atomic.Pointer`(普通指针=真 data race)。`fog_race_test.go`(-race) -## 前端 / 模板 / CSS(details 六~八、十七、廿三、廿八D) +## 前端 / 模板 / CSS(details 六~八、十七、廿三、廿八D、卅七) +- ⚠️ **对访客公开的块,措辞必须按身份分支**(`{{if .IsAdmin}}我的…{{else}}站长…{{end}}`): + 写模板时人站在站长视角下笔,「我的结论 / 你自己 / 我推荐的地点」露给访客就没人读得懂。 + 照 `place.html` 投票区与 `rond-map.js` 气泡的写法。门禁 `TestVisitorPagesUseThirdPersonCopy` + (以访客 ctx 渲染 `/`、`/stats`、`/report` 逐个断言禁用词,并确认站长那份仍说「我的」)。 - 改 Go 必须重启;模板/CSS/JS 只在 `debug=true` 热加载(`AssetV` 启动哈希)。 - 拼查询串走返回 `template.URL` 的方法(`PlaceLink`/`EditPlaceLink`/`MapLink`/`EditLink`),勿手工转义。 - 窄屏覆盖写 `app.css` **末尾那块**;宽表堆叠类名**成对** `class="tb tb-stack"`;触控 44px。`tb_stack_test.go` diff --git a/internal/web/templates/home.html b/internal/web/templates/home.html index fe16942..6c36831 100644 --- a/internal/web/templates/home.html +++ b/internal/web/templates/home.html @@ -113,7 +113,7 @@ {{if and (.Settings.Has "tags") .Tags}}