feat(channels): 按账号连接/断开 + 可删空 id 条目(修主人真机踩的两个缺口)
缺口①:「连接」是按平台连、且恒打第一条账号(channelActionRequest 只有 name)⇒ 主人有两条
qq-obv11 时点到的是 mode=server 的历史条目,报 server mode requires listenAddr,而正确的
client 条目轮不到。缺口②:空 id 条目既删不掉(DELETE 要求 id 非空)也改不了(UpsertChannel
空 id = 新建),越改越多。
后端:
- POST /admin/channels/open|close 请求体新增可选 accountId(缺省逐字兼容,老客户端零影响);
按该账号驱动;未知 id ⇒ 404 且零连接(不静默回落第一条);已配置未注册 ⇒ 409
- DELETE /admin/channels/{platform}/config 新增显式 empty=1(id 与 empty=1 互斥 ⇒ 400;
无可删 ⇒ 404);语义严格 —— 只删空 id 条目,绝不把「id 为空」默认解释成删空 id
- 响应新增:open/close 的 resolved(实际驱动的适配器名)与 accountId;delete 的 removed/empty;
GET /admin/channels 的 accounts[].connected(可选 bool,缺省 = 未知)
- 审计动作名不变(channel.open/close/delete),日志行新增 accountId 字段
前端:每条账号一行「连接/断开」(带 accountId);按钮旁明确「会连哪一条」;空 id 行显著标注
+ 删除入口;channelActionBody 携带 accountId;新增 action 测试 33 checks + 空 id 行渲染 31 checks。
测试:后端 14 个用例(真实 HTTP 路由 + JWT + 真注册表 + spy 适配器,断言「哪一条被驱动、
另一条一次都没被碰」)。
变异 6 条(accountId 被忽略 / id 为空当删空 id / 找不到静默回落 / 前端丢 accountId /
删空 id 退化成 ?id= / 空 id 行按普通行渲染)。
This commit is contained in:
1 parent
c4ea02a887
commit
42279b7124
21 files changed
+1719
-164
No files matched your search
@@ -44,6 +44,8 @@ export interface TagProps {
|
||||
tone?: TagTone;
|
||||
children: ReactNode;
|
||||
className?: string;
|
||||
/** 原生 title:给标签补充「为什么」的悬停说明(如无 id 条目的后果)。 */
|
||||
title?: string;
|
||||
}
|
||||
|
||||
const tagTone: Record<TagTone, string> = {
|
||||
@@ -54,9 +56,10 @@ const tagTone: Record<TagTone, string> = {
|
||||
neutral: "bg-[var(--mu-surface-4)] text-[var(--mu-text-mid)]",
|
||||
};
|
||||
|
||||
export function Tag({ tone = "neutral", children, className = "" }: TagProps): React.ReactNode {
|
||||
export function Tag({ tone = "neutral", children, className = "", title }: TagProps): React.ReactNode {
|
||||
return (
|
||||
<span
|
||||
title={title}
|
||||
className={`inline-flex items-center gap-1 rounded-[var(--mu-radius-sm)] px-2 py-0.5 text-xs font-medium ${tagTone[tone]} ${className}`}
|
||||
>
|
||||
{children}
|
||||
|
||||
Reference in new issue
Block a user