Просмотр исходного кода

fix(d2-02-p5): data-transmission 与 business 统一连下划线业务库 aivfo_tl(修图入错库)

- data-transmission application-local: aivfo-tl(中划线,前端读不到) -> aivfo_tl(下划线,picture 所在业务库);已重编译重启,实测连对库
- business app-dev / pc-ai: 同步统一为下划线 aivfo_tl
- 根因+处理记入特殊情况记录 #7纠正:已登记设备(NEO-1-20230411 已在 tl_info)linkTLData 不触发 addTl 自动建表 -> 下划线库 picture 分表缺失 -> 图写不进;已 JDBC 按应用 DDL 手建真机 picture/identify 分表各 10 张
- 进度 5.5 降为进行中(待今晚真机重拍验证:图进下划线库分表 + 前端可见)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
huangjie 1 день назад
Родитель
Сommit
00e9767602

+ 1 - 1
aivfo-business-manage/aivfo-business-manage-lanucher/aivfo-business-manage-app-lanucher/src/main/resources/application-dev.properties

@@ -5,7 +5,7 @@ server.servlet.contextPath=/api/businessManage/app
 
 
 #==================数据库连接配置==================-
-aivfo.mybatis-plus.datasource.jdbcUrl=jdbc:mysql://192.168.31.89:3306/aivfo-tl?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&rewriteBatchedStatements=true
+aivfo.mybatis-plus.datasource.jdbcUrl=jdbc:mysql://192.168.31.89:3306/aivfo_tl?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&rewriteBatchedStatements=true
 aivfo.mybatis-plus.datasource.username=root
 aivfo.mybatis-plus.datasource.password=Aivfo.2017
 aivfo.mybatis-plus.datasource.driverClassName=com.mysql.cj.jdbc.Driver

+ 1 - 1
aivfo-business-manage/aivfo-business-manage-lanucher/aivfo-business-manage-pc-lanucher/src/main/resources/application-ai.properties

@@ -5,7 +5,7 @@ server.servlet.contextPath=/api/businessManage/pc
 server.ip=192.168.0.91
 
 #==================数据库连接配置==================-
-aivfo.mybatis-plus.datasource.jdbcUrl=jdbc:mysql://${server.ip}:3306/aivfo-tl?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&rewriteBatchedStatements=true
+aivfo.mybatis-plus.datasource.jdbcUrl=jdbc:mysql://${server.ip}:3306/aivfo_tl?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&rewriteBatchedStatements=true
 aivfo.mybatis-plus.datasource.username=root
 aivfo.mybatis-plus.datasource.password=Aivfo.2017
 aivfo.mybatis-plus.datasource.driverClassName=com.mysql.cj.jdbc.Driver

+ 1 - 1
aivfo-data-transmission/aivfo-data-transmission-lanucher/src/main/resources/application-local.properties

@@ -3,7 +3,7 @@ spring.application.name=aivfo-data-transmission
 server.servlet.context-path=/api/data/transmission/server
 server.ip=192.168.0.108
 #数据库连接配置
-aivfo.mybatis-plus.datasource.jdbcUrl=jdbc:mysql://${server.ip}:3306/aivfo-tl?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true&rewriteBatchedStatements=true
+aivfo.mybatis-plus.datasource.jdbcUrl=jdbc:mysql://${server.ip}:3306/aivfo_tl?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true&rewriteBatchedStatements=true
 aivfo.mybatis-plus.datasource.username=root
 aivfo.mybatis-plus.datasource.password=root
 aivfo.mybatis-plus.p6spy.enable=true

+ 16 - 0
项目文档/进度/D2-02-第三阶段-自动对焦重构-特殊情况记录.md

@@ -157,3 +157,19 @@
 - **门3 EEPROM(对焦不写)**:对焦源码(IvfTl.AutoFocus + HouseBin)**无任何写EEPROM调用**(grep仅匹配编译dll),运行期亦无写EEPROM日志 → 对焦只在内存算FocusZ+上报、**不回写EEPROM基准**。✓ 注:"4个手写值生效"(读取生效)部分,对焦确以EEPROM的 eepromHPos/eepromZ 为输入(CalibrateWell入参),但"手写4值并确认生效"需调试页实操写入核对,本次未做。
 - **门4 电机安全区间**:数小时4舱对焦全程**无钳位/越界/撞机告警**;对焦Z(~74000-84000)、水平位(~71000-206650)均在限内(ZMax=125000/HMax=220000)。✓(本run)
 - 结论:门2/门4 本run充分验证;门1本run未复现伪峰(续观察);门3"对焦不写"已验、"4手写生效"待调试页实操。安全门已=1运行,与三门结果不冲突。
