docs: 新增 .qoder Repowiki 知识库文档

This commit is contained in:
cbb
2026-09-07 12:19:26 +08:00
parent 43d42ad891
commit ef9472334a
105 changed files with 1313322 additions and 263 deletions
@@ -0,0 +1,27 @@
schema_version: 1
module_path: js_frontend/can
title: CAN 控制台前端:DBC 解析、报文发送与接收监控
scope:
- js/can/
- js/can_monitor.js
source_files: []
depends_on: []
related_to: []
kk_module_id: b5c93572-2980-4d8b-abcb-49299366edc6
kk_ordinal: 4
kk_cards:
architecture_design:
id: 8c1ea8cb-f95b-48ee-856a-50f8336e3eea
title: CAN 控制台前端:DBC 解析、报文发送与接收监控
coding_conventions:
id: cee80565-5287-44a1-881b-e9087ff9c0ed
title: CAN 控制台前端:DBC 解析、报文发送与接收监控
overview:
id: ee9c08d3-0aed-4e95-8a7f-f446a2debab4
title: CAN 控制台前端:DBC 解析、报文发送与接收监控
tech_stack:
id: 7d94fd27-c122-4f4b-a175-b9c7ac60a3ad
title: CAN 控制台前端:DBC 解析、报文发送与接收监控
unique_setup_and_commands:
id: 7b2bd04a-c5d6-4bce-954b-193adc49892a
title: CAN 控制台前端:DBC 解析、报文发送与接收监控
@@ -0,0 +1 @@
纯浏览器端 JavaScript(ES Module),使用 TextDecoder('utf-8' | 'gb18030') 解析 DBC 文件、localStorage 会话存储、AbortController+setTimeout 双超时控制 fetch、Clipboard API 降级 execCommand 回退。
@@ -0,0 +1,8 @@
模块按职责拆分为五个 ES Module,依赖方向单向收敛于 `dbc.js`:
- `dbc.js` 为基础设施层,导出共享 state/el、IP 工具、字节格式化工具,以及 DBC 文本读取(UTF-8 / GB18030/BOM 自动回退)和 DBC 解析器(BO_/SG_/CM_/VAL_ 行 → { messages, nodeNames, messageMap }),不依赖其他 can 子模块。
- `messages.js` 负责报文列表渲染、关键字与发送节点筛选、节点过滤面板 UI 及批量选择。
- `signals.js` 基于 DBC 信号定义生成内联信号表格,维护 signalValues bag,处理 Motorola/Intel 位序、有符号/无符号、枚举、因子/偏移编解码,并维护当前选中报文的编码预览。
- `send.js` 作为 HTTP 出口,统一通过 `fetch(getBaseUrl() + '/can/send_batch')` 发原始帧或构造后的批量帧,封装错误码映射(CAN_SEND_ERR_DESC / GD32_ERR_DESC),维护发送历史与剪贴板复制。
- `persist.js` 将多 DBC 原文、signalValues、checkedKeys/expandedKeys、transmitterFilter、history、表单状态序列化到 localStorage(键 `dcu_can_session_v1`),并以防抖 `scheduleCanPersist()` + 失败时逐步砍历史/信号值的方式保证写入安全;恢复时逆向重建 DBC。
- `can_monitor.js` 是独立的 1Hz 轮询入口,调用 `/can/feedback` 获取 3 路 CAN 通道 RX/TX/Drop/Err/TEC/REC/bus_state/entries,渲染三卡片及 ID snap 表,可被 `can.html` 右侧抽屉复用。
模块间通过 ES Module live binding 共享 `state` 与 `el`,避免重复缓存 DOM 与状态副本。
@@ -0,0 +1 @@
实现浏览器端 CAN 调试工具的 DBC 文件解析、报文过滤/信号编辑、批量帧发送与会话持久化,并提供独立页的 CAN 通道反馈轮询监控。
@@ -0,0 +1 @@
无需构建步骤;直接由网页加载 ES Module。`readDbcText` 支持 UTF-8 优先、GB18030 回退并去除 BOM,用于本地拖入的 .dbc 文件;`parseDbc` 自行解析 BO_/SG_/CM_/VAL_ 标准 DBC 片段。
@@ -0,0 +1,6 @@
- 跨子模块共享可变状态与 DOM 引用集中放在 `dbc.js` 导出的 `state`/`el` 对象上,各子模块通过 import 获取同一引用,利用 ES Module live binding 保证同步。
- 对外部不可信文本一律使用 `escapeHtml`/`sanitizeHtml` 后再插入 innerHTML,所有数据属性赋值前先经 `escapeHtml`,禁止拼接 HTML 字符串直接使用用户输入。
- 网络请求统一使用 `new AbortController()` + `setTimeout` 双保险取消,防止在连接 reset 等边缘场景下 await 永久挂起。
- 高频本地持久化采用「收集事件 → scheduleCanPersist → 防抖定时器 → saveCanSessionNow」模式,并在 writePayload 失败时逐级减少 payload(压缩历史→清 signalValues)以容忍 localStorage 配额不足。
- DLC/字节数组输出统一走 `padHex(value, width)` 与 `bytesToHex(bytes)`,确保十六进制展示宽度一致、全大写。
- 错误信息分层展示:完整描述走 buildSendResponseText,简短文案走 buildSendResponseShort 去掉冗余前缀,使历史记录空间有限时仍保留核心原因。