Commit Graph

55 Commits

Author SHA1 Message Date
caoqianming 920e37f759 feat(web): add inline point chart panel 2026-03-20 10:54:20 +08:00
caoqianming bf548161a6 feat: 心跳检测设置为4秒 2026-03-20 09:58:15 +08:00
caoqianming 8eb1d6671a perf(connection): reduce subscription lock contention 2026-03-17 08:28:55 +08:00
caoqianming f33d989905 perf(point): batch point creation queries 2026-03-17 08:25:04 +08:00
caoqianming 7e6c7a7e4c feat(reconnect): add retry backoff and manual reconnect 2026-03-17 08:15:54 +08:00
caoqianming dd110919dd style(web): remove rounded corners and localize card titles 2026-03-16 10:25:32 +08:00
caoqianming f33c96a4e5 fix(opcua): default point quality to Good when status is absent
Made-with: Cursor
2026-03-16 09:57:37 +08:00
caoqianming ae134c722a refactor(ui): redesign web interface with flat modern style
Made-with: Cursor
2026-03-16 08:48:12 +08:00
caoqianming 503aefc4cb refactor(event): rename ReloadEvent to AppEvent and split event channels
Clarify event semantics by renaming ReloadEvent to AppEvent and route control vs telemetry traffic through dedicated channels. This keeps control events isolated from high-frequency PointNewValue updates while preserving the existing send() call pattern.

Made-with: Cursor
2026-03-13 14:44:30 +08:00
caoqianming 5fa63ad6dd fix(opcua): stabilize reconnect loop and coalesce telemetry events
Always clear reconnect-in-progress markers after reconnect attempts so heartbeat-triggered retries are not blocked. Reduce high-frequency event overhead by coalescing consecutive point updates in the event worker and processing only the latest value per source/client handle.

Made-with: Cursor
2026-03-13 14:26:50 +08:00
caoqianming 5406568969 fix: harden event handling and source safety
Improve runtime resilience by bounding the reload event queue and processing telemetry updates without per-point spawned tasks. Also reduce security risk by sanitizing source responses, avoiding internal error detail leaks, and standardizing write-key configuration with backward compatibility.

