fix(p93): 附件/图片回显 URL 用错挂载点——/static/* 404,应为 {ctx}/upload/*
build / build (push) Successful in 1m47s

- 160 演练实测(honor_student 证书图片上传后):/static/form/** 404(146B)、
  /form-center/upload/form/** 200 且字节数一致——/static 是平台主题通道保留前缀,
  附件实际挂载在 {ctx}/upload/(Caddy 静态路由 + 后端 upload 映射)。
- 修复两处 URL 构建:fields/image/pc.vue 回显 img src → `${serviceHost}/upload/{key}`;
  AnswerValueView.vue fileLinks 前缀 → `${serviceHost}/upload/`(serviceHost 空=dev
  同源相对,vite 代理补 /upload → localhost:8086)。
- 附带发现记 P92:字段级 maxSize 仅前端 beforeUpload 拦截,/api/form/upload 对
  5.7MB 文件返回成功(上传端点不感知表单 schema 的字段约束)——裁决口径见报告。

验证:vue-tsc --noEmit 干净;vite build 通过。160 端回显修复随下次部署生效。
This commit is contained in:
chenxing
2026-10-16 00:04:02 +08:00
parent 66bb272004
commit e5555efb79
3 changed files with 16 additions and 3 deletions
+4 -2
View File
@@ -51,10 +51,12 @@ interface GroupView {
const schemaFields = computed<DesignField[]>(() => flattenFields(props.groups));
/** 附件地址由渲染期拼(值里只存相对 key,绝对 URL 不进答卷——契约 §3、方案 §4.3②) */
/** 附件地址由渲染期拼(值里只存相对 key,绝对 URL 不进答卷——契约 §3、方案 §4.3②)。
* P93:挂载点是 {ctx}/upload/*(Caddy 静态路由 + 后端 upload 映射),不是 /static/*
* ——/static 是平台主题通道的保留前缀,160 实测 /static/form/** 404、/{ctx}/upload/** 200。 */
function fileLinks(value: unknown): FileLink[] {
if (!isFileArray(value)) return [];
const prefix = `${conf.serviceHost || ""}/static/`;
const prefix = `${conf.serviceHost || ""}/upload/`;
return (value as FileValue[]).map((f) => ({
name: String(f.fileName ?? f.key ?? ""),
url: prefix + String(f.key ?? "")