4.0 KiB
4.0 KiB
name, description
| name | description |
|---|---|
| content-management | 内容管理(CMS)模块的业务规则,包含文章发布流程、富文本编辑规范与 SEO 要求。当涉及文章、资讯、公告等内容管理功能时必须参考此 Skill。 |
内容管理 (CMS) 业务 Skill
适用范围
当任务涉及以下场景时,必须加载并遵循此 Skill:
- 文章/资讯列表、编辑、发布
- 内容分类与标签管理
- 富文本/Markdown 编辑器集成
- SEO 字段管理
业务规则
1. 文章发布流程
草稿 (draft) → 待审核 (pending_review) → 已发布 (published) → 已归档 (archived)
↓
驳回 (rejected) → 草稿 (draft) [修改后重新提交]
关键约束:
- 普通编辑: 只能提交审核,不能直接发布
- 管理员/主编: 可以跳过审核直接发布
- 已发布文章: 编辑后生成新版本,需重新审核
- 定时发布: 支持设置
publishAt时间,到达时间后系统自动从「待发布」改为「已发布」
2. 内容模型
- 标题 (title): 必填,2-100 字符
- 摘要 (summary): 选填,≤ 200 字符。若未填写,自动截取正文前 200 字
- 正文 (content): 必填,支持 Markdown 格式
- 封面图 (coverImage): 推荐尺寸 16:9(如 1200×675),支持裁剪
- 分类 (categoryId): 必填,单选
- 标签 (tags): 选填,多选,最多 5 个
- SEO 字段:
seoTitle: 选填,≤ 60 字符seoDescription: 选填,≤ 160 字符seoKeywords: 选填,逗号分隔
3. 排序规则
- 默认按发布时间倒序
- 支持「置顶」功能(
isTop: boolean),置顶文章优先展示 - 置顶文章之间按置顶时间倒序
数据模型
核心接口
// src/services/article.ts
export async function getArticleList(
params: ArticleQueryParams,
): Promise<API.PageResult<ArticleItem>> {}
export async function getArticleDetail(id: string): Promise<ArticleDetail> {}
export async function createArticle(
data: ArticleFormData,
): Promise<ArticleItem> {}
export async function updateArticle(
id: string,
data: Partial<ArticleFormData>,
): Promise<ArticleItem> {}
export async function updateArticleStatus(
id: string,
status: ArticleStatus,
): Promise<void> {}
export async function deleteArticle(id: string): Promise<void> {}
export async function toggleTop(id: string, isTop: boolean): Promise<void> {}
关键类型
// src/pages/Article/data.d.ts
type ArticleStatus =
| 'draft'
| 'pending_review'
| 'published'
| 'archived'
| 'rejected';
interface ArticleItem {
id: string;
title: string;
summary?: string;
content: string;
coverImage?: string;
categoryId: string;
categoryName: string;
tags: string[];
status: ArticleStatus;
author: string;
isTop: boolean;
viewCount: number;
publishAt?: string;
createdAt: string;
updatedAt: string;
seoTitle?: string;
seoDescription?: string;
seoKeywords?: string;
}
UI 交互规范
1. 文章列表页
- 组件:
ProTable(搜索字段 < 4,使用内置 search) - 必须包含列: 标题(可点击预览)、分类、状态、作者、发布时间、阅读量、操作
- 操作逻辑: 根据状态动态展示按钮
- 草稿: 编辑 / 提交审核 / 删除
- 已发布: 编辑 / 下架(归档)/ 置顶/取消置顶
- 置顶标识: 在标题前显示 📌 图标
2. 文章编辑页
- 组件:
ProForm(非分步) - 编辑器: 使用项目中已有的
MarkdownEditor组件(src/components/MarkdownEditor) - 布局: 左侧大区域放编辑器,右侧抽屉或区域放 SEO/分类/标签
- 自动保存: 每 30 秒自动保存草稿(使用
useRequest配合debounce)
3. 预览
- 支持在弹窗中预览 Markdown 渲染结果
- 预览模式使用
Modal+ Markdown 渲染组件
i18n Key 规范
- 菜单:
menu.content.*或menu.article.* - 页面:
pages.article.* - 表单:
article.form.* - 状态:
article.status.*