@jnrs/lingshu-smart 3.1.6 → 3.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/AGENTS.md CHANGED
@@ -661,9 +661,9 @@ type ILayerOperating =
661
661
  | `composables/useDebugEasterEgg.ts` | 调试触发检测:500ms 内 10 次点击打开面板 |
662
662
  | `components/debug/GlobalSetting.vue` | 全局设置对话框 UI(原 DebugPanel,含语言/日志等级/FPS/阴影/动画等开关) |
663
663
  | `components/debug/ScriptRunner/` | Socket 脚本模拟器:脚本步骤编排、断点调试,生成标准信封协议消息(`envelope + payload`,含 device_init / device_command / resource_command / alarm_push / scene_reset 等模板);设备下拉支持自定义/全部复位(resetAll)/资源操作,「添加」支持单点 / 持续运行 / **自定义脚本**(`__raw__`:编辑「消息数据(JSON)」,运行时原样透出、不包装 envelope 不做加工)三种步骤,产物经 `feedSocketMessage`/`feedMessage` 驱动画布;脚本**按方案分组**存储(`ScriptCaseData[]`:caseId / caseName / steps / looping,与 `wsProxyConfig` 对称,经 `currentCase` prop 确定归属);支持**一键烧录**(二次确认后写入 `public/lingshu-smart/mockSocket.json`,开发服务器接口 `POST /lingshu-smart/__burn-mock-socket`,宿主无需改动)与**导入/导出** JSON 文件;弹窗打开时按「文件优先 + 未烧录改动确认」懒加载当前方案(见 `scriptFile.ts`) |
664
- | `components/debug/WsProxy/` | WebSocket 代理器:声明式字段映射将后端 socket 结构桥接为标准信封协议消息(`envelope + payload`,snake_case)并经 `feedSocketMessage` 驱动画布,标准信封消息直接透传;顶部单选「信封模式 / 注册表模式」+ 连接面板「Websocket 数据来源」下拉(内置 / 外接,组合出 builtin / external / registry / registry-external 四种数据源);注册表模式**仅按「消息类型值」分发**——「设备状态配置」为每台画布设备独立配置消息类型值(`RegistryDeviceBinding.typeValue`,消息类型字段值相等即归属该设备)与设备主键字段名(`idField`,缺省回退全局 `registryIdField`),提取主键查注册表匹配具体设备后驱动;「设备类型标识」(枚举值+number 绑定,`registryDevices`)仅作标识信息展示,`device_type`/`device_id` 由代理器自动注入;资源消息按各资源组「消息类型值」(`resourceFields.typeValues`)分发,`to/from.device_id`(注册表主键)经注册表+绑定自动翻译为画布业务标识并注入 `device_type`;「消息配置」(payloadKey / sourceTypeField)两种流水线均生效;支持连接/断开/重连(指数退避)、心跳 ping/pong、日志、配置导出/导入、场景像素换算(percentToPixel 百分比/ runtimeToPixel 运行时坐标)、standalone 独立标签页模式 / remote 远程接收模式(BroadcastChannel 跨标签页流转数据);操作规则含 single/resource/resetAll(ResetAll 接收源类型值 `scene_reset` 后生成全部复位) |
665
- | `controller/SocketDispatcher.ts` | Socket 协议分发器:解析 `envelope + payload`,识别心跳、按 `envelope.id` 去重、按类型分发(device_init / device_command / resource_command / alarm_push / runtime_status_push / scene_reset),对象资源池管理资源生命周期,处理完毕回执 `command_ack`(0/400/404/409/500) |
666
- | `controller/AppController.ts` | 画布控制器:提供 `toggleShadows` / `toggleAnimations` / `setFps` / `resetAllModels` / `setAlarmHighlight` 等方法 |
664
+ | `components/debug/WsProxy/` | WebSocket 代理器:声明式字段映射将后端 socket 结构桥接为标准信封协议消息(`envelope + payload`,snake_case)并经 `feedSocketMessage` 驱动画布,标准信封消息直接透传;顶部单选「信封模式 / 注册表模式」+ 连接面板「Websocket 数据来源」下拉(内置 / 外接,组合出 builtin / external / registry / registry-external 四种数据源);注册表模式**仅按「消息类型值」分发**——「设备状态配置」为每台画布设备独立配置消息类型值(`RegistryDeviceBinding.typeValue`,消息类型字段值相等即归属该设备)与设备主键字段名(`idField`,缺省回退全局 `registryIdField`),提取主键查注册表匹配具体设备后驱动;同一消息类型值对应多台设备时按「设备类型标识」(枚举值+number ↔ 注册表 `deviceType`/`number`,`registryDevices`)精确区分,无法区分则 warn 后丢弃;下发 `device_id` 优先级为「设备类型标识(枚举值_number,须与业务标识一致)→ 业务标识(`rawData.id`)→ 画布图层 id」,画布侧同步按「业务索引 → 图层 id」两条索引定位;注册表拉取/绑定变化时自动把注册表设备记录写入对应画布图层的 `rawData.device`(点击设备可直接读取);资源消息按各资源组「消息类型值」(`resourceFields.typeValues`)分发,`to/from.device_id`(注册表主键)经注册表+绑定自动翻译为画布标识并注入 `device_type`;「消息配置」(payloadKey / sourceTypeField)两种流水线均生效;支持连接/断开/重连(指数退避)、心跳 ping/pong、日志、配置导出/导入、场景像素换算(percentToPixel 百分比/ runtimeToPixel 运行时坐标)、standalone 独立标签页模式 / remote 远程接收模式(BroadcastChannel 跨标签页流转数据);操作规则含 single/resource/resetAll(ResetAll 接收源类型值 `scene_reset` 后生成全部复位) |
665
+ | `controller/SocketDispatcher.ts` | Socket 协议分发器:解析 `envelope + payload`,识别心跳、按 `envelope.id` 去重、按类型分发(device_init / device_command / resource_command / alarm_push / runtime_status_push / scene_reset),对象资源池管理资源生命周期,处理完毕回执 `command_ack`(0/400/404/409/500,非 0 回执同步输出 warn 日志);设备定位按「业务标识(`rawData.id`)→ 画布图层 id」依次匹配;`transfer` 在资源池未登记该资源且未携带来源位置(`from.device_id` 为空)时直接在目标工位放置资源(等价 add,不回 404);资源实体 `raw_data` 携带资源身份与所在位置(点击资源可读取) |
666
+ | `controller/AppController.ts` | 画布控制器:提供 `toggleShadows` / `toggleAnimations` / `setFps` / `resetAllModels` / `setAlarmHighlight` / `resolveDeviceModels`(业务标识 → 画布图层 id 回退定位)/ `setDeviceRegistrySnapshot`(设备注册表快照写入模型 `rawData.device`,供点击设备读取)等方法 |
667
667
 
