40 lines
1.7 KiB
Markdown
40 lines
1.7 KiB
Markdown
# 后台转码设置页面
|
||
|
||
## 目标
|
||
|
||
1. 在内容管理下新增「转码设置」页面,权限沿用 `episode:upload`。
|
||
2. 页面字段与 FruitServer `MediaTranscodeProfile` 完全一致。
|
||
3. 对接 `GET/PUT /admin/media/transcode-profile`,保存后回填服务端响应。
|
||
4. 前端校验规则与后端一致,并在失败时定位到首个错误字段。
|
||
|
||
## 方案
|
||
|
||
- API:在 `src/api/admin/media.ts` 增加读取、保存函数,类型定义放
|
||
`src/api/admin/types.ts`;响应继续遵循现有 `Result {code,message,data}`。
|
||
- 路由:静态路由表增加 `/content/media-transcode`;默认服务端动态路由模式下,
|
||
根据 `episode:upload` 权限把同一条本地路由补充进服务端 `/content` 菜单,
|
||
已存在同名菜单时不重复添加,仅统一 i18n 标题。
|
||
- 页面:`views/systemManagement/TranscodeSettingsView.vue`,使用 Element Plus 表单、
|
||
表格、数字输入和开关;保存按钮受 `episode:upload` 控制。
|
||
- 校验:
|
||
- quality 非空且忽略首尾空格后唯一;
|
||
- width/height 为正偶数;
|
||
- videoBitrateKbps/audioBitrateKbps 为正整数;
|
||
- segmentSeconds 2–10;
|
||
- sprite.intervalSeconds 1–10、columns 5–20、thumbWidth 120–240;
|
||
- ladder 至少一档 enabled。
|
||
- 校验失败由 Element Plus 定位到首个错误 prop,动态列表错误会定位到对应行。
|
||
- 所有可见文案、提示和校验信息进入 `zh-CN.ts` / `en.ts`。
|
||
|
||
## 非目标
|
||
|
||
- 不修改 FruitServer、ReelShort 或接口契约。
|
||
- 不新增权限码、不新增依赖、不启动服务。
|
||
|
||
## 测试与门禁
|
||
|
||
- 当前工程没有单元/组件测试框架,不引入新依赖;使用 TS 类型检查和构建门禁。
|
||
- `pnpm lint:eslint`
|
||
- `pnpm ts:check`
|
||
- `pnpm build:dev`
|