feat(file): 优化文件上传处理和ID管理规范

- 新增 buildFileProxyUrl 函数构建永久代理路径,避免富文本图片链接过期
- 重构 uploadFile 函数,统一将后端返回的数值型 ID 转换为字符串
- 在业务富文本编辑器中使用永久代理路径替换临时签名 URL
- 完善 API 适配层 ID 规范,确保所有 ID 字段统一转换为字符串类型
- 移除废弃的编辑器相关路由和组件
- 更新构建代理配置以支持富文本图片直连访问
- 删除冗余的类型定义和依赖包
This commit is contained in:
2026-05-15 10:06:51 +08:00
parent 3a064eb09f
commit 7a4d831c10
15 changed files with 61 additions and 137 deletions

View File

@@ -285,6 +285,15 @@ const directionLabels = getLabels(row.directionCodes, { separator: '' });
- **但如果后端把超 JS 安全整数的 Long 直接作为 JSON 数字返回,前端再 `String(number)` 只能得到"已经丢精度后的错误字符串"**。这种情况必须明确记为接口契约风险,不能误判为"已安全处理"。
- 最稳妥契约:**后端 Long ID 直接按字符串返回**;前端全链路按字符串。后端未改,前端也不得新增 `number` 口径 ID。
### API 适配层兜底(操作约束)
- 所有从后端接收的数值型 ID 字段,**必须**在 `src/service/api/*` 的 normalize/map 函数里显式 `String(rawId)` 一次——**不管后端返回 string、number、还是混合**。
- 业务层views / store / 组件 / `Map` key / 路由参数)**只接收 string**,从不需要自己 `String()`
- 与"后端是否已经全局 Long → String"**无关**
- 后端做了 → 双保险
- 后端没做但取值在 JS 安全整数内 → 单层防御也对(实际值不丢精度)
- 后端没做且取值超安全整数 → 不安全,必须推后端改
- **不开"按取值范围豁免"的口子**:哪怕后端说"这个字段永远是两位数"(如 `infra_file_config.id`),前端照样 `String()`。否则后续会冒出"projectStatus 是 Long 但只有 0-99也可以保留 number"等连锁例外,铁律字面被掏空。
### 历史代码原则
不再新增 `number` 口径;当前任务触达相关链路时**顺手矫正**;不要继续复制历史写法。