- 操作日志: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 页/新弹窗/复制/保留)
22 lines
1.4 KiB
SQL
22 lines
1.4 KiB
SQL
-- 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;
|