|
|
@@ -277,3 +277,81 @@
|
|
|
- 源码核对硬断言全命中:oplog:10060 / operation_log 建表 / @OperateLog 3控制器4方法 / oplog-client 依赖 / tl-control 对焦列已补(V-047/V-064)。
|
|
|
- 红线遵守:需求文档/01-14 与 00 业务语义只读;开发计划仅改状态/顺序。待用户定残项:5-1/5-2(需求12 的 EMQX/doc-11 引用)、6-1(M8-P1 断链 项目部署/→开发环境/)。
|
|
|
- ★项目实际进度【未变】:仍是 M8 核心代码完成、真机验证 operate"串口失败"为断点。本轮不动代码、不动业务语义★。
|
|
|
+
|
|
|
+## 2026-06-18 22:10 · 14号方案补「两表合查排障」小节(纯文档,源自答疑核实)
|
|
|
+- 起因:用户连续追问日志组件关系,最后确认"同一 trace_id 查 operation_log + system_log 可更完整还原业务流程"。在代码里核实后回写文档。
|
|
|
+- 核实(codegraph):`TraceIdAspect.restLogAround` 一次性 `Trace.context().set(traceId)` + `MDC.put(TRACE_ID, traceId)`→两表 trace_id 同源同值;operation_log 走 Trace.context(OperateLogAspect),system_log 走 MDC(LoggerDBAppender)。`logback-aivfo.xml` DB appender 挂 `LevelFilter level=error`→system_log **只记 ERROR**(非"默认关")。
|
|
|
+- 改动:14-全量操作日志方案.md 新增 §7.1「两表合查排障」(同源保证/互补分工/排障姿势/三边界:须@BuildTraceId、system_log仅ERROR、C#段只有operation_log);并校正 §8 现状句"默认关"→"随 enable=true 开启、LevelFilter 只记 ERROR"。
|
|
|
+- 答疑结论(未落库,备记):两套日志非重复,是"一套机制@OperateLog + 两落点(operation_log/system_log) + 独立消费微服务 aivfo-oplog + C#端 Aivfo.OperationLog";建议不合并(拆分是为 log 组件不强依赖 kafka)。Aivfo.OperationLog 是类库,随 operate 发布产物带出,不单独装。ivf_tl_control_2.0 仍被 operate ProjectReference 引用(3工程),M1真机验证+依赖物理迁移前不可删。
|
|
|
+- 不动代码、不动业务语义、项目实际进度未变(仍为 M8 真机验证 operate 断点)。
|
|
|
+
|
|
|
+## 2026-06-18 22:35 · 方案+计划补「control/autofocustool 整目录退役判据」(纯文档,源自答疑核实)
|
|
|
+- 起因:用户问 ivf_tl_control_2.0 与 autofocustool 能否删;核实后判据写入方案与计划(用户明确"写进方案和计划",不进进度状态.yaml/交接卡当数据)。
|
|
|
+- 核实(grep csproj/sln):①control 仍被 operate 3 条 ProjectReference 引用(ivf_tl_Operate.csproj:624/627/630→ivf_tl_Control/IvfTl.Hardware/IvfTl.AutoFocus)→不可删。②autofocustool 全仓无任何工程引用(算法已移植入 IvfTl.AutoFocus,仅 IvfTl.AutoFocus.csproj:7 一句移植注释);其子工程 Calibrate/CalibTest/SelfTest/SmokeTest/ToPng 为测试外壳,不在任何 sln→编译可删,但为协议权威/比对参照,建议留到 M2 真机验证后。
|
|
|
+- 改动:①需求文档/01-架构与合并方案.md §5 新增第5条「整目录退役判据」表(两目录现状+全满足才删的判据)。②开发计划/M1子计划 范围约束加 control 整目录退役解锁条件(M1验证+物理并入+消同名程序集+编译绿)。③开发计划/M2子计划 范围约束加 autofocustool 退役条件(M2真机验证 V-020/V-041~067 通过)。
|
|
|
+- 不动代码/业务语义;进度未变(仍 M8 真机验证 operate 断点)。删除动作本身待对应里程碑验证通过后另起清理 Task。
|
|
|
+
|
|
|
+## 2026-06-18 23:10 · Java 微服务连接 IP 统一指向服务器测试环境 192.168.0.108
|
|
|
+- 起因:用户把中间件部署到服务器测试环境(192.168.0.108,见 开发环境/服务器测试环境.md),要把各处连接 IP 改到位。
|
|
|
+- 勘察:激活 profile=local(仅 aivfo-service=pro);IP 全在本地 properties、不走 Nacos;公共 application.properties 无连接配置。Redis 全仓配置 0 处(走框架默认/未配,本次无可改行)。
|
|
|
+- 改法(用户定):统一 server.ip=192.168.0.108 + 各连接用 ${server.ip}。改了 8 文件:
|
|
|
+ - 干净档(原已 ${server.ip},仅改 server.ip 一行):gateway / data-transmission / oplog / business-pc。
|
|
|
+ - 散落硬编码档(规整为 server.ip + ${server.ip}):business-app(192.168.31.89→)、business-surface(server.ip 192.168.0.91 + nacos 127.0.0.1 + dfs 192.168.0.207→)、tl-control(localhost + mqtt 127.0.0.1→)、aivfo-service pro(localhost→,新增 server.ip)。
|
|
|
+ - 密码:business-app / surface 的库密码 Aivfo.2017→root(服务器 MySQL root/root,其余服务本就 root/root)。
|
|
|
+ - FastDFS:原双 tracker(:22122,:22123)统一为单 ${server.ip}:22122(服务器只有一个 tracker)。
|
|
|
+- 核实:grep 全激活档无残留 localhost/127.0.0.1/旧IP(仅 tl-control 短信外部URL 211.149.139.131 保留,非中间件)。
|
|
|
+- ★疑点已标给用户、未擅改★:①business-app 端口 10020/服务名 aivfo-business-manage-pc-dev 与 pc 完全相同(疑 pc 遗留克隆,二者不能同起);②app 库名 aivfo-tl(中划线)≠ pc/surface 的 aivfo_tl(下划线业务库),疑指错库——只改 IP/密码,库名未动;③surface nacos discovery.enabled=false(本就不注册)。
|
|
|
+- ★未改:C# App.config(operate/front 的 urlIp/mqttIp)★——取决于微服务跑在哪(SITE-NET 决策),待用户定。Redis 若实际启用需另配 host:6379/密码123456。
|
|
|
+- 回写:进度状态.yaml SITE-NET 已更新为"部分推进"。代码改动未提交,待 C# 决策后一并提交。
|
|
|
+
|
|
|
+## 2026-06-18 23:40 · C# 客户端连接 IP 改向 + 产出《连接配置清单-换服务器必读.md》
|
|
|
+- 用户决策:微服务在本机、中间件在服务器(192.168.0.108)。据此:C# urlIp 指本机 gateway、mqttIp 指服务器 broker。
|
|
|
+- ★查清 C# 端两大坑(已写入清单)★:①AppData.cs 有 #if DEBUG 块无条件覆盖 App.config→DEBUG 编译时写死外网 test-gateway.aivfo.com/211.149.139.131,App.config 不生效→连内网中间件必须 Release 编译;②outInter=1 走硬编码外网→必须 outInter=0。满足"Release+outInter=0"App.config 才生效。
|
|
|
+- C# 改动:
|
|
|
+ - operate App.config:mqttIp 127.0.0.1→192.168.0.108;新增 kfkaIP=192.168.0.108/kfkaPort=9092(原缺键→App.xaml.cs:72 默认回退 127.0.0.1,oplog 发不到服务器 Kafka);urlIp 保持 http://127.0.0.1(gateway 在本机);outInter 本就 0。
|
|
|
+ - front App.config:mqttIp 192.168.1.92→192.168.0.108;urlIp 仍 192.168.1.92(gateway 所在机,front 实际部署机待定,已在清单标注)。
|
|
|
+ - control ControlTest App.config 未改(合并后读 operate 的、且该工程将退役)。
|
|
|
+- 新文档:项目文档/开发环境/连接配置清单-换服务器必读.md —— 中间件连接总表 + Java 8 服务"改一行 server.ip" + C# 配置点(含 DEBUG/outInter 坑)+ 换机 checklist。服务器测试环境.md §5 加了交叉引用。
|
|
|
+- C# 仅改 App.config(非 .cs),无需 codegraph sync。代码+文档改动尚未提交。
|
|
|
+
|
|
|
+## 2026-06-19 00:10 · 灾后恢复:全量重编译 + 集群拉起 + 业务闭环实测(claude 自主夜跑)
|
|
|
+> 背景:用户私自把中间件全搬到服务器 192.168.0.108、改了一批连接配置、删了编译产物、还删过 git 历史(git 不可信)。方案 A「向前重建」:不靠 git,用「能编译/能连/能跑」重建可信基线。用户授权自主通宵执行,守住一条红线:**不无人值守驱动真机电机**(物理不可逆;详见本段末)。
|
|
|
+
|
|
|
+### 一、连通鉴权自检(真实凭证,全过)
|
|
|
+- MySQL `root/root`:JDBC 真连 7 库,表数全对(auth4/services2/tl4/setting17/tl25/log1/quartz11)。
|
|
|
+- Redis `123456`:RESP 裸协议 `+OK +PONG`。Nacos `nacos/nacos`:登录 globalAdmin(鉴权已关)。
|
|
|
+- Kafka/MQTT/FastDFS 端口 OPEN;Kafka 真连由 oplog producer 启动实证(Cluster ID 拿到)。
|
|
|
+- 结论:服务器完全可用,**未动用本地 Docker 后备**。
|
|
|
+
|
|
|
+### 二、全量重编译(全绿)
|
|
|
+- Java:先 `mvn -DskipTests install` aivfo-framework(底座,1:17 SUCCESS),再 7 微服务**全部 EXIT 0**(gateway/tl-control/business-manage/data-transmission/oplog/aivfo-service/ai-middleware)。
|
|
|
+- C#:operate、front 两个 sln `dotnet build -c Release` **均 EXIT 0**(纯 warning 无 error)。注:operate/front 是 SDK 风格 net6.0-windows,dotnet 直接可编。
|
|
|
+- ★源码没丢,用户删的是 target/ 产物;本地仓库 com/aivfo SNAPSHOT 仍在。
|
|
|
+
|
|
|
+### 三、补执行 2 条漏掉的 DB 迁移(否则系统起不来)
|
|
|
+- `2026-06-18-operation-log.sql` → log 库建 `operation_log` 表(原仅 system_log;oplog 消费曾因表缺失静默失败)。
|
|
|
+- `2026-06-17-autofocus-data-layer.sql` → aivfo_tl_setting 建 house_autofocus_calibration 表 + tl_setting 加 5 列 + house_well_setting 加 2 列(tl-control 启动曾报 `Unknown column focus_layer_spacing_pulse`)。已 DESC 校验全部生效。
|
|
|
+
|
|
|
+### 四、集群拉起(7 服务全起;-Xmx256m,内存仅~1.8G 故分波)
|
|
|
+- 已起并 LISTENING:gateway 10010 / business-pc 10020 / data-transmission 10030 / surface 10040 / tl-control 10050 / oplog 10060 / aivfo-service 7081。注册 Nacos 5 个(surface 设计上 discovery.enabled=false 不注册)。
|
|
|
+- ★data-transmission 曾报 `UnsatisfiedLinkError JavaImageDLL`★:仅设 jna.library.path 不够(报"找不到指定的模块");**按本仓 进度数据.js 既载提示,把 `aivfo-data-transmission/lib` 加进**进程 PATH**(JavaImageDLL 依赖 opencv_world3416.dll,DLL 依赖链走 PATH)即启动成功**。启动命令:`PATH=<repo>/aivfo-data-transmission/lib:$PATH java -Djna.library.path=<lib> -jar ...`。
|
|
|
+- business-app 未起(端口 10020 与 pc 冲突,见下方实锤缺陷);ai-middleware 无中间件依赖未起。
|
|
|
+
|
|
|
+### 五、业务闭环实测(调用→入库→查库,全过)
|
|
|
+- **登录**(gateway):POST /api/gateway/auth/login `admin/123456`→code2000 拿 JWT。★admin 密码 = `123456`(算法 MD5(盐+pw+盐),盐 vik3KtL4...,管理员跳过权限校验)。
|
|
|
+- **tl-control 读**:POST /alarmSysSetting/getAlarmTypeList→返真实 alarm_type 数据(PRESS/TEMP...)。
|
|
|
+- **tl-control 写(可逆)**:POST /alarmSysSetting/update 把 id=44 mute 1→0,JDBC 查库确认 mute=0,再还原为 1。**写库链路实证**。
|
|
|
+- **business-pc 读**:POST /embryoCultureRecord/getTlInfoList→code2000 标准结果(查 DB)。
|
|
|
+- **oplog 端到端**:Java Kafka producer 发 tl-oplog→oplog 消费→写 operation_log→JDBC 查到 id=1 字段全对。**排障 backbone 实证可用**。
|
|
|
+
|
|
|
+### 六、踩坑/待办(给你醒来接)
|
|
|
+1. ~~gateway 路由返空体~~ **【已查清=假警报,非bug】**:首测时 tl-control 刚因迁移修复**重启、未启动完**,gateway 负载均衡尚无健康实例 → 返空 200。集群全稳后复测:经 gateway 调 getAlarmTypeList 连续 5/5 返 1806 字节、getAlarmTemplatePageList 1022、business-pc getTlInfoList 正常、经 gateway 写 update 也真实入库并返 150 字节。**结论:operate/front 走的 gateway→微服务→DB 完整路径通,无需处理**。
|
|
|
+2. ★**business-app 配置实锤错误**(历史遗留,非本次):app 档是 pc 整体克隆(name/port10020/context/platform/base-package 全 pc)+ 连错库 aivfo-tl(横,仅4视频表)。已在《连接配置清单》注5 升级为"确认"并给修法,**涉及改运行行为故未擅改,待你拍板**。
|
|
|
+3. **Redis 实为未使用**:全仓无 data-redis 依赖,部署了不参与运行,换机无需为它改配置。《连接配置清单》已更正。
|
|
|
+4. **data-transmission 原生库**:需在运行机补 JavaImageDLL 的依赖 DLL(VC++ 运行时/OpenCV)。
|
|
|
+5. **单元测试**:Java 侧 0 个 @Test;「M2-02 单测15/15」实为 C# autofocustool 的控制台自测(SelfTest=硬件自检/SmokeTest=冒烟/CalibTest=离线读图),**非断言式单测,且需硬件或样本图**,当前无法复现"15/15"数字——未伪造。
|
|
|
+
|
|
|
+### 七、真机/硬件红线(已与你确认)
|
|
|
+- operate 机器控制(电机/阀门/相机)=界面按钮直接开串口(ComBin/SerialBin);也有 CLI 路径 `SelfTest.exe`(真实动电机)。**未在无人值守时驱动**:GUI 无法无头点击 + 物理动作不可逆(舱内或有样本)。你在场说"舱内空、可动"后我再连跑,出问题实时拉 trace_id 判读。
|
|
|
+- 临时探针/脚本都在 `临时文件/`(DbProbe/TableList/OplogProducer/QueryLog/SqlRunner/start-cluster.sh 等)。集群进程仍在后台跑,日志在 临时文件/run-*.log。
|
|
|
+- 改动(配置/迁移已落服务器库 + 文档)尚未 git 提交,待你过目。
|