Commit Graph

103 Commits

Author SHA1 Message Date
mediabot-pt
9be2d0313a fix: 审核通过时发送 names[]/urls[] 数组,列表正确显示多名称多地址 2026-06-30 14:09:40 +08:00
mediabot-pt
266669e96b fix: ApiLogInterceptor 支持 X-Client-Id 回退到 X-Email 2026-06-30 13:58:59 +08:00
mediabot-pt
9231b90a30 fix: Manifest 接口也返回 names[]/urls[] 数组 + 文档同步 2026-06-30 13:50:06 +08:00
mediabot-pt
04f4af1f2c feat: 站点提交/返回统一支持多名称多地址数组
- POST /sites/{id}/submit: names[]/urls[] 数组,兼容旧 name/baseUrl 单值
- 已有站点合并新名称/地址(去重+前置)
- 站点列表返回 names[]/urls[]
- API 文档和代码示例同步更新
2026-06-30 13:47:56 +08:00
mediabot-pt
28e6c2882f fix: 站点/审核编辑改回单文本框多行输入,后端保留数组支持 2026-06-30 13:42:11 +08:00
mediabot-pt
08b5040c74 feat: 站点名称/地址支持多值编辑,动态增删
- Sites.vue: 名称和地址改为动态列表 + 增删按钮
- SiteController: updateSite 接受 names[]/urls[] 数组
- SiteServiceImpl: 更新时直接覆盖整个名称/地址列表
2026-06-30 13:17:06 +08:00
mediabot-pt
1667bdd145 fix: V9 迁移将 sites.name 改为可空,多名称只用 namesJson 2026-06-30 13:09:12 +08:00
mediabot-pt
63c2601822 fix: approveChange 新建站点时设置 name 字段避免 NOT NULL 报错 2026-06-30 13:06:33 +08:00
mediabot-pt
e009d53cad feat: 站点审核通过时弹出编辑框,支持审核者修改数据后再通过
- SiteReview.vue: 「通过」打开编辑弹窗,可改名称/地址/类型/状态/备注
- AdminController: approveChange 接受 request body(编辑数据)
- SiteService.approveChange: 优先用审核者编辑数据,否则用原始提交
- 拒绝保持原逻辑直接拒绝
2026-06-30 13:00:05 +08:00
mediabot-pt
cc9a0155cc fix: 恢复 PSK 版本列显示(显示的是版本号不是密钥值) 2026-06-30 12:41:32 +08:00
mediabot-pt
cb71332883 chore: 日志页面隐藏 PSK 版本列 2026-06-30 12:39:08 +08:00
mediabot-pt
e4f0d0b411 feat: 访问日志表格增加 PSK 版本和 User-Agent 列 2026-06-30 12:38:32 +08:00
mediabot-pt
9dd35ca258 fix: SiteStatus.PENDING 改为 ACTIVE + maven-compiler-plugin 加版本号 2026-06-30 12:31:38 +08:00
mediabot-pt
9b5ad7cc03 feat: 站点编辑增加状态字段 active/deprecated 切换 2026-06-30 12:30:06 +08:00
mediabot-pt
3a9b98ff5d fix: SiteStatus 移除 PENDING,站点自身只有 active/deprecated 2026-06-30 12:28:04 +08:00
mediabot-pt
003ea023c3 fix: ApiLogInterceptor 只记录外部 PSK 请求,管理后台 Bearer 请求不记录 2026-06-30 12:25:00 +08:00
mediabot-pt
c62fac5f7c fix: V6__api_access_logs 重命名为 V8,避免与 V6__site_multi_names_urls 冲突 2026-06-30 12:03:44 +08:00
mediabot-pt
fa9b2d1bf2 fix: Sites.vue 删除重复的 handleEdit/handleSave 声明 2026-06-30 11:33:18 +08:00
mediabot-pt
88728ce2c2 feat: API 访问日志系统(拦截器 + 统计分析 + 管理页面)
- V6: api_access_logs 表(method/path/email/IP/status/耗时/错误)
- ApiLogInterceptor: 记录所有 /api/v1/** 请求,order(0) 最优先
- ApiLogController: 分页查询 + 按邮箱/路径统计(24h 窗口)
- 前端 ApiLogs.vue: 筛选/统计面板/日志列表/分页
- 导航新增「访问日志」菜单项
2026-06-30 11:32:50 +08:00
mediabot-pt
1664033c53 refactor: 站点列表和站点审核拆分为两个独立页面
- Sites.vue: 精简为纯站点列表(编辑/配置/变更)
- SiteReview.vue: 新文件,站点审核队列(通过/拒绝/匹配)
- router: 新增 /sites/review 路由
- Layout: 导航栏新增「站点审核」菜单项
2026-06-30 11:25:01 +08:00
mediabot-pt
0c7a579c6d fix: V7__site_changes.sql 编码修复,中文注释乱码导致 SQL 语法错误 2026-06-30 11:03:00 +08:00
mediabot-pt
8d8e066e6d feat: Flyway 启动自动 repair → migrate,应用自愈失败迁移记录
- FlywayConfig: 自定义 FlywayMigrationStrategy
- 启动时先 flyway.repair() 清理残留失败记录
- 再 flyway.migrate() 执行待迁移
- 全程应用内完成,无需外部操作
2026-06-30 10:44:41 +08:00
mediabot-pt
da79a2dd70 fix: 使用 Flyway repair-on-migrate 清理残留失败迁移记录 2026-06-30 10:02:31 +08:00
mediabot-pt
56e2615624 feat: 待审核变更支持手动搜索匹配已有站点 2026-06-30 09:09:24 +08:00
mediabot-pt
690d1ae926 feat: 站点信息提交时自动匹配已有站点(URL/名称),匹配则关联否则新建 2026-06-30 09:07:50 +08:00
mediabot-pt
d504649100 fix: SiteController.submitSiteInfo 返回类型改为 Map(不再返回SiteDTO) 2026-06-30 09:05:15 +08:00
mediabot-pt
a7eb63ce1b refactor: site_change_log 重命名为 site_changes,更准确表达待审核+已变更 2026-06-30 09:03:58 +08:00
mediabot-pt
39af3dc034 refactor: site_submissions 重命名为 site_change_log,更通用的变更记录表 2026-06-30 09:02:09 +08:00
mediabot-pt
a6bfc69000 feat: 站点管理支持按站点查看变更(审核)记录 2026-06-30 08:58:39 +08:00
mediabot-pt
657e0c1a78 feat: 新增 site_submissions 审核表, 提交先进审核再写入sites 2026-06-30 08:57:10 +08:00
mediabot-pt
aa1e3e9b28 feat: sites表支持多名称/多地址(names/urls JSON列), DTO/Service/前端全部适配 2026-06-30 08:53:22 +08:00
mediabot-pt
b37b5cc5de fix: 站点管理改用admin全量接口, 显示待审核站点并提供通过/拒绝 2026-06-30 08:44:46 +08:00
mediabot-pt
ec9d00f25a feat: 站点管理增加查看配置功能, 显示最新已审批配置内容 2026-06-30 00:57:06 +08:00
mediabot-pt
c3f12d1521 fix: 站点编辑类型改为下拉框选择 2026-06-30 00:55:01 +08:00
mediabot-pt
550535f882 fix: 站点编辑实现编辑弹窗+PUT端点, 配置查看修复(加载失败)改用/content端点+DTO加submitterId 2026-06-30 00:32:14 +08:00
mediabot-pt
48d0e6a247 feat: 新增 /api/v1/sites/{siteId}/info 站点信息反馈接口, 支持多名称/多地址/状态/备注 2026-06-30 00:16:05 +08:00
mediabot-pt
a4d5c9aa4f fix: 删除多余的 } 2026-06-29 23:50:54 +08:00
mediabot-pt
4c9c53d7c8 feat: 配置审核页展示已审批历史版本,支持点击对比 2026-06-29 23:37:01 +08:00
mediabot-pt
7c7fe0405a fix: manifest 只返回 ACTIVE 状态的站点 2026-06-29 23:35:48 +08:00
mediabot-pt
b829fc68fe feat: 站点提交改为待审核(pending),管理员审核通过/拒绝
- submitSite: 新站点 status=PENDING
- AdminController: GET /admin/sites/pending, POST /admin/sites/{id}/approve|reject
- reject 物理删除站点记录
2026-06-29 23:34:14 +08:00
mediabot-pt
d1445d3920 fix: 下载配置接口加null检查,前端去掉responseType:text让axios自动解析 2026-06-29 23:25:26 +08:00
mediabot-pt
b806a01f13 feat: 审核通过移动文件到approved,拒绝删除pending文件
- StorageService 新增 delete()
- approve: 文件 pending → approved
- reject: 删除 pending 文件
2026-06-29 23:21:44 +08:00
mediabot-pt
7d7de75bbd refactor: 文件路径按pending/approved区分,去掉版本号
- submit: configs/{siteId}/pending/{hash}.json
- approve: 文件移到 configs/{siteId}/approved/{hash}.json
2026-06-29 23:20:14 +08:00
mediabot-pt
d093c5eb28 refactor: 存储模式动态检查环境变量,改PAR_STORAGE_TYPE无需重启
- CachedStorageService 每次调用读 PAR_STORAGE_TYPE 环境变量
- QiniuStorageService 首次调用懒初始化,读 QINIU_* 环境变量
- 去掉 @ConditionalOnProperty/@ConditionalOnMissingBean
2026-06-29 23:13:38 +08:00
mediabot-pt
cd78cfbf88 fix: 七牛读取改用公开URL HTTP GET,不依赖SDK私有API 2026-06-29 23:05:07 +08:00
mediabot-pt
3cece4e07f fix: 七牛 SDK 7.15 API 兼容 - BucketManager.get(url) / bodyString() 2026-06-29 23:03:27 +08:00
mediabot-pt
41f3a15ddd refactor: 版本号由PAR审核通过时自动分配
- submitConfig: 不再比较版本号,相同hash跳过,不同hash都插入pending
- approveConfig: 自动取最大版本号+1 分配(如 1, 2, 3...)
- 存储路径含hash前缀避免同名冲突
2026-06-29 23:02:30 +08:00
mediabot-pt
980d985d9b fix: 重复提交按hash判重,同hash跳过,异hash覆盖更新 2026-06-29 23:00:29 +08:00
mediabot-pt
a741736a5d fix: 重复提交配置改为幂等,返回已有记录而非报错 2026-06-29 22:59:24 +08:00
mediabot-pt
f351d71d18 feat: 七牛云存储支持(本地缓存/备份)
- StorageService 抽象层(store/read/exists)
- QiniuStorageService: 七牛云主存储(@ConditionalOnProperty)
- LocalStorageService: 本地文件存储(默认/@ConditionalOnMissingBean)
- CachedStorageService: 七牛主+本地缓存(写:七牛→本地, 读:本地→七牛)
- 配置: PAR_STORAGE_TYPE=qiniu + QINIU_AK/SK/BUCKET/REGION
- 不配七牛时自动降级到纯本地存储
2026-06-29 22:58:32 +08:00