668
668
  ### 日志系统
669
669
 
@@ -12,6 +12,10 @@ type __VLS_Props = {
12
12
  showToggle?: boolean;
13
13
  /** 是否显示「操作」列(默认 true;false 时隐藏表头与行内的删除按钮列) */
14
14
  showAction?: boolean;
15
+ /** 画布字段是否以纯文本展示(默认 false;true 时不可编辑,仅只读展示) */
16
+ targetText?: boolean;
17
+ /** 必填的画布字段名列表(命中时在该单元格右上角标记红色 *) */
18
+ requiredTargets?: string[];
15
19
  };
16
20
  declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
17
21
  add: () => any;
@@ -35,5 +39,7 @@ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {
35
39
  showFooter: boolean;
36
40
  showToggle: boolean;
37
41
  showAction: boolean;
42
+ targetText: boolean;
43
+ requiredTargets: string[];
38
44
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
39
45
  export default _default;
@@ -288,7 +288,7 @@ export declare function buildRegistryDeviceMap(devices: RegistryDeviceInfo[]): M
288
288
  * 与平铺结构 { deviceId: 107, status: 1 }(回退到消息根级解析),解析流程:
289
289
  * 1. 标准信封消息(如脚本模拟器经 feedMessage 注入)直接透传,与信封流水线一致;
290
290
  * 2. 非 single 规则(资源 / 全局操作 / 状态推送)按 sourceTypeField 提取类型值匹配,委托 applyProxy 同源解析;
291
- * 3. 设备状态类消息:按「消息类型值」分发——消息「消息类型字段名」的值与某设备配置的消息类型值相等时归属该设备,再按该设备的「设备主键字段名」提取主键查注册表匹配具体设备;未命中消息类型值 / 注册表未找到设备 → 日志提示后丢弃;
291
+ * 3. 设备状态类消息:按「消息类型值」分发——消息「消息类型字段名」的值与某设备配置的消息类型值相等时归属该设备,再按该设备的「设备主键字段名」提取主键查注册表匹配具体设备;同一消息类型值对应多台设备时,须用「设备类型标识」(deviceType + number)与注册表设备精确区分,未命中消息类型值 / 注册表未找到设备 / 多设备无法区分 → 日志提示后丢弃;
292
292
  * 4. 命中设备后:device_type 由类名自动推导、device_id 取画布设备业务标识(自动注入,无需配置);
293
293
  * 5. 应用该设备绑定的状态字段映射(source 路径相对业务载荷,如 status → device_state),生成 device_command 驱动画布。
294
294
  */