1.7 KiB
1.7 KiB
后台转码设置页面
目标
- 在内容管理下新增「转码设置」页面,权限沿用
episode:upload。 - 页面字段与 FruitServer
MediaTranscodeProfile完全一致。 - 对接
GET/PUT /admin/media/transcode-profile,保存后回填服务端响应。 - 前端校验规则与后端一致,并在失败时定位到首个错误字段。
方案
- 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:eslintpnpm ts:checkpnpm build:dev