diff --git a/src/work/todo/2026-03.md b/src/work/todo/2026-03.md
index d927df7..98d39c0 100644
--- a/src/work/todo/2026-03.md
+++ b/src/work/todo/2026-03.md
@@ -15,13 +15,13 @@ title: 3月待办(2026-03)
# 待办清单(2026-03)
> 最后更新: 2026-04-02
-> 统计: 已完成 16 项、已提交 0 项、待测试 0 项、部分完成 0 项、待确认 1 项、未开始 4 项、已取消 1 项
+> 统计: 已完成 17 项、已提交 0 项、待测试 0 项、部分完成 0 项、待确认 1 项、未开始 3 项、已取消 1 项
## 清单总览
- 当前优先: 13(待确认)、14(未开始)
-- 本周建议推进: 7、9、14、22(未开始)
-- 已归档完成: 1、2、3、4、5、8、10、11、12、15、16、17、18、19、20、21
+- 本周建议推进: 7、9、14(未开始)
+- 已归档完成: 1、2、3、4、5、8、10、11、12、15、16、17、18、19、20、21、22
## 状态说明
@@ -58,58 +58,6 @@ title: 3月待办(2026-03)
- **描述**: 验证7050系统对瀚高数据库的兼容性与适配结果,整理问题清单
- **下一步**: 明确验证范围(安装、连接、读写、迁移脚本、性能基线)并安排验证
-### 22. [全部版本] 优化服务调用失败异常反馈
-
-- **创建日期**: 2026-03-30
-- **描述**: 优化服务调用失败时的异常反馈机制,在日志中附带详细的错误信息,便于快速定位问题
-- **问题现象**:
- - 当前服务调用失败时,日志仅显示"服务不可用 [videodevmng]"
- - 缺少具体的错误原因、调用链路、请求参数等关键信息
- - 排查问题时需要额外查看多个日志文件才能定位根因
-- **优化目标**:
- 1. 异常日志中增加服务名称、调用方法、请求参数
- 2. 记录完整的异常堆栈和错误原因
- 3. 添加服务状态检查结果(连接池状态、服务健康度等)
- 4. 统一异常处理格式,便于日志分析和监控告警
-- **错误日志示例**:
- ```
- 2026-03-30 15:54:45.290 [巡视任务-任务下发线程0] ERROR com.sunri.model.patrol.schedule.job.PatrolTaskJob - 任务[549]采集失败,点位:58409
- com.sunri.client.exception.ServiceUnavailableException: 服务不可用 [videodevmng]
- at com.sunri.client.pool.ServiceClientPool.getClient(ServiceClientPool.java:484)
- at com.sunri.client.ClientManager.getClient(ClientManager.java:130)
- at com.sunri.client.mapper.BusClientInterceptor.sendData(BusClientInterceptor.java:151)
- ```
- ```
- 2026-04-01 10:32:10.591 [巡视任务-任务下发线程0] ERROR com.sunri.model.patrol.task.PatrolTaskControl - 文件复制失败
- java.nio.file.NoSuchFileException: /home/ftp/1013804/2026/4/1/Patrol/J8lesNsDEwofyEk1LelIHbXnx1L8Gtcg/Video/0001_e55110ed-494f-4b2d-a10c-b705030ee176_20260401103147.mp4
- at sun.nio.fs.UnixException.translateToIOException(UnixException.java:86)
- at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)
- at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107)
- at sun.nio.fs.UnixCopyFile.copy(UnixCopyFile.java:526)
- at sun.nio.fs.UnixFileSystemProvider.copy(UnixFileSystemProvider.java:253)
- at java.nio.file.Files.copy(Files.java:1274)
- at com.sunri.model.patrol.task.PatrolTaskControl.copyWithSuffix(PatrolTaskControl.java:2974)
- at com.sunri.model.patrol.task.PatrolTaskControl.handVideoAcquisition(PatrolTaskControl.java:3108)
- at com.sunri.model.patrol.task.PatrolTaskControl.videoFileAcquisition(PatrolTaskControl.java:2724)
- at com.sunri.model.patrol.task.PatrolTaskControl$$FastClassBySpringCGLIB$$db2c8ca8.invoke()
- at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
- at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:687)
- at com.sunri.model.patrol.task.PatrolTaskControl$$EnhancerBySpringCGLIB$$de3e84a9.videoFileAcquisition()
- at com.sunri.model.patrol.task.issued.pool.MessageUpdatePool.sendMessage(MessageUpdatePool.java:186)
- at com.sunri.model.patrol.schedule.job.PatrolTaskJob.executeCapture(PatrolTaskJob.java:454)
- at com.sunri.model.patrol.schedule.job.PatrolTaskJob.processPositionQueue(PatrolTaskJob.java:365)
- at com.sunri.model.patrol.schedule.job.PatrolTaskJob.lambda$executePositionPatrol$434(PatrolTaskJob.java:279)
- at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
- at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
- at java.lang.Thread.run(Thread.java:750)
- ```
-- **下一步**:
- 1. 梳理所有服务调用异常处理点
- 2. 设计统一的异常信息格式(包含服务名、方法名、参数、错误原因)
- 3. 在 ServiceClientPool、ClientManager、BusClientInterceptor 等关键类中增强异常信息
- 4. 添加服务健康检查日志
- 5. 验证优化后的日志是否能快速定位问题
-
---
## 已完成归档
@@ -204,6 +152,12 @@ title: 3月待办(2026-03)
- **描述**: 7050项目机器人告警复检需求开发已完成,等待测试
- **完成情况**: 已完成联调与回归测试,告警复检流程和边界场景验证通过
+### 22. [全部版本] 优化服务调用失败异常反馈
+
+- **创建日期**: 2026-03-30
+- **描述**: 优化服务调用失败时的异常反馈机制,在日志中附带详细的错误信息,便于快速定位问题
+- **完成情况**: 已完成全版本优化,日志已在ServiceClientPool、ClientManager、BusClientInterceptor等关键类中增强了异常信息,包含服务名、方法名、参数、错误原因、调用链路等,可快速定位问题
+
---
diff --git a/src/work/todo/2026-04.md b/src/work/todo/2026-04.md
index f7aa1c3..c75855b 100644
--- a/src/work/todo/2026-04.md
+++ b/src/work/todo/2026-04.md
@@ -15,11 +15,11 @@ title: 4月待办(2026-04)
# 待办清单(2026-04)
> 最后更新: 2026-04-02
-> 统计: 已完成 1 项、未开始 3 项
+> 统计: 已完成 2 项、未开始 2 项
## 清单总览
-- 当前优先: 3(未开始)
+- 当前优先: 2(未开始)
## 状态说明
@@ -103,8 +103,10 @@ title: 4月待办(2026-04)
at java.lang.Thread.run(Thread.java:748)
2026-03-31 19:16:52.945 [TThreadPoolServer WorkerProcess-6] INFO com.sunri.model.pipeline.DictatePipeline - [流水线完成] PatrolReportDevicePointRecordPipeLine 处理耗时: 34ms
```
-- **完成方案**: 将 PatrolReportDevicePointRecordPipeLine 的去重与处理维度统一改为 devicePointId 全局唯一(跨主设备同点位仅保留最大 id 并删除其余),再基于保留记录更新/插入以彻底避免 Duplicate key。
-- **完成情况**: 已修复并验证,同一主设备下多点位配置保存正常
+- **完成方案**:
+ 1. 后端:将 PatrolReportDevicePointRecordPipeLine 的去重与处理维度统一改为 devicePointId 全局唯一(跨主设备同点位仅保留最大 id 并删除其余),再基于保留记录更新/插入以彻底避免 Duplicate key。
+ 2. 前端:修复筛选搜索修改设置后同主设备下其他点位配置为空的显示问题
+- **完成情况**: 前后端均已修复并验证,同一主设备下多点位配置保存和显示正常
### 2. 与姬工讨论上海导出五通报表的问题
@@ -113,13 +115,10 @@ title: 4月待办(2026-04)
1. 提前梳理现有报表导出功能逻辑
2. 预约时间与姬工同步讨论细节
-### 3. 修复现场linx80 excel打开失败问题
+### 3. 修复现场linx80 excel打开失败问题
- **描述**: 现场linx80设备导出的Excel文件打开失败
-- **下一步**:
- 1. 复现Excel导出问题
- 2. 排查导出格式兼容性问题
- 3. 修复并验证导出文件可正常打开
+- **完成情况**: 经排查为现场系统软件版本过低导致,无需修复,建议升级系统软件版本即可解决
### 4. 告警阈值xml导入限制同一个点位统一各类型只能有一条记录