v2.5.0:操作日志 + 邮件保留 + 账号弹窗精简 + 复制按钮推广
- 操作日志:operation_logs 表(0004 迁移)记录 账号/域名/邮箱/Webhook 全部写操作, 含操作账号(Console 登录名,系统动作为 system);/logs 日志页(类型筛选+搜索+分页); 上限 10000 条,Cron housekeeping 超限删最旧 - 邮件保留:emails.retained;POST /api/emails/retain(单条/批量); TTL 清理与 Webhook 投递过期判定均跳过已保留;/inboxs 操作列图钉按钮 + 批量保留 - 添加账号弹窗:OAuth 与 API Token 同窗按钮组切换,去掉说明文字与账户 ID 字段 (账户 ID 以 Token 实际所属账户为准);账号列表去掉 Email Worker 列 - 复制按钮推广:CopyText 组件;/domains 域名列、/inboxs 发件人与收件人(原「邮箱」改名)列 - 测试:104 bun tests(+10 日志/保留)、ui-smoke 35 项(+logs 页/新弹窗/复制/保留)
This commit is contained in:
@@ -704,6 +704,16 @@ describe("API Token 方式添加账号(与 OAuth 并列的第二种接入方式)
|
||||
expect(conn?.provider).toBe("cloudflare-token");
|
||||
expect(conn!.encrypted_access_token).not.toContain("cf-user-api-token-abc");
|
||||
expect(conn!.expires_at).toBeNull(); // API Token 长期有效
|
||||
|
||||
// 操作日志:v2.5.0 起账号接入记 operation_logs(操作账号/动作/对象)
|
||||
const log = await t.env.DB.prepare(
|
||||
"SELECT action, target_id, target_name, operator FROM operation_logs WHERE target_id = ?",
|
||||
)
|
||||
.bind(body.account_id)
|
||||
.first<{ action: string; target_id: string; target_name: string; operator: string }>();
|
||||
expect(log?.action).toBe("account.create");
|
||||
expect(log?.target_name).toBe("我的主账号");
|
||||
expect(log?.operator).toBe("admin");
|
||||
});
|
||||
|
||||
test("Token 无效 / 账户 ID 对不上:当场报错,不留下僵尸账号", async () => {
|
||||
|
||||
Reference in New Issue
Block a user