Commit Graph

418 Commits

Author SHA1 Message Date
mediabot-pt
1436f81667 feat: 快照API响应增加顶层version字段,与check接口保持一致 2026-07-07 22:49:03 +08:00
mediabot-pt
dfbedcf09d fix: Qiniu 上传令牌改为 key 作用域,支持覆盖已有文件 2026-07-07 18:16:05 +08:00
mediabot-pt
f2fd0ce2a0 revert: 风险规则不需要默认模板 fallback 2026-07-07 18:04:33 +08:00
mediabot-pt
4bbaa0cd1c fix: buildSnapshot 风险规则补上默认模板 fallback 2026-07-07 18:04:07 +08:00
mediabot-pt
45f16f2b54 refactor: 统一所有页面按钮文案,合并上传逻辑到保存
1. Sites.vue: '保存' → '保存预览版'
2. SitePages.vue: '保存' → '保存预览版',移除上传按钮和uploadPages函数
3. AccessResultCheck.vue: 两处'保存' → '保存预览版'
4. SitePagesController: savePages/saveDefaultPages 直接包含CDN上传,移除 /upload 端点
2026-07-07 18:02:22 +08:00
mediabot-pt
51e9341748 fix: 风险规则保存按钮文案改为'保存预览版' 2026-07-07 17:58:46 +08:00
mediabot-pt
ec37369bc2 refactor: 合并上传到保存按钮,去掉上传按钮
1. 后端 saveRules/saveDefaultRules 接口直接包含 CDN 上传逻辑
2. 移除独立的 /upload 端点(风险规则 + 默认规则)
3. 前端去掉上传按钮和 uploadRules 函数
4. 现在只需保存→发布正式版两步即可完成
2026-07-07 17:57:20 +08:00
mediabot-pt
40eea42710 fix: 上传风险规则后同步更新站点快照,解决状态仍显示未发布的问题
1. 后端 RiskRuleServiceImpl:将 updateSnapshotsByType 从异步事件改为同步调用 snapshotService.updateSnapshot
2. 前端 RiskRules.vue:上传按钮成功后调用 fetchSnapshotStatus 刷新状态标签
2026-07-07 17:54:37 +08:00
mediabot-pt
5777a02823 revert: 回退自动删除旧快照的逻辑,保留完整历史版本供人工恢复 2026-07-07 13:24:03 +08:00
mediabot-pt
2c126a6ec5 fix: 保存/发布快照时清理同状态旧记录,每个站点每种状态最多保留一条 2026-07-07 13:23:13 +08:00
mediabot-pt
e953e9a7fd refactor: 合并保存按钮,点击保存即自动保存源数据+拍快照 2026-07-07 13:19:50 +08:00
mediabot-pt
e659b9bca6 refactor: 保存预览版自动先保存源数据,简化操作一步完成 2026-07-07 13:16:34 +08:00
mediabot-pt
6505f621d1 feat: 编辑器增加「重置」和「丢弃预览版」按钮,支持回退预览版快照 2026-07-07 13:12:19 +08:00
mediabot-pt
e99de15703 feat: 编辑器增加版本状态(预览版/正式版)和未保存提示 2026-07-07 12:19:18 +08:00
mediabot-pt
090fab8883 docs: 更新 API.md 和 mediabot-api-migration.md,补充快照接口和两阶段发布说明\n\n1. API.md 新增 2.6 站点快照接口(/snapshots/{siteId}、/check)\n2. API.md 补充 ?preview 参数说明\n3. API.md 新增 SiteSnapshot 数据结构\n4. API.md 更新 4.3 工作流程为两阶段发布\n5. mediabot-api-migration.md 补充 preview 参数说明\n6. mediabot-api-migration.md 新增第六章:预览模式与两阶段发布\n7. mediabot-api-migration.md 补充 checksum 字段到 Bundle JSON 结构" 2026-07-07 11:53:46 +08:00
mediabot-pt
ebfb6395db refactor: 合并三级缓存为统一缓存 + 重命名 saveDraft → savePreview
1. 三个 Caffeine Cache 合并为一个 jsonCache,key 用 :published/:draft 后缀区分
2. saveDraft → savePreview,更准确反映「预览版」语义(非临时草稿)
3. getPreviewBundleJson 去掉独立缓存,直接查 DB(preview 是 draft+published 逻辑并集,缓存意义不大)
4. 前端按钮「保存草稿」→「保存预览版」,API 路径 /save-draft → /save-preview
2026-07-07 11:45:04 +08:00
mediabot-pt
3cc7b932a8 fix: 修复快照两阶段发布方案的缓存一致性和前端问题
1. updateSnapshot() 自动触发生成 draft 后刷新 draft/preview 缓存
2. saveDraft() 同时刷新 previewJsonCache
3. 前端编辑页新增「保存站点」按钮,确保站点基本信息可持久化
4. publishManifest() 兼容 bundle 改用缓存 JSON,避免重复 buildSnapshot
2026-07-07 11:43:06 +08:00
mediabot-pt
e839fe9bba perf: preview查询改为一条SQL(draft优先,无则published),独立preview缓存 2026-07-07 11:39:42 +08:00
mediabot-pt
e15e242153 fix: preview模式改为draft优先fallback到published(正式版+预览版并集) 2026-07-07 11:38:52 +08:00
mediabot-pt
5f58083074 feat: 快照改为预览版/正式版两阶段发布 - 新增 saveDraft 接口手动保存草稿快照 - 新增 getDraftBundleJson 方法读取预览版(Caffeine缓存) - SnapshotController 支持 ?preview=true 参数读取 draft - 前端编辑页改为'保存草稿'+'发布正式版'两个按钮 - AdminController 新增单站点 save-draft/publish 接口 - 复用 populateSnapshotFields 消除重复代码 2026-07-07 11:36:38 +08:00
mediabot-pt
820b180d87 perf: 优化快照接口——缓存预序列化 JSON,消除重复序列化
- Caffeine 缓存改为存储 bundle JSON 字符串而非 SiteSnapshot 对象(减少内存占用)
- 新增 getActiveBundleJson 方法,SnapshotController 直接使用缓存 JSON
- bundle JSON 新增 checksum 字段,ETag 比较无需额外查库
- 删除 SnapshotController.toJson 重复序列化代码
- publish 时复用已序列化的 JSON 上传 CDN
2026-07-07 11:28:28 +08:00
mediabot-pt
9f94b53753 perf: 为 SiteSnapshotService.getActive 增加 Caffeine 本地缓存
- 缓存过期时间 10 分钟,最大 500 条
- publish 时主动刷新缓存,确保最新配置立即可用
- 避免 mediabot 每次请求都查数据库
2026-07-07 11:19:36 +08:00
mediabot-pt
a92ddccc46 docs: 完善接口文档可用性说明,补充 PAR Server 整体不可用时的 CDN fallback 方案 2026-07-07 11:18:15 +08:00
mediabot-pt
c823878ae0 fix: 解决 ConfigServiceImpl 与 SiteSnapshotServiceImpl 循环依赖
- 移除 SiteSnapshotServiceImpl 对 ConfigService 的依赖,直接使用 SiteConfigMapper
- ConfigServiceImpl/SitePagesServiceImpl/RiskRuleServiceImpl 改用 ApplicationEvent 异步触发快照更新
- 新增 SnapshotUpdateEvent 和 SnapshotUpdateListener
- ParApplication 添加 @EnableAsync 支持异步事件处理
- AdminController 中 updateSnapshot 调用改为发布事件
2026-07-07 11:17:22 +08:00
mediabot-pt
b25aa82c73 重构: 引入 site_snapshots 表统一站点配置快照管理
- 新增 site_snapshots 表 (V16 迁移),统一存储脚本+页面+规则的合并快照
- 新增 SiteSnapshot 实体、Mapper、Service
- 配置变更时自动触发快照更新 (checksum 去重)
- 新增 SnapshotController 提供 /api/v1/snapshots/{siteId} 端点,支持 ETag/304
- 重构 publishManifest 使用快照服务,只发布变更站点
- 保留七牛云 CDN 作为灾备层
- 兼容旧 /bundle 和 /bundles/ 路径
2026-07-07 11:09:52 +08:00
mediabot-pt
98bc5b3183 feat: 合并配置包 - publish 时生成 bundle,mediabot 下载保证版本一致 2026-07-07 10:50:37 +08:00
mediabot-pt
223528817e fix: 修复 Admin 权限校验与 GET /api/v1/configs 404 问题 2026-07-07 08:59:39 +08:00
mediabot-pt
a0780c64bb fix: 修复mediabot拉取风险规则失败的三个问题
1. HMAC拦截器跳过GET请求,mediabot拉取规则不再被401拦截
2. findByIdentifier增加site_type回退查找,兼容按site_type查询
3. saveRules自动填充site_type字段,从站点表获取
4. GET接口version参数支持非数字值如latest
2026-07-07 00:33:46 +08:00
mediabot-pt
15a3c381d0 fix: 修复risk_rules表site_type字段无默认值导致插入失败问题 2026-07-07 00:19:01 +08:00
mediabot-pt
64de9a0284 fix: 将迁移脚本中的SELECT替换为DO 0以避免Flyway处理结果集问题 2026-07-07 00:10:09 +08:00
mediabot-pt
83441e5a96 fix: 修复V15迁移脚本CREATE INDEX IF NOT EXISTS语法错误 2026-07-07 00:06:55 +08:00
mediabot-pt
c34eaed59b fix: 修复V15迁移脚本MySQL语法错误,移除不支持的IF NOT EXISTS语法 2026-07-06 23:59:15 +08:00
mediabot-pt
0b0dcb4f04 refactor: use only siteId for risk rule storage, drop type-level fallback 2026-07-06 23:52:30 +08:00
mediabot-pt
a643d976cf feat: support both site-level and type-level risk rule storage
List shows source column: site-level or type-level