+
+#### [Phase5·#7 重大纠正] 真相:昨晚"入库1110张"其实入错库了——图写进中划线库 aivfo-tl,前端读下划线库 aivfo_tl  — 2026-06-26
+- 背景:用户改 data-transmission 的 `application-local.properties` 库名(`aivfo-tl`中划线 → `aivfo_tl`下划线)要重新编译。核查发现这是在修一个隐蔽的"入错库"bug,#7"入库1110张"的认知需纠正。
+- **真相链(JDBC 实测取证)**:
+  1. data-transmission 写图的 `picture` 分表、以及读图方(business-manage 前端)都应在**下划线库 aivfo_tl(业务库)**。证据:`picture` 基表只在 `sql/aivfo_tl.sql`(下划线)第652行;business-pc 启动日志查 `aivfo_tl.picture_identify_result_neo_1_20230411_2`(从下划线库读图相关表)。中划线库 `aivfo-tl`(数据传输库)建库脚本只有 video* 4 张表,**没有 picture 基表**。
+  2. 但旧配置 data-transmission 连的是**中划线库 aivfo-tl**。昨晚 addTl 在中划线库动态建了 picture_neo_1_20230411_<舱> 分表,图全写进**中划线库**(实测现累计 9868 行:舱2=2576/4=2191/6=2544/8=2557)。
+  3. → 图确实入库了(#7没说错),但**入到了前端读不到的库**。下划线库 aivfo_tl 那边 picture 基表0行、分表压根不存在。
+- **处理(已完成)**:
+  1. 确认用户改库方向正确(中划线→下划线),核对 picture 基表归属 + business 读库后落实。
+  2. 重新编译 data-transmission(`mvn -DskipTests clean package`,BUILD SUCCESS),照 start-all.sh 重启;实测连上下划线库 aivfo_tl、Started 40s、Kafka 图片 topic 经 `ApplicationKafkaStart` 启动时自动恢复消费(不止 addTl 时)。
+  3. ★**坑:已登记设备不会自动建分表**。`linkTLData` 仅当 `getBySn(tlSn)==null`(全新设备)才调 tlAdd→createNewTable 建分表。NEO-1-20230411 已在 tl_info,今晚连接不触发建表 → 下划线库 picture 分表永远缺 → 图写不进。**修:JDBC 按应用 DDL 给下划线库手建 picture_neo_1_20230411_1..10 + picture_identify_result_..._1..10 共20张(`if not exists`,字段严格对齐 PictureMapper.xml / PictureIdentifyResultMapper.xml)。** 脚本留 `临时文件/CreateTables.java + picture_ddl.sql + identify_ddl.sql`。
+- 影响面:无项目代码改动(仅 data-transmission 一行库名配置 + 测试库手建分表)。修复后:今晚真机新图→下划线库 aivfo_tl 分表→前端可读。
+- **待用户回头确认**:
+  ① **中划线库 aivfo-tl 里 9868 行历史测试图**(舱2/4/6/8)留在错库,是否迁到下划线库 aivfo_tl?默认不迁(测试图,今晚重拍即可;迁移需连 FastDFS 文件一起搬)。
+  ② 端到端"图真写进下划线库分表 + 前端能看"需**今晚真机重新拍照**确认(现真机未拍照,下划线分表暂0行;根因已消除、日志不再报"表不存在")。
+  ③ ★**部署清单须补**:换库/换环境时 data-transmission 必须连 picture 所在的**业务库 aivfo_tl(下划线)**;且只有新设备首次 link 才自动建分表,**已登记设备迁库需手动建分表**(本次踩坑)。

+ 1 - 1
项目文档/进度/D2-02-第三阶段-自动对焦重构-进度.md

@@ -74,7 +74,7 @@
 - [x] 5.2 真胚胎峰比阈值(focus_peak_ratio_threshold=1.2)— ✓真胚胎舱合格90-95%(峰比1.3-1.8),空孔house4=0/96全拒,阈值干净分离
 - [~] 5.3 EEPROM 4 个手写生效(对焦不写)— ✓对焦不写EEPROM已验(源码无写调用+无运行期写日志);"4手写生效"读取部分对焦已用作输入,需调试页实操写入核对
 - [x] 5.4 电机安全区间不撞机 — ✓数小时4舱对焦全程无钳位/越界/撞机告警,Z/水平位均在限内(ZMax125000/HMax220000)
-- [x] 5.5 置 local_autofocus_enabled=1 启用 + 端到端 — ✓安全门已=1;端到端全链路打通(对焦→拍照→存图2592×1944→Kafka→data-transmission→MySQL+FastDFS,今晚入库1110+张/FastDFS4510文件)。修两处服务侧堵点(Kafka消息上限1MB→5MB、重启昨日半死的data-transmission),见特殊情况记录
+- [~] 5.5 置 local_autofocus_enabled=1 启用 + 端到端 — ✓安全门已=1;链路打通但**昨晚入错库(中划线 aivfo-tl,前端读不到)**。2026-06-26 已修:data-transmission 库名改下划线 aivfo_tl(picture 所在业务库)+重编译重启+手建真机20张分表(已登记设备不自动建,踩坑详见特殊情况记录#7纠正)。⏳待今晚真机重拍确认"图进下划线库分表+前端可见"。修两处服务侧堵点(Kafka 1MB→5MB、重启半死的 data-transmission)
 - [ ] 5.6 use-after-free 压测 — 借用生命周期已被3.6并发测试大幅覆盖,真机压测补充
 
 ---