quickstart.md 5.9 KB

034 摊位审核部署与验收

日期:2026-10-09。后端、商家 PC、平台 PC 均在 test-202609v2 原分支实施,未新建分支;按用户要求在三个仓库原分支提交和推送,具体 SHA 与远端结果以 Git 记录和最终交付回复为准;App 未修改。

上线前准备(必须手动完成)

  1. 备份数据库并告知夜市主:存量与新增摊位必须提交相同材料审核,不提供营业宽限或旧账号审核自动通过。
  2. 手动执行 updatesql/sql.md 中「2026-10-09 034」:两张表及唯一索引、未审核存量摊位闭店、平台菜单/权限。未认证摊位 state=1,不修改旧订单或发起取消、退款。
  3. 审核角色需要分配 stall:qualification:list、stall:qualification:query、stall:qualification:review;只有列表权限看不到证件图片、不能审核。平台菜单组件为 stallQualification/index。
  4. 私有附件目录为 ruoyi.profile 的同级 stall-qualification;例如 profile 为 /data/ruoyi/upload 时,材料目录为 /data/ruoyi/stall-qualification。确保进程可读写,部署更新保留文件;多实例需共享同一持久目录,并限制备份访问权限。不得映射到 nginx/static/profile 公共 URL,不将证件放进旧 /utils/Upload。
  5. 发布后端及两个 PC 构建。新增 type=4 摊主可正常登录填材料,不用夜市主代填;多个摊主账号共享同一摊位材料。夜市主仍在「摊位列表」只查看申请状态和是否有通过版本。
  6. MyBatis 材料 Mapper 保持 WARN;不额外为材料接口加请求/响应全量日志。Druid 使用唯一的 StallQualificationStatFilter,材料 SQL 的参数同时在慢日志与监控参数缓存中脱敏,其他 SQL 沿用原诊断。部署配置不得另注册普通 StatFilter 或启用会打印原始 JDBC 参数的额外日志过滤器。

SQL、真实数据库、服务重启及上述部署操作本轮均未执行。不要只发布页面而漏执行 DDL,也不要把本机测试通过当作已经上线。

业务操作

  • 摊主:商家 PC「摊位资料审核」填写负责人姓名/电话、证件号码/图片、摊位照片、食品业者登录字号/证明。摊位名称、地址和夜市 ID 来自服务端绑定;缺少名称或地址时,先在原门店/摊位管理中补齐。
  • 草稿可不完整;提交四组材料必须齐全。每类图片最多 5 张、每张不超过 5MB,仅 JPEG/PNG;上传未完成时不能提交。食品业者资料为统一平台准入要求,不将其描述为所有台湾摊位的法定要求。
  • 待审核不能编辑/重复提交。平台审核通过或填写原因驳回;驳回后修订形成新申请版本,旧材料和审核历史不覆盖。保存使用认证主体 version,审核使用申请 version;冲突需刷新,不能自动重试覆盖别人。
  • 审核通过只开放营业资格,不自动开店;摊主仍通过原营业设置决定是否营业。已有有效材料重新申请时,原有效版本继续有效,直到新版本通过替换。
  • 无记录、草稿、首次待审核或首次驳回均不得开店、新下单;闭店时可以编辑名称/地址来补资料。用户下单、商家创建订单以及仍可调用的旧 /addorder 均校验,不能只信列表或前端。旧订单出餐、配送、支付后续处理不调用此新门禁。
  • 用户端列表标为关闭;夜市摊位详情返回关闭状态;扫码摊位列表隐藏未通过摊位。普通商家的旧审核流程不替换。

本轮自动化验证

使用 JDK 21 C:/Users/99029/.jdks/graalvm-jdk-21.0.12+7.1,仅在命令环境设置 JAVA_HOME/PATH,没有改全局 Java 设置。

mvn -pl ruoyi-admin -am test '-Dtest=StallQualification*Test,PosOrderShOprateControllerTest,UserOrderControllerMerchantIdTest,StallControllerTest,MerchantSessionAuthAnnotationTest' '-Dsurefire.failIfNoSpecifiedTests=false' -q

53 个用例通过(28 个本模块用例 + 25 个受影响既有回归)。覆盖草稿/提交、版本竞争、重复审核、驳回重提、保留已通过版本、身份权限、私有文件、真实 Mapper 解析、门禁与闭店资料编辑、错误绑定隐私、Druid 生产配置替换及上传 data 返回契约。 Druid 配置测试构造未初始化/未连接的数据源,并确认 proxyFilters 中恰好一个脱敏 StatFilter;不连接测试或生产数据库。

mvn -pl ruoyi-admin -am package -DskipTests -q 模块编译和打包通过;该打包命令不运行测试,测试使用前述独立命令执行。

两个 PC 仓库均执行 node --test tests/*.test.cjs:商家 5/5,平台 16/16。四语言各 50 个新 key 完全一致。平台新增 API/页面/辅助代码使用 eslint ... --no-ignore 检查通过。 商家 vue-cli-service build --mode test、平台(命令环境设置 NODE_OPTIONS=--openssl-legacy-provider)vue-cli-service build --mode staging 均通过。 商家构建保留既有 7 个缺 key 提示;平台保留既有两个 .vue~ 文件的构建警告及包体积提示,未修改无关文件。平台本机依赖安装未生成或修改依赖锁文件。

部署后仍需验收(未验证)

  • 真实 MySQL 建表/菜单 SQL、主表首次并发初始化、两摊主同时提交、两管理员同时审核、事务失败回滚和待审核唯一约束。
  • 浏览器真实登录、上传/预览、草稿回显、驳回重提、审核通过后手动开店、存量未认证禁止新单、旧订单继续履约。
  • 生产/测试实际文件目录持久化、多实例共享、nginx 无公共访问、停用账号和越权材料访问。
  • 实际 Druid 慢查询日志/监控页面脱敏与环境覆盖配置,私有证件不出现在应用、代理或审计日志。
  • 完整项目全量回归未运行,本轮只运行上述定向 Java 用例和已有 PC Node 测试。

不得将本页的模拟/配置测试视为上述真实联调的替代。