Files
DataViewCenter/.codebuddy/memory/MEMORY.md
T
fanhongcai aa8f070414 v0.2.0: 交互发布+多屏发布增强+页面管理优化
- 版本升级 0.1.0 -> 0.2.0(package.json 单一来源,标题栏/设置/关于同步)
- 新增交互发布:指定大屏为主屏,其余屏自行加载本屏页面,主屏可轮流投屏各屏内容
- 单屏发布支持自动轮播(intervalSec)与停止轮播(保留窗体可手动切换)
- 多屏发布支持 alsoMain 主屏同时参与;新增屏幕检测弹窗
- 页面列表缩略图 key 重建避免浏览器复用旧图;「打开」按钮防抖(opening 状态)
- URL 粘贴自动提取网页标题/描述(主进程 fetchMeta)
- 项目组新增「新建」:默认创建 1 个空白页面,保存时选择位置
- 发布组 4 按钮(预览/单屏/多屏/交互)统一为线性 SVG 显示器族图标
- 属性面板 URL 输入框加高 1 行、页面参数加高 2 行并去掉水印
- 编辑预览 WebFrame key={src} 重建,修复切页内容错位
2026-08-23 16:31:20 +08:00

50 lines
6.9 KiB
Markdown
Raw 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+未保存关闭守卫;screens.ts 屏幕窗口/轮播/WebContentsView 主屏全屏/probesettings.ts 配置持久化 userData/settings.jsoncrypto.ts AES-256-GCM 密码加密页面 URL/参数;project.tsshortcuts.tsloader.ts)。
- preload`window.api`win/screens/project/key/syncProject/setDirty/beep/createShortcut/confirm/carousel/page.snapshot/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`(当前 **0.2.0**2026-08-23 从 0.1.0 升级,因新增交互发布+多项 bug 修复);主进程 `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,✅/⏳ 标注)、`开发进度存档`**跨会话恢复入口**)、`指令清单`(历史,已全部实现)。
- 已实现功能全景(v0.2.0):Ribbon 三组(项目/页面/发布)、项目组含**新建**(默认 1 个空白页面,另存为才落地)、发布 7 按钮(预览本页/单屏发布[可轮播]/多屏发布[alsoMain]/交互发布[主屏轮流投屏]/停止轮播/关闭所有/检测屏幕,**其中预览/单屏/多屏/交互 4 按钮为统一线性 SVG 显示器族图标**)、配置 6 菜单(项目信息/遥控设置[阈值+锁定键]/快捷方式×3/发布设置/设备测试[键/音/麦/屏]/关于)、快捷键(1-9 长按>阈值、↑↓、Esc、F5、锁定键)、AES-256-GCM 密码加密、标题栏版本号(package.json 单一来源)、编辑预览 WebFrame `key={src}` 重建(防内容错位)、`window.__store` 全局调试接口、属性面板 URL 输入框 3 行/页面参数 4 行无水印。
- **未实现/规划**:项目导入/导出、代码视图/页面视图切换、遥控器硬件对接、帮助文档入口。
- 绿色版打包已完成(2026-08-23electron-builder@26.15.3 已装,**产物为 v0.1.0**):`npm run dist``release\智慧农业大数据可视化控制中心-0.1.0-win.zip`(绿色免安装,当前 **128.9MB**+ `release\win-unpacked\`。应用图标 `build/icon.ico` 已配置。瘦身:`compression: maximum` + `scripts/afterPack.js` 裁剪 locales55→3),zip 139.7→128.9MB。**升级到 0.2.0 后需重新 `npm run dist`**。
- **⚠️ 打包必读**:每次 `npm run dist` 前必须用 `[System.IO.Directory]::Delete(...,$true)` 删掉旧 `release/`SafeDelete 守卫会拦批量删除并导致打包卡死);打包前设 `$env:ELECTRON_BUILDER_BINARIES_MIRROR="https://npmmirror.com/mirrors/electron-builder-binaries/"`。详见根目录 `开发进度存档` §4。
## 待办/候选开发点(截至 2026-08-23
1. 页面预览图实际截图流程实测(page:snapshot 依赖 URL 可加载)。
2. 遥控器模拟界面视觉美化。
3. 项目 JSON 导入/导出。
4. 代码视图/页面视图切换、遥控器硬件对接、帮助文档入口。