Files
medical-mall/docs/CRMEB_REFACTORING_PLAN.md
2026-01-22 21:15:02 +08:00

941 lines
27 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# CRMEB 项目重构计划文档
## 📋 文档说明
本文档基于 **Clean-Room 重构原则**,通过分析 CRMEB 项目的**可观察行为与功能规格**,制定将 CRMEB 商城系统迁移到 **uni-app x (uvue) + Supabase** 技术栈的重构计划。
### 重构原则
1. **禁止复制源码**:不直接使用 CRMEB 的任何 PHP/Vue 源码
2. **规格驱动开发**:基于功能规格和行为描述进行独立实现
3. **技术栈迁移**
- 前端Vue/UniApp → **uvue (uni-app x)**
- 后端PHP/ThinkPHP → **Supabase (PostgreSQL + RLS + Edge Functions)**
4. **组件复用**:尽量不修改 `components/supadb`,仅通过接口调用
---
## 一、功能规格提取 (Spec Extraction)
### 1.1 核心业务模块
基于 CRMEB 项目结构分析,提取以下核心功能模块:
#### 1.1.1 用户系统 (User System)
**功能清单**
- 用户注册/登录(手机号、微信、邮箱)
- 用户信息管理(昵称、头像、性别)
- 用户角色(消费者、商家、配送员、客服、管理员)
- 用户认证(实名认证、商家认证)
- 用户地址管理(多地址、默认地址)
- 用户余额/积分管理
**数据字段规格**
- 用户基础信息id, phone, email, nickname, avatar_url, gender, user_type, status
- 用户扩展信息real_name, id_card, credit_score, verification_status
- 地址信息receiver_name, receiver_phone, province, city, district, address_detail, is_default
**权限矩阵**
- 用户只能查看/修改自己的信息
- 管理员可查看所有用户信息
- 商家可查看自己的店铺信息
#### 1.1.2 商品系统 (Product System)
**功能清单**
- 商品管理(创建、编辑、上架、下架)
- 商品分类(多级分类、分类树)
- 商品品牌管理
- 商品规格/SKU多规格、价格、库存
- 商品图片(主图、详情图、轮播图)
- 商品搜索(关键词、分类、品牌、价格区间)
- 商品排序(价格、销量、时间、综合)
**数据字段规格**
- 商品基础id, merchant_id, category_id, name, description, base_price, original_price, stock, sales, status
- 商品图片main_image_url, image_urls (JSONB)
- 商品规格sku_code, specifications (JSONB), price, stock
- 分类id, pid (parent_id), name, icon, sort
**业务规则**
- 商品状态0-下架1-上架2-审核中
- 库存扣减:下单时扣减,取消订单时恢复
- 价格计算:支持原价、现价、会员价
#### 1.1.3 订单系统 (Order System)
**功能清单**
- 订单创建(购物车结算、立即购买)
- 订单确认(地址选择、优惠券选择、运费计算)
- 订单支付(微信支付、支付宝、余额支付)
- 订单状态流转(待支付→已支付→已发货→已收货→已完成)
- 订单取消(用户取消、超时取消)
- 订单退款(申请退款、审核退款、退款完成)
- 订单评价(商品评价、商家回复)
**数据字段规格**
- 订单主表id, order_no, user_id, merchant_id, total_amount, discount_amount, delivery_fee, actual_amount, order_status, payment_status, payment_method, delivery_address (JSONB)
- 订单商品order_id, product_id, sku_id, product_name, price, quantity, total_amount
- 订单状态1-待支付2-已支付3-已发货4-已收货5-已完成6-已取消7-退款中8-已退款
**业务规则**
- 订单号生成唯一订单号ORD20240101000001
- 超时取消30分钟未支付自动取消
- 库存检查:下单时检查库存,库存不足提示
- 价格锁定:订单创建时锁定商品价格
#### 1.1.4 购物车系统 (Cart System)
**功能清单**
- 购物车添加商品、SKU、数量
- 购物车编辑(数量修改、删除)
- 购物车选择(单选、全选)
- 购物车结算(批量结算、价格计算)
**数据字段规格**
- 购物车id, user_id, product_id, sku_id, quantity, selected
**业务规则**
- 同一商品同一SKU合并数量
- 商品下架时从购物车移除提示
- 库存不足时提示并限制数量
#### 1.1.5 营销系统 (Marketing System)
**功能清单**
- 优惠券(满减券、折扣券、免运费券)
- 优惠券领取(用户领取、系统发放)
- 优惠券使用(下单时选择、自动抵扣)
- 拼团活动(创建拼团、参团、成团)
- 秒杀活动(限时秒杀、库存限制)
- 砍价活动(发起砍价、好友助力)
- 积分系统(积分获取、积分兑换)
- 签到奖励(每日签到、连续签到)
**数据字段规格**
- 优惠券模板id, name, coupon_type, discount_type, discount_value, min_order_amount, total_quantity, start_time, end_time, status
- 用户优惠券id, user_id, template_id, coupon_code, status, used_at, expire_at
- 优惠券类型1-满减2-折扣3-免运费4-新人券5-会员券
**业务规则**
- 优惠券有效期检查
- 优惠券使用条件(满额、指定商品、指定分类)
- 每人限领数量
#### 1.1.6 配送系统 (Delivery System)
**功能清单**
- 配送员管理(注册、认证、审核)
- 配送任务分配(自动分配、手动分配)
- 配送状态跟踪(待接单→已接单→已取货→配送中→已送达)
- 配送费用计算(距离、重量、时间)
**数据字段规格**
- 配送员id, user_id, real_name, id_card, vehicle_type, work_status, current_location (JSONB), service_areas (Array)
- 配送任务id, order_id, driver_id, pickup_address (JSONB), delivery_address (JSONB), distance, delivery_fee, status
**业务规则**
- 配送员认证审核
- 配送范围限制
- 配送费用计算规则
#### 1.1.7 评价系统 (Review System)
**功能清单**
- 商品评价(评分、文字、图片)
- 商家回复
- 评价展示(全部、好评、中评、差评)
- 评价统计(好评率、平均分)
**数据字段规格**
- 评价id, order_id, product_id, user_id, rating, content, images (Array), reply_content, reply_time, status
**业务规则**
- 仅已收货订单可评价
- 评价后不可修改,可追评
- 匿名评价选项
#### 1.1.8 店铺系统 (Shop System)
**功能清单**
- 店铺创建(商家注册店铺)
- 店铺信息管理名称、Logo、简介、轮播图
- 店铺认证(营业执照、资质审核)
- 店铺营业状态(营业中、休息中、关闭)
- 店铺评分(综合评分、服务评分、商品评分)
**数据字段规格**
- 店铺id, merchant_id, shop_name, shop_logo, shop_banner, shop_description, shop_status, rating, total_sales
**业务规则**
- 商家认证后才能开店
- 店铺关闭后商品自动下架
- 店铺评分计算规则
### 1.2 管理后台功能
#### 1.2.1 商品管理
- 商品列表(搜索、筛选、排序)
- 商品审核(上架审核、下架管理)
- 分类管理(分类树、排序)
- 品牌管理
#### 1.2.2 订单管理
- 订单列表(状态筛选、搜索)
- 订单详情查看
- 订单发货
- 退款审核
#### 1.2.3 用户管理
- 用户列表
- 用户详情
- 用户状态管理(冻结、解冻)
#### 1.2.4 营销管理
- 优惠券管理(创建、发放、统计)
- 活动管理(拼团、秒杀、砍价)
#### 1.2.5 系统设置
- 系统配置(支付配置、物流配置)
- 权限管理
- 数据统计
### 1.3 前端页面清单
#### 1.3.1 消费者端 (Consumer)
- 首页(轮播图、分类导航、推荐商品、热门商品)
- 分类页(分类列表、商品列表)
- 商品详情页商品信息、SKU选择、评价、推荐
- 购物车页
- 订单确认页
- 订单列表页
- 订单详情页
- 个人中心(信息、订单、地址、优惠券、收藏)
- 搜索页
- 评价页
#### 1.3.2 商家端 (Merchant)
- 商家中心首页(数据统计、订单概览)
- 商品管理(列表、添加、编辑)
- 订单管理(列表、详情、发货)
- 店铺设置
- 数据统计
#### 1.3.3 配送端 (Delivery)
- 配送中心首页(待接单、配送中、已完成)
- 订单详情
- 配送路线
#### 1.3.4 管理后台 (Admin)
- 登录页
- 首页(数据概览)
- 商品管理
- 订单管理
- 用户管理
- 营销管理
- 系统设置
---
## 二、架构映射 (Architecture Mapping)
### 2.1 前端架构映射Vue/UniApp → uvue
#### 2.1.1 技术栈对比
| CRMEB 原技术 | 目标技术 (uvue) | 说明 |
| ------------ | ------------------------------ | -------------- |
| Vue 2/3 | `<script setup lang="uts">` | 使用 UTS 语法 |
| Vuex | `ref/reactive` + 状态管理工具 | 响应式状态管理 |
| uni-app | uni-app x | 跨平台框架 |
| .vue 文件 | .uvue 文件 | 页面/组件文件 |
| axios | `components/supadb/aksupa.uts` | HTTP 请求封装 |
#### 2.1.2 页面结构映射
**CRMEB 页面结构**
```
template/uni-app/
├── pages/
│ ├── index/ # 首页
│ ├── goods_details/ # 商品详情
│ ├── order/ # 订单相关
│ └── user/ # 用户中心
```
**目标项目结构**
```
pages/mall/
├── consumer/ # 消费者端
│ ├── index.uvue # 首页
│ ├── product-detail.uvue
│ ├── cart.uvue
│ ├── order-detail.uvue
│ └── profile.uvue
├── merchant/ # 商家端
│ ├── index.uvue
│ └── product-detail.uvue
├── delivery/ # 配送端
│ └── index.uvue
└── admin/ # 管理后台
└── index.uvue
```
#### 2.1.3 组件映射
**CRMEB 组件****目标组件**
- `goods-list``components/mall/ProductList.uvue`
- `order-item``components/mall/OrderItem.uvue`
- `address-selector``components/mall/AddressSelector.uvue`
- `coupon-selector``components/mall/CouponSelector.uvue`
#### 2.1.4 状态管理映射
**CRMEB (Vuex)**
```javascript
// store/modules/user.js
state: { userInfo: null }
mutations: { SET_USER_INFO }
actions: { getUserInfo }
```
**目标项目 (uvue)**
```typescript
// utils/store.uts
export const useUserStore = () => {
const userInfo = ref<UserType | null>(null)
const getUserInfo = async () => {
// 使用 supadb 获取用户信息
}
return { userInfo, getUserInfo }
}
```
### 2.2 后端架构映射PHP/ThinkPHP → Supabase
#### 2.2.1 技术栈对比
| CRMEB 原技术 | 目标技术 (Supabase) | 说明 |
| -------------- | ----------------------------- | ------------ |
| ThinkPHP 6 | Supabase (PostgreSQL) | 数据库 + API |
| MySQL | PostgreSQL | 数据库 |
| PHP Controller | Supabase RLS + Edge Functions | 业务逻辑 |
| PHP Service | Database Functions + Triggers | 业务处理 |
| Session | Supabase Auth (JWT) | 认证 |
| File Upload | Supabase Storage | 文件存储 |
#### 2.2.2 API 映射
**CRMEB API 结构**
```
/api/v1/store/product/lst # 商品列表
/api/v1/store/product/detail # 商品详情
/api/v1/order/confirm # 订单确认
/api/v1/order/create # 创建订单
```
**Supabase API 结构**
```
GET /rest/v1/ml_products # 商品列表PostgREST 自动生成)
GET /rest/v1/ml_products?id=eq.{id} # 商品详情
POST /rest/v1/rpc/create_order # 创建订单Edge Function
POST /rest/v1/rpc/confirm_order # 订单确认Edge Function
```
#### 2.2.3 数据表映射
**CRMEB 数据表****Supabase 数据表**
| CRMEB 表名 | Supabase 表名 | 说明 |
| ----------------------- | --------------------- | ---------- |
| `eb_store_product` | `ml_products` | 商品表 |
| `eb_store_order` | `ml_orders` | 订单表 |
| `eb_store_cart` | `ml_shopping_cart` | 购物车 |
| `eb_user` | `ak_users` (复用) | 用户表 |
| `eb_store_category` | `ml_categories` | 分类表 |
| `eb_store_coupon_issue` | `ml_coupon_templates` | 优惠券模板 |
| `eb_store_coupon_user` | `ml_user_coupons` | 用户优惠券 |
#### 2.2.4 业务逻辑映射
**CRMEB PHP Service****Supabase 实现方式**
1. **商品列表查询**
- **原实现**`StoreProductServices::getSearchList()`
- **新实现**PostgREST 查询 + RLS 策略
```typescript
// 前端调用
await supa.from('ml_products')
.select('*')
.eq('status', 1)
.order('created_at', { ascending: false })
.limit(20)
```
2. **订单创建**
- **原实现**`StoreOrderCreateServices::createOrder()`
- **新实现**Edge Function 或 Database Function
```sql
-- Database Function
CREATE FUNCTION create_order(...) RETURNS uuid AS $$
BEGIN
-- 库存检查
-- 价格计算
-- 订单创建
-- 库存扣减
END;
$$ LANGUAGE plpgsql;
```
3. **权限控制**
- **原实现**PHP Middleware + Session
- **新实现**Supabase RLS 策略
```sql
-- RLS 策略示例
CREATE POLICY ml_orders_select_policy ON ml_orders
FOR SELECT USING (
auth.uid()::text = (SELECT auth_id FROM ak_users WHERE id = user_id)
);
```
#### 2.2.5 文件上传映射
**CRMEB**
- PHP 文件上传处理
- 本地存储或云存储OSS
**Supabase**
- Supabase Storage
- 公共/私有存储桶
- 自动生成访问 URL
```typescript
// 文件上传
await supa.storage.from('product-images').upload(filePath, file)
```
### 2.3 认证与权限映射
#### 2.3.1 认证方式
**CRMEB**
- Session 认证
- JWT Token部分接口
**Supabase**
- Supabase Auth
- JWT Token自动管理
- 多种登录方式邮箱、手机、微信、OAuth
```typescript
// 登录
await supa.auth.signInWithPassword({ email, password })
// Token 自动附加到后续请求
```
#### 2.3.2 权限控制
**CRMEB**
- PHP Middleware 权限检查
- 角色权限表
**Supabase**
- RLS (Row Level Security) 行级安全
- 基于 `auth.uid()` 的自动过滤
---
## 三、实现计划 (Implementation Plan)
### 3.1 目录结构设计
```
项目根目录/
├── pages/
│ └── mall/
│ ├── consumer/ # 消费者端页面
│ │ ├── index.uvue
│ │ ├── product-detail.uvue
│ │ ├── cart.uvue
│ │ ├── order-confirm.uvue
│ │ ├── order-list.uvue
│ │ ├── order-detail.uvue
│ │ ├── profile.uvue
│ │ ├── address-list.uvue
│ │ ├── coupon-list.uvue
│ │ └── search.uvue
│ ├── merchant/ # 商家端页面
│ │ ├── index.uvue
│ │ ├── product-list.uvue
│ │ ├── product-edit.uvue
│ │ ├── order-list.uvue
│ │ └── shop-settings.uvue
│ ├── delivery/ # 配送端页面
│ │ ├── index.uvue
│ │ └── order-detail.uvue
│ └── admin/ # 管理后台
│ ├── index.uvue
│ ├── product-management.uvue
│ ├── order-management.uvue
│ └── user-management.uvue
├── components/
│ ├── supadb/ # Supabase 封装(不修改)
│ └── mall/ # 商城业务组件
│ ├── ProductList.uvue
│ ├── ProductCard.uvue
│ ├── OrderItem.uvue
│ ├── AddressSelector.uvue
│ ├── CouponSelector.uvue
│ └── PaymentMethod.uvue
├── services/ # 业务服务层
│ └── mall/
│ ├── product-service.uts
│ ├── order-service.uts
│ ├── cart-service.uts
│ ├── coupon-service.uts
│ └── user-service.uts
├── types/
│ └── mall-types.uts # 类型定义(已存在)
└── utils/
└── mall-utils.uts # 工具函数
```
### 3.2 数据库设计
#### 3.2.1 数据表清单
基于功能规格,设计以下数据表(使用 `ml_` 前缀):
1. **用户相关**
- `ml_user_profiles` - 用户扩展信息
- `ml_user_addresses` - 用户地址
2. **商品相关**
- `ml_products` - 商品主表
- `ml_product_skus` - 商品SKU
- `ml_categories` - 商品分类
- `ml_brands` - 品牌表
- `ml_product_specs` - 商品规格模板
3. **店铺相关**
- `ml_shops` - 店铺表
4. **订单相关**
- `ml_orders` - 订单主表
- `ml_order_items` - 订单商品明细
5. **购物车**
- `ml_shopping_cart` - 购物车
6. **营销相关**
- `ml_coupon_templates` - 优惠券模板
- `ml_user_coupons` - 用户优惠券
7. **配送相关**
- `ml_delivery_drivers` - 配送员
- `ml_delivery_tasks` - 配送任务
8. **评价相关**
- `ml_product_reviews` - 商品评价
9. **用户行为**
- `ml_user_favorites` - 收藏
- `ml_browse_history` - 浏览历史
- `ml_search_history` - 搜索记录
10. **系统配置**
- `ml_system_configs` - 系统配置
- `ml_regions` - 地区数据
#### 3.2.2 数据库脚本位置
- 主数据库脚本:`doc_mall/database/complete_mall_database.sql`
- RLS 策略脚本:`doc_mall/database/rls_policies.sql`
- 触发器脚本:`doc_mall/database/triggers.sql`
- 函数脚本:`doc_mall/database/functions.sql`
### 3.3 开发里程碑
#### 阶段 1基础架构搭建1-2周
- [ ] 数据库表结构创建
- [ ] RLS 策略配置
- [ ] 触发器与函数创建
- [ ] 类型定义完善(`types/mall-types.uts`
- [ ] 服务层基础封装(`services/mall/`
#### 阶段 2用户系统1周
- [ ] 用户注册/登录页面
- [ ] 用户信息管理
- [ ] 地址管理功能
- [ ] 权限验证
#### 阶段 3商品系统2周
- [ ] 商品列表页
- [ ] 商品详情页
- [ ] 商品搜索
- [ ] 分类导航
- [ ] 商家商品管理
#### 阶段 4购物车与订单2周
- [ ] 购物车功能
- [ ] 订单确认页
- [ ] 订单创建
- [ ] 订单列表
- [ ] 订单详情
- [ ] 订单支付集成支付SDK
#### 阶段 5营销系统1-2周
- [ ] 优惠券功能
- [ ] 优惠券使用
- [ ] 活动页面(拼团、秒杀等,可选)
#### 阶段 6管理后台2周
- [ ] 管理员登录
- [ ] 商品管理
- [ ] 订单管理
- [ ] 用户管理
- [ ] 数据统计
#### 阶段 7测试与优化1-2周
- [ ] 功能测试
- [ ] 性能优化
- [ ] 安全测试
- [ ] 用户体验优化
### 3.4 关键技术实现点
#### 3.4.1 使用 supadb 组件(不修改)
```typescript
// 引入 supadb 实例
import supa from '@/components/supadb/aksupainstance.uts'
// 查询商品列表
const getProducts = async (filters: any) => {
const result = await supa
.from('ml_products')
.select('*')
.eq('status', 1)
.order('created_at', { ascending: false })
.limit(20)
.executeAs<ProductType[]>()
return result.data || []
}
// 创建订单
const createOrder = async (orderData: any) => {
const result = await supa
.from('ml_orders')
.insert(orderData)
.executeAs<OrderType>()
return result.data
}
```
#### 3.4.2 服务层封装
```typescript
// services/mall/product-service.uts
import supa from '@/components/supadb/aksupainstance.uts'
import type { ProductType } from '@/types/mall-types.uts'
export class ProductService {
// 获取商品列表
static async getProducts(params: {
categoryId?: string
keyword?: string
minPrice?: number
maxPrice?: number
page?: number
pageSize?: number
}) {
let query = supa.from('ml_products').select('*')
if (params.categoryId) {
query = query.eq('category_id', params.categoryId)
}
if (params.keyword) {
query = query.ilike('name', `%${params.keyword}%`)
}
if (params.minPrice) {
query = query.gte('base_price', params.minPrice)
}
if (params.maxPrice) {
query = query.lte('base_price', params.maxPrice)
}
const page = params.page || 1
const pageSize = params.pageSize || 20
const from = (page - 1) * pageSize
const to = from + pageSize - 1
query = query.range(from, to).order('created_at', { ascending: false })
const result = await query.executeAs<ProductType[]>()
return result.data || []
}
// 获取商品详情
static async getProductById(id: string) {
const result = await supa
.from('ml_products')
.select('*')
.eq('id', id)
.single()
.executeAs<ProductType>()
return result.data
}
}
```
#### 3.4.3 页面组件实现
```vue
<!-- pages/mall/consumer/product-detail.uvue -->
<template>
<view class="product-detail">
<view class="product-images">
<swiper>
<swiper-item v-for="img in product.image_urls" :key="img">
<image :src="img" mode="aspectFill" />
</swiper-item>
</swiper>
</view>
<view class="product-info">
<text class="product-name">{{ product.name }}</text>
<text class="product-price">¥{{ product.base_price }}</text>
</view>
<!-- SKU 选择 -->
<view class="sku-selector">
<!-- SKU 选择组件 -->
</view>
<!-- 操作按钮 -->
<view class="action-buttons">
<button @click="addToCart">加入购物车</button>
<button @click="buyNow">立即购买</button>
</view>
</view>
</template>
<script setup lang="uts">
import { ref, onMounted } from 'vue'
import { ProductService } from '@/services/mall/product-service.uts'
import type { ProductType } from '@/types/mall-types.uts'
const props = defineProps<{
productId: string
}>()
const product = ref<ProductType | null>(null)
onMounted(async () => {
product.value = await ProductService.getProductById(props.productId)
})
const addToCart = async () => {
// 加入购物车逻辑
}
const buyNow = async () => {
// 立即购买逻辑
}
</script>
```
---
## 四、验证清单 (Verification Checklist)
### 4.1 功能验证
#### 4.1.1 用户系统
- [ ] 用户注册(手机号、邮箱)
- [ ] 用户登录(密码、验证码)
- [ ] 用户信息修改
- [ ] 地址添加/编辑/删除
- [ ] 默认地址设置
#### 4.1.2 商品系统
- [ ] 商品列表展示(分页、筛选、排序)
- [ ] 商品详情展示
- [ ] 商品搜索
- [ ] 分类导航
- [ ] SKU 选择
- [ ] 商家商品管理(增删改查)
#### 4.1.3 购物车
- [ ] 添加商品到购物车
- [ ] 修改购物车商品数量
- [ ] 删除购物车商品
- [ ] 购物车商品选择
- [ ] 购物车价格计算
#### 4.1.4 订单系统
- [ ] 订单确认页(地址、优惠券、运费)
- [ ] 创建订单
- [ ] 订单支付
- [ ] 订单列表(状态筛选)
- [ ] 订单详情
- [ ] 订单取消
- [ ] 订单退款
#### 4.1.5 营销系统
- [ ] 优惠券列表
- [ ] 优惠券领取
- [ ] 优惠券使用
- [ ] 优惠券过期处理
### 4.2 权限验证
- [ ] 用户只能查看/修改自己的数据
- [ ] 商家只能管理自己的商品和订单
- [ ] 管理员可以查看所有数据
- [ ] 未登录用户只能查看公开商品
- [ ] RLS 策略正确生效
### 4.3 性能验证
- [ ] 商品列表加载速度(< 2秒
- [ ] 图片加载优化(懒加载)
- [ ] 分页加载流畅
- [ ] 数据库查询性能(索引优化)
### 4.4 安全验证
- [ ] SQL 注入防护(参数化查询)
- [ ] XSS 防护(数据转义)
- [ ] 权限验证RLS
- [ ] 敏感数据加密
### 4.5 兼容性验证
- [ ] Android 平台
- [ ] iOS 平台(如支持)
- [ ] Web 平台(如支持)
- [ ] 不同屏幕尺寸适配
---
## 五、差异清单 (Difference List)
### 5.1 允许的差异
1. **UI 风格差异**
- 可以重新设计 UI不要求与 CRMEB 完全一致
- 遵循现代 UI 设计规范
2. **交互细节差异**
- 动画效果可以不同
- 页面布局可以优化
3. **非核心功能差异**
- 某些营销活动(如砍价、拼团)可以简化或延后实现
- 数据统计功能可以简化
### 5.2 不允许的差异
1. **核心业务流程**
- 订单流程必须完整(创建→支付→发货→收货→完成)
- 库存扣减逻辑必须正确
- 价格计算必须准确
2. **数据一致性**
- 订单金额必须准确
- 库存数据必须准确
- 用户余额必须准确
3. **权限控制**
- 用户权限必须正确
- 数据访问权限必须正确
---
## 六、反抄袭自证
### 6.1 参考资料说明
本文档仅参考以下公开资料:
1. **CRMEB 项目 README.md**
- 仅用于了解项目功能模块和业务范围
- 未参考任何 PHP 源码实现
2. **Supabase 官方文档**
- https://supabase.com/docs
- 用于了解 Supabase API 使用方式
3. **uni-app x 官方文档**
- https://uniapp.dcloud.net.cn/uni-app-x/
- 用于了解 uvue 语法和规范
4. **PostgreSQL 官方文档**
- https://www.postgresql.org/docs/
- 用于了解数据库功能和语法
### 6.2 实现方式说明
1. **数据库设计**
- 基于业务需求独立设计表结构
- 使用 `ml_` 前缀区分商城模块
- 参考现有 `doc_mall/database/` 中的设计
2. **前端实现**
- 使用 uvue 语法独立编写页面
- 通过 `components/supadb` 调用 Supabase API
- 不复制任何 Vue 组件代码
3. **后端实现**
- 使用 Supabase RLS + Edge Functions
- 不编写任何 PHP 代码
- 业务逻辑通过数据库函数和触发器实现
### 6.3 代码原创性声明
- 所有代码均为基于功能规格的独立实现
- 未复制 CRMEB 项目的任何源码
- 未复制任何第三方项目的实现代码
- 仅参考公开 API 文档和规范
---
## 七、参考资料列表
### 7.1 官方文档
1. **Supabase**
- REST API: https://supabase.com/docs/reference/javascript/introduction
- Auth: https://supabase.com/docs/guides/auth
- RLS: https://supabase.com/docs/guides/auth/row-level-security
- Storage: https://supabase.com/docs/guides/storage
2. **uni-app x**
- 概述: https://uniapp.dcloud.net.cn/uni-app-x/
- uvue: https://uniapp.dcloud.net.cn/uni-app-x/component/
- UTS: https://uniapp.dcloud.net.cn/uni-app-x/uts/
3. **PostgreSQL**
- 官方文档: https://www.postgresql.org/docs/
- JSONB: https://www.postgresql.org/docs/current/datatype-json.html
### 7.2 项目内部文档
1. `doc_mall/MODULE_ANALYSIS.md` - 模块分析报告
2. `doc_mall/database/` - 数据库设计文档
3. `components/supadb/SIMPLIFIED_API_GUIDE.md` - Supabase API 使用指南
4. `types/mall-types.uts` - 类型定义
---
## 八、总结
本文档基于 **Clean-Room 重构原则**,通过分析 CRMEB 项目的功能规格,制定了完整的重构计划:
1. **功能规格提取**:明确了所有核心业务模块的功能需求
2. **架构映射**:完成了 Vue→uvue、PHP→Supabase 的技术栈映射
3. **实现计划**:制定了详细的开发里程碑和目录结构
4. **验证清单**:提供了完整的测试验证标准
所有实现将基于功能规格独立开发,不复制任何源码,确保代码的原创性和合规性。
---
**文档版本**: v1.0
**创建时间**: 2025-01-XX
**状态**: ✅ 待实施