Fallback: siteId rule first, then siteType rule

Save always creates site-level entry; load falls back to type-level if none exists
2026-07-06 23:51:26 +08:00
mediabot-pt
5a7b218944 fix: store risk rules per siteId instead of shared siteType 2026-07-06 23:50:23 +08:00
mediabot-pt
dde14cb73f fix: save no longer returns to list page 2026-07-06 23:39:45 +08:00
mediabot-pt
650402baf2 fix: remove fold/expand feature, always show card body
Fold was unreliable and unnecessary; body is always visible now
2026-07-06 23:33:29 +08:00
mediabot-pt
8381589388 fix: improve card fold/expand UX - single-click toggle, clear text hint
Click anywhere on header to toggle fold/expand

Right side shows '\u5c55\u5f00' or '\u6536\u8d77' text instead of tiny arrow icon

Drag handle icon stops click propagation to prevent accidental fold

Delete button uses stopPropagation to avoid triggering fold
2026-07-06 23:26:56 +08:00
mediabot-pt
1c06be991d feat: DRATIO supports multiple threshold-ratio levels
Replace single threshold+minRatio with levels array

Card header: \u4e0b\u8f7d\u91cf\u5206\u7ea7\u63a7\u5236\uff082\u7ea7\uff09

Card body: editable rows with add/delete buttons per level

