Files
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

50 lines
7.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 start`preview/ `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),或提交信息用英文。
- 后台启动 dev`cd 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 **整体加密整个工程 JSON**v1.5.0 起);project.tsshortcuts.tsloader.ts)。
- preload`window.api`win/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 字段含 `PagePreview`Base64 截图),项目文件存 `.json`
## 关键 UI/交互约定
- Ribbon 编辑 Tab 组序:项目 → 页面 → 发布(发布 7 按钮:预览本页👁️/单屏发布🎠/多屏发布🖥️/交互发布🔁[主屏+小屏轮流投屏]/停止轮播⏹️/关闭所有🏁/检测屏幕📡,全部走弹窗)。
- 页面列表卡片:预览图 + 底部操作组(前插/上移/下移/复制/删除/截图,SVG 扁平图标,仅 active 显示)。
- 快捷键:大屏窗口/轮播数字键 1-9 需**长按超过 keyThreshold**(防网页内输入数字误触),Esc 退出、F5 刷新、锁定键(默认 F9)全局开关。
- 发布设置可配 multi/single/main 三种默认模式,single 支持 intervalSec 轮播。
## 验证方法
- 渲染层 CDP`Start-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.1**2026-08-23 从 0.1.0→0.2.0→1.5.1);主进程 `app.getVersion()`;标题栏显示「系统版本号 vX.Y.Z」;任务栏标题由 `did-finish-load``setTitle` 兜底(页面 `<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-23electron-builder@26.15.3 已装,**产物为 v1.5.1**):`npm run dist``release\智慧农业大数据可视化控制中心-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. 代码视图/页面视图切换、遥控器硬件对接、帮助文档入口。