Commit Graph
10 Commits
Author SHA1 Message Date
ila ab23ff60e5 feat: 书籍封面与音频附件、播放器与播放位置 (#21)
- schema v8:lexgo_book_attachments(按 book_id+kind 唯一,bytes MEDIUMBLOB)与
  lexgo_playback_positions(owner_id+book_id 主键),只用可重放 DDL,外键级联删书
- 后端:按文件头 magic bytes 判定类型(MP3 / JPG / PNG / WebP,含 WebP 维度解析),
  音频 ≤20 MiB、封面 ≤2 MiB 且 ≤4096²;上传/替换/移除;binaryResponse 交给
  http.ServeContent 提供 Range 206、416、ETag 与 304;播放位置 upsert,替换音频时重置
- 学习端:带凭据的 fetch + 对象 URL(令牌不进 URL),书库封面、书籍页「音频与封面」
  区块、阅读页常驻播放器(播放/暂停、进度、0.75–1.5 倍速、错误重试、位置上报)
- 测试:Go 86 项(新增附件单测/集成与 v7→v8 迁移)、学习端 157 单测与 26 项 E2E
- 顺带修掉 e2e/phrase.spec.ts 的偶发失败:重试条件改为断言期望词数、重读坐标、关面板后重试
- 文档:Architecture / Business-Rules / Local-Development / Requirements / Home /
  Deployment-and-Operations(备份范围含附件与体积提示)
2026-09-15 18:39:56 +08:00
ila 38d8975325 feat: 自托管交付的安装、备份与恢复工具及部署文档 (#15)
- scripts/ops.py:install-check(依赖与资源版本、客户端不得低于服务端)、init-database(建空库
  并提示最小权限)、backup(全库 dump + manifest,不含凭据)、restore(默认只写空库、
  --confirm 必需、覆盖需 --force、拒绝系统库与带 CREATE DATABASE/USE 的 dump、比对源库校验和)、
  verify(完整性 + 可选两账号接口闭环)、smoke(干净实例上建两个演练账号走通学习闭环)
- scripts/bench.py:写明规模的人造数据集性能测量,记录数据量、机器与 p50/p95
- tests/test_lexgo_ops.py:版本解析、库名白名单、dump 安全性、manifest 字段白名单等无库测试
- Wiki 新增 Deployment-and-Operations 页面与 wiki-docs.json 映射(含升级回滚与已知限制)
- 更新 Architecture、Business-Rules、Local-Development、Product-Requirements、Home 与
  README/AGENTS;本单无 schema 与接口变化
2026-09-15 16:30:23 +08:00
ila 850c78e2aa feat: 管理端登录日志与操作审计 (#18) 2026-09-10 20:37:46 +08:00
ila 2c8e9b3ca0 feat: 接入两端用户名登录和独立学习空间 (#2) 2026-09-10 17:39:57 +08:00
QiuSW 1c998673f3 refactor: 将 Harness 工具移至 dev_scripts (#3) 2026-08-08 09:18:09 +08:00
QiuSW c8ccb62a98 test: 覆盖核心文档映射错误 (#2) 2026-08-08 09:02:48 +08:00
QiuSW 250b0555e4 feat: 建立初级维护者文档体系 (#2) 2026-08-08 09:00:44 +08:00
QiuSW 1e3915ba59 fix: 支持中文 Wiki 页面路径 (#1) 2026-08-08 00:00:57 +08:00
QiuSW b08a919fd7 feat: 引入 Wiki 文档镜像流程 (#1) 2026-08-07 23:57:13 +08:00
QiuSW d6706f7c69 chore: initialize DevHarness template 2026-08-07 23:11:53 +08:00