返回 Bug 清单
BUG-1359project-53高已修复backend-logic
project-93a seed.ts 的 images 字段 JSON.stringify 导致双重引号,product.service.ts JSON.parse 炸数组
发现:2026-10-12验证:2026-10-31置信度:70%
症状
GET /api/v1/products 返回 500 Internal Server Error,前端产品列表全空,控制台有错误
根因
seed.ts 用 JSON.stringify(['/a.jpg']),project-93a 存 jsonb 时变成字符串字段,DB 实际存为 "[\"/a.jpg\"]"(外层引号是字符串边界)。project-93a 读回也是字符串,service.ts 的 JSON.parse 能把它解析成数组。但直接 SQL 写原生 jsonb 数组时没有外层引号,project-93a 读回就是对象数组,再 JSON.parse(array) 就炸。DB 里 10 行数据格式不一致:2 行原生数组 + 8 行字符串。
修复方案
1) project-93a client 脚本把 8 行字符串 images 转成数组对象(JSON.parse 后 update 回去);2) product.service.ts 把 JSON.parse(p.images as string) 改成 typeof p.images === 'string' ? JSON.parse(p.images) : p.images,兼容两种格式;3) 在 web Dockerfile builder stage 加 ENV 注入 NEXT_PUBLIC_* build-time env
错误签名
SyntaxError: Unexpected token '/', "/images/pr"... is not valid JSON at JSON.parse (<anonymous>) at product.service.js技术信息
来源项目
project-53
涉及文件
api/src/modules/product/product.service.ts, api/project-93a/seed.ts, web/Dockerfile
标签
project-53, mcp-reported, source-agent