fix(risk/report): close Phase 17 KEEP-VERIFY/EXTEND — 6 defects + 1 hidden compile defect (jakarta) + test-coverage blind zone (3 missing tables); add sensitive-access audit + ReportAndRiskPhase17IntegrationTest (7); full regression 488 green
This commit is contained in:
@@ -358,3 +358,56 @@ CREATE TABLE matchmaker_followups (
|
||||
deleted_at TIMESTAMP WITH TIME ZONE
|
||||
);
|
||||
|
||||
-- Phase 17:举报与风控三表(与 V012__add_risk_and_report_tables.sql 生产 DDL 对齐)。
|
||||
-- 此前完全缺失 → ReportService / RiskReferralService 整条真实 DB 路径零覆盖,
|
||||
-- 且 ReportServiceTest 只能写 assertTrue(true) 假绿。已补入并移出 TEST_SCHEMA_OPTIONAL_TABLES 白名单。
|
||||
-- 注意:H2 无 operators 表,故去掉生产 DDL 中的 REFERENCES operators(id) 外键;
|
||||
-- 保留 status / action_type 的 CHECK 约束,防止非法取值在测试期被静默放过(同 Phase 14/15/16 原则)。
|
||||
CREATE TABLE reports (
|
||||
id VARCHAR(36) PRIMARY KEY,
|
||||
reporter_user_id VARCHAR(36) NOT NULL,
|
||||
reported_user_id VARCHAR(36),
|
||||
reason_type VARCHAR(64) NOT NULL,
|
||||
description CLOB,
|
||||
evidence_file_ids CLOB,
|
||||
status VARCHAR(32) NOT NULL DEFAULT 'pending',
|
||||
process_result VARCHAR(64),
|
||||
processed_by VARCHAR(36),
|
||||
processed_at TIMESTAMP WITH TIME ZONE,
|
||||
process_note CLOB,
|
||||
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW(),
|
||||
updated_at TIMESTAMP WITH TIME ZONE,
|
||||
deleted_at TIMESTAMP WITH TIME ZONE,
|
||||
CONSTRAINT chk_report_status CHECK (status IN ('pending', 'processing', 'resolved', 'rejected', 'dismissed'))
|
||||
);
|
||||
|
||||
CREATE TABLE risk_events (
|
||||
id VARCHAR(36) PRIMARY KEY,
|
||||
user_id VARCHAR(36) NOT NULL,
|
||||
event_type VARCHAR(64) NOT NULL,
|
||||
score INT NOT NULL DEFAULT 0,
|
||||
source VARCHAR(32) NOT NULL DEFAULT 'auto',
|
||||
source_id VARCHAR(128),
|
||||
note CLOB,
|
||||
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW(),
|
||||
updated_at TIMESTAMP WITH TIME ZONE,
|
||||
deleted_at TIMESTAMP WITH TIME ZONE
|
||||
);
|
||||
|
||||
CREATE TABLE risk_actions (
|
||||
id VARCHAR(36) PRIMARY KEY,
|
||||
user_id VARCHAR(36) NOT NULL,
|
||||
action_type VARCHAR(64) NOT NULL,
|
||||
reason VARCHAR(256) NOT NULL,
|
||||
reason_detail CLOB,
|
||||
created_by VARCHAR(36) NOT NULL,
|
||||
effective_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW(),
|
||||
expires_at TIMESTAMP WITH TIME ZONE,
|
||||
status VARCHAR(32) NOT NULL DEFAULT 'active',
|
||||
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW(),
|
||||
updated_at TIMESTAMP WITH TIME ZONE,
|
||||
deleted_at TIMESTAMP WITH TIME ZONE,
|
||||
CONSTRAINT chk_risk_action_type CHECK (action_type IN ('warning', 'feature_limit', 'temporary_suspend', 'ban')),
|
||||
CONSTRAINT chk_risk_action_status CHECK (status IN ('active', 'resolved', 'expired'))
|
||||
);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user