zzw
5 小时以前 ce841ddf85c48bae32f9e3068403fdfe98ac8711
HANDOFF.md
@@ -853,7 +853,6 @@
**接手注意**
- 不要提交 `.codex-run`、Office 锁文件或 `emergency-repair-web/public/新建 文本文档.txt`。
- 本轮代码、需求文件和交接记录一并提交并推送公司 Git 仓库 `main` 分支。
## 22. 收尾快照(2026-10-06 周一,需求 26 日志日期范围分隔符)
**本轮完成内容**
@@ -878,3 +877,118 @@
**接手注意**
- 不要提交 `.codex-run`、Office 锁文件或 `emergency-repair-web/public/新建 文本文档.txt`。
- 本轮代码、需求文件和交接记录一并提交并推送公司 Git 仓库 `main` 分支。
## 23. 收尾快照(2026-10-06 周一,需求 27 设备选择范围)
**本轮完成内容**
- 新增故障选择 `rk_X号`(产品结构树 `side` 类型节点)后,设备选择器只以所选节点为根展示其下级,不再同时返回型号根节点和整棵产品结构树。
- 设备选择器打开锁定范围时自动展开返回的 `side` 根节点,首屏直接显示第一层系统节点,后续继续按原逻辑懒加载。
- `xNo` 为空时仍返回完整产品结构树,不影响产品结构树管理和不按 `rk_X号` 筛选的设备选择场景。
**主要文件**
- `emergency-repair-server/src/main/java/com/emergencyrepair/system/service/SystemService.java`
- `emergency-repair-web/src/components/ProductTreePicker.vue`
- `requirement/改进20261003.txt`(补充需求 27)
**验证结果**
- 后端 `mvn -B -DskipTests compile`、`mvn -B -DskipTests package` 通过;前端 `npm run build` 通过,仅有既有包体积告警。
- `GET /api/system/tree/product/side-roots?xNo=203` 修复后只返回 1 个根节点:`id=1280000000000009729`、`name=203`、`layer=side`、`level=2`;`201 / 203 / 301 / 测试T` 分别只返回对应节点。
- `node .codex-run/verify-req27.js` 通过:根节点文本仅为 `203`,自动展开 1 个根节点,首屏显示其下级系统节点,无网络异常。
- 请求链路确认:`/api/system/tree/product/side-roots?xNo=203` 后继续请求 `/api/system/tree/product/children?parentId=1280000000000009729`。截图:`.codex-run/req27-side-tree.png`。
**当前运行状态(2026-10-06)**
- 前端 `http://localhost:8082`,PID `138164`;后端 `http://127.0.0.1:8091`,PID `148268`;DM8 `127.0.0.1:5236`;Edge CDP `9222`。
- 登录 `admin / admin123`;数据库 `SYSDBA/SYSDBA`,业务 schema `LX`。
- 后端日志:`.codex-run/backend-20261006-req27.out.log`、`.codex-run/backend-20261006-req27.err.log`。
**接手注意**
- 需求 26 已提交并推送,提交 `f651ad5`(`fix: show full date range separator in log filters`)。需求 27 已提交并推送,提交 `f9114ff`(`fix: limit equipment picker to selected X number`)。
- 不要提交 `.codex-run`、Office 锁文件或 `emergency-repair-web/public/新建 文本文档.txt`。
- 本轮代码、需求文件和交接记录一并提交并推送公司 Git 仓库 `main` 分支。
## 24. 收尾快照(2026-10-06 周一,菜单名称被启动初始化覆盖)
**问题与修复**
- 手工把系统配置下的“产品结构树管理”改为“产品结构树”后,后端重启会恢复“管理”二字。
- 原因是 `DataInitializer.ensureMenu()` 每次启动都会拿代码中的默认名称覆盖已存在菜单。
- 已改为只在新建菜单时使用默认名称;已存在菜单只修复父节点、排序、类型和可见性,名称由菜单管理页面维护。
- 新建数据库的默认菜单名称同步改为“产品结构树”。
**主要文件**
- `emergency-repair-server/src/main/java/com/emergencyrepair/bootstrap/DataInitializer.java`
**验证结果**
- 后端 `mvn -B -DskipTests compile`、`mvn -B -DskipTests package` 通过。
- 将数据库菜单 `id=2101493905517301763`、`url=/system/product-tree` 的名称改为“产品结构树”后,使用新 jar 重启后端,接口再次查询仍为“产品结构树”。
- 新后端 PID `151580`,监听 `8091`;日志:`.codex-run/backend-20261006-menu-name.out.log`、`.codex-run/backend-20261006-menu-name.err.log`。
## 25. 收尾快照(2026-10-07 周三,清空故障及完工业务数据)
**本次操作**
- 清空 `LX.T_FAULT`、`LX.T_WORK_ORDER`、`LX.T_COMPLETION_INFO`、`LX.T_ACCEPTANCE` 四张业务表。
- 清空前数量:故障 `23`、派工单 `8`、完工信息 `6`、验收 `6`;清空后均为 `0`。
- 同步关闭启动演示业务数据回填:新增配置 `app.seed-demo-data=false`,避免 `T_FAULT` 为空时后端重启又自动生成 16 条演示故障及完工数据。
**主要文件**
- `emergency-repair-server/src/main/java/com/emergencyrepair/bootstrap/DataInitializer.java`
- `emergency-repair-server/src/main/resources/application.yml`
**验证结果**
- 后端 `mvn -B -DskipTests clean package` 通过。
- 使用新 jar 重启后再次查询,四张业务表仍均为 `0` 行;登录接口 `200`,前端首页 `200`。
- 当前后端 PID `21528`,监听 `8091`;日志:`.codex-run/backend-20261007-cleared.out.log`、`.codex-run/backend-20261007-cleared.err.log`。
- 如需重新灌入演示业务数据,将 `app.seed-demo-data` 临时设为 `true` 后重启。
## 26. 收尾快照(2026-10-07 周三,需求 28-30 扩展属性与新增故障默认值)
**需求口径**
- 需求 30 编号已确认;新增故障里的“责任”就是“负责人”。
- 部门扩展属性“负责rk_T”的值就是 `rk_X号`,值必须是产品结构树 `side` 类型节点,单选。
- 新增故障的 `rk_X号` 默认值只取登录用户所属部门的扩展属性;即使用户扩展属性也设置了“负责rk_T”,仍以部门设置为准。
- “rk_TD专业”与现有“rk_T队专业”是同一字段,代码字段为 `teamMajor`,当前界面暂时沿用“rk_T队专业”。
- 外部 `CSICZB_ZB.SYS_DEPT`、`CSICZB_ZB.SYS_USER` 由其他系统维护,本项目只读;扩展属性保存到本地新表。
**本轮完成内容**
- `DatabaseBootstrap` 自动创建 `LX.T_SYS_DEPT_EXT`(`DEPT_ID`、`RESPONSIBLE_X_NO` 及审计字段)和 `LX.T_SYS_USER_EXT`(`USER_ID`、`ENGINEERING_MAJOR`、`TEAM_MAJOR`、`RESPONSIBLE_X_NO` 及审计字段)。
- 组织机构页面增加“扩展属性”按钮和弹窗,可设置部门“负责rk_T”;列表显示已设置值。
- 用户管理页面增加“扩展属性”按钮和弹窗,可设置工程专业、rk_T队专业、负责rk_T;列表显示扩展属性是否已设置。
- 新增故障弹窗默认带出:上报单位为当前登录人的单位、负责人为当前登录人、`rk_X号`为当前部门扩展属性、工程专业和 rk_T队专业为当前用户扩展属性。
- 用户扩展属性为空时,工程专业和 rk_T队专业不再默认选择配置列表第一项。
**接口与权限**
- `GET/PUT /api/system/depts/{deptId}/ext`:查询和保存部门扩展属性。
- `GET/PUT /api/system/users/{userId}/ext`:查询和保存用户扩展属性。
- `/api/auth/login`、`/api/auth/me` 返回 `userId`、`deptId`、`engineeringMajor`、`teamMajor`、`deptResponsibleXNo`、`responsibleXNo`。
- 按钮权限新增 `system:organization:ext`(扩展属性设置)、`system:users:ext`(扩展属性设置)。
**主要变更文件**
- `emergency-repair-server/src/main/java/com/emergencyrepair/auth/AuthController.java`
- `emergency-repair-server/src/main/java/com/emergencyrepair/bootstrap/DatabaseBootstrap.java`
- `emergency-repair-server/src/main/java/com/emergencyrepair/business/dto/Requests.java`
- `emergency-repair-server/src/main/java/com/emergencyrepair/system/controller/SystemController.java`
- `emergency-repair-server/src/main/java/com/emergencyrepair/system/service/ButtonPermissionCatalog.java`
- `emergency-repair-server/src/main/java/com/emergencyrepair/system/service/SystemService.java`
- `emergency-repair-web/src/views/Login.vue`
- `emergency-repair-web/src/views/fault/FaultReport.vue`
- `emergency-repair-web/src/views/system/OrganizationManage.vue`
- `emergency-repair-web/src/views/system/UserManage.vue`
- `requirement/改进20261003.txt`(补充需求 28-30)
**验证结果**
- 后端 `mvn -B -DskipTests clean package` 通过;前端 `npm run build` 通过,仅有既有包体积告警。
- `node .codex-run/verify-req28-30.js` 返回 `pass: true`。
- 部门 `1390477009348739073 / sy区域` 设置 `rk_X号=201`,用户 `123 / yszl` 设置工程专业 `动力专业`、rk_T队专业 `液压专业`、负责 `202`。
- 新增故障实际默认值为:上报单位 `sy区域`、负责人 `助理用户(演示)`、`rk_X号=201`、rk_T队专业 `液压专业`、工程专业 `动力专业`。
- 截图:`.codex-run/req28-org-ext.png`、`.codex-run/req29-user-ext.png`、`.codex-run/req30-fault-defaults.png`。
- 验证后已清除临时部门、用户扩展属性,查询确认 `configured=false` 且字段为空。
**当前运行状态(2026-10-07)**
- 后端 PID `56124`,监听 `http://127.0.0.1:8091`;前端 PID `57312`,监听 `http://localhost:8082`。
- 为 UI 验证启动的 headless Edge PID `95756`,CDP 端口 `9222`;配置目录 `.codex-run/edge-profile-req28-30`。
- 后端日志:`.codex-run/backend-20261007-req28-30-final.out.log`、`.codex-run/backend-20261007-req28-30-final.err.log`。
- 登录 `admin / admin123`;数据库 `SYSDBA/SYSDBA`,业务 schema `LX`。
**接手注意**
- 开发环境敏感词配置会把 `rk_T` 显示为“梯”,因此页面截图中可能显示“负责梯”;代码和后端字段仍是 `rk_T`。
- 不要提交 `.codex-run`、Office 锁文件或 `emergency-repair-web/public/新建 文本文档.txt`。
- 本轮代码、需求文件和交接记录一并提交并推送公司 Git 仓库 `main` 分支。