73 lines
2.8 KiB
SQL
73 lines
2.8 KiB
SQL
CREATE TABLE IF NOT EXISTS reports (
|
|
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
reporter_user_id BIGINT UNSIGNED NOT NULL,
|
|
target_type VARCHAR(30) NOT NULL,
|
|
target_id BIGINT UNSIGNED NOT NULL,
|
|
reason_code VARCHAR(50) NOT NULL,
|
|
description VARCHAR(1000) NOT NULL DEFAULT '',
|
|
evidence_json JSON NULL,
|
|
status VARCHAR(20) NOT NULL DEFAULT 'PENDING',
|
|
handled_by BIGINT UNSIGNED NULL,
|
|
handled_at DATETIME(3) NULL,
|
|
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
PRIMARY KEY (id),
|
|
KEY idx_reports_status_created (status, created_at)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
CREATE TABLE IF NOT EXISTS moderation_tasks (
|
|
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
target_type VARCHAR(30) NOT NULL,
|
|
target_id BIGINT UNSIGNED NOT NULL,
|
|
content_type VARCHAR(30) NOT NULL,
|
|
risk_score INT NOT NULL DEFAULT 0,
|
|
machine_result JSON NULL,
|
|
status VARCHAR(20) NOT NULL DEFAULT 'PENDING',
|
|
reviewer_id BIGINT UNSIGNED NULL,
|
|
review_result VARCHAR(255) NOT NULL DEFAULT '',
|
|
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
reviewed_at DATETIME(3) NULL,
|
|
PRIMARY KEY (id),
|
|
KEY idx_moderation_status_created (status, created_at)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
CREATE TABLE IF NOT EXISTS user_risk_profiles (
|
|
user_id BIGINT UNSIGNED NOT NULL,
|
|
risk_score INT NOT NULL DEFAULT 0,
|
|
risk_level TINYINT UNSIGNED NOT NULL DEFAULT 0,
|
|
message_score INT NOT NULL DEFAULT 0,
|
|
device_score INT NOT NULL DEFAULT 0,
|
|
report_score INT NOT NULL DEFAULT 0,
|
|
behavior_score INT NOT NULL DEFAULT 0,
|
|
updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
|
|
PRIMARY KEY (user_id),
|
|
KEY idx_risk_level_score (risk_level, risk_score)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
CREATE TABLE IF NOT EXISTS risk_events (
|
|
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
user_id BIGINT UNSIGNED NOT NULL,
|
|
event_type VARCHAR(50) NOT NULL,
|
|
score_delta INT NOT NULL,
|
|
device_id VARCHAR(100) NOT NULL DEFAULT '',
|
|
ip VARCHAR(45) NOT NULL DEFAULT '',
|
|
metadata JSON NULL,
|
|
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
PRIMARY KEY (id),
|
|
KEY idx_risk_event_user_created (user_id, created_at)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
CREATE TABLE IF NOT EXISTS notifications (
|
|
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
user_id BIGINT UNSIGNED NOT NULL,
|
|
type VARCHAR(30) NOT NULL,
|
|
title VARCHAR(100) NOT NULL,
|
|
content VARCHAR(1000) NOT NULL,
|
|
biz_type VARCHAR(30) NOT NULL DEFAULT '',
|
|
biz_id BIGINT UNSIGNED NULL,
|
|
read_at DATETIME(3) NULL,
|
|
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
PRIMARY KEY (id),
|
|
KEY idx_notify_user_read_created (user_id, read_at, created_at)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|