docs: capture qdreader plugin menu patterns
This commit is contained in:
@@ -523,3 +523,65 @@ Content-Type: application/json
|
||||
- SimAdmin API 业务失败要检查 JSON 内 `status === "error"`。
|
||||
- 发送短信必须 token 或管理员控制。
|
||||
- Base URL 默认不带尾部 `/`,代码内统一 trim。
|
||||
## 13. 账号/Cookie 类插件菜单设计经验(QDReader 复盘)
|
||||
|
||||
最近制作 `plugins/qdreader/qdreader_sign_autman.js` 时沉淀出一套适用于账号/Cookie 管理类插件的交互与数据规则,后续新插件优先复用:
|
||||
|
||||
### 13.1 交互结构
|
||||
|
||||
- 优先做“一级菜单 + 二级编号选择”,不要堆很多平铺子命令。
|
||||
- 账号管理和执行查询分离:
|
||||
- `xxx账号`:只做账号列表、添加/更新、详情/备注、删除、清空。
|
||||
- `xxx查询`:只做最近执行情况、单账号执行情况、立即执行等执行侧动作。
|
||||
- 高频输入可以保留快速通道,例如 `xxxck <cookie>`,但快速通道只做快速提交,不再混入查询/导出/批量导入。
|
||||
- 用户选择账号时展示编号列表,让用户回复编号;不要让用户手动复制/输入 UID。
|
||||
- 添加/更新账号成功后立刻询问是否添加备注;备注修改放在账号详情里,不单独做一个割裂的备注菜单。
|
||||
|
||||
### 13.2 数据结构
|
||||
|
||||
账号/Cookie 类插件不要把 Cookie、用户绑定、备注、执行状态混在一起,建议拆成独立 map:
|
||||
|
||||
```json
|
||||
// cookie_json
|
||||
{ "uid": "full cookie" }
|
||||
|
||||
// user_bind_json
|
||||
{ "uid": "sender.getUserID()" }
|
||||
|
||||
// remark_json
|
||||
{ "uid": "主号" }
|
||||
|
||||
// last_result_json
|
||||
{ "uid": "{\"ok\":true,\"msg\":\"成功\",\"time\":\"...\"}" }
|
||||
```
|
||||
|
||||
这样删除、过滤、展示和权限校验更安全。
|
||||
|
||||
### 13.3 数据桶
|
||||
|
||||
- 新插件应创建自己的 bucket,例如 `hermes_qidian`,不要所有插件都塞进 `otto`。
|
||||
- 如需兼容旧数据,读顺序建议:
|
||||
|
||||
```text
|
||||
bucketGet("插件专属bucket", key)
|
||||
↓ fallback
|
||||
get(key)
|
||||
↓ fallback
|
||||
bucketGet("otto", key)
|
||||
```
|
||||
|
||||
- 写入新数据时写到专属 bucket,可同时写普通 `set(key)` 保持兼容。
|
||||
|
||||
### 13.4 多用户隔离
|
||||
|
||||
- 保存账号时绑定当前用户 ID。
|
||||
- 账号列表、详情、删除、手动执行只处理当前用户绑定的账号。
|
||||
- `删除全部` 只删除当前用户账号,不清空全局数据。
|
||||
- cron/系统触发通常没有用户上下文,是否执行全部账号要显式传 `allUsers` 参数,并在代码和测试里说明。
|
||||
|
||||
### 13.5 安全与测试
|
||||
|
||||
- 普通回复永远不要输出完整 Cookie;只展示脱敏 UID、备注、Cookie key 摘要或长度。
|
||||
- 高风险的导出/批量导入功能默认不做,除非 BOSS 明确需要。
|
||||
- Node VM 测试应模拟:`sender.reply`、`sender.listen`、`sender.getUserID`、`get/set`、`bucketGet/bucketSet`、`request`。
|
||||
- 测试必须覆盖:快速提交、菜单添加、备注提示、详情改备注、编号选择删除/查询、旧 bucket 兼容、新 bucket 写入、用户隔离、手动执行只跑当前用户、cron 跑全部账号。
|
||||
|
||||
Reference in New Issue
Block a user