kdletters
4863c8c066
后台模板上传(后端):新增批量导入接口与存储/领域支持
- shared-contracts 新增导入 manifest、逐条与结果 DTO(camelCase,拒绝未知字段)
- module-assets 新增 prepare_template_import:新 ID 默认上架,已存在条目就地更新并保留上架状态与未知扩展字段;同一 ID 同版本字节不同时按 CLI 同一句文案拒绝,字节一致时按内容复用既有对象
- platform-oss 为 application/zip 放宽单对象上限到 64 MiB(图片与元数据仍 5 MiB),测试替身同步该口径
- api-server 新增 POST /admin/api/agc-templates/import:multipart(manifest + zip_N/cover_N),逐项校验归档安全性、entry 存在性与封面(按字节嗅探格式,仅 PNG/JPEG/WebP)后才取发布锁
- 锁内流程:CAS 校验 revision → 内容寻址写入 zip/封面/元数据并回读 → 一次提交清单 → 释放锁;断连由独立任务持有,不确定结果保留锁并返回 503
- 路由挂 require_admin_auth 与 200 MiB body 上限,页签权限矩阵与路由契约测试同步
- 新增用例:清单与文件字段校验、归档越界与符号链接拒绝、内容寻址键与封面嗅探、zip 内容类型存储上限
- 新增「后台模板上传」里程碑与实施计划文档
- 验证:cargo test(module-assets 11 项、platform-oss 12 项、api-server 定向 4 项)、cargo fmt --check、check:doc-index、check:encoding、git diff --check
2026-09-21 16:06:23 +08:00
..
2026-09-17 18:10:34 +08:00
2026-09-21 13:33:23 +08:00
2026-09-15 00:50:36 +08:00
2026-09-21 16:06:23 +08:00
2026-09-15 20:06:36 +08:00
2026-09-19 12:29:19 +08:00
2026-09-15 19:43:35 +08:00
2026-09-02 14:55:52 +08:00
2026-07-28 16:20:43 +08:00
2026-09-20 10:07:31 +08:00
2026-08-27 22:04:50 +08:00
2026-09-21 16:06:23 +08:00
2026-09-21 16:06:23 +08:00
2026-09-05 19:10:49 +08:00
2026-06-09 15:36:58 +08:00
2026-07-18 21:17:35 +08:00
2026-05-17 20:52:15 +08:00
2026-09-20 20:52:24 +08:00
2026-09-08 14:56:16 +08:00
2026-09-03 15:33:26 +08:00
2026-07-15 21:06:05 +08:00
2026-06-05 23:41:24 +08:00
2026-08-27 22:04:50 +08:00
2026-09-02 14:55:52 +08:00
2026-06-30 20:58:33 +08:00
2026-08-27 22:04:50 +08:00
2026-07-18 22:02:22 +08:00
2026-09-17 00:54:28 +08:00
2026-08-27 15:08:19 +08:00
2026-07-17 22:07:52 +08:00
2026-09-21 13:56:20 +08:00
2026-07-15 21:06:05 +08:00
2026-09-11 16:31:35 +08:00
2026-08-13 20:11:51 +08:00
2026-09-17 00:54:28 +08:00
2026-07-31 13:40:28 +08:00
2026-09-17 18:10:34 +08:00
2026-09-21 13:33:23 +08:00
2026-09-15 19:43:35 +08:00
2026-07-15 21:06:05 +08:00
2026-08-08 21:54:30 +08:00
2026-04-26 18:06:23 +08:00
2026-09-03 10:02:05 +08:00
2026-07-23 18:06:29 +08:00
2026-09-19 12:29:19 +08:00
2026-09-06 00:36:31 +08:00
2026-09-03 15:33:26 +08:00
2026-09-21 13:33:23 +08:00
2026-07-08 22:16:51 +08:00
2026-09-15 20:06:36 +08:00
2026-08-12 10:54:16 +08:00
2026-09-17 18:10:34 +08:00
2026-08-03 12:03:50 +08:00
2026-09-20 12:12:49 +08:00
2026-06-07 22:20:58 +08:00
2026-06-10 11:35:39 +08:00
2026-09-02 14:56:19 +08:00
2026-05-26 13:18:13 +08:00
2026-07-17 22:07:52 +08:00
2026-08-06 14:04:36 +00:00
2026-07-15 21:06:05 +08:00
2026-06-30 20:58:33 +08:00
2026-06-30 20:58:33 +08:00
2026-09-21 13:56:20 +08:00
2026-09-20 20:52:24 +08:00
2026-09-15 19:43:35 +08:00
2026-09-03 16:04:04 +08:00
2026-09-02 14:55:52 +08:00
2026-09-03 16:04:04 +08:00
2026-08-06 11:33:26 +08:00
2026-07-23 10:50:02 +08:00
2026-07-23 14:52:57 +08:00
2026-08-27 22:04:50 +08:00
2026-07-14 19:20:25 +08:00
2026-09-20 10:07:31 +08:00
2026-09-12 21:33:48 +08:00
2026-09-16 17:08:47 +08:00
2026-05-14 14:21:17 +08:00
2026-07-20 20:57:34 +08:00
2026-04-26 18:06:23 +08:00
2026-09-08 14:56:16 +08:00
2026-07-18 22:02:22 +08:00
2026-04-26 18:06:23 +08:00
2026-09-21 13:56:20 +08:00
2026-09-19 12:29:19 +08:00
2026-09-03 15:33:26 +08:00
2026-09-03 16:04:04 +08:00
2026-08-07 09:30:03 +00:00
2026-07-23 14:52:57 +08:00
2026-08-27 22:04:50 +08:00
2026-07-17 22:07:52 +08:00
2026-07-17 22:07:52 +08:00