Made-with: Cursor
2026-03-13 14:22:16 +08:00
caoqianming 6f215162a3 feat(page): add page table and CRUD handlers 2026-03-11 13:54:14 +08:00
caoqianming efed6aa816 feat: add page 2026-03-11 13:23:05 +08:00
caoqianming 1374abe550 feat(log): add file-based log APIs and switch file logs to JSON 2026-03-09 14:47:19 +08:00
caoqianming 63bcf679c2 fix(opcua): reconnect when subscription becomes invalid 2026-03-09 08:58:40 +08:00
caoqianming 0893c9783c fix: 修复心跳检查中订阅状态判断逻辑,避免启动时误触发重连 2026-03-06 13:51:47 +08:00
caoqianming 5dc1081c90 改进心跳检测中的订阅状态检查,通过读取服务器节点属性来验证订阅是否真正有效 2026-03-06 12:57:22 +08:00
caoqianming afab910780 在 DataChangeCallback 中添加 BadNoSubscription 错误检测 2026-03-06 10:58:27 +08:00
caoqianming d4d5749ccc 优化 OPC UA event_loop 监控和重连机制 2026-03-06 10:01:18 +08:00
caoqianming 76b6e17927 feat: save event_loop handle to avoid ghost session 2026-03-06 09:38:14 +08:00
caoqianming b197607d5f refactor: 添加 allocate_client_handle 函数封装句柄分配逻辑 2026-03-06 09:22:55 +08:00
caoqianming a2208e8958 perf: 将 poll_points 改为 Arc<Vec<PollPointInfo>> 以减少 clone 开销 2026-03-06 09:16:18 +08:00
caoqianming 487d3cdf26 refactor: 优化 unsubscribe_points_from_source 中 status 锁粒度,使用 get_session 函数 2026-03-06 09:13:30 +08:00
caoqianming 4d88bcbce3 refactor: 优化 heartbeat 中 status 锁粒度,使用 get_session 函数 2026-03-06 09:09:42 +08:00
caoqianming afac9f1eb9 fix: 修复 poll task 中 results 和 poll_points 可能错位的 bug 2026-03-06 09:04:50 +08:00
caoqianming 8e4abd0af9 feat: 添加重连保护机制修复重复重连问题 2026-03-06 09:01:15 +08:00
caoqianming aaf887a6fc 优化PointNewValue事件处理:并行执行update_point_monitor_data和send_to_public,移除不必要的ws_manager_clone 2026-03-05 15:28:04 +08:00
caoqianming ee3ee273b2 refactor: merge set_pool and start_reconnect_task into set_pool_and_start_reconnect_task 2026-03-05 14:01:40 +08:00
caoqianming 0f37c9435e feat: 实现心跳检测和自动重连功能 2026-03-05 13:27:13 +08:00
caoqianming 494cf1d656 优化连接流程:connect_from_source自动处理订阅,简化main.rs 2026-03-05 11:18:30 +08:00
caoqianming a2217a991c 重构ConnectionManager:简化get_session方法,移除pool依赖,重命名new_with_pool为new 2026-03-05 11:13:10 +08:00
caoqianming 5685c33687 优化main.rs日志打印:移除重复日志,使用并发处理source连接和订阅 2026-03-05 11:08:01 +08:00
caoqianming a63433e757 优化点取消订阅逻辑:从轮询列表中移除所有传入点,并记录订阅点和轮询点的移除数量 2026-03-05 11:01:20 +08:00
caoqianming 8230536c73 refactor: 在 connect 方法中启动统一轮询任务,移除 start_polling_for_points 方法 2026-03-05 10:52:27 +08:00
caoqianming 114d350e5b refactor: 移除 ReloadEvent::PointCreate,统一使用 PointCreateBatch 2026-03-05 09:31:52 +08:00
caoqianming a6be0827d0 refactor: 统一轮询任务实现,移除 scan_interval_s 字段 2026-03-05 09:30:30 +08:00
caoqianming d156108148 feat: 为 get_tag_list 接口添加分页功能 2026-03-04 15:19:39 +08:00
caoqianming f9284303f6 fix: 改进错误处理机制,支持查询参数反序列化和多种Axum响应类型转换 2026-03-04 14:11:59 +08:00
caoqianming 550c7b3974 修改migrate名称 2026-03-04 13:57:40 +08:00
caoqianming 606b57eb73 refactor: 优化点位列表查询功能 2026-03-04 13:39:06 +08:00
caoqianming fdb4f10ba4 feat: 添加通用的分页工具模块 2026-03-04 13:37:58 +08:00
caoqianming 3311823800 优化数据序列化:时间戳使用本地时间格式,简化 DataValue 输出 2026-03-04 12:41:14 +08:00
caoqianming 1ddb707a9b 优化 WebSocket 消息发送:移除不必要的 clone,注释掉 send_to_client 2026-03-04 12:35:22 +08:00
caoqianming 173814416f 修复潜在的死锁问题:将读锁的作用域限制在块内,避免在持有读锁时尝试获取写锁 2026-03-04 12:20:13 +08:00
caoqianming 6f62d753a5 修复编译警告:将 PollPointInfo 改为公开,移除未使用的字段 2026-03-04 11:26:38 +08:00
caoqianming 475ac02322 重构:将 poll_task_handles 和 poll_points 合并为一个双向映射,使用 PollPointInfo 结构 2026-03-04 11:24:13 +08:00
caoqianming b22225ad72 重构:将 poll_points_by_source 的内层 HashSet 移动到 ConnectionStatus 中,简化数据结构 2026-03-04 11:16:08 +08:00
caoqianming 4bb9bdd27d 优化 event.rs 中的克隆操作,减少 monitor 的克隆次数从 3 次减少到 1 次 2026-03-04 08:47:24 +08:00
caoqianming 562a2d566b feat: 为 PointMonitorInfo 添加旧值追踪和值变化检测 2026-03-04 08:35:28 +08:00
caoqianming 8127d04855 refactor: 将 PointValueChange 重命名为 PointNewValue 2026-03-03 16:56:37 +08:00