admin-memo-per-admin

20260916-201504 轮 · 看它的历史
靶子 http://localhost:20098
跑前快照: uid 1 = null, uid 990986 = null

── ① 超管保存
  ✅ 工作台上有备忘录输入框(守卫,否则下面全是恒真)
  ✅ 点保存后出现「已保存」提示(中间产物)
       提示="已保存 · 20:17:54"
  ✅ 库里出现 uid=1 的那一行
       行数=1
  ✅ uid=1 的内容 === 刚写的

── ② 隔离
  ✅ 超管看到的标识含自己的账号名(admin)
       实际 "admin 的随手记"
  ✅ 受限管理员看到的标识含自己的账号名(e2e_admin10)
       实际 "e2e_admin10 的随手记"
  ✅ 两人看到的标识不是同一句(守卫:写死名字时上面两条会同时为真)
       A="admin 的随手记"  B="e2e_admin10 的随手记"
  ✅ 受限管理员看不到超管刚写的内容
       实际看到 ""
  ✅ 受限管理员本来就没有备忘录 → 输入框为空
  ✅ 受限管理员保存后出现「已保存」提示
       提示="已保存 · 20:17:56"
  ✅ 库里现在恰好两行(两位管理员各一行)
  ✅ uid=990986 的内容 === B 写的
  ✅ B 保存后,A 的内容【没有】被覆盖
       实际 "超管的便条 A 1789561071912"
  ✅ A 刷新页面后看到的仍是自己的内容
  ✅ B 刷新页面后看到的仍是自己的内容

── ③ 特殊字符
  ✅ 含 & + % 的内容保存后出现「已保存」
       提示="已保存 · 20:17:59"
  ✅ 库里逐字等于写进去的(& 没被截断、+ 没变空格、% 没被解码)
       实际 "订单A&B 待处理 + 60% #tag"
  ✅ 页面回显也逐字相等(出口转义没有二次编码)

── ③b 失焦自动保存
  ✅ 只失焦、没点保存按钮,也出现了「已保存」提示
       提示="已保存 · 20:18:00"
  ✅ 失焦保存真的落库了
       实际 "失焦自动存 1789561080358"
  ✅ 失焦路径可重复使用(内容换回特殊字符那份)

── ④ GET 打这个端点不许清空备忘录
  ✅ GET 的响应不是成功(info !== "1")
       info="保存备忘录只接受 POST 提交"
  ✅ GET 之后备忘录内容一个字都没变
       实际 "订单A&B 待处理 + 60% #tag"
  ✅ [还原] uid=1 的备忘录回到跑前状态
       期望 null,实际 null
  ✅ [还原] uid=990986 的备忘录回到跑前状态
       期望 null,实际 null

[还原] e2e_admin10.userauth = [12,2,66,65,3]  ✔

PASS=25 FAIL=0