# 装修模块 (Decoration) 全量集成与数据库构建报告

## 摘要
本次对 Admin 侧装修模块（Decoration Module）进行了深度的端到端修复。补齐了该模块完全缺失的数据库表结构（用于存储 DIY 布局 JSON）、行级安全策略（RLS）以及 4 个管理端 RPC 接口。同时重构了前端 3 个核心页面，实现了从 Mock 数据到真实数据库持久化的闭环。

## 动机
装修模块允许管理员自定义商城的视觉表现（首页、专题页、个人中心风格）。此前该功能仅有 UI 静态模拟，无法保存任何配置。为了支撑个性化商城运营，必须补齐底层存储架构，并按照项目规范落地管理端接口。

## 影响范围
- **模块**：后台管理系统 - 装修模块
- **页面**：首页装修、商品分类装修、个人中心装修
- **接口**：新增 4 个 `rpc_admin_...` 接口
- **权限**：增加了 DIY 页面表的 RLS 策略，消费者端仅允许读取已启用配置

## 变更清单

### 数据库 SQL
- **新增 Schema** (docs/sql/10_schema/decoration/):
  - `ak_diy_pages_v1.sql` (核心配置表)
- **新增 RLS** (docs/sql/20_rls/decoration/):
  - `ml_decoration_rls_v1.sql`
- **新增 RPC** (docs/sql/30_rpc/decoration/):
  - `rpc_admin_get_diy_page_list_v1.sql`
  - `rpc_admin_save_diy_page_v1.sql`
  - `rpc_admin_delete_diy_page_v1.sql`
  - `rpc_admin_set_home_page_v1.sql`

### 前端代码
- **新增服务层**：`services/admin/decorationService.uts` (封装全量 DIY 接口)
- **重构页面**：
  - `pages/mall/admin/decoration/home.uvue` (接入分页列表、删除及设为首页逻辑)
  - `pages/mall/admin/decoration/user.uvue` (接入样式持久化存取)
  - `pages/mall/admin/decoration/category.uvue` (接入样式持久化存取)

## 兼容性与风险
- **配置格式**：`config` 字段采用 JSONB 存储，前端 UTS 解析时需确保类型强制转换正确（使用 `UTSJSONObject`）。
- **首页约束**：数据库侧实现了原子切换逻辑，确保同类型页面（如 `home`）全局仅有一个生效项。

## 回滚方案
1. **数据库**：依次 DROP `ak_diy_pages` 表及相关 4 个 RPC 函数。
2. **代码**：使用 `git checkout` 恢复重构的 3 个 `.uvue` 页面，并删除 `decorationService.uts`。

## 验证方式
1. **功能验证**：
   - 首页切换：在“首页装修”列表中将另一个模板设为首页，确认移动端展示内容实时变更。
   - 样式保存：在“个人中心装修”切换样式并点击保存，刷新页面后确认选中状态保持一致。
2. **安全验证**：确认非 admin 角色无法通过接口修改 DIY 配置。

## 关联规范
- 遵循 `AGENT_PROJECT_SPEC.md` 规范。
- 遵循统一的 RPC 入口鉴权（admin 角色）。
