zzw
4 小时以前 82d07d97089bfe91a369d7bddd4ec09245e45923
requirement/½»½ÓÎļþ_2026.10.3.md
@@ -504,3 +504,289 @@
- éžç®¡ç†å‘˜å®Œå·¥å¡«æŠ¥çš„单位匹配目前按 `DEPT_NAME`,不是 `DEPT_ID`;若出现同名部门,应改为 ID ç²¾ç¡®åŒ¹é…ã€‚
- åŽ†å²æ¼”ç¤ºæ´¾å·¥å•å¯èƒ½ä»ä¿å­˜æ—§ `T_CONTRACTOR` åç§°ï¼Œéžç®¡ç†å‘˜ cj ç”¨æˆ·å¯èƒ½çœ‹ä¸åˆ°ï¼›`admin` ä¸å—单位过滤影响。
- `.codex-run`、Office é”æ–‡ä»¶ä»¥åŠ `emergency-repair-web/public/新建 æ–‡æœ¬æ–‡æ¡£.txt` æ˜¯æœ¬åœ°è”调或临时文件,不应提交。
## åäºŒã€2026-10-06 è”调收尾(需求 20)
| åºå· | éœ€æ±‚ | çŠ¶æ€ | å®žçŽ°ä¸ŽéªŒè¯ |
| --- | --- | --- | --- |
| 20 | èœå•权限管理取消租户权限,仅保留角色权限;权限复选框反显 | å·²å®Œæˆ | æƒé™æ ‘保留菜单和按钮节点;角色切换后正常反显,接口仅处理 `roleId` / `roleMenuIds` |
### 12.1 ä¸»è¦å˜æ›´æ–‡ä»¶
后端:
- `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/SystemService.java`
前端:
- `emergency-repair-web/src/views/system/MenuPermission.vue`
### 12.2 éªŒè¯ç»“æžœ
- åŽç«¯ `mvn -B -DskipTests compile` é€šè¿‡ï¼›å‰ç«¯ `npm run build` é€šè¿‡ã€‚
- `GET /api/system/menu-permissions?roleId=2106221661022490625` è¿”回字符串型 `roleMenuIds` å…± 14 æ¡ï¼Œé¿å…æµè§ˆå™¨è§£æžé›ªèб ID æ—¶ä¸¢å¤±ç²¾åº¦ã€‚
- `node .codex-run/verify-menu-permission.js` è¾“出 `hasTenantPanel: false`、`buttonNodeCount: 76`、`checkedMatchesSaved: true`、`hasError: false`。
- é¡µé¢ä¿ç•™æŒ‰é’®èŠ‚ç‚¹ï¼Œè§’è‰²åˆ‡æ¢åŽæƒé™æ ‘å¤é€‰æ¡†åæ˜¾æ­£å¸¸ï¼›æˆªå›¾ `.codex-run/menu-permission-verified.png`。
### 12.3 æŽ¥æ‰‹æ³¨æ„
- æœ¬è½®ä»£ç ä¸Žäº¤æŽ¥è®°å½•一并提交并推送公司 Git ä»“库 `main` åˆ†æ”¯ã€‚
- `.codex-run`、Office é”æ–‡ä»¶åŠ `emergency-repair-web/public/新建 æ–‡æœ¬æ–‡æ¡£.txt` ä»ä¸ºæœ¬åœ°ä¸´æ—¶æ–‡ä»¶ï¼Œä¸åº”提交。
## åä¸‰ã€2026-10-06 è”调收尾(需求 21-22)
| åºå· | éœ€æ±‚ | çŠ¶æ€ | å®žçŽ°ä¸ŽéªŒè¯ |
| --- | --- | --- | --- |
| 21 | èœå•权限管理改为角色管理的“权限设置”入口 | å·²å®Œæˆ | åˆ é™¤ç‹¬ç«‹èœå•、路由和页面;角色列表新增“权限设置”,弹窗保留菜单及按钮节点并正常反显 |
| 22 | ç³»ç»Ÿç®¡ç†æ–°å¢žäºŒçº§èœå•组,新增错误日志 | å·²å®Œæˆ | æ–°å¢žâ€œç³»ç»Ÿé…ç½® / æƒé™é…ç½® / æ—¥å¿—管理”目录并迁移菜单;错误日志记录非业务异常,支持筛选、分页和堆栈详情 |
### 13.1 ä¸»è¦å˜æ›´æ–‡ä»¶
后端:
- `emergency-repair-server/src/main/java/com/emergencyrepair/system/entity/SysErrorLog.java`
- `emergency-repair-server/src/main/java/com/emergencyrepair/system/mapper/SysErrorLogMapper.java`
- `emergency-repair-server/src/main/java/com/emergencyrepair/system/log/ErrorLogRecorder.java`
- `emergency-repair-server/src/main/java/com/emergencyrepair/common/GlobalExceptionHandler.java`
- `emergency-repair-server/src/main/java/com/emergencyrepair/bootstrap/DataInitializer.java`
- `emergency-repair-server/src/main/java/com/emergencyrepair/bootstrap/DatabaseBootstrap.java`
- `emergency-repair-server/src/main/java/com/emergencyrepair/system/controller/SystemController.java`
- `emergency-repair-server/src/main/java/com/emergencyrepair/system/service/SystemService.java`
- `emergency-repair-server/src/main/java/com/emergencyrepair/system/service/ButtonPermissionCatalog.java`
前端:
- `emergency-repair-web/src/views/system/RoleManage.vue`
- `emergency-repair-web/src/views/system/RolePermissionDialog.vue`
- `emergency-repair-web/src/views/system/ErrorLogManage.vue`
- `emergency-repair-web/src/views/system/MenuManage.vue`
- `emergency-repair-web/src/router/index.js`
- åˆ é™¤ `emergency-repair-web/src/views/system/MenuPermission.vue`
### 13.2 éªŒè¯ç»“æžœ
- åŽç«¯ `mvn -B -DskipTests clean package` é€šè¿‡ï¼›å‰ç«¯ `npm run build` é€šè¿‡ï¼Œä»…有既有包体积告警。
- `node .codex-run/verify-req21-22.js` é€šè¿‡ï¼šäºŒçº§ç›®å½•和错误日志菜单显示正常,旧“菜单权限管理”不存在;角色权限弹窗按钮节点数 78,权限反显正常。
- é”™è¯¯æ—¥å¿—列表、异常类型筛选和堆栈详情页面验证通过;人为触发非法接口参数后成功落库,临时验证记录已清理。
- æˆªå›¾ï¼š`.codex-run/role-permission-dialog-verified.png`、`.codex-run/error-log-verified.png`。
### 13.3 æŽ¥æ‰‹æ³¨æ„
- é”™è¯¯æ—¥å¿—目前覆盖进入 Spring MVC å…¨å±€å¼‚常处理的异常;启动阶段异常、异步线程异常若绕过该处理器,暂不会自动记录。
- æœ¬è½®ä»£ç ä¸Žäº¤æŽ¥è®°å½•一并提交并推送公司 Git ä»“库 `main` åˆ†æ”¯ã€‚
- `.codex-run`、Office é”æ–‡ä»¶åŠ `emergency-repair-web/public/新建 æ–‡æœ¬æ–‡æ¡£.txt` ä»ä¸ºæœ¬åœ°ä¸´æ—¶æ–‡ä»¶ï¼Œä¸åº”提交。
## åå››ã€2026-10-06 è”调收尾(需求 23-25)
| åºå· | éœ€æ±‚ | çŠ¶æ€ | å®žçŽ°ä¸ŽéªŒè¯ |
| --- | --- | --- | --- |
| 23 | ç³»ç»Ÿåç§°ã€ç‰ˆæœ¬æ”¹ä¸ºå…³é”®è¯é…ç½®ï¼Œç‰ˆæœ¬çº¢è‰²æ˜¾ç¤º | å·²å®Œæˆ | codename ä¸º `rk_SystemName`、`rk_SystemVer`;登录页、页头、Logo å’Œæµè§ˆå™¨æ ‡é¢˜ç»Ÿä¸€è¯»å–配置,页头版本为红色 |
| 24 | å®Œå·¥ä¿¡æ¯æŸ¥é˜…,多故障及多条完工明细展示 | å·²å®Œæˆ | å¢žåŠ  `/completion/query` å’Œ `GET /api/work-orders/completion/query`;按故障汇总,同一故障的多张派工单展开为多行,故障信息列使用 `rowspan` çºµå‘合并,处理情况和器材支持多条 |
| 25 | èœå•管理编辑时可修改父节点 | å·²å®Œæˆ | ä¸Šçº§èœå•改为级联选择器,排除自身和全部下级;后端增加父节点、自引用和循环层级校验 |
### 14.1 ä¸»è¦å˜æ›´æ–‡ä»¶
后端:
- `emergency-repair-server/src/main/java/com/emergencyrepair/business/dto/CompletionFaultQueryItem.java`(新增)
- `emergency-repair-server/src/main/java/com/emergencyrepair/business/controller/WorkOrderController.java`
- `emergency-repair-server/src/main/java/com/emergencyrepair/business/service/BusinessService.java`
- `emergency-repair-server/src/main/java/com/emergencyrepair/bootstrap/DataInitializer.java`
- `emergency-repair-server/src/main/java/com/emergencyrepair/system/service/SystemService.java`
- `emergency-repair-server/src/main/java/com/emergencyrepair/system/service/ButtonPermissionCatalog.java`
前端:
- `emergency-repair-web/src/views/completion/CompletionQuery.vue`(新增)
- `emergency-repair-web/src/views/system/MenuManage.vue`
- `emergency-repair-web/src/components/AppHeader.vue`、`Login.vue`、`RepairLogo.vue`、`layout/AppLayout.vue`、`router/index.js`、`utils/sensitive.js`、`main.js`
- `emergency-repair-web/public/sensitive-words.json`、`public/index.html`
- `requirement/敏感词字典.json`
### 14.2 å®Œå·¥ä¿¡æ¯æŸ¥é˜…口径
- ç»“果按故障汇总,不按派工单汇总。
- ä¸€ä¸ªæ•…障有多张已填报完工信息的派工单时,表格展开为多行;序号、故障编号、rk_X号、设备名称、工程名称及损坏情况、上报单位、上报日期这 7 åˆ—共用故障行,使用单元格纵向合并。
- æ´¾å·¥å•编号、承修单位、完工状态、工程编号、开工/完工、承修人、完工处理情况、更换器材、修后质量、原因分析、提交时间按派工单展示。
- æŸ¥è¯¢æ”¯æŒå…³é”®è¯ã€æ‰¿ä¿®å•位、完工状态和完工日期;关键词同时匹配故障、派工单、工程编号、承修人、处理情况和器材。
### 14.3 éªŒè¯ç»“æžœ
- åŽç«¯ `mvn -B -DskipTests compile` é€šè¿‡ï¼›å‰ç«¯ `npm run build` é€šè¿‡ï¼Œä»…有既有包体积告警。
- `node .codex-run/verify-req23-25.js` é€šè¿‡ï¼šç³»ç»Ÿåç§°ã€ç‰ˆæœ¬å’Œçº¢è‰²æ ·å¼æ­£å¸¸ï¼›å®Œå·¥æŸ¥é˜…正常;菜单编辑父节点“故障管理”可编辑。
- ä¸´æ—¶æž„造同一故障两张派工单、两条完工记录,接口返回 1 ä¸ªæ•…障节点和 2 å¼ æ´¾å·¥å•,各带处理情况和器材明细。
- æµè§ˆå™¨æ˜¾ç¤º 2 å¼ æ´¾å·¥å•行,故障编号只出现 1 æ¬¡ï¼Œ7 ä¸ªæ•…障信息列均为 `rowspan=2`;两张单的明细均正常;截图 `.codex-run/completion-query-merge-verified.png`。临时数据已清理。
- èœå•级联父节点接口实测可正常移动子菜单;选择自身或下级时被后端拒绝,临时菜单已清理。
### 14.4 å½“前服务与接手注意
- å‰ç«¯ `http://localhost:8082`;后端 `http://127.0.0.1:8091`;DM8 `127.0.0.1:5236`;Edge è°ƒè¯•端口 `9222`。
- ç™»å½• `admin / admin123`;数据库 `SYSDBA/SYSDBA`,业务 schema `LX`。
- å®Œå·¥æŸ¥é˜…当前只展示已有 `T_COMPLETION_INFO` å®Œå·¥å¡«æŠ¥è®°å½•的派工单,并且接口未分页。
- æœ¬è½®ä»£ç ã€éœ€æ±‚文件和交接记录一并提交并推送公司 Git ä»“库 `main` åˆ†æ”¯ã€‚
- `.codex-run`、Office é”æ–‡ä»¶åŠ `emergency-repair-web/public/新建 æ–‡æœ¬æ–‡æ¡£.txt` ä»ä¸ºæœ¬åœ°ä¸´æ—¶æ–‡ä»¶ï¼Œä¸åº”提交。
## åäº”、2026-10-06 è”调收尾(需求 21 æƒé™è®¾ç½®èŒƒå›´åˆ‡æ¢ï¼‰
| åºå· | éœ€æ±‚补充 | çŠ¶æ€ | å®žçŽ°ä¸ŽéªŒè¯ |
| --- | --- | --- | --- |
| 21 | æƒé™è®¾ç½®å¢žåŠ â€œå…¨éƒ¨ / å·²è®¾ç½®â€åˆ‡æ¢ | å·²å®Œæˆ | `RolePermissionDialog.vue` å¢žåŠ èŒƒå›´åˆ‡æ¢ï¼›â€œå…¨éƒ¨â€æ˜¾ç¤ºå®Œæ•´èœå•åŠæŒ‰é’®æ ‘å¹¶å¯å…¨é€‰ï¼Œâ€œå·²è®¾ç½®â€ä»…æ˜¾ç¤ºå½“å‰è§’è‰²å·²æŽˆæƒèŠ‚ç‚¹å’Œçˆ¶çº§è·¯å¾„ï¼Œåˆ‡æ¢æ—¶ä¿ç•™æœªä¿å­˜å‹¾é€‰ï¼Œé‡æ–°æ‰“å¼€é»˜è®¤â€œå…¨éƒ¨â€ |
### 15.1 ä¸»è¦å˜æ›´æ–‡ä»¶
- `emergency-repair-web/src/views/system/RolePermissionDialog.vue`
- `requirement/改进20261003.txt`(补充需求 21 çš„范围切换口径)
### 15.2 éªŒè¯ç»“æžœ
- å‰ç«¯ `npm run build` é€šè¿‡ï¼Œä»…有既有包体积告警。
- `node .codex-run/verify-req21-22.js` é€šè¿‡ï¼šå·¦ä¾§æ— â€œèœå•权限管理”,角色管理存在“权限设置”。
- å…¨éƒ¨è§†å›¾æ˜¾ç¤º 119 ä¸ªå¤é€‰æ¡†ã€13 ä¸ªå·²å‹¾é€‰ã€1 ä¸ªåŠé€‰ï¼›å·²è®¾ç½®è§†å›¾æ˜¾ç¤º 14 ä¸ªèŠ‚ç‚¹ï¼Œå‡ä¸ºå½“å‰å·²è®¾ç½®èŠ‚ç‚¹æˆ–çˆ¶çº§è·¯å¾„ï¼›åˆ‡å›žå…¨éƒ¨åŽå‹¾é€‰çŠ¶æ€æ¢å¤ï¼Œæ— ç½‘ç»œå¼‚å¸¸ã€‚
- æˆªå›¾ï¼š`.codex-run/role-permission-assigned-scope.png`。
### 15.3 æŽ¥æ‰‹æ³¨æ„
- å½“前运行:前端 `http://localhost:8082`;后端 `http://127.0.0.1:8091`;DM8 `127.0.0.1:5236`;Edge CDP `9222`。登录 `admin / admin123`。
- æœ¬è½®ä»£ç ã€éœ€æ±‚文件和交接记录一并提交并推送公司 Git ä»“库 `main` åˆ†æ”¯ã€‚
- `.codex-run`、Office é”æ–‡ä»¶åŠ `emergency-repair-web/public/新建 æ–‡æœ¬æ–‡æ¡£.txt` ä»ä¸ºæœ¬åœ°ä¸´æ—¶æ–‡ä»¶ï¼Œä¸åº”提交。
## åå…­ã€2026-10-06 è”调收尾(需求 26 æ—¥å¿—日期范围分隔符)
| åºå· | éœ€æ±‚ | çŠ¶æ€ | å®žçŽ°ä¸ŽéªŒè¯ |
| --- | --- | --- | --- |
| 26 | æ—¥å¿—管理的日期组件两个日期中间的“至”显示不完整 | å·²å®Œæˆ | ç™»å½•日志、操作日志、错误日志的 `.el-range-separator` å›ºå®šä¸º `18px` å¹¶å±…中,三个页面实际宽度、`clientWidth`、`scrollWidth` å‡ä¸º `18px` |
### 16.1 ä¸»è¦å˜æ›´æ–‡ä»¶
- `emergency-repair-web/src/views/system/LoginLogManage.vue`
- `emergency-repair-web/src/views/system/OperationLogManage.vue`
- `emergency-repair-web/src/views/system/ErrorLogManage.vue`
- `requirement/改进20261003.txt`(补充需求 26)
### 16.2 éªŒè¯ç»“æžœ
- å‰ç«¯ `npm run build` é€šè¿‡ï¼Œä»…有既有包体积告警。
- `node .codex-run/verify-req26.js` é€šè¿‡ï¼šä¸‰ä¸ªæ—¥å¿—页面均显示“至”,无裁切,无网络异常。
- æˆªå›¾ï¼š`.codex-run/login-log-date-separator.png`、`.codex-run/operation-log-date-separator.png`、`.codex-run/error-log-date-separator.png`。
### 16.3 æŽ¥æ‰‹æ³¨æ„
- å½“前运行:前端 `http://localhost:8082`;后端 `http://127.0.0.1:8091`;DM8 `127.0.0.1:5236`;Edge CDP `9222`。登录 `admin / admin123`。
- æœ¬è½®ä»£ç ã€éœ€æ±‚文件和交接记录一并提交并推送公司 Git ä»“库 `main` åˆ†æ”¯ã€‚
- `.codex-run`、Office é”æ–‡ä»¶åŠ `emergency-repair-web/public/新建 æ–‡æœ¬æ–‡æ¡£.txt` ä»ä¸ºæœ¬åœ°ä¸´æ—¶æ–‡ä»¶ï¼Œä¸åº”提交。
## åä¸ƒã€2026-10-06 è”调收尾(需求 27 è®¾å¤‡é€‰æ‹©èŒƒå›´ï¼‰
| åºå· | éœ€æ±‚ | çŠ¶æ€ | å®žçŽ°ä¸ŽéªŒè¯ |
| --- | --- | --- | --- |
| 27 | æ–°å¢žæ•…障选择 `rk_X号` åŽï¼Œè®¾å¤‡é€‰æ‹©å™¨åº”只显示所选 `side` èŠ‚ç‚¹çš„ä¸‹çº§ | å·²å®Œæˆ | åŽç«¯åªè¿”回所选 `side` èŠ‚ç‚¹ä½œä¸ºæ ¹ï¼›å‰ç«¯è‡ªåŠ¨å±•å¼€è¯¥æ ¹èŠ‚ç‚¹å¹¶ç»§ç»­æ‡’åŠ è½½ä¸‹çº§ï¼ŒæŽ¥å£ä¸Žæµè§ˆå™¨éªŒè¯é€šè¿‡ |
### 17.1 ä¸»è¦å˜æ›´æ–‡ä»¶
- `emergency-repair-server/src/main/java/com/emergencyrepair/system/service/SystemService.java`
- `emergency-repair-web/src/components/ProductTreePicker.vue`
- `requirement/改进20261003.txt`(补充需求 27)
### 17.2 éªŒè¯ç»“æžœ
- åŽç«¯ `mvn -B -DskipTests compile`、`mvn -B -DskipTests package` é€šè¿‡ï¼›å‰ç«¯ `npm run build` é€šè¿‡ï¼Œä»…有既有包体积告警。
- `GET /api/system/tree/product/side-roots?xNo=203` åªè¿”回对应的 `side` æ ¹èŠ‚ç‚¹ï¼›`201 / 203 / 301 / æµ‹è¯•T` å‡åˆ†åˆ«éªŒè¯é€šè¿‡ã€‚
- `node .codex-run/verify-req27.js` é€šè¿‡ï¼šæ ¹èŠ‚ç‚¹æ–‡æœ¬ä»…ä¸º `203`,自动展开 1 ä¸ªæ ¹èŠ‚ç‚¹ï¼Œæ˜¾ç¤ºä¸‹çº§ç³»ç»ŸèŠ‚ç‚¹ï¼Œæ— ç½‘ç»œå¼‚å¸¸ã€‚
- è¯·æ±‚链路确认:`side-roots?xNo=203` åŽè¯·æ±‚ `children?parentId=1280000000000009729`。截图:`.codex-run/req27-side-tree.png`。
### 17.3 æŽ¥æ‰‹æ³¨æ„
- å½“前运行:前端 `http://localhost:8082`,PID `138164`;后端 `http://127.0.0.1:8091`,PID `148268`;DM8 `127.0.0.1:5236`;Edge CDP `9222`。登录 `admin / admin123`。
- éœ€æ±‚ 26 å·²æäº¤å¹¶æŽ¨é€ï¼Œæäº¤ `f651ad5`;需求 27 å·²æäº¤å¹¶æŽ¨é€ï¼Œæäº¤ `f9114ff`(`fix: limit equipment picker to selected X number`)。
- æœ¬è½®ä»£ç ã€éœ€æ±‚文件和交接记录一并提交并推送公司 Git ä»“库 `main` åˆ†æ”¯ã€‚
- `.codex-run`、Office é”æ–‡ä»¶åŠ `emergency-repair-web/public/新建 æ–‡æœ¬æ–‡æ¡£.txt` ä»ä¸ºæœ¬åœ°ä¸´æ—¶æ–‡ä»¶ï¼Œä¸åº”提交。
## åå…«ã€2026-10-06 è”调修复(菜单名称被启动初始化覆盖)
| é—®é¢˜ | çŠ¶æ€ | å®žçŽ°ä¸ŽéªŒè¯ |
| --- | --- | --- |
| ç³»ç»Ÿé…ç½®ä¸‹â€œäº§å“ç»“构树管理”手工改为“产品结构树”后,后端重启又加回“管理” | å·²ä¿®å¤ | `DataInitializer.ensureMenu()` ä¸å†è¦†ç›–已存在菜单名称;新建菜单默认名称改为“产品结构树”;改名后重启新 jar åç§°ä¿æŒä¸å˜ |
### 18.1 ä¸»è¦å˜æ›´æ–‡ä»¶
- `emergency-repair-server/src/main/java/com/emergencyrepair/bootstrap/DataInitializer.java`
### 18.2 éªŒè¯ç»“æžœ
- åŽç«¯ `mvn -B -DskipTests compile`、`mvn -B -DskipTests package` é€šè¿‡ã€‚
- èœå•记录 `id=2101493905517301763`、`url=/system/product-tree` æ”¹åä¸ºâ€œäº§å“ç»“构树”后,新 jar é‡å¯å¹¶å†æ¬¡æŸ¥è¯¢ï¼Œåç§°ä»ä¸ºâ€œäº§å“ç»“构树”。
- å½“前后端 PID `151580`,监听 `http://127.0.0.1:8091`;前端仍监听 `http://localhost:8082`。
## åä¹ã€2026-10-07 æ¸…空故障及完工业务数据
| æ“ä½œ | ç»“æžœ |
| --- | --- |
| æ¸…空故障、派工单、完工处理及完工信息数据 | `T_FAULT`、`T_WORK_ORDER`、`T_COMPLETION_INFO`、`T_ACCEPTANCE` å››è¡¨å‡ä»ŽåŽŸæ•°é‡æ¸…ä¸º `0` |
| é˜²æ­¢é‡å¯å›žå¡«æ¼”示数据 | æ–°å¢ž `app.seed-demo-data=false`,默认不再执行 `seedBusinessData()` |
### 19.1 ä¸»è¦å˜æ›´æ–‡ä»¶
- `emergency-repair-server/src/main/java/com/emergencyrepair/bootstrap/DataInitializer.java`
- `emergency-repair-server/src/main/resources/application.yml`
### 19.2 éªŒè¯ç»“æžœ
- æ¸…空前:故障 `23`、派工单 `8`、完工信息 `6`、验收 `6`;清空后均 `0`。
- åŽç«¯ `mvn -B -DskipTests clean package` é€šè¿‡ï¼›æ–° jar é‡å¯åŽå››è¡¨ä»å‡ä¸º `0`。
- å½“前后端 PID `21528`,监听 `8091`;前端 PID `57312`,监听 `8082`;后端错误日志为空。
## äºŒåã€2026-10-07 è”调收尾(需求 28-30)
| åºå· | éœ€æ±‚ | çŠ¶æ€ | å®žçŽ°ä¸ŽéªŒè¯ |
| --- | --- | --- | --- |
| 28 | ç»„织机构增加扩展属性设置,设置部门负责rk_T | å·²å®Œæˆ | ç»„织机构列表增加“扩展属性”按钮和弹窗,从产品结构树 `side` èŠ‚ç‚¹ä¸­å•é€‰ `rk_X号`,保存到 `LX.T_SYS_DEPT_EXT`,不修改外部 `SYS_DEPT` |
| 29 | ç”¨æˆ·ç®¡ç†å¢žåŠ æ‰©å±•å±žæ€§è®¾ç½® | å·²å®Œæˆ | åˆ—表展开显示工程专业、rk_T队专业、负责rk_T三列,最后操作列提供“编辑属性”;可保存到 `LX.T_SYS_USER_EXT`,不修改外部 `SYS_USER`;rk_TD专业与现有 `teamMajor` ä¸ºåŒä¸€å­—段 |
| 30 | æ–°å¢žæ•…障默认值 | å·²å®Œæˆ | ä¸ŠæŠ¥å•位取登录用户单位,负责人取登录用户,`rk_X号`只取部门扩展属性,工程专业和rk_T队专业取用户扩展属性;未配置时留空,不再取列表第一项 |
### 20.1 ç¡®è®¤å£å¾„
- éœ€æ±‚ 30 ç¼–号正确;新增故障里的“责任”就是“负责人”。
- éƒ¨é—¨æ‰©å±•属性“负责rk_T”就是 `rk_X号`,单选;新增故障的 `rk_X号` åªä»¥éƒ¨é—¨è®¾ç½®ä¸ºå‡†ï¼Œå³ä½¿ç”¨æˆ·ä¹Ÿè®¾ç½®äº†â€œè´Ÿè´£rk_T”也不参与该默认值。
- `rk_TD专业`就是现有页面里的“rk_T队专业”,后续暂统一沿用现有显示,字段为 `teamMajor`。
- å¤–部 `CSICZB_ZB.SYS_DEPT`、`CSICZB_ZB.SYS_USER` ç”±å…¶ä»–系统维护,扩展属性均存本地扩展表。
### 20.2 æŽ¥å£ä¸Žæ•°æ®è¡¨
- `LX.T_SYS_DEPT_EXT`:`DEPT_ID`、`RESPONSIBLE_X_NO`、审计字段。
- `LX.T_SYS_USER_EXT`:`USER_ID`、`ENGINEERING_MAJOR`、`TEAM_MAJOR`、`RESPONSIBLE_X_NO`、审计字段。
- `GET/PUT /api/system/depts/{deptId}/ext`:查询、保存部门扩展属性。
- `GET/PUT /api/system/users/{userId}/ext`:查询、保存用户扩展属性。
- `/api/auth/login`、`/api/auth/me`返回用户、部门和专业扩展信息,供新增故障默认值使用。
- æ–°å¢žæŒ‰é’®æƒé™ `system:organization:ext`、`system:users:ext`。
### 20.3 ä¸»è¦å˜æ›´æ–‡ä»¶
- `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`、`HANDOFF.md`(补充需求 28-30 å’Œäº¤æŽ¥è®°å½•)
### 20.4 éªŒè¯ç»“æžœ
- åŽç«¯ `mvn -B -DskipTests clean package` é€šè¿‡ï¼›å‰ç«¯ `npm run build` é€šè¿‡ï¼Œä»…有既有包体积告警。
- `node .codex-run/verify-req28-30.js` è¿”回 `pass: true`。
- éƒ¨é—¨ `sy区域` è®¾ç½® `rk_X号=201`;用户 `yszl` è®¾ç½®å·¥ç¨‹ä¸“业 `动力专业`、rk_T队专业 `液压专业`、负责 `202`。
- æ–°å¢žæ•…障默认值实测:上报单位 `sy区域`、负责人 `助理用户(演示)`、`rk_X号=201`、rk_T队专业 `液压专业`、工程专业 `动力专业`。
- ç”¨æˆ·ç®¡ç†é¡µé¢å®žæµ‹å±•开三列,表头顺序为工程专业、rk_T队专业、负责rk_T、状态、操作,最后操作列每行显示“编辑属性”。
- æˆªå›¾ï¼š`.codex-run/req28-org-ext.png`、`.codex-run/req29-user-ext.png`、`.codex-run/req30-fault-defaults.png`。
- éªŒè¯åŽå·²æ¸…空临时扩展属性,查询确认 `configured=false` ä¸”字段为空。
### 20.5 æŽ¥æ‰‹æ³¨æ„
- å½“前后端 PID `56124`,监听 `http://127.0.0.1:8091`;前端 PID `57312`,监听 `http://localhost:8082`;DM8 `127.0.0.1:5236`;Edge CDP `9222`。登录 `admin / admin123`。
- å¼€å‘环境敏感词会把 `rk_T` æ˜¾ç¤ºæˆâ€œæ¢¯â€ï¼Œæˆªå›¾ä¸­çš„“负责梯”对应代码/后端字段 `rk_T`。
- `.codex-run`、Office é”æ–‡ä»¶åŠ `emergency-repair-web/public/新建 æ–‡æœ¬æ–‡æ¡£.txt` ä»ä¸ºæœ¬åœ°ä¸´æ—¶æ–‡ä»¶ï¼Œä¸åº”提交。
- æœ¬è½®ä»£ç ã€éœ€æ±‚文件和交接记录一并提交并推送公司 Git ä»“库 `main` åˆ†æ”¯ã€‚