- 数据库:新增迁移脚本20261011_icc_line_ledger.sql(electric_line/line_room/icc_sync_log三表、菜单61、role_menu(1,61)、定时任务icc_line_sync),同步db_seed.sql - 后端:新增ElectricLine/IccSyncLog实体、查询DTO、线路台账服务与ICC拉取同步服务、/api/electric-lines控制器,接入RBAC(device:list)与定时任务 - 前端:新增智电改造线路台账页面及路由,API封装electricLineApi - ICC同步采用本系统主动拉取模式,失败仅记日志不抛错,接口统一code/message/data格式兼容APP
2.3 KiB
2.3 KiB
Tasks
- Task 1: 数据库层:新建 migration 建
electric_line(按 db_design.html:575-589 字段)、line_room、icc_sync_log(若不存在),并把建表语句同步进 db_seed.sql;幂等(IF NOT EXISTS / 增量)- SubTask 1.1: 核对生产库是否已有 electric_line/line_room/icc_sync_log,避免重复
- SubTask 1.2: 写 migration(migrations/20261011_icc_line_ledger.sql)并执行到远程生产库
- Task 2: 后端实体+DTO:新增
ElectricLineentity(timestamps:false,仅 created_at)、IccSyncLogentity;electric_line.dto.ts定义查询/同步入参(line_code 必填、字段校验、长度限制) - Task 3: 后端 Service:
- SubTask 3.1:
ElectricLineService.list(page, filter)(Op.like/Op.in 参数绑定,非 ADMIN 限定 customer_id) - SubTask 3.2:
IccLineSyncService.syncFromIcc():读.env的 ICC_BASE_URL/ICC_TOKEN 占位配置,请求 ICC 线路列表(路径与字段映射集中在icc_line_mapper),按 line_code 批量 upsert + 写 icc_sync_log + 失败捕获不抛业务错误
- SubTask 3.1:
- Task 4: 后端 Controller + RBAC:
- SubTask 4.1:
electric_line.controller.ts:GET /api/electric-lines(列表/详情)、POST /api/electric-lines/sync(调 IccLineSyncService) - SubTask 4.2: rbac.middleware.ts 追加
/api/electric-lines → device:list - SubTask 4.3:
.env增加 ICC_BASE_URL、ICC_TOKEN(占位);定时任务注册icc_line_sync.task(@midwayjs/cron,默认每 10 分钟)
- SubTask 4.1:
- Task 5: 前端 API:
client/src/api/device.ts(或新line.ts)新增electricLineApi.list/get/sync - Task 6: 前端页面:
views/device/line/index.vue(搜索+同步按钮+表格+分页+状态 tag),路由/device/line(permission device:list),菜单 id=61 挂设备监控(4) + role_menu(1,61),同步 db_seed.sql - Task 7: 验证:
- SubTask 7.1: 后端
tsc --noEmit、前端vue-tsc -b类型检查 - SubTask 7.2: 启动后端/前端,接口实测(无 token 401、有权限 200、无权限 403、sync 接口鉴权、ICC 拉取失败不报错)
- SubTask 7.3: 浏览器验证菜单出现、页面渲染、筛选/分页/同步按钮可用
- SubTask 7.1: 后端
Task Dependencies
- Task 2/5 依赖 Task 1(表存在)
- Task 3 依赖 Task 2
- Task 4 依赖 Task 3
- Task 6 依赖 Task 5
- Task 7 依赖全部