feat(cards): 完善卡片与授权默认配置 - #768
Conversation
deepcoldy
left a comment
There was a problem hiding this comment.
结论:请求修改。核心数据流与 Dashboard 交互基本成立,但本 PR 要澄清的额度契约尚未覆盖所有公开配置入口。
-
额度“未配置”语义仍在群内
/botconfig和公开文档中错误显示为“不限”。buildConfigCard在quota == null时选择card.config.quota_off,而中英文文案仍是“不限 / Unlimited”(src/im/lark/card-builder.ts:105-114、src/i18n/zh.ts:450-451、src/i18n/en.ts:447-448)。实际上未配置时,新授权卡会取 3 条,只有 Oncall 不限。docs-site/docs/{zh,en}/bots-json.md:151也仍写成“不配则授权无限”。请把这些用户可见入口统一为“授权卡 3 条 / Oncall 不限”的真实契约,并补相应测试。 -
/botconfig的额度下拉无法表示 Dashboard 当前允许保存的值。 它的 options 只有off,5,10,20,50,100,但initial_option直接使用任意已存额度。Dashboard 接受 1–1000,历史值还可能 >1000,所以 3、12、1000、5000 等都会产生“不在 options 中的 initial_option”;这与本 PR 为授权卡修复的 orphan initial-option 问题同类。请让群内配置卡能安全展示任意合法/legacy 当前值,且 legacy >1000 的卡片夹取 1000、Oncall 保留原值的差异要可解释,避免整张卡无效或当前态误导。
已确认无问题的部分:
- 未配置时授权卡 3 条、Oncall 不限;配置后两处共用额度,运行时分支一致。
- legacy >1000 在新授权卡表单中夹到 1000,Oncall 仍使用原值;Dashboard 单改时长不会覆盖 legacy 额度。
grantDefaultDurationMs的解析、持久化、内存同步、自动申请卡和 owner/grant两条消费链路一致;pending 与卡片初值同步。- 卡片设置 UI 的两个反相开关、失败回滚、单飞保存和无障碍错误状态逻辑正确。
- 与最新
origin/master三方合并无冲突,git diff --check通过。
验证:
BOTMUX_NO_CLAIM=1 pnpm build:通过。- 13 个相关测试文件:686/686 通过。
pnpm test:12643 通过、20 跳过;group-join-shared-routing的beforeAll在并发全量运行时一次 10s 超时,隔离重跑 14/14 通过。- 当前 PR 无 CI checks。
流程项:这是 Dashboard UI 重构,PR 描述目前没有实际截图;请按仓库规范补充截图示意。
保留公开卡片和手动 /card 的既有语义,避免新配置改变老机器人的默认行为。\n\n补充授权卡默认时长和额度控制,并将后台交互收敛为熟悉的配置结构,降低升级与使用成本。
4bcd2af to
798dd46
Compare
|
已按 review 意见修正并同步到本 PR:
验证: |
统一群内配置卡与公开文档的默认额度说明,避免用户把 授权卡默认 3 条误解为全部不限。额度继续支持 1–1000 自由输入,并兼容历史超限值及已经发出的旧版下拉卡。
798dd46 to
8915008
Compare
|
补充修正:额度交互保持产品原设计,不使用固定档位下拉。
验证:相关测试 309/309、 |
改动内容
/card私密快照选项。/card按实际生效条件整理,避免互相覆盖或误解。/botconfig和中英文公开文档与上述额度语义保持一致;额度支持 1–1000 自由输入,主卡展示当前值和历史超限值的兼容规则。/grant @用户 N不受配置变更影响。为什么
原配置把自动卡片、手动
/card和无卡片反馈放在同一层级,用户难以判断开关的作用范围;同时授权卡默认时长只能在卡片中逐次调整,后台无法统一配置。这次保持公开卡片、
privateCard、disableStreamingCard的既有存储语义,新增字段均为可选配置,避免升级后改变老机器人的行为。影响面
/grant @用户生成的授权卡与/botconfig配置卡。界面截图
消息卡片
授权与额度
验证
BOTMUX_NO_CLAIM=1 pnpm build:通过。pnpm test:全量并发运行仍会出现本 PR 之外的 integration 时序超时;额度、卡片、回调与消息解析相关用例隔离运行全部通过。git diff --check:通过。pnpm switch:here && pnpm daemon:restart:daemon 与 Dashboard 均 online。