docs: 整理仓库结构——新增根 README(当前架构)、客户端 README 与部署手册更新至服务器权威模型,文档归位 docs/,清理误提交的打包产物
This commit is contained in:
@@ -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
|
||||
Reference in New Issue
Block a user