Files
soul/开发文档/6、后端/内容创建问题修复说明.md

94 lines
3.6 KiB
Markdown
Raw Normal View History

# 内容创建问题修复说明
> 问题souladmin 添加内容后显示「创建成功」,但目录和数据库未增加,前端也未显示。
## 根因分析
1. **两套后台数据源不一致**
- souladmin.quwanzhi.com 调用 soulapi.quwanzhi.comGo API
- soul.quwanzhi.com/admin 使用 Next.js APIlist 此前仅从 bookData静态读取
- 新建章节写入数据库,但 list 不查库,导致新建内容不显示
2. **PUT 创建未完整支持 partId/chapterId**
- 新建章节时 partId、chapterId、partTitle、chapterTitle 未正确写入数据库
## 已做修复
### 1. 修改 `/api/db/book` list 接口
- **原逻辑**:仅从 bookData 读取
- **现逻辑**:优先从数据库 chapters 表读取,再与 bookData 合并
- **效果**:新建章节会立即出现在列表中
### 2. 修改 PUT 接口支持新建章节
- 支持 body 传入 `partId``chapterId``partTitle``chapterTitle``isFree`
- 新建章节能正确写入数据库
### 3. 在 book-data 中新增 9.15
- 章节 ID: 9.15
- 标题: 第102场今年第一个红包你发给谁
- 文件: book/第四篇|真实的赚钱/第9章我在Soul上亲访的赚钱案例/9.15 第102场今年第一个红包你发给谁.md
### 4. soul-admin 改用 soul.quwanzhi.com 作为 API
- 修改 soul-admin 的 API 基址soulapi → soul.quwanzhi.com
- 在 Next.js 中为 souladmin.quwanzhi.com 配置 CORS
## 部署步骤
### 步骤 1部署 soul 主站(小型宝塔)
```bash
cd /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验
# 按 .cursorrules 中的流程执行
pnpm build
# 然后执行部署脚本
```
### 步骤 2同步 9.15 到数据库
部署后访问 soul.quwanzhi.com/admin在内容管理页面点击「同步到数据库」将包含 9.15 的 bookData 同步进库。
### 步骤 3部署修改后的 soul-adminKR 宝塔)
```bash
# 将 一场soul的创业实验-永平 中的 soul-admin/dist 上传到 KR 宝塔
cd /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平
tar -czf soul-admin-dist.tar.gz soul-admin/dist
sshpass -p 'Zhiqun1984' scp -P 22022 soul-admin-dist.tar.gz root@43.139.27.93:/tmp/
sshpass -p 'Zhiqun1984' ssh -p 22022 root@43.139.27.93 "
cd /www/wwwroot/自营/soul-admin
rm -rf dist.bak
mv dist dist.bak 2>/dev/null || true
tar -xzf /tmp/soul-admin-dist.tar.gz -C .
rm /tmp/soul-admin-dist.tar.gz
"
```
### 步骤 4校验
1. 打开 souladmin.quwanzhi.com/content
2. 新建章节,确认创建后列表中立即出现
3. 刷新 soul.quwanzhi.com 主站,确认新章节可读
## 注意事项
- souladmin 现改为调用 soul.quwanzhi.com不再调用 soulapiGo需确保 soul 主站可用
- 若仍需使用 Go API需在 soul-api 源码中修复 list/create 逻辑
---
## 内容上传 API供科室/Skill 调用)
- **地址**`POST /api/content/upload`
- **Content-Type**`application/json`
- **Body 字段**
- `title`(必填):节标题
- `price`:定价,默认 1
- `content`正文Markdown 或 HTML
- `format``markdown` | `html`,默认 `markdown`
- `images`:图片 URL 数组;正文中可用 `{{image_0}}``{{image_1}}` 占位,会替换为对应图片的 Markdown 图链
- `partId``partTitle``chapterId``chapterTitle`:归属篇/章,可选
- `isFree`:是否免费,默认 false
- `sectionId`:指定节 ID不传则自动生成`upload.标题slug.时间戳`
- **返回**`{ success, id, message, title, price, isFree, wordCount }`
- 写入数据库 `chapters`list/目录会从库中读取并去重显示。