实习工作日志(daywork)

面向实习生的个人工作管理工具:考勤打卡、工作记录、周报总结、备忘录、加密密码库、差旅记账。多端(桌面 / 网页 / 安卓)使用同一云端账号,数据实时互通。

架构

服务器是唯一数据权威,各端只保留实时缓存。

桌面(Electron) ─┐
网页(PWA)      ─┼─ 写:立即推送差异 → 服务器确认 → 返回权威快照 → 本地缓存重建
安卓(Capacitor)─┘   读:启动 / SSE 通知 / 60s 兜底 → 全量刷新缓存
                        │
                        ▼
        同步服务器(零依赖 Node,JSON 文件存储,每日自动备份)
        · 注册表:用户名 + PBKDF2 哈希(角色:xionglin 为管理员)
        · 业务数据:按用户隔离的九张表(project / work_log / log_item /
          attendance / weekly_note / setting / memo / credential / transaction)

要点:

  • 无合并逻辑:本地缓存永远等于服务器快照,从结构上消灭双端分歧
  • 密码库端到端加密:主密码 PBKDF2 派生 AES-256-GCM 密钥在本机加解密,服务器只见密文
  • 登录密码不上传明文:服务端仅存 PBKDF2 哈希;本机存自动登录凭据(可清除)
  • 用户管理:管理员账号 xionglin 可在应用内新建 / 重置密码 / 删除用户(服务端鉴权)

功能

打卡(上下班、自动改时、补卡、休假、地点预设)· 工作日志(结构化条目、里程碑、待跟进)· 日历视图 · 统计 · 周报与 AI 润色(可选配置)· 周记提醒 · 备忘录 · 加密密码库 · 记账(报销跟踪)· 全局搜索 · JSON/CSV 备份导入导出 · 用户管理(管理员)

仓库结构

├─ intern-log/            客户端(Vue 3 + TS + Vite + Dexie)
│  ├─ src/                业务源码(views / components / db / sync / domain / lib)
│  ├─ electron/           桌面壳(Electron 主进程 + 预加载)
│  ├─ android/            Capacitor 安卓工程
│  ├─ dist/               网页构建产物(服务端容器直接托管,故随仓库提交)
│  ├─ release/            打包产物(不入库,见 .gitignore)
│  └─ repro/              开发验证脚本(同步引擎回归、协议审计、单测)
├─ server/                同步服务端(零依赖 node:http + JSON 存储)
│  ├─ index.js            全部服务端逻辑(认证 / 同步 / SSE / 用户管理 / 备份)
│  ├─ Dockerfile / docker-compose.yml
│  └─ DEPLOY.md           部署手册(域名 / Caddy / 运维)
└─ docs/                  设计方案与发布记录

开发

cd intern-log
pnpm install
pnpm dev          # http://localhost:5173
pnpm build        # 产出 dist/(服务端容器托管的就是它)

桌面打包:pnpm dist(产物 release/InternLog-Setup-*.exe) 安卓打包:pnpm build && npx cap sync android,然后 android/gradlew.bat assembleDebug

测试(本地验证脚本,位于 intern-log/repro/)

# 起本地同步服务后运行:
node repro/protocol-audit.mjs     # 服务端协议审计(认证/九表/LWW/墓碑/SSE/备份)
node repro/admin-audit.mjs        # 用户管理审计
# 引擎级测试需先 esbuild 打包(详见脚本头部注释):
#   two-device.ts  双设备端到端回归
#   engine-realtime.ts  实时链路(写入自动推送 + SSE 自动拉取)
#   unit-tests.ts  纯函数单测(日期/考勤/加密)

部署

见 server/DEPLOY.md。更新流程:

cd /opt/daywork && git pull && cd server && docker compose up -d --build

安全与隐私

  • 登录密码、云端密码:仅 PBKDF2(15 万次迭代)哈希,任何一端不存明文
  • 密码库:AES-256-GCM,主密钥仅存在于解锁后的内存,主密码永不出机
  • 服务端每日自动备份到 server/data/backups/(保留 14 天),注册表变更即触发备份
  • 界面无表情符号,图标全部自绘 SVG
S
Description
No description provided
Readme
7.8 MiB
v0.7.0
Latest
2026-10-27 04:57:11 +00:00
Languages
Vue 50.5%
TypeScript 30.5%
JavaScript 14.4%
CSS 3.8%
Java 0.3%
Other 0.5%