瀏覽代碼

更新摊位资料图片组件规范和排障验收文档

qmj 1 周之前
父節點
當前提交
09e8c74464

+ 6 - 0
specs/034-stall-qualification/plan.md

@@ -63,3 +63,9 @@
 - 审查发现全局绑定异常日志与 Druid 慢 SQL 参数也会泄露材料:为两个材料 Controller 加专用绑定异常处理,DruidConfig 注册唯一的专用 StatFilter,仅材料两表 SQL 参数脱敏,同时保护日志和监控缓存。
 - 当前 MyBatis-Plus 3.5.10 的 `saveOrUpdate` 直接调用 Mapper;单独覆盖该入口,不依赖 `save/updateById` 间接拦截。PosStore XML insert/update 补实际 `state` 写入,闭店完整表单编辑不能被误判为开店。
 - 运行定向 Maven 测试及受影响模块编译,检查 SQL/XML、前端编译、差异、换行和全部四语言 key;记录尚未执行的部署/浏览器联调。
+
+## 图片组件增量(2026-10-09)
+
+用户确认摊位上传与门店管理统一、平台材料展示与商品管理统一。商家现有门店页直接使用 `el-upload.avatar-uploader`,资料组件复用该方框加号交互与 100px 缩略图,保留多图、删除、上传互斥和私有 multipart 接口。平台 `PrivateImages` 改用现有 `ImagePreview`;共享组件只补 `blob:` 原样解析和选填 `previewSrcList`,未传时商品等原调用保持原行为,同组私有图片可放大切换。
+
+两端私有图片加载比较去掉参数的媒体类型,只接受 JPEG/PNG,不放宽为任意二进制,也不把令牌放到图片地址中。先用真实 Vue 组件回归复现 blob 前缀错误和参数化 MIME 被拒绝,再验证修正、只读/数量限制及原商品地址兼容。无后端接口、数据字段或 SQL 变更。截图中的部署失败仍须按实际请求状态、响应类型、权限和私有目录确认,不把本地兼容测试等同于线上根因已确认。

+ 8 - 0
specs/034-stall-qualification/quickstart.md

@@ -48,3 +48,11 @@ Druid 配置测试构造未初始化/未连接的数据源,并确认 proxyFilt
 - 完整项目全量回归未运行,本轮只运行上述定向 Java 用例和已有 PC Node 测试。
 
 不得将本页的模拟/配置测试视为上述真实联调的替代。
+
+## 图片组件调整及故障核对(2026-10-09)
+
+- 商家上传改为门店管理同款方框加号,每类 5 张,待审核/只读无上传和删除;仍使用私有文件接口,不能改用 `/utils/Upload`。平台审核材料使用商品管理的 `ImagePreview`,保留同组放大切换,私有 blob 地址不能拼 `/prod-api`。
+- 图片 Content-Type 带 charset 等参数时,前端按媒体类型识别 JPEG/PNG;JSON/HTML 错误响应仍显示原占位,不渲染为证件。后端接口及 SQL 无变化。
+- 若部署后仍看不到图片,在浏览器 Network 核对私有文件请求状态和 Content-Type:401/403 检查平台登录及 query 权限;404 检查代理路由、服务实例及私有目录共享/持久化;200 但返回 HTML/JSON 检查代理回退页或业务错误。平台详情能打开不代表图片文件一定在当前服务实例上。
+- 需要同时验证平台和商家读取同一已上传文件。不要粘贴带令牌的请求头、真实证件内容或完整材料引用到公共日志;排障只记录必要的状态和类型。截图本身无法确定线上请求失败原因,本轮本地组件回归不替代真实浏览器和服务器联调。
+- 本次自动验证:两个 PC 全部 Node 测试分别为平台 20/20、商家 9/9;商家 `npm run build:test`、平台 `vue-cli-service build --mode staging`(仅本命令设置 OpenSSL 兼容选项)成功。构建保留既有商家 7 项缺 key 警告、平台 2 个 `.vue~` 文件与包体积提示。`PrivateImages.vue` ESLint 通过;共享 `ImagePreview` 保持旧风格,30 项 ESLint 错误/1 项警告与修改前 HEAD 基线数量一致,未借本任务整体格式化。

+ 1 - 0
specs/034-stall-qualification/spec.md

@@ -62,6 +62,7 @@
 - FR-010:存量摊位必须补齐相同材料并通过审核;不得从旧账号审核状态自动推定通过,不设置自动通过或营业宽限期。
 - FR-011:材料不写入公共日志或公开接口;商家端、平台端新增文本统一提供四语言。
 - FR-012:DDL、权限菜单及必要数据处理 SQL 仅登记 `updatesql/sql.md`,不直接执行数据库迁移。
+- FR-013(2026-10-09 图片组件调整):商家资料图片上传采用门店管理的方框加号样式,保持每类最多 5 张、上传中禁止该组件重复上传及表单提交、待审核不可编辑;平台材料预览复用商品管理的 `ImagePreview`,支持缩略图、放大及同组切换。私有上传/鉴权读取不改成公开地址;合法 JPEG/PNG 的 Content-Type 附加参数不应导致图片被丢弃,JSON/HTML 错误响应仍不得渲染为证件。
 
 ## 存量上线规则(2026-10-09 用户确认)
 

+ 7 - 0
specs/034-stall-qualification/tasks.md

@@ -34,3 +34,10 @@
 - 独立只读审查修正:真实 saveOrUpdate 门禁、state SQL 写入、闭店资料编辑、绑定异常隐私、Druid 参数日志与监控脱敏。收口检查另补上传引用必须返回 data 的回归。
 - 2026-10-09 用户要求 commit push;交付分支为三个仓库的 `test-202609v2`,提交 SHA 与远端结果以 Git 记录和最终交付回复为准,不切换、不改写其他分支。
 - 未验证:真实 MySQL 迁移/竞争/回滚、实际权限角色菜单、浏览器及私有文件部署联调、完整全量回归;清单详见 `quickstart.md`。
+
+## 图片组件增量(2026-10-09,用户确认)
+
+- [x] T014 用真实 Vue 组件补充失败回归:blob 地址不得拼接 API 前缀、参数化 JPEG 应展示、方框加号及每类数量限制。
+- [x] T015 商家上传交互对齐门店管理,平台复用商品 `ImagePreview` 并保留同组预览;私有访问权限、审核状态及资料保存接口不变。
+- [x] T016 两端图片加载支持 MIME 参数,仍拒绝 JSON/HTML;更新现有规格、计划及部署诊断说明。
+- [x] T017 平台全部 Node 测试 20/20、商家 9/9 通过,两端构建成功(保留原有警告);审核图片组件 ESLint 通过,共享 ImagePreview 既有 30 项错误/1 项警告与 HEAD 基线一致,不扩展无关格式修改。核对本次改动与 CRLF,无后端代码/SQL 变更;实际浏览器、截图对应请求及服务器文件部署未联调,仍待验收。