Files
root 8cdf8b44fa docs: refresh public docs for current codebase, add SECURITY.md
- README: real counts (44 commands, 61 integration asserts, demo=25 records
  + 4 semesters + 7 attachments), add resume/assessment module features,
  env vars incl. LSKY, doc navigation table, done-roadmap items checked
- docs/api.md: /auth/logout, admin users/demo-rebuild/sync-lsky routes,
  attachment thumb/download channels, profile_upsert top-key merge
  semantics, full footprint_list query reference, 44-command table
- sync-server/README: replace stale ADMIN_TOKEN/X-Admin-Token admin section
  (actual is_admin Bearer model), add go-live checklist, backup note for WAL
- CHANGELOG: add Unreleased section (resume/assessment modules, security
  fixes, perf tuning)
- CONTRIBUTING: 61 asserts, security-sensitive-change guidance, perf baseline
  table, security issue routing
- docs/SECURITY.md: new - report channel, threat model table, hardening
  summary, known tradeoffs
- LICENSE: ensure MIT file matches README badge
2026-10-17 22:27:56 +08:00

52 lines
2.9 KiB
Markdown
Raw Permalink 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.
# 更新日志
本项目的所有显著变更都记录在此文件中。
格式基于 [Keep a Changelog](https://keepachangelog.com/zh-CN/1.1.0/),
版本遵循 [语义化版本](https://semver.org/lang/zh-CN/)。
## [0.1.0] - 2026-10-16
首个公开版本。
### Added
- 云优先多用户架构:所有数据存服务器,按用户独立 SQLite 档案库;浏览器 / PWA / Windows 桌面三端同源
- 留痕本体:自定义记录类型 + 动态表单、维度、指标、全文检索(FTS5 trigram 中文)、时间线、统计总览
- 学业成绩:学期 GPA/排名、课程成绩、绩点梯度自定义与趋势图
- 附件:SHA-256 内容寻址去重存储
- 管理后台:邀请码全生命周期管理(自定义码、备注、启用/停用、删除、批量生成)、用户列表、注册配额
- 演示账号 demo/demo1234:启动自动播种 16 条足迹 + 4 学期成绩(幂等、失败自愈)
- PWA(sw v3:接口永不缓存)与 Tauri 桌面安装包
- 质量设施:pre-push 钩子、静态检查套件、35 条集成断言、部署冒烟脚本、Gitea Actions CI
### Fixed
- 登录持久化与刷新丢会话
- Service Worker 缓存 /auth/me 导致切换账号后仍显示旧用户
- 静态兜底邀请码(INVITE_CODE)注册路径不可达
- 容器内命令层挂载方式不可靠导致的「未知命令」
- 桌面构建可能嵌入过期前端(beforeBuildCommand 缺失)
### Security
- scrypt 口令散列 + timingSafeEqual 校验
- Bearer Token(365 天过期)、按用户数据隔离、邀请码注册门控
## [未发布]
### Added
- 简历模块:可视化模板配置与 Word 导出(MHTML 格式 .doc,兼容 Word/WPS)
- 综合测评模块:五大素质自动计分、按学年统计、证据画廊(单活动全部附件展示)、可编辑评分细则参考(默认值可改可恢复、随档案保存)、学年九格信息表、Word 档案导出(页码页脚/附件矩阵附录/材料图题注)
- `/auth/logout`:服务端吊销当前 Bearer Token;前端登出先吊销再本地清除
- 登录限速:同 IP+用户名连续失败 5 次冷却 10 分钟
- `profile_upsert` 改为顶层 key 合并(info/resume/zongce 三子文档互不覆盖)
- 用户库 WAL + synchronous=NORMAL + 8MB 页缓存(3000 条写入实测 7.7×)
- 设备 last_seen_at 回写节流(>60s 才写)
### Security
- 修复:客户端走私 `seed` 标志可绕过邀请码/名额并因自动升管理员规则直接获得管理员权限(`/auth/register` 现强制剥离)
- 修复:附件 docx/xlsx 预览 HTML 未消毒(现经白名单式净化,防脚本注入偷取本地会话)
### Fixed
- 综测分学年学期解析(`2023-2024-1` 末段误解析导致该学年学业分缺失)
- 综测学业绩点与成绩页学期卡口径不一致(现同源优先)
- 档案识别学年错误(按入学时间推算,缺省回退最早学期)
- 证据画廊「计分/未计分」徽章在聚合计分项下恒错