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:
@@ -0,0 +1,21 @@
|
||||
-- v2.5.0:操作日志 + 邮件「保留」(不再过期)
|
||||
-- - operation_logs:记录 Console 内所有人工/系统操作(账号 / 域名 / 邮箱 / Webhook),
|
||||
-- 供「日志」页回看;detail 只存非敏感元信息(secret/token 永不入库该表)。
|
||||
-- - emails.retained:1 = 用户点「保留」,过期清理(Cron TTL)跳过该邮件,永不过期。
|
||||
|
||||
/** # 数据库表:操作日志(Console 内所有操作的审计流水) **/
|
||||
CREATE TABLE IF NOT EXISTS operation_logs (
|
||||
id TEXT PRIMARY KEY,
|
||||
action TEXT NOT NULL, -- account.create / account.delete / domain.setup / mailbox.create / webhook.save / webhook.deliver ...
|
||||
target_type TEXT NOT NULL, -- account | domain | mailbox | email | webhook
|
||||
target_id TEXT, -- 被操作资源 id(全局 webhook 等无 id 时为 NULL)
|
||||
target_name TEXT, -- 展示名(账号名 / 域名 / 邮箱地址 / webhook url)
|
||||
detail TEXT, -- JSON 补充信息(不含任何 secret)
|
||||
operator TEXT NOT NULL DEFAULT '', -- 操作账号(Console 登录名;系统自动操作为 system)
|
||||
created_at TEXT NOT NULL
|
||||
);
|
||||
CREATE INDEX IF NOT EXISTS idx_operation_logs_created ON operation_logs(created_at DESC);
|
||||
CREATE INDEX IF NOT EXISTS idx_operation_logs_type ON operation_logs(target_type);
|
||||
|
||||
-- 邮件保留标记(1 = 永不过期,Cron TTL 清理跳过)
|
||||
ALTER TABLE emails ADD COLUMN retained INTEGER NOT NULL DEFAULT 0;
|
||||
Reference in New Issue
Block a user