feat(admin): merge stash changes into comclib-analytics (order/finance/product + rpc sql)
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
# 操作文档:Admin 商品模块标准化实施
|
||||
|
||||
- **日期**:2026-02-06
|
||||
- **作用域**:`admin` / `product`
|
||||
- **实施人**:Cascade (AI Assistant)
|
||||
|
||||
## 1. 摘要
|
||||
按照 `AGENT_PROJECT_SPEC.md` 规范,完成了 Admin 商品模块从数据库 RPC 到 Service 层,再到前端页面的全链路标准化改造。
|
||||
|
||||
## 2. 动机
|
||||
- 统一商品模块数据访问口径,消除页面 Mock 数据。
|
||||
- 增强数据库安全性,所有特权操作均通过 `SECURITY DEFINER` RPC 并包含角色校验。
|
||||
- 修复分类层级变动时 `path` 与 `level` 字段不同步的潜在风险。
|
||||
|
||||
## 3. 影响范围
|
||||
- **数据库**:新增/更新了 `rpc_admin_product_*` 和 `rpc_admin_category_*` 系列函数。
|
||||
- **服务层**:新增 `services/admin/productService.uts` 和 `services/admin/productCategoryService.uts`。
|
||||
- **前端页面**:重构了 `product-management/index.uvue` 和 `classification/index.uvue`。
|
||||
|
||||
## 4. 变更清单
|
||||
|
||||
### 4.1 数据库 RPC (docs/sql/30_rpc/product/)
|
||||
- `rpc_admin_product_list_v1.sql`: 标准化分页查询,对齐 `JSONB` 返回结构。
|
||||
- `rpc_admin_product_update_status_v1.sql`: 统一处理上下架与回收站逻辑。
|
||||
- `rpc_admin_category_list_v1.sql`: 适配 `ml_categories` 权威字段。
|
||||
- `rpc_admin_category_create_v1.sql`: 自动维护层级路径。
|
||||
- `rpc_admin_category_update_v1.sql`: **核心增强**,支持子树 `path` 与 `level` 的级联更新,并具备递归防循环引用校验。
|
||||
- `rpc_admin_category_delete_v1.sql`: 实现“有子项禁止删除”的安全策略。
|
||||
|
||||
### 4.2 服务层 (services/admin/)
|
||||
- `productService.uts`: 封装商品列表与状态变更接口。
|
||||
- `productCategoryService.uts`: 封装分类列表与 CRUD 接口。
|
||||
|
||||
### 4.3 前端重构
|
||||
- **商品管理**:接入真实数据流,支持按名称、状态搜索,支持实时上下架切换。
|
||||
- **商品分类**:接入真实树形数据,支持完整的 CRUD 操作与状态开关。
|
||||
|
||||
## 5. 安全与权限验证
|
||||
- **RPC 安全**:所有函数均声明为 `SECURITY DEFINER`,并固定 `search_path = public`。
|
||||
- **角色守卫**:函数入口显式校验 `role IN ('admin', 'analytics')`。
|
||||
- **数据隔离**:仅返回 UI 渲染必要的最小字段集。
|
||||
|
||||
## 6. 回滚方案
|
||||
- **SQL**:执行 `DROP FUNCTION IF EXISTS public.rpc_admin_...`。
|
||||
- **代码**:通过 Git 回退 `pages/mall/admin/product/` 相关目录的变更。
|
||||
|
||||
## 7. 验证方式
|
||||
1. 登录 Admin 账号,进入“商品管理”,验证列表分页与搜索是否正常。
|
||||
2. 切换商品“上架/下架”开关,刷新页面确认状态持久化。
|
||||
3. 进入“商品分类”,尝试添加子分类并移动其父级,通过数据库查询确认其 `path` 已级联修正。
|
||||
Reference in New Issue
Block a user