Default preset: 100GB\u21921.0, 500GB\u21922.0, 1000GB\u21923.0

Auto-migrate old single-value format on load
2026-07-06 23:07:27 +08:00
mediabot-pt
1cea882d9d refactor: make applicable condition a read-only tag in card header
Applicable is preset-defined, not editable on card

Shown as grey tag after action label: \u5c01\u53f7/\u5220\u9664\u8d26\u53f7 (\u975e\u5c01\u5b58\u8d26\u53f7)

Remove applicable dropdown from card body, onApplicableChange handler
2026-07-06 23:02:16 +08:00
mediabot-pt
194ce96f39 refactor: make rule type a read-only label on card
Type is fixed by preset, no need for dropdown editing

Remove unused typeDefaults, onTypeChange functions
2026-07-06 23:00:55 +08:00
mediabot-pt
cf26f2f6b1 refactor: remove add-rule button, keep only quick-add dropdown
All rule patterns are covered by presets, no need for blank rule creation

Also fix missing Refresh icon import
2026-07-06 22:52:19 +08:00
mediabot-pt
36e05896e5 refactor: remove redundant template import dialog, keep only quick-add dropdown
Quick-add dropdown already serves the same purpose with fewer clicks
2026-07-06 22:45:16 +08:00
mediabot-pt
110af4a79c feat: prevent duplicate rules by type+applicable key
- Uniqueness key: type + applicable condition combination

- '添加规则' button warns if KILL(null) already exists

- Dropdown and template dialog disabled+greyed for already-added presets

- Import skips duplicates with warning message

- Applicable dropdown change guarded against duplicates
2026-07-06 22:44:15 +08:00
mediabot-pt
accb38986a style: add color to action labels in rule summary text
\u4fdd\u53f7=green(#67c23a), \u5c01\u53f7/\u5220\u9664\u8d26\u53f7=red(#f56c6c), \u5c01\u53f7(\u7f13\u52117\u5929)=orange(#e6a23c)
2026-07-06 22:41:55 +08:00
mediabot-pt
7ec4e16eb6 feat: add fixed-order rule summary text at bottom of visual editor
Sort order: EXEMPT \u2192 TASK \u2192 HD \u2192 KILL \u2192 RATIO \u2192 DRATIO \u2192 TRAFFIC

Each rule shown as natural language sentence with applicable condition

TASK shows only enabled requirements

Regardless of card drag order, summary always displays in fixed sequence
2026-07-06 22:35:38 +08:00
mediabot-pt
15dcccb405 feat: add enable/disable switch for each TASK requirement
Each requirement has an el-switch; disabled items grey out and input is locked

Sites can pick only the conditions they need (e.g. upload+download only)
2026-07-06 22:31:52 +08:00
mediabot-pt
a956d38365 fix: rename ratio penalty label to \u5c01\u53f7\uff08\u7f13\u52117\u5929\uff09
More accurate than '\u964d\u7ea7\u81f3Peasant': user is demoted regardless of rank, then killed after 7 days

Template dialog: '\u7f13\u52117\u5929' instead of '\u964d\u7ea7'
2026-07-06 22:29:23 +08:00
mediabot-pt
86d1089114 fix: RATIO/DRATIO actions change to demote-to-Peasant first
- Low ratio \u2192 demote to Peasant \u2192 kill after 7 days, not immediate kill

- Orange arrow + '\u964d\u7ea7\u81f3Peasant' label instead of red '\u5c01\u53f7/\u5220\u9664\u8d26\u53f7'

- Card body shows full explanation: \u4f4e\u4e8e\u6b64\u5206\u4eab\u7387\u5219\u964d\u7ea7\u81f3Peasant\uff0c7\u5929\u540e\u5c01\u53f7/\u5220\u9664\u8d26\u53f7

- Template dialog also shows '\u964d\u7ea7' label for RATIO/DRATIO presets
2026-07-06 22:28:24 +08:00
mediabot-pt
03f6fd265f style: remove colored left border and hover shadow from rule cards
Simpler, cleaner look without the AI-style decorative borders
2026-07-06 22:24:22 +08:00