Files
DataViewCenter/.codebuddy/memory/MEMORY.md
T
fanhongcai ef6075a810 v1.5.1: 文传易外链+缩略图改截预览webview+工程整体加密+缩略图压缩
- 配置按钮组新增「文传易」外链(关于之前,系统浏览器打开 http://wenchuanyi.bbitcn.net/)
- 缩略图改为对编辑区预览 webview 直接截图(所见即所得),非当前预览页回退按 URL 截图
- 工程 JSON 整体加密(AES-256-GCM,enc:v1: 覆盖整个 JSON)
- 缩略图压缩 ≤500KB(PNG→JPEG)
- 版本号升至 1.5.1(同步 settings/utils/store/ProjectInfo/AboutPanel 默认值)
- 更新开发进度存档与 MEMORY 至 v1.5.1
2026-08-23 18:40:54 +08:00

7.3 KiB
Raw Blame History

MEMORY.md — SmartAgriCenter 智慧农业大数据可视化控制中心

维护说明:本文件为跨会话长期记忆,记录项目稳定事实与约定。每日详细变更见 YYYY-MM-DD.md⚠️ 换环境/重装/新开会话时,先读根目录 开发进度存档(目录结构+启动打包手册+代码地图+踩坑实录),可省大量探索。

项目定位

  • Electron + React 19 + TypeScript + Vite 7 + electron-vite@5 + zustand 重写版(替代旧 WinForm 版 SmartAgriDataCenter)。
  • 角色:软件本身只是编辑器/调度器/发布器,大屏业务内容是 HTML 网页,不做图表绘制。
  • 工作区:仓库根目录(当前为 c:/Users/范先生/CodeBuddy/DataViewCenter路径可迁移,文档内的绝对路径以克隆后实际位置为准),项目在 SmartAgriCenter/。原型参考在 prototype/index.html、sample-screen.html)。

依赖与运行(重要!)

  • 依赖固定 electron-vite@5 vite@7 @vitejs/plugin-react@5(避免 vite8 与 electron-vite peer 冲突);Electron ^43。
  • 命令:npm run dev / npm run build / npm startpreview/ npm run typecheck
  • 中文路径 PowerShell 坑:参数含中文路径(c:/Users/范先生/...)会乱码导致 cd 失败,命令一律用相对路径。
  • ⚠️ 中文 commit message 坑(2026-08-23 修复)git commit -m "中文" 在 PowerShell/cmd 下会按 GBK 传参、git 按 UTF-8 存储 → 提交信息双编码乱码。已用 Node 脚本 + git hash-object 保真重写 3 条历史并 force push(新 hash2c90205/4b3ea03/b11bea1)。以后提交一律用 git commit -F <utf8消息文件>write_to_file 写 UTF-8 文件再 -F),或提交信息用英文。
  • 后台启动 devcd SmartAgriCenter; Start-Process npm.cmd -ArgumentList 'run','dev' -RedirectStandardOutput 'dev.log' -RedirectStandardError 'dev-err.log'(必须 npm.cmd)。
  • Electron 二进制缺失时:先 $env:ELECTRON_MIRROR="https://npmmirror.com/mirrors/electron/"node node_modules/electron/install.js
  • dev.log / dev-err.log 留在 SmartAgriCenter 根目录,受 SafeDelete 保护,无害。

架构要点

  • 三进程:src/main/(index.ts 无边框主窗+单实例锁;ipc.ts 全部 IPC+未保存关闭守卫,含 page:snapshot/page:compress/clipboard:write/shell:openExternalscreens.ts 屏幕窗口/轮播/WebContentsView 主屏全屏/probesettings.ts 配置持久化 userData/settings.jsoncrypto.ts AES-256-GCM 整体加密整个工程 JSONv1.5.0 起);project.tsshortcuts.tsloader.ts)。
  • preloadwindow.apiwin/screens/project/key/syncProject/setDirty/beep/createShortcut/confirm/carousel/clipboard/shell/page.snapshot/page.compress/settings)。
  • rendererzustand storepages/屏幕/视图/settings);视图仅 'edit' | 'config'(发布 Tab 已并入编辑 Tab Ribbon);Webview 用 document.createElement('webview') 封装。
  • 页面 JSON 字段含 PagePreviewBase64 截图),项目文件存 .json

关键 UI/交互约定

  • Ribbon 编辑 Tab 组序:项目 → 页面 → 发布(发布 7 按钮:预览本页👁️/单屏发布🎠/多屏发布🖥️/交互发布🔁[主屏+小屏轮流投屏]/停止轮播⏹️/关闭所有🏁/检测屏幕📡,全部走弹窗)。
  • 页面列表卡片:预览图 + 底部操作组(前插/上移/下移/复制/删除/截图,SVG 扁平图标,仅 active 显示)。
  • 快捷键:大屏窗口/轮播数字键 1-9 需长按超过 keyThreshold(防网页内输入数字误触),Esc 退出、F5 刷新、锁定键(默认 F9)全局开关。
  • 发布设置可配 multi/single/main 三种默认模式,single 支持 intervalSec 轮播。

验证方法

  • 渲染层 CDPStart-Process electron.cmd -ArgumentList ".", "--remote-debugging-port=9223"Runtime.evaluate 检查 #root children / window.api
  • 改完 WebFrame 相关代码需重启 devHMR 不重建已存在 webview)。
  • electron-vite dev 修改 src/main/preload 不会自动重启 electron,需手动杀掉 dev 进程组(npm-cli→electron-vite→electron)再重新启动;仅 renderer 改动走 HMR 无需重启。

版本号与打包(2026-08-23 更新)

  • 版本号单一来源 = package.json version(当前 1.5.12026-08-23 从 0.1.0→0.2.0→1.5.1);主进程 app.getVersion();标题栏显示「系统版本号 vX.Y.Z」;任务栏标题由 did-finish-loadsetTitle 兜底(页面 <title> 会覆盖构造标题)。版本号其他兜底引用:main/settings.ts 默认 projectVersion、renderer/utils.ts fallback、AboutPanel/ProjectInfo fallback+placeholder,升级时需同步;项目 JSON 文件内 version 字段是用户数据不动
  • 文档三件套(均在根目录,无扩展名):项目需求v3.0/ 标注)、开发进度存档跨会话恢复入口)、指令清单(历史,已全部实现)。
  • 已实现功能全景(v1.5.1):Ribbon 三组(项目/页面/发布)、项目组含新建(默认 1 个空白页面,另存为才落地)、发布 7 按钮(预览本页/单屏发布[可轮播]/多屏发布[alsoMain]/交互发布[主屏轮流投屏]/停止轮播/关闭所有/检测屏幕,其中预览/单屏/多屏/交互 4 按钮为统一线性 SVG 显示器族图标)、配置 6 菜单(项目信息/遥控设置[阈值+锁定键]/快捷方式×3/发布设置/设备测试[键/音/麦/屏]/关于/文传易外链)、快捷键(1-9 长按>阈值、↑↓、Esc、F5、锁定键)、AES-256-GCM 整体加密整个工程 JSON、标题栏版本号(package.json 单一来源)、编辑预览 WebFrame key={src} 重建(防内容错位)、window.__store 全局调试接口、属性面板 URL 3 行/参数 4 行、新增页面默认值(url/params/desc 空、screen/ctrl=当前最大值+1)、版本号快捷操作(nextMajor/Minor/Patch、保存修订号+1)、缩略图截预览 webview(所见即所得,wv.capturePage()→IPC page:compress→≤500KB JPEG、复制走 IPC clipboard:write、打开工程防抖。
  • 未实现/规划:项目导入/导出、代码视图/页面视图切换、遥控器硬件对接、帮助文档入口。
  • 绿色版打包已完成(2026-08-23,electron-builder@26.15.3 已装,产物为 v1.5.1):npm run distrelease\智慧农业大数据可视化控制中心-1.5.1-win.zip(绿色免安装,当前 135.1MB+ release\win-unpacked\。应用图标 build/icon.ico 已配置。瘦身:compression: maximum + scripts/afterPack.js 裁剪 locales55→3)。
  • ⚠️ 打包必读:每次 npm run dist 前必须删旧 release/cmd /c rmdir /s /q <release路径>SafeDelete 守卫会拦批量删除并导致打包卡死;.NET API 写法的 $true/$_ 会被外层 shell 展开报错,避免用);打包前设 $env:ELECTRON_BUILDER_BINARIES_MIRROR="https://npmmirror.com/mirrors/electron-builder-binaries/"。详见根目录 开发进度存档 §4。

待办/候选开发点(截至 2026-08-23

  1. 页面预览图截图流程已实测通过(2026-08-23 改为截预览 webview,所见即所得)。
  2. 遥控器模拟界面视觉美化。
  3. 项目 JSON 导入/导出。
  4. 代码视图/页面视图切换、遥控器硬件对接、帮助文档入口。