-- PAR v2 新增表 + 字段 -- 站点标签 ALTER TABLE sites ADD COLUMN tags JSON NULL COMMENT '标签列表' AFTER description; -- 站点页面配置(mediabot 页面入口) CREATE TABLE IF NOT EXISTS site_pages ( id BIGINT AUTO_INCREMENT PRIMARY KEY, site_id VARCHAR(64) NOT NULL, version VARCHAR(20) NOT NULL DEFAULT '1.0.0', entries_json LONGTEXT NOT NULL, deleted TINYINT NOT NULL DEFAULT 0, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, INDEX idx_site_id (site_id, deleted) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- 风险保号规则(按站点类型组织) CREATE TABLE IF NOT EXISTS risk_rules ( id BIGINT AUTO_INCREMENT PRIMARY KEY, site_type VARCHAR(32) NOT NULL, version INT NOT NULL DEFAULT 1, rules_json LONGTEXT NOT NULL, deleted TINYINT NOT NULL DEFAULT 0, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, INDEX idx_site_type (site_type, deleted) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- 示例数据:NexusPHP 页面入口 INSERT INTO site_pages (site_id, version, entries_json) VALUES ('default-nexusphp', '1.0.0', '[ {"key":"home", "label":"首页", "url":"{base}", "method":"GET"}, {"key":"search", "label":"搜索页", "url":"{base}/torrents.php", "method":"GET"}, {"key":"detail", "label":"种子详情", "url":"{base}/details.php?id=", "method":"GET"}, {"key":"signIn", "label":"签到页", "url":"{base}/attendance.php", "method":"POST"}, {"key":"user", "label":"用户详情", "url":"{base}/userdetails.php?id=","method":"GET"} ]'); -- 示例数据:NexusPHP 风险规则 INSERT INTO risk_rules (site_type, version, rules_json) VALUES ('nexusphp', 1, '[ {"type":"KILL","name":"登录间隔超过30天","metric":"daysSinceLastLogin","threshold":30,"unit":"DAY","condition":"GT","level":"CRITICAL"}, {"type":"RATIO","name":"分享率低于0.3","metric":"shareRatio","threshold":0.3,"condition":"LT","level":"CRITICAL","applicable":{"daysSinceRegistration":30}}, {"type":"TRAFFIC","name":"超过5天无流量","metric":"daysSinceLastTraffic","threshold":5,"unit":"DAY","condition":"GT","level":"WARN","applicable":{"daysSinceRegistration":30}} ]');