前台投稿页改为沉浸式创作工作台: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>
57 lines
2.4 KiB
Markdown
57 lines
2.4 KiB
Markdown
# 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
|
||
```
|