36 lines
2.0 KiB
SQL
36 lines
2.0 KiB
SQL
-- Sensitive words, hit audit, account send mute.
|
||
|
||
ALTER TABLE t_users
|
||
ADD COLUMN send_muted_until DATETIME(3) NULL
|
||
COMMENT '全站禁言截止时间,空或已过期表示可发消息';
|
||
|
||
CREATE TABLE IF NOT EXISTS t_sensitive_words (
|
||
id BIGINT NOT NULL AUTO_INCREMENT COMMENT '行 id,表内自增',
|
||
word_raw VARCHAR(64) NOT NULL COMMENT '运营录入原文,展示用',
|
||
word VARCHAR(64) NOT NULL COMMENT 'FoldAndIndex 后的词面,全局唯一,进自动机',
|
||
category TINYINT NOT NULL COMMENT '1涉黑 2涉毒 3涉黄 4涉赌 5涉政 6宗教 7辱骂 8广告 9其他',
|
||
action TINYINT NOT NULL COMMENT '1log 2replace 3reject 4hide 5mute 6disable',
|
||
mute_seconds INT NOT NULL DEFAULT 0 COMMENT 'action=mute 时的禁言秒数',
|
||
enabled TINYINT NOT NULL DEFAULT 1 COMMENT '1启用 0下线(不进自动机)',
|
||
created_at DATETIME(3) NOT NULL COMMENT '创建时间',
|
||
updated_at DATETIME(3) NOT NULL COMMENT '更新时间',
|
||
PRIMARY KEY (id),
|
||
UNIQUE KEY uk_word (word)
|
||
) COMMENT='敏感词;发送热路径使用进程内自动机,本表为真源';
|
||
|
||
CREATE TABLE IF NOT EXISTS t_sensitive_hits (
|
||
id BIGINT NOT NULL COMMENT 'Snowflake',
|
||
user_id BIGINT NOT NULL COMMENT '发送者 uid',
|
||
conversation_id BIGINT NOT NULL DEFAULT 0 COMMENT '会话 id',
|
||
word_id BIGINT NOT NULL COMMENT 't_sensitive_words.id',
|
||
category TINYINT NOT NULL COMMENT '命中时的类别快照',
|
||
action TINYINT NOT NULL COMMENT '本行对应词的 action',
|
||
excerpt VARCHAR(128) NOT NULL DEFAULT '' COMMENT '命中片段,截断',
|
||
real_ip VARCHAR(64) NOT NULL DEFAULT '' COMMENT 'PROXY RealIP',
|
||
created_at DATETIME(3) NOT NULL COMMENT '命中时间',
|
||
PRIMARY KEY (id),
|
||
KEY idx_user_created (user_id, created_at),
|
||
KEY idx_created (created_at),
|
||
KEY idx_word (word_id)
|
||
) COMMENT='敏感词命中审计,供 Admin 查询';
|