对齐老系统 /hardwareCleanLog/listByPage,修正 5 处老接口坑(设计文档 doc/hardware-cleanlog-mcp-design.md §5):agentId 传了仍叠加行级 ACL、 富化/图片按页批量消除 N+1、时间过滤明确落 modify_time、status=1 硬过滤 口径保持、type!=0 时 beforeCleanPics 恒空保持。 - 实体/Mapper 从 publicbeanandmap 逐字段复制(25+13 列全核对) - PermissionService 新增 applyHardwareCleanLogRowFilter(镜像 applyHardwareRowFilter 同一 getByIsAgent 变体) - 分页 selectCount+LIMIT 物理分页,rows 上限 100 截断+notice - 图片 type=0 行内 picurl,type!=0 按页 IN 批量查 hardware_clean_pic 按 order_no 拼 OSS URL - 入参校验抛 ToolCallException(INVALID_ARGUMENT) - seed-dev.sql 补 hardware/ops-query scope 绑定;reference 文档登记 #45 测试:新增 6 个单测,全量 482 tests 全绿
数据库迁移规范
自有库结构由 Flyway 管理,运行时只扫描 src/main/resources/db/migration。
- 已合并的
V<N>__description.sql永不修改、删除或改名;Flyway 与测试都会校验历史 checksum。 - 每次结构或数据变更新增下一个连续版本,并同步新增
sql/rollback/V<N>__description.down.sql。 - Migration 只操作当前 svc schema,禁止包含
CREATE DATABASE、USE和环境专属数据。 - DDL 优先向后兼容;删除字段或表必须先经过废弃版本。大表变更必须给出锁表时间与分批方案。
seed-dev.sql仅用于开发数据,不进入 Flyway。数据库首次创建使用bootstrap/create-database.sql。- 合并前必须运行
./mvnw clean package;部署启动时 Flyway 会再次 validate 并按版本迁移,失败则应用不会启动。
baseline-on-migrate 默认关闭,避免连错非空库时被静默接管。已有 V1 数据库首次接入时,显式设置 SVC_FLYWAY_BASELINE_ON_MIGRATE=true:Flyway 记录 V1 基线并只执行 V2 以后版本;确认生成 flyway_schema_history 后立即恢复为 false。空数据库无需开启,会正常执行全部版本。