spark-server/docs/popadmin-music-novels-deploy.md
DESKTOP-L8OUL9F\gfl0034 ade98eef4d feat(music): 曲目增加背景图字段与管理端上传
新增 migration 0021(background_key/url)、playlist/CRUD 返回 backgroundUrl、
POST .../music/{id}/background,并热更 popadmin 音乐列表背景上传;公读策略放行 perm/music/*。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-24 09:17:21 +08:00

65 lines
2.8 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.

# popadmin 音乐 / 小说 & sparkapi `/docs` 部署要点
## 1. spark-server(音乐 API + OpenAPI)
```bash
# 本机(Windows/WSL):构建并部署到新加坡机
make deploy
# 会:linux 交叉编译 → docker image → 上传 ECS → spark-migrate(含 0020_music / 0021_music_background)→ 重启容器 → nginx reload
```
新加坡机手工补跑迁移(仅 image 已更新但 migrate 未跑时):
```bash
docker exec spark-server spark-migrate -config /app/configs/config.yaml
# 或 compose 目录下:docker compose run --rm spark-server spark-migrate -config /app/configs/config.yaml
sudo nginx -t && sudo nginx -s reload
# 确认 include 了 popadmin-spark-admin-locations.conf(含 music,client_max_body_size 55m)
```
验证:
- `GET https://sparkapi.wyrs365.com/v1/music/playlist` → `code=0`,曲目含 `coverUrl` / `backgroundUrl`(可空)/ `audioUrl`
- `GET https://sparkapi.wyrs365.com/docs` → 可见 music / admin-music
- popadmin「音乐列表」:封面 / **背景** / mp3 上传;`POST /api/admin/spark/music/{id}/background`
## 2. Aliyun wyrs-admin(popadmin 静态)
热更音乐背景图 UI(与现网一致):
```bash
# 源:spark-server/deploy/popadmin/popadmin.js(已含背景列与上传)
scp -i ~/.ssh/wyrs_shanghai_deploy.pem deploy/popadmin/popadmin.js \
root@47.236.66.9:/opt/wyrs-admin/static-override/popadmin.js
# 若 index 带 ?v= 缓存戳,同步 bump popadmin.index.html
```
新加坡若用 static-override,覆盖后强刷浏览器即可。
## 3. FullStoryNovel CMS(小说 iframe)
- 部署 `static/admin/admin.js`(`embed=1&from=popadmin` + postMessage SSO)
- 部署 nginx:去掉 `X-Frame-Options SAMEORIGIN`,改为
`Content-Security-Policy: frame-ancestors 'self' https://popadmin.wyrs365.com`
- 确认 `fullstorynovel.service` :8095 与 `adopt-ops-session` 可用
验证:popadmin →「小说内容管理」iframe 加载 novels;或新窗口打开 `https://admin.fullstorynovel.com/admin/`。
## 4. 设备登录文档(devices-client)
OpenAPI 已按 `Spark资源文档/devices-client.md` 更新契约。
**当前 Go 实现仍为旧登录**(Body 必填客户端 `device_id`、字符串 `device_type`,JWT 无 `aid`)。上线新契约前需改 auth/login、JWT、meta 枚举。
## 5. Demo 曲目(可选)
仓库旁 `_demo_music/`:`tracks.json` + `01..10.mp3/png` + `upload_demo.py`。
背景图**可空**,demo **不强制**补背景;脚本勿删已有曲目(仅 POST 新建)。
```bash
# 在新加坡机(或可访问 popadmin 登录与 spark admin API 的环境)
export SPARK_ADMIN_BASE=http://127.0.0.1:18080
export POPADMIN_LOGIN=http://127.0.0.1:8090/api/admin/auth/login
python3 upload_demo.py
curl -sS https://sparkapi.wyrs365.com/v1/music/playlist | jq '.data.items|length,.data.items[0]|{title,coverUrl,backgroundUrl,audioUrl}'
```