docs: 整理仓库结构——新增根 README(当前架构)、客户端 README 与部署手册更新至服务器权威模型,文档归位 docs/,清理误提交的打包产物

This commit is contained in:
root
2026-10-16 22:35:55 +08:00
parent aa773062fe
commit 344e70bf50
10 changed files with 151 additions and 78471 deletions
+91
View File
@@ -0,0 +1,91 @@
# 实习工作日志(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