Mimingguang ee078b61bc feat: 后台管理系统完整重构 + 前后台数据联通
- 后台全面引入 Naive UI 组件库,统一 UI 规范
- 前台 usePublicApi 切换到 API 调用(GET /api/content/[key])
- 前后台数据源统一(site_content 表)
- 产品线统一管理(tour/camp/course 三套编辑器)
- 产品数据归一化(itinerary/faq/pricing 格式统一)
- 表单提交 API 改写入 submissions 表
- 新增 submissions 标记已读 API
- site-content PUT 支持 upsert
- 修复前台 bug(stories 路由冲突、占位符警告、selector breadcrumb)
- 消除 PageHero 类型警告(useSEO reactive 修复)
- 25 个前台页面全部 HTTP 200,展示效果不变

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 17:48:02 +08:00

22 行
966 B
Markdown

此文件含有模棱两可的 Unicode 字符

此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。

# UI/UX 一致性检查
## 2026-03-24
### Naive UI 使用规范
- 所有后台页面使用 Naive UI,前台页面不使用
- admin layout 用 `<client-only>` 包裹 NConfigProvider避免 SSR 报错)
- login 页面自带 NConfigProviderlayout: false,不走 admin layout
- 主题色primaryColor #3a7d44,hover #2d6235,pressed #245c2b
### 后台页面结构规范
- 列表页n-space(标题+按钮) → n-card → n-data-table + n-pagination
- 编辑页n-breadcrumb → n-space(标题+按钮) → n-card/n-form → .save-bar(sticky)
- content 页n-space(标题+按钮) → n-spin → n-card(分区) → n-form
### 不允许的做法
- 不使用手写 CSS class.btn-primary, .badge, .toast 等)
- 不使用 confirm(),用 NPopconfirm 或 useDialog()
- 不使用手写 toast div,用 useMessage()
- 不使用全局 emoji用户明确要求
- 编辑器不使用 JSON 文本框兜底(必须结构化表单覆盖所有字段)