feat: mediabo接口实现(pages/scripts/risk-rules)+DB迁移脚本

This commit is contained in:
mediabot-pt
2026-07-04 23:35:45 +08:00
parent c0fc17cf05
commit 2ced6f5dcb
13 changed files with 572 additions and 0 deletions

42
docs/migration_v2.sql Normal file
View File

@@ -0,0 +1,42 @@
-- PAR v2 新增表
-- 站点页面配置(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}}
]');