Files
wordpress-theme-aksrt/assets/creator-studio/README.md
T
kate522andClaude Opus 5 fac4a714e0 feat(creator-studio): 前台 Gutenberg 创作工作台与受保护付费附件
前台投稿页改为沉浸式创作工作台:Gutenberg 负责区块解析与序列化,
React + TypeScript 负责工作台外壳与发布抽屉,Jio 服务端继续作为权限、
审核与付费的唯一权威。

- 新增 assets/creator-studio 独立构建(wp-scripts,锁定 WP 6.4 时代包),
  仅在投稿模板加载,构建缺失或游客访问时回退原有 TinyMCE 表单
- 自动保存(4s 防抖 + rev 冲突 409)、本地快照恢复、发布配置抽屉、
  移动端全屏单列与安全区适配
- 图片插入走现有 front-submit 上传管线,保留能力校验与待认领生命周期
- 已发布文章的改稿写入私有版本,审核通过前线上内容/链接/付费条款不变;
  原生后台「改稿审核」一次性应用或退回,并校验源文章并发指纹
- 私有附件新表 jio_private_asset + jio_dl_token.asset_id,schema 升到 3.4.0;
  文件存放 ABSPATH 之外,未配置私有存储时 fail closed
- 下载令牌绑定文章/附件/用户/IP/UA/次数,每次交付复核 Visibility 的
  订单、VIP 与配额判定;中断传输归还次数
- 付费字段改为写入前校验,非法价格不再留下半保存文章
- 新增 creator-studio 契约测试;更新受影响的 schema/下载/投稿契约

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-11-06 14:53:23 +08:00

57 lines
2.4 KiB
Markdown
Raw 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.
# Jio Creator Studio(前台沉浸式创作工作台)
面向作者的前台写作体验:Gutenberg 作为内容内核,React + TypeScript 负责工作台与发布抽屉,Jio 服务端继续作为权限、审核、付费与附件交付的唯一权威。
## 启动
```bash
cd assets/creator-studio
npm install # 首次安装(packages 已锁定 WordPress 6.4 时代的版本)
npm run build # 产物写入 assets/creator-studio/build/
```
PHP 读取 `build/index.asset.php`(依赖清单 + 版本)并只在投稿模板加载,构建产物缺失时自动回退到原有 TinyMCE 投稿表单。
## 使用前提
- 已登录且具备 `new_post_add`(编辑已有文章需作者本人或审核权限)。
- 私有附件(付费资料)需要在 `wp-config.php` 里配置私有目录:
```php
define('JIO_PRIVATE_STORAGE_DIR', '/var/private/jio-assets'); // ABSPATH 之外
```
若目录位于站点根目录内,还必须在 Web 服务器层禁止访问,并显式声明:
```php
define('JIO_PRIVATE_STORAGE_VERIFIED', true);
```
未配置时付费资料上传/下载接口返回 501(fail closed),普通图片与视频上传不受影响。
## 关键行为
| 场景 | 行为 |
| --- | --- |
| 新文章草稿/投稿 | 复用 `FrontSubmit::persist()`;草稿为 `draft`,投稿按 `new_post_audit_no` 决定 `publish` 或 `pending` |
| 编辑已发布文章 | 写入私有改稿版本(`jio_submission`),线上文章与永久链接保持不变 |
| 审核通过 | 后台「文章 → 改稿审核」一次性应用内容、摘要、分类、标签、封面与付费设置 |
| 自动保存 | 云端 4 秒防抖 + `rev` 版本号;冲突返回 409,不覆盖较新内容 |
| 本地恢复 | 仅保存标题与序列化正文,恢复前询问用户 |
| 付费附件 | 上传到私有存储,只保存随机 `asset_key`;下载先取短期令牌,服务端每次复核订单/VIP/配额 |
## 相关代码
- 服务端:`src/Core/CreatorRest.php`、`CreatorStudio.php`、`SubmissionVersion.php`、`PreviewToken.php`
- 安全交付:`src/Content/PrivateAssets.php`、`src/Content/ProtectedDownload.php`
- 原生审核:`src/Admin/Native/SubmissionReview.php`
- 前端:`assets/creator-studio/src/`(`index.tsx` / `panels/` / `hooks/` / `services/` / `styles/`)
- 契约测试:`tests/widget-system/creator-studio-contract.test.cjs`
## 测试
```bash
node --test tests/widget-system/*.test.cjs
php tools/audit-psr4-paths.php
```