Files
daywork/README.md
T

92 lines
4.4 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.
# 实习工作日志(daywork)
面向实习生的个人工作管理工具:考勤打卡、工作记录、周报总结、备忘录、加密密码库、差旅记账。多端(桌面 / 网页 / 安卓)使用同一云端账号,数据实时互通。
- 在线实例:https://daywk.linyux.cn (网页版即应用本体,可安装为 PWA)
- 代码仓库:https://gitea.linyux.cn/root/daywork
- 设计方案:[docs/实习工作日志系统-设计方案.md](docs/实习工作日志系统-设计方案.md)
- 发布记录:[docs/release-notes-v0.2.0.md](docs/release-notes-v0.2.0.md)
## 架构
**服务器是唯一数据权威,各端只保留实时缓存。**
```
桌面(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/ 设计方案与发布记录
```
## 开发
```bash
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/)
```bash
# 起本地同步服务后运行:
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](server/DEPLOY.md)。更新流程:
```bash
cd /opt/daywork && git pull && cd server && docker compose up -d --build
```
## 安全与隐私
- 登录密码、云端密码:仅 PBKDF2(15 万次迭代)哈希,任何一端不存明文
- 密码库:AES-256-GCM,主密钥仅存在于解锁后的内存,主密码永不出机
- 服务端每日自动备份到 server/data/backups/(保留 14 天),注册表变更即触发备份
- 界面无表情符号,图标全部自绘 SVG