forked from wangziqi/gongxue-base
feat: export daily practice image packages
This commit is contained in:
@@ -70,7 +70,7 @@ POST /api/tenant-content/assets/sign-preview
|
||||
npm --workspace @tiku-saas/worker run assets:once
|
||||
```
|
||||
|
||||
题库 PDF/Word 导出 worker:
|
||||
题库 PDF/Word/每日一练 ZIP 导出 worker:
|
||||
|
||||
```bash
|
||||
npm --workspace @tiku-saas/worker run exports:once
|
||||
@@ -91,16 +91,16 @@ npm --workspace @tiku-saas/worker run exports:once
|
||||
|
||||
## 题库导出生成资源
|
||||
|
||||
题库导出 PDF/Word 不走前端上传,而是由后端和 worker 自动进入资源台账:
|
||||
题库导出 PDF/Word/每日一练 ZIP 不走前端上传,而是由后端和 worker 自动进入资源台账:
|
||||
|
||||
1. 租户后台调用 `POST /api/tenant-content/exports/questions`,`format=pdf` 或 `format=docx`。
|
||||
1. 租户后台调用 `POST /api/tenant-content/exports/questions`,`format=pdf`、`format=docx` 或 `format=daily_practice_zip`。
|
||||
2. API 校验租户内容权限、导出范围和答案/解析开关,创建 `content_export_jobs.status=pending`。
|
||||
3. `apps/worker --job exports` 抢占 pending job,复用后端导出 payload 规则渲染 PDF/Word,应用 `options.watermarkText` 水印。
|
||||
3. `apps/worker --job exports` 抢占 pending job,复用后端导出 payload 规则渲染 PDF/Word,或为每日一练生成 ZIP 素材包;PDF/Word 会应用 `options.watermarkText` 水印,ZIP 包会包含 PNG/SVG 卡片、拼图、manifest 和脱敏 payload。
|
||||
4. worker 将二进制文件写入配置的对象存储。`local_dev` 会写入 `EXPORT_LOCAL_STORAGE_ROOT`,生产建议使用 `supabase_storage`、`aliyun_oss` 或 `tencent_cos`。
|
||||
5. worker 创建 `content_assets`,设置 `uploadStatus=verified`,并把 `assetId`、文件名、大小和 SHA-256 回填到 `content_export_jobs.output_metadata`。
|
||||
6. 前端轮询 `GET /api/tenant-content/exports/jobs`,拿到 `assetId` 后通过 `POST /api/tenant-content/assets/sign-download` 或 `sign-preview` 下载/预览。
|
||||
|
||||
注意:PDF/Word 文件本身不直接存入数据库,数据库只保存 job、资源台账和校验 metadata。
|
||||
注意:PDF/Word/ZIP 文件本身不直接存入数据库,数据库只保存 job、资源台账和校验 metadata。`daily_practice_zip` 资源类型为 `package`,通常只做签名下载,不做 inline 预览。
|
||||
|
||||
确认上传示例:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user