2.0 KiB
2.0 KiB
intern-log 客户端
实习工作日志的多端客户端(网页 / Electron 桌面 / Capacitor 安卓共用同一套源码)。
整体架构、部署与安全设计见仓库根目录 README;设计方案见 docs/实习工作日志系统-设计方案.md。
运行
pnpm install
pnpm dev # 开发模式,默认 http://localhost:5173
pnpm build # 构建产物到 dist/(服务端容器托管的就是它)
pnpm preview # 预览构建产物,默认 http://localhost:4173
数据模型(重要)
- 服务器是唯一数据权威,本地 Dexie(IndexedDB)只是实时缓存: 每次写操作立即推送差异到服务器,并以服务器返回的快照全量重建缓存
- 同步引擎:
src/sync/engine.ts(差异推送 + 快照重建 + SSE 实时通知 + 60s 兜底) - 本地库按云端用户隔离:
intern_worklog_<云端userId>
目录速览
src/
├─ views/ 页面(日历/详情/统计/总结/记账/备忘录/密码库/设置/用户管理)
├─ components/ 通用组件与自绘 SVG 图标(icons.ts)
├─ db/ schema(Dexie)/ repo(数据仓库,写后即推)/ auth(云端登录)/ vault(加密密码库)
├─ sync/ 同步引擎
├─ domain/ 考勤计算 / AI 润色
└─ lib/ 日期、加密、下载、toast、错误浮层、服务器基址
打包
- 桌面:
pnpm dist→ release/InternLog-Setup-*.exe(NSIS)与 win-unpacked/ - 安卓:
pnpm build && npx cap sync android→ android/gradlew.bat assembleDebug (需 JDK 17:set JAVA_HOME=C:\Program Files\Java\jdk-17)
验证脚本(repro/)
开发期回归工具,不参与构建:
protocol-audit.mjs/admin-audit.mjs:对本地同步服务(127.0.0.1:3780)的协议级审计two-device.ts/engine-realtime.ts/unit-tests.ts:引擎级与单元测试(用 esbuild 打包后 node 运行,命令见文件头注释)