Feature Request: Pages 功能支持 URL 持久化(同一需求更新时不更换链接)
Summary
希望 Pages 功能支持「同一需求/同一文件更新时不更换链接」的能力,即:
- 新增需求:首次发布时生成新链接
- 更新需求:覆盖已有链接,不生成新链接
- 需要平台支持
unpublish_page 或 publish_page 覆盖已有链接的能力
Background
当前 Pages 功能每次发布都会生成新的短链接,用户分享出去后如果再次更新,链接就会失效,导致:
- 已分享的链接无法访问最新内容
- 需要重新通知所有相关方新链接
- 对外分享场景(如客户文档、产品说明)体验差
Proposed Solution
方案 1:基于 Page ID 的持久化链接
# 现有逻辑(每次发布生成新 short_id)
def publish_page(page_id):
short_id = generate_short_id() # 每次都生成新的
url = f"/p/{short_id}"
# 问题:更新时 short_id 变了
# 改进逻辑(同一 page_id 保持相同 short_id)
def publish_page(page_id, force_new=False):
existing = get_page_by_id(page_id)
if existing and not force_new:
short_id = existing.short_id # 复用已有链接
else:
short_id = generate_short_id() # 仅首次生成
url = f"/p/{short_id}"
方案 2:提供 unpublish + republish API
@router.post("/pages/{page_id}/unpublish")
async def unpublish_page(page_id: uuid.UUID):
"""取消发布页面(软删除),释放 short_id"""
pass
@router.post("/pages/{page_id}/republish")
async def republish_page(page_id: uuid.UUID):
"""重新发布页面,复用原 short_id"""
pass
方案 3:前端「更新发布」vs「另存发布」选项
发布选项:
├── [更新发布] 保持相同链接,仅更新内容
└── [另存发布] 生成新链接(默认行为)
User Experience Flow
当前流程:
用户A → 发布需求文档 → 分享链接 /p/abc123 给客户
用户A → 更新需求文档 → 链接变为 /p/def456(客户收到的是旧链接)
期望流程:
用户A → 发布需求文档 → 分享链接 /p/abc123 给客户
用户A → 更新需求文档 → 链接保持 /p/abc123(客户始终访问最新内容)
Technical Considerations
| 方面 |
说明 |
| 数据库设计 |
Page 表已有 id(主键),需确保 short_id 与 id 解耦(目前 short_id 可能是独立生成的) |
| 链接策略 |
方案 A(复用 short_id)或方案 B(软删除 + 重新发布) |
| 历史版本 |
是否需要保留历史版本记录?可能需要额外表支持 |
| 权限控制 |
只有创建者或管理员才能「更新发布」 |
API 示例
# 更新发布(推荐)
POST /api/pages/{page_id}/update
Response: {"url": "/p/abc123", "updated_at": "2026-05-10T12:00:00Z"}
# 重新发布(替代方案)
POST /api/pages/{page_id}/republish
Response: {"url": "/p/abc123", "updated_at": "2026-05-10T12:00:00Z"}
# 取消发布(需支持)
POST /api/pages/{page_id}/unpublish
Response: {"success": true, "short_id": "abc123"} # 保留 short_id 供后续复用
Priority
- Business Value: 高 — 影响对外分享场景和用户体验
- Implementation Complexity: 中 — 主要涉及数据库查询逻辑变更
Labels
enhancement, pages, user-experience
Feature Request: Pages 功能支持 URL 持久化(同一需求更新时不更换链接)
Summary
希望 Pages 功能支持「同一需求/同一文件更新时不更换链接」的能力,即:
unpublish_page或publish_page覆盖已有链接的能力Background
当前 Pages 功能每次发布都会生成新的短链接,用户分享出去后如果再次更新,链接就会失效,导致:
Proposed Solution
方案 1:基于 Page ID 的持久化链接
方案 2:提供 unpublish + republish API
方案 3:前端「更新发布」vs「另存发布」选项
User Experience Flow
Technical Considerations
id(主键),需确保short_id与id解耦(目前 short_id 可能是独立生成的)API 示例
Priority
Labels
enhancement, pages, user-experience