补充数据库数据,修改分类栏内容

This commit is contained in:
2026-05-21 11:50:32 +08:00
parent b8b0b453e0
commit 7ba3d313be
32 changed files with 6657 additions and 1684 deletions

View File

@@ -0,0 +1,125 @@
# 医疗商城商品分类映射说明
说明:
- 本文用于补齐 public.medical_mall_product_categories 的真实商品分类关联。
- 首页和分类页现在都优先依赖这张关联表;关键词 fallback 只作为临时兜底,不应长期替代真实映射。
- 推荐配套执行文件见 [mall_sql/migrations/20260521_medical_mall_categories_v1.sql](../mall_sql/migrations/20260521_medical_mall_categories_v1.sql)。
## 目标
需要补齐三类数据:
- 主分类映射:每个商品至少挂 1 个最准确的二级分类,且建议设置 1 条 is_primary = true。
- 扩展分类映射:一个商品可以额外挂多个补充分类,用于“全部”“交叉场景”与推荐流召回。
- 存量纠偏:清理错误分类、重复主分类和已下架商品的失效映射。
## 一级分类与二级分类
当前医疗商城一级分类:
- med_device医疗器械
- otc_medicine家庭常备药
- rehab_care康复护理
- chronic_monitor慢病监测
- elderly_aid适老用品
- nutrition_health营养保健
- protection_disinfection防护消毒
- tcm_health中医保健
- home_care_daily居家护理
- all_medical全部
优先补的二级分类:
- blood_pressure_monitor血压计
- blood_glucose_meter血糖仪
- oximeter血氧仪
- thermometer体温计
- oxygen_concentrator制氧机
- nebulizer雾化器
- wheelchair_crutch轮椅拐杖
- nursing_bed护理床
- cold_fever感冒发烧
- cough_throat咳嗽咽喉
- stomach_medicine肠胃用药
- skin_external皮肤外用
- eye_ear_nose眼耳口鼻
- pain_relief止痛用药
- trauma_sprain跌打损伤
- child_medicine儿童用药
- postop_rehab术后康复
- wound_dressing伤口敷料
- brace_support护具支具
- rehab_training康复训练器
- physiotherapy_hot理疗热敷
- mobility_training行动训练
- hypertension高血压管理
- diabetes糖尿病管理
- cardiovascular心脑血管
- respiratory_health呼吸健康
- weight_bodyfat体重体脂
- home_testing家庭检测
- anti_slip防滑安全
- elderly_bathroom适老卫浴
- eating_aid助餐用品
- bathing_aid助浴用品
- incontinence_care失禁护理
- daily_living_aid生活辅助
- vitamin维生素
- calcium钙铁锌硒
- protein蛋白营养
- elderly_nutrition老人营养
- gut_health肠道益生菌
- immune_support免疫支持
- mask口罩
- disinfectant消毒液
- alcohol_wipes酒精湿巾
- gloves手套
- first_aid急救包
- dressing_tools棉签纱布
- moxibustion艾灸拔罐
- herbal_drink养生茶饮
- tcm_patch中医贴敷
- medicated_diet药膳滋补
- massage_tools按摩理疗
- foot_bath泡脚养生
- wound_care伤口护理
- oral_care口腔护理
- skin_care皮肤护理
- cleaning_care清洁护理
- nursing_consumables护理耗材
- home_health_tool家庭健康工具
## 建议映射原则
1. 一个商品先确定一个最准确的二级分类,写为主分类。
2. 只有确实横跨多个场景时,再补额外分类,不要为了提高曝光滥挂多个类。
3. 一级类不直接挂商品,优先挂到二级类;只有“全部”这种聚合入口由前端自动聚合,不需要单独插 all_medical。
4. OTC、器械、处方隐藏类商品要优先核对 compliance_type不要把应隐藏的商品映射到公开可见分类。
5. 已下架、删除、测试商品不要补映射,避免推荐流被污染。
## 建议执行顺序
1. 先找出当前首页和分类页实际展示的商品。
2. 给这些商品补主分类。
3. 再补扩展分类和长尾商品。
4. 最后执行核对 SQL清理多余主分类和无效映射。
## 需要重点人工核对的商品类型
- 通用耗材:如纱布、棉签、消毒棉片,容易在 wound_care、dressing_tools、nursing_consumables 之间混淆。
- 保健品:如复合维生素、蛋白粉、益生菌,容易在 vitamin、protein、gut_health、immune_support 之间重叠。
- 康复用品:如护腰、支撑带、热敷贴,可能落在 brace_support、postop_rehab、physiotherapy_hot、tcm_patch。
- 慢病设备:如血压计、血糖仪、血氧仪,既是器械,也服务于慢病管理,但主分类仍建议落二级商品类本身。
## 配套文件
- 映射维护模板:[sql/medical_mall_product_category_manual_mapping_template.sql](../sql/medical_mall_product_category_manual_mapping_template.sql)
- 一体化迁移:[mall_sql/migrations/20260521_medical_mall_categories_v1.sql](../mall_sql/migrations/20260521_medical_mall_categories_v1.sql)
- 拆分 seed[sql/seed_medical_mall_categories.sql](../sql/seed_medical_mall_categories.sql)
## 当前状态
- 现有 seed 只补了少量关键词示例关联。
- 首页和分类页已经切到 medical_mall 数据源。
- 如果不补真实映射,线上数据仍会部分依赖关键词 fallback结果不可控。

View File

@@ -0,0 +1,36 @@
# 医疗首页商品候选图片清单
说明:
- 当前阶段先整理“商品名 -> 候选图片页”,不直接写回 SQL。
- 优先使用 Unsplash 内部图片页作为候选来源;少数品类在 Unsplash 内匹配度较低,已标注低置信度。
- 后续建议:你确认图片后,再上传到 Supabase Storage 或自有图床,再把最终地址回填到 SQL。
## 本轮确认结果
- 已按你的反馈确认这些商品可继续沿用当前候选家庭退热护理贴、智能血压监测仪、高钙维D营养片、乳清蛋白营养粉、术后支撑恢复带、肩颈草本热敷贴、折叠助行辅助器、浴室防滑扶手套装。
- 已按你的要求重找并替换:草本暖胃调理贴、静音雾化护理机、家用艾灸温灸盒。
- 第 2、8 项已去掉付费来源,改为免费可访问图片页。
- 无菌伤口护理包本轮未被点名调整,暂保留原候选。
## 候选清单
| 商品模板 | 候选图片页 | 匹配度 | 备注 |
|---|---|---:|---|
| 家庭退热护理贴 | https://unsplash.com/photos/woman-holding-cooling-gel-patches-for-fever-relief-KZ1r0RrbXdc | 高 | 语义最贴近“退热贴/降温贴” |
| 草本暖胃调理贴 | https://unsplash.com/photos/a-knitted-hot-water-bottle-with-a-green-stopper-4XlKcKpmjwU | 中 | 免费来源。偏腹部热敷/暖胃护理场景,不是贴剂包装图,但比付费候选更适合作为当前免费替代 |
| 智能血压监测仪 | https://unsplash.com/photos/a-person-with-a-blood-pressure-meter-on-their-arm-oi6jf34bQrU | 高 | 与家用电子血压计场景贴近 |
| 静音雾化护理机 | https://unsplash.com/photos/beautiful-sick-boy-inhalation-therapy-by-the-mask-of-inhaler-image-of-a-cute-kid-with-respiratory-problem-or-asthma-view-of-nebulizer-with-smoke-from-oxygen-mask-wLldIFm5E4Q | 高 | 已按你指定的儿童雾化器图片方向替换为具体图片页 |
| 高钙维D营养片 | https://unsplash.com/photos/four-bottles-of-vitamin-supplements-sitting-next-to-a-plant-dY14deLOUGk | 中高 | 更像营养补充剂瓶装商品,适合替代钙片视觉 |
| 乳清蛋白营养粉 | https://unsplash.com/photos/a-jar-of-protein-powder-next-to-a-scoop-of-protein-powder-DvunqLOsKco | 高 | 与蛋白粉罐装商品很贴近 |
| 术后支撑恢复带 | https://unsplash.com/photos/woman-wearing-a-white-ribbed-band-and-denim-shorts-rArjMQ0rT7Y | 中 | 偏腹部支撑带场景,能表达术后支撑语义 |
| 无菌伤口护理包 | https://unsplash.com/photos/first-aid-kit-contents-with-bandages-and-medical-supplies-nGfxoclUgSI | 高 | 与无菌换药/护理包很贴近 |
| 家用艾灸温灸盒 | https://commons.wikimedia.org/wiki/File:Ibuki_moxa_set.jpg | 中高 | 免费来源。Wikimedia Commons 图片页,偏艾灸产品实物/套装展示,比当前能拿到的免费场景图更接近商品本体 |
| 肩颈草本热敷贴 | https://unsplash.com/photos/person-with-patch-on-neck-against-orange-background-HjdjzIrL6GM | 高 | 与肩颈贴敷场景较贴近 |
| 折叠助行辅助器 | https://unsplash.com/photos/elderly-woman-on-a-walker-EbLMgFcCXV4 | 高 | 与长者助行器商品高度贴近 |
| 浴室防滑扶手套装 | https://unsplash.com/photos/a-toilet-with-a-metal-bar-lFDGy3yzCc0 | 高 | 与浴室扶手安装场景贴近 |
## 当前建议
1. 如果这版没问题,我下一步直接把已确认候选回填成 SQL 映射表。
2. 如果你还想继续压低风险,我可以只对第三方链接生成“待上传素材清单”,不直接写热链。
3. 正式上线前,仍建议把这些图片上传到你们自己的存储后再回填数据库。

View File

@@ -0,0 +1,64 @@
-- Schema: 医疗商城独立分类与商品分类关联
-- 执行阶段: 10_schema
CREATE TABLE IF NOT EXISTS public.medical_mall_categories (
id TEXT PRIMARY KEY,
name TEXT NOT NULL,
parent_id TEXT NULL REFERENCES public.medical_mall_categories(id),
level INTEGER NOT NULL CHECK (level IN (1, 2)),
sort_order INTEGER NOT NULL DEFAULT 0,
icon TEXT,
image_url TEXT,
description TEXT,
scene TEXT NOT NULL DEFAULT 'medical_mall',
category_type TEXT NOT NULL DEFAULT 'normal',
compliance_type TEXT NOT NULL DEFAULT 'normal',
is_active BOOLEAN NOT NULL DEFAULT TRUE,
deleted_at TIMESTAMPTZ NULL,
deleted_by UUID NULL REFERENCES public.ak_users(id),
restored_at TIMESTAMPTZ NULL,
restored_by UUID NULL REFERENCES public.ak_users(id),
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
COMMENT ON TABLE public.medical_mall_categories IS '医疗商城独立分类表';
COMMENT ON COLUMN public.medical_mall_categories.scene IS '分类场景,如 medical_mall / home_mall';
COMMENT ON COLUMN public.medical_mall_categories.category_type IS '分类类型device / otc / care / rehab / elderly / nutrition / protection / tcm / all';
COMMENT ON COLUMN public.medical_mall_categories.compliance_type IS '合规类型normal / otc / device_class_i / device_class_ii / device_class_iii / rx_hidden';
CREATE INDEX IF NOT EXISTS idx_medical_mall_categories_parent
ON public.medical_mall_categories(parent_id)
WHERE deleted_at IS NULL;
CREATE INDEX IF NOT EXISTS idx_medical_mall_categories_level_sort
ON public.medical_mall_categories(level, sort_order)
WHERE deleted_at IS NULL;
CREATE INDEX IF NOT EXISTS idx_medical_mall_categories_scene_active
ON public.medical_mall_categories(scene, is_active)
WHERE deleted_at IS NULL;
CREATE TABLE IF NOT EXISTS public.medical_mall_product_categories (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
product_id UUID NOT NULL REFERENCES public.ml_products(id) ON DELETE CASCADE,
category_id TEXT NOT NULL REFERENCES public.medical_mall_categories(id),
is_primary BOOLEAN NOT NULL DEFAULT FALSE,
sort_order INTEGER NOT NULL DEFAULT 0,
deleted_at TIMESTAMPTZ NULL,
deleted_by UUID NULL REFERENCES public.ak_users(id),
restored_at TIMESTAMPTZ NULL,
restored_by UUID NULL REFERENCES public.ak_users(id),
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
UNIQUE (product_id, category_id)
);
COMMENT ON TABLE public.medical_mall_product_categories IS '医疗商城商品与分类关联表';
CREATE INDEX IF NOT EXISTS idx_medical_mall_product_categories_category
ON public.medical_mall_product_categories(category_id, sort_order)
WHERE deleted_at IS NULL;
CREATE INDEX IF NOT EXISTS idx_medical_mall_product_categories_product
ON public.medical_mall_product_categories(product_id)
WHERE deleted_at IS NULL;

View File

@@ -0,0 +1,23 @@
-- RLS: 医疗商城独立分类与商品分类关联
-- 执行阶段: 20_rls
ALTER TABLE public.medical_mall_categories ENABLE ROW LEVEL SECURITY;
ALTER TABLE public.medical_mall_product_categories ENABLE ROW LEVEL SECURITY;
DROP POLICY IF EXISTS medical_mall_categories_public_select_active ON public.medical_mall_categories;
CREATE POLICY medical_mall_categories_public_select_active
ON public.medical_mall_categories
FOR SELECT
TO anon, authenticated
USING (
deleted_at IS NULL
AND is_active = TRUE
AND compliance_type <> 'rx_hidden'
);
DROP POLICY IF EXISTS medical_mall_product_categories_public_select_active ON public.medical_mall_product_categories;
CREATE POLICY medical_mall_product_categories_public_select_active
ON public.medical_mall_product_categories
FOR SELECT
TO anon, authenticated
USING (deleted_at IS NULL);

View File

@@ -1,12 +1,15 @@
# SQL 文件执行顺序文档(软删除标准化改造 + Admin 模块全量)
## 目标
为本次“软删除标准化改造Schema + RLS + RPC”提供**可直接执行**且**顺序准确**的数据库同步步骤,同时整理**全量 Admin 模块**对应的数据库文件,确保:
- 先补齐表字段与索引(避免 RPC/RLS 引用字段失败);
- 再应用 RLS确保查询默认过滤已软删数据
- 最后加载/替换 RPC确保删除行为变更与审计字段写入生效
## 前置约束
- 执行账号需具备:`ALTER TABLE``CREATE INDEX``ALTER POLICY/CREATE POLICY``CREATE OR REPLACE FUNCTION` 等权限。
- **禁止并发执行**:建议串行执行,尤其是 RLS/RPC 部分。
- 若生产环境已存在同名对象:本次以 `CREATE OR REPLACE FUNCTION` 与 policy 更新为主,属于“覆盖式更新”。
@@ -14,99 +17,115 @@
---
## 第一阶段Schema / Migration必须先执行
> 目的:补齐 `deleted_at/deleted_by/restored_at/restored_by` 字段与软删除索引,作为后续 RLS/RPC 的基础依赖。
| 序号 | 文件路径 | 说明 |
|:--:|:---|:---|
| 1 | [`10_schema/99_soft_delete_migration_v1.sql`](./10_schema/99_soft_delete_migration_v1.sql) | 软删除字段迁移(核心) |
| 序号 | 文件路径 | 说明 |
| :--: | :----------------------------------------------------------------------------------------- | :--------------------- |
| 1 | [`10_schema/99_soft_delete_migration_v1.sql`](./10_schema/99_soft_delete_migration_v1.sql) | 软删除字段迁移(核心) |
### 其他 Schema 文件(按业务域分类)
#### Admin 域
| 文件路径 | 说明 |
|:---|:---|
| 文件路径 | 说明 |
| :--------------------------------------------------------------------------------------- | :--------- |
| [`10_schema/admin/ml_system_configs_v1.sql`](./10_schema/admin/ml_system_configs_v1.sql) | 系统配置表 |
#### Auth 域
| 文件路径 | 说明 |
|:---|:---|
| [`10_schema/user/ak_auth_system_v1.sql`](./10_schema/user/ak_auth_system_v1.sql) | 认证系统表roles/permissions/admin_roles/role_permissions |
| [`10_schema/user/ak_users_add_phone_real_name_v1.sql`](./10_schema/user/ak_users_add_phone_real_name_v1.sql) | 用户扩展字段 |
| [`10_schema/user/ak_users_finance_fields_v1.sql`](./10_schema/user/ak_users_finance_fields_v1.sql) | 用户财务字段 |
| [`10_schema/user/ak_users_constraints_fix_v1.sql`](./10_schema/user/ak_users_constraints_fix_v1.sql) | 用户表约束修复 |
| 文件路径 | 说明 |
| :----------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------- |
| [`10_schema/user/ak_auth_system_v1.sql`](./10_schema/user/ak_auth_system_v1.sql) | 认证系统表roles/permissions/admin_roles/role_permissions |
| [`10_schema/user/ak_users_add_phone_real_name_v1.sql`](./10_schema/user/ak_users_add_phone_real_name_v1.sql) | 用户扩展字段 |
| [`10_schema/user/ak_users_finance_fields_v1.sql`](./10_schema/user/ak_users_finance_fields_v1.sql) | 用户财务字段 |
| [`10_schema/user/ak_users_constraints_fix_v1.sql`](./10_schema/user/ak_users_constraints_fix_v1.sql) | 用户表约束修复 |
#### CMS 域
| 文件路径 | 说明 |
|:---|:---|
| 文件路径 | 说明 |
| :--------------------------------------------------------------------------- | :------------- |
| [`10_schema/cms/ml_cms_tables_v1.sql`](./10_schema/cms/ml_cms_tables_v1.sql) | CMS 内容管理表 |
#### Decoration 域
| 文件路径 | 说明 |
|:---|:---|
| 文件路径 | 说明 |
| :--------------------------------------------------------------------------------------- | :--------- |
| [`10_schema/decoration/ak_diy_pages_v1.sql`](./10_schema/decoration/ak_diy_pages_v1.sql) | DIY 页面表 |
#### Delivery 域
| 文件路径 | 说明 |
|:---|:---|
| 文件路径 | 说明 |
| :----------------------------------------------------------------------------------------------- | :--------- |
| [`10_schema/delivery/ak_delivery_system_v1.sql`](./10_schema/delivery/ak_delivery_system_v1.sql) | 配送系统表 |
#### Distribution 域
| 文件路径 | 说明 |
|:---|:---|
| [`10_schema/distribution/ak_distribution_agents_v1.sql`](./10_schema/distribution/ak_distribution_agents_v1.sql) | 分销代理表 |
| [`10_schema/distribution/ak_distribution_agent_applications_v1.sql`](./10_schema/distribution/ak_distribution_agent_applications_v1.sql) | 代理申请表 |
| [`10_schema/distribution/ak_distribution_divisions_v1.sql`](./10_schema/distribution/ak_distribution_divisions_v1.sql) | 事业部表 |
| 文件路径 | 说明 |
| :--------------------------------------------------------------------------------------------------------------------------------------------- | :----------- |
| [`10_schema/distribution/ak_distribution_agents_v1.sql`](./10_schema/distribution/ak_distribution_agents_v1.sql) | 分销代理表 |
| [`10_schema/distribution/ak_distribution_agent_applications_v1.sql`](./10_schema/distribution/ak_distribution_agent_applications_v1.sql) | 代理申请表 |
| [`10_schema/distribution/ak_distribution_divisions_v1.sql`](./10_schema/distribution/ak_distribution_divisions_v1.sql) | 事业部表 |
| [`10_schema/distribution/ak_distribution_division_applications_v1.sql`](./10_schema/distribution/ak_distribution_division_applications_v1.sql) | 事业部申请表 |
| [`10_schema/distribution/ak_promoter_relations_v1.sql`](./10_schema/distribution/ak_promoter_relations_v1.sql) | 推广员关系表 |
| [`10_schema/distribution/ak_commission_logs_v1.sql`](./10_schema/distribution/ak_commission_logs_v1.sql) | 佣金日志表 |
| [`10_schema/distribution/ak_distribution_level_v1.sql`](./10_schema/distribution/ak_distribution_level_v1.sql) | 分销等级表 |
| [`10_schema/distribution/ak_distribution_config_v1.sql`](./10_schema/distribution/ak_distribution_config_v1.sql) | 分销配置表 |
| [`10_schema/distribution/ak_promoter_relations_v1.sql`](./10_schema/distribution/ak_promoter_relations_v1.sql) | 推广员关系表 |
| [`10_schema/distribution/ak_commission_logs_v1.sql`](./10_schema/distribution/ak_commission_logs_v1.sql) | 佣金日志表 |
| [`10_schema/distribution/ak_distribution_level_v1.sql`](./10_schema/distribution/ak_distribution_level_v1.sql) | 分销等级表 |
| [`10_schema/distribution/ak_distribution_config_v1.sql`](./10_schema/distribution/ak_distribution_config_v1.sql) | 分销配置表 |
#### Finance 域
| 文件路径 | 说明 |
|:---|:---|
| [`10_schema/finance/ml_invoices_v1.sql`](./10_schema/finance/ml_invoices_v1.sql) | 发票表 |
| [`10_schema/finance/ml_extract_v1.sql`](./10_schema/finance/ml_extract_v1.sql) | 提现表 |
| 文件路径 | 说明 |
| :----------------------------------------------------------------------------------------- | :--------- |
| [`10_schema/finance/ml_invoices_v1.sql`](./10_schema/finance/ml_invoices_v1.sql) | 发票表 |
| [`10_schema/finance/ml_extract_v1.sql`](./10_schema/finance/ml_extract_v1.sql) | 提现表 |
| [`10_schema/finance/ml_user_recharge_v1.sql`](./10_schema/finance/ml_user_recharge_v1.sql) | 用户充值表 |
| [`10_schema/finance/ml_user_bill_v1.sql`](./10_schema/finance/ml_user_bill_v1.sql) | 用户账单表 |
| [`10_schema/finance/ml_user_bill_v1.sql`](./10_schema/finance/ml_user_bill_v1.sql) | 用户账单表 |
#### Kefu 域
| 文件路径 | 说明 |
|:---|:---|
| 文件路径 | 说明 |
| :------------------------------------------------------------------------------- | :--------- |
| [`10_schema/kefu/ml_kefu_tables_v1.sql`](./10_schema/kefu/ml_kefu_tables_v1.sql) | 客服系统表 |
#### Marketing 域
| 文件路径 | 说明 |
|:---|:---|
| [`10_schema/marketing/ak_lottery_live_v1.sql`](./10_schema/marketing/ak_lottery_live_v1.sql) | 直播抽奖 |
| [`10_schema/marketing/ak_marketing_signin_logs_v1.sql`](./10_schema/marketing/ak_marketing_signin_logs_v1.sql) | 签到日志 |
| 文件路径 | 说明 |
| :--------------------------------------------------------------------------------------------------------------------- | :------- |
| [`10_schema/marketing/ak_lottery_live_v1.sql`](./10_schema/marketing/ak_lottery_live_v1.sql) | 直播抽奖 |
| [`10_schema/marketing/ak_marketing_signin_logs_v1.sql`](./10_schema/marketing/ak_marketing_signin_logs_v1.sql) | 签到日志 |
| [`10_schema/marketing/ak_marketing_newcomer_config_v1.sql`](./10_schema/marketing/ak_marketing_newcomer_config_v1.sql) | 新人配置 |
| [`10_schema/marketing/ak_bargain_groupbuy_v1.sql`](./10_schema/marketing/ak_bargain_groupbuy_v1.sql) | 拼团砍价 |
| [`10_schema/marketing/ak_live_products_v1.sql`](./10_schema/marketing/ak_live_products_v1.sql) | 直播商品 |
| [`10_schema/marketing/ak_advanced_marketing_v1.sql`](./10_schema/marketing/ak_advanced_marketing_v1.sql) | 高级营销 |
| [`10_schema/marketing/ak_bargain_groupbuy_v1.sql`](./10_schema/marketing/ak_bargain_groupbuy_v1.sql) | 拼团砍价 |
| [`10_schema/marketing/ak_live_products_v1.sql`](./10_schema/marketing/ak_live_products_v1.sql) | 直播商品 |
| [`10_schema/marketing/ak_advanced_marketing_v1.sql`](./10_schema/marketing/ak_advanced_marketing_v1.sql) | 高级营销 |
| [`10_schema/marketing/ak_marketing_checkin_configs_v1.sql`](./10_schema/marketing/ak_marketing_checkin_configs_v1.sql) | 签到配置 |
| [`10_schema/marketing/ak_recharge_management_v1.sql`](./10_schema/marketing/ak_recharge_management_v1.sql) | 充值管理 |
| [`10_schema/marketing/ak_member_management_v1.sql`](./10_schema/marketing/ak_member_management_v1.sql) | 会员管理 |
| [`10_schema/marketing/ak_signin_configs_v1.sql`](./10_schema/marketing/ak_signin_configs_v1.sql) | 签到配置 |
| [`10_schema/marketing/ak_recharge_management_v1.sql`](./10_schema/marketing/ak_recharge_management_v1.sql) | 充值管理 |
| [`10_schema/marketing/ak_member_management_v1.sql`](./10_schema/marketing/ak_member_management_v1.sql) | 会员管理 |
| [`10_schema/marketing/ak_signin_configs_v1.sql`](./10_schema/marketing/ak_signin_configs_v1.sql) | 签到配置 |
#### Order 域
| 文件路径 | 说明 |
|:---|:---|
| 文件路径 | 说明 |
| :--------------------------------------------------------------------------------------------------- | :------------- |
| [`10_schema/order/ml_orders_schema_update_v1.sql`](./10_schema/order/ml_orders_schema_update_v1.sql) | 订单表结构更新 |
#### Product 域
| 文件路径 | 说明 |
|:---|:---|
| [`10_schema/product/ml_products_ext_v1.sql`](./10_schema/product/ml_products_ext_v1.sql) | 商品扩展表 |
| [`10_schema/product/ak_shipping_templates_v1.sql`](./10_schema/product/ak_shipping_templates_v1.sql) | 运费模板 |
| [`10_schema/product/ak_product_member_prices_v1.sql`](./10_schema/product/ak_product_member_prices_v1.sql) | 会员价 |
| [`10_schema/product/ak_product_protections_v1.sql`](./10_schema/product/ak_product_protections_v1.sql) | 商品保障 |
| [`10_schema/product/ak_product_templates_v1.sql`](./10_schema/product/ak_product_templates_v1.sql) | 商品模板 |
| [`10_schema/product/ak_product_labels_v1.sql`](./10_schema/product/ak_product_labels_v1.sql) | 商品标签 |
| 文件路径 | 说明 |
| :--------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------ |
| [`../../mall_sql/migrations/20260521_medical_mall_categories_v1.sql`](../../mall_sql/migrations/20260521_medical_mall_categories_v1.sql) | 医疗商城独立分类一体化迁移(含 Schema + RLS + 初始化 Seed推荐优先执行 |
| [`10_schema/product/ml_products_ext_v1.sql`](./10_schema/product/ml_products_ext_v1.sql) | 商品扩展表 |
| [`10_schema/product/ak_shipping_templates_v1.sql`](./10_schema/product/ak_shipping_templates_v1.sql) | 运费模板 |
| [`10_schema/product/ak_product_member_prices_v1.sql`](./10_schema/product/ak_product_member_prices_v1.sql) | 会员价 |
| [`10_schema/product/ak_product_protections_v1.sql`](./10_schema/product/ak_product_protections_v1.sql) | 商品保障 |
| [`10_schema/product/ak_product_templates_v1.sql`](./10_schema/product/ak_product_templates_v1.sql) | 商品模板 |
| [`10_schema/product/ak_product_labels_v1.sql`](./10_schema/product/ak_product_labels_v1.sql) | 商品标签 |
> 补充说明:若执行 [`../../mall_sql/migrations/20260521_medical_mall_categories_v1.sql`](../../mall_sql/migrations/20260521_medical_mall_categories_v1.sql),则无需再重复执行 `10_schema/product/medical_mall_categories_v1.sql`、`20_rls/product/medical_mall_categories_rls_v1.sql` 与 `sql/seed_medical_mall_categories.sql` 的拆分版内容。
#### User 域
| 文件路径 | 说明 |
|:---|:---|
| 文件路径 | 说明 |
| :------------------------------------------------------------------------------- | :--------- |
| [`10_schema/user/ak_user_labels_v1.sql`](./10_schema/user/ak_user_labels_v1.sql) | 用户标签表 |
| [`10_schema/user/ak_user_groups_v1.sql`](./10_schema/user/ak_user_groups_v1.sql) | 用户分组表 |
| [`10_schema/user/ak_user_levels_v1.sql`](./10_schema/user/ak_user_levels_v1.sql) | 用户等级表 |
@@ -114,63 +133,74 @@
---
## 第二阶段RLS在 Schema 之后执行)
> 目的:将各模块策略统一补齐 `deleted_at IS NULL`,确保默认查询排除已软删记录。
按域执行(域之间无强依赖,可按任意顺序;但**必须在 RPC 之前**执行):
### Auth 域(新增)
| 文件路径 | 说明 |
|:---|:---|
| 文件路径 | 说明 |
| :------------------------------------------------------------------- | :----------------------------------- |
| [`20_rls/auth/ak_auth_rls_v1.sql`](./20_rls/auth/ak_auth_rls_v1.sql) | 权限/角色表 RLS 策略(禁止直接访问) |
### Admin 域
| 文件路径 | 说明 |
|:---|:---|
| 文件路径 | 说明 |
| :----------------------------------------------------------------------------------------- | :----------- |
| [`20_rls/admin/ml_system_configs_rls_v1.sql`](./20_rls/admin/ml_system_configs_rls_v1.sql) | 系统配置 RLS |
### CMS 域
| 文件路径 | 说明 |
|:---|:---|
| 文件路径 | 说明 |
| :--------------------------------------------------------------- | :----------- |
| [`20_rls/cms/ml_cms_rls_v1.sql`](./20_rls/cms/ml_cms_rls_v1.sql) | CMS 内容 RLS |
### Decoration 域
| 文件路径 | 说明 |
|:---|:---|
| 文件路径 | 说明 |
| :------------------------------------------------------------------------------------------- | :------- |
| [`20_rls/decoration/ml_decoration_rls_v1.sql`](./20_rls/decoration/ml_decoration_rls_v1.sql) | 装修 RLS |
### Delivery 域
| 文件路径 | 说明 |
|:---|:---|
| 文件路径 | 说明 |
| :----------------------------------------------------------------------------------- | :------- |
| [`20_rls/delivery/ak_delivery_rls_v1.sql`](./20_rls/delivery/ak_delivery_rls_v1.sql) | 配送 RLS |
### Distribution 域
| 文件路径 | 说明 |
|:---|:---|
| 文件路径 | 说明 |
| :--------------------------------------------------------------------------------------------------- | :------- |
| [`20_rls/distribution/ml_distribution_rls_v1.sql`](./20_rls/distribution/ml_distribution_rls_v1.sql) | 分销 RLS |
### Finance 域
| 文件路径 | 说明 |
|:---|:---|
| [`20_rls/finance/ml_extract_rls_v1.sql`](./20_rls/finance/ml_extract_rls_v1.sql) | 提现 RLS |
| [`20_rls/finance/ml_invoices_rls_v1.sql`](./20_rls/finance/ml_invoices_rls_v1.sql) | 发票 RLS |
| [`20_rls/finance/ml_user_bill_rls_v1.sql`](./20_rls/finance/ml_user_bill_rls_v1.sql) | 用户账单 RLS |
| 文件路径 | 说明 |
| :------------------------------------------------------------------------------------------- | :----------- |
| [`20_rls/finance/ml_extract_rls_v1.sql`](./20_rls/finance/ml_extract_rls_v1.sql) | 提现 RLS |
| [`20_rls/finance/ml_invoices_rls_v1.sql`](./20_rls/finance/ml_invoices_rls_v1.sql) | 发票 RLS |
| [`20_rls/finance/ml_user_bill_rls_v1.sql`](./20_rls/finance/ml_user_bill_rls_v1.sql) | 用户账单 RLS |
| [`20_rls/finance/ml_user_recharge_rls_v1.sql`](./20_rls/finance/ml_user_recharge_rls_v1.sql) | 用户充值 RLS |
### Kefu 域
| 文件路径 | 说明 |
|:---|:---|
| 文件路径 | 说明 |
| :------------------------------------------------------------------- | :------- |
| [`20_rls/kefu/ml_kefu_rls_v1.sql`](./20_rls/kefu/ml_kefu_rls_v1.sql) | 客服 RLS |
### Marketing 域
| 文件路径 | 说明 |
|:---|:---|
| [`20_rls/marketing/ml_marketing_others_rls_v1.sql`](./20_rls/marketing/ml_marketing_others_rls_v1.sql) | 其他营销 RLS |
| [`20_rls/marketing/ml_marketing_activities_rls_v1.sql`](./20_rls/marketing/ml_marketing_activities_rls_v1.sql) | 营销活动 RLS |
| [`20_rls/marketing/ml_coupon_templates_rls_v1.sql`](./20_rls/marketing/ml_coupon_templates_rls_v1.sql) | 优惠券模板 RLS |
| 文件路径 | 说明 |
| :------------------------------------------------------------------------------------------------------------- | :------------- |
| [`20_rls/marketing/ml_marketing_others_rls_v1.sql`](./20_rls/marketing/ml_marketing_others_rls_v1.sql) | 其他营销 RLS |
| [`20_rls/marketing/ml_marketing_activities_rls_v1.sql`](./20_rls/marketing/ml_marketing_activities_rls_v1.sql) | 营销活动 RLS |
| [`20_rls/marketing/ml_coupon_templates_rls_v1.sql`](./20_rls/marketing/ml_coupon_templates_rls_v1.sql) | 优惠券模板 RLS |
### User 域
| 文件路径 | 说明 |
|:---|:---|
| 文件路径 | 说明 |
| :--------------------------------------------------------------------------------- | :----------- |
| [`20_rls/user/ak_user_labels_rls_v1.sql`](./20_rls/user/ak_user_labels_rls_v1.sql) | 用户标签 RLS |
| [`20_rls/user/ak_user_groups_rls_v1.sql`](./20_rls/user/ak_user_groups_rls_v1.sql) | 用户分组 RLS |
| [`20_rls/user/ak_user_levels_rls_v1.sql`](./20_rls/user/ak_user_levels_rls_v1.sql) | 用户等级 RLS |
@@ -178,6 +208,7 @@
---
## 第三阶段RPC最后执行
> 目的:将“删除”统一切换为软删除(写入 `deleted_at/deleted_by`),并在需要的函数中补齐级联软删。
按域执行(域之间一般无强依赖;但建议按下列顺序,先基础权限/用户,再业务模块):
@@ -187,15 +218,17 @@
### 3.1 Admin 域(系统管理)
#### 查询类
| 文件路径 | 说明 |
|:---|:---|
| [`30_rpc/admin/rpc_admin_get_system_info_v1.sql`](./30_rpc/admin/rpc_admin_get_system_info_v1.sql) | 获取系统信息 |
| 文件路径 | 说明 |
| :----------------------------------------------------------------------------------------------------- | :----------- |
| [`30_rpc/admin/rpc_admin_get_system_info_v1.sql`](./30_rpc/admin/rpc_admin_get_system_info_v1.sql) | 获取系统信息 |
| [`30_rpc/admin/rpc_admin_get_overall_stats_v1.sql`](./30_rpc/admin/rpc_admin_get_overall_stats_v1.sql) | 获取整体统计 |
| [`30_rpc/admin/rpc_admin_system_config_get_v1.sql`](./30_rpc/admin/rpc_admin_system_config_get_v1.sql) | 获取系统配置 |
#### 保存/更新类
| 文件路径 | 说明 |
|:---|:---|
| 文件路径 | 说明 |
| :------------------------------------------------------------------------------------------------------- | :----------- |
| [`30_rpc/admin/rpc_admin_system_config_save_v1.sql`](./30_rpc/admin/rpc_admin_system_config_save_v1.sql) | 保存系统配置 |
---
@@ -203,33 +236,38 @@
### 3.2 Auth 域(权限认证)
#### 权限校验辅助函数(新增)
| 文件路径 | 说明 |
|:---|:---|
| 文件路径 | 说明 |
| :----------------------------------------------------------------------------------------------- | :--------------------- |
| [`30_rpc/auth/fn_check_admin_permission_v1.sql`](./30_rpc/auth/fn_check_admin_permission_v1.sql) | 通用 RBAC 权限校验函数 |
#### 查询类
| 文件路径 | 说明 |
|:---|:---|
| [`30_rpc/auth/rpc_admin_get_permission_list_v1.sql`](./30_rpc/auth/rpc_admin_get_permission_list_v1.sql) | 获取权限列表 |
| [`30_rpc/auth/rpc_admin_get_role_list_v1.sql`](./30_rpc/auth/rpc_admin_get_role_list_v1.sql) | 获取角色列表 |
| [`30_rpc/auth/rpc_admin_get_admin_list_v1.sql`](./30_rpc/auth/rpc_admin_get_admin_list_v1.sql) | 获取管理员列表 |
| [`30_rpc/auth/get_current_user_role_v1.sql`](./30_rpc/auth/get_current_user_role_v1.sql) | 获取当前用户角色 |
| 文件路径 | 说明 |
| :------------------------------------------------------------------------------------------------------- | :--------------- |
| [`30_rpc/auth/rpc_admin_get_permission_list_v1.sql`](./30_rpc/auth/rpc_admin_get_permission_list_v1.sql) | 获取权限列表 |
| [`30_rpc/auth/rpc_admin_get_role_list_v1.sql`](./30_rpc/auth/rpc_admin_get_role_list_v1.sql) | 获取角色列表 |
| [`30_rpc/auth/rpc_admin_get_admin_list_v1.sql`](./30_rpc/auth/rpc_admin_get_admin_list_v1.sql) | 获取管理员列表 |
| [`30_rpc/auth/get_current_user_role_v1.sql`](./30_rpc/auth/get_current_user_role_v1.sql) | 获取当前用户角色 |
#### 保存/更新类
| 文件路径 | 说明 |
|:---|:---|
| 文件路径 | 说明 |
| :----------------------------------------------------------------------------------------------- | :------- |
| [`30_rpc/auth/rpc_admin_save_permission_v1.sql`](./30_rpc/auth/rpc_admin_save_permission_v1.sql) | 保存权限 |
| [`30_rpc/auth/rpc_admin_save_role_v1.sql`](./30_rpc/auth/rpc_admin_save_role_v1.sql) | 保存角色 |
| [`30_rpc/auth/rpc_admin_save_role_v1.sql`](./30_rpc/auth/rpc_admin_save_role_v1.sql) | 保存角色 |
#### 删除类(软删除)
| 文件路径 | 说明 |
|:---|:---|
| 文件路径 | 说明 |
| :--------------------------------------------------------------------------------------------------- | :----------------- |
| [`30_rpc/auth/rpc_admin_delete_permission_v1.sql`](./30_rpc/auth/rpc_admin_delete_permission_v1.sql) | 删除权限(软删除) |
| [`30_rpc/auth/rpc_admin_delete_role_v1.sql`](./30_rpc/auth/rpc_admin_delete_role_v1.sql) | 删除角色(软删除) |
| [`30_rpc/auth/rpc_admin_delete_role_v1.sql`](./30_rpc/auth/rpc_admin_delete_role_v1.sql) | 删除角色(软删除) |
#### 用户处理类
| 文件路径 | 说明 |
|:---|:---|
| 文件路径 | 说明 |
| :--------------------------------------------------------------------------- | :------------ |
| [`30_rpc/auth/handle_new_user_v3.sql`](./30_rpc/auth/handle_new_user_v3.sql) | 处理新用户 v3 |
| [`30_rpc/auth/handle_new_user_v2.sql`](./30_rpc/auth/handle_new_user_v2.sql) | 处理新用户 v2 |
@@ -238,28 +276,32 @@
### 3.3 CMS 域(内容管理)
#### 查询类
| 文件路径 | 说明 |
|:---|:---|
| [`30_rpc/cms/rpc_admin_article_list_v1.sql`](./30_rpc/cms/rpc_admin_article_list_v1.sql) | 获取文章列表 |
| [`30_rpc/cms/rpc_admin_article_get_detail_v1.sql`](./30_rpc/cms/rpc_admin_article_get_detail_v1.sql) | 获取文章详情 |
| 文件路径 | 说明 |
| :--------------------------------------------------------------------------------------------------------- | :--------------- |
| [`30_rpc/cms/rpc_admin_article_list_v1.sql`](./30_rpc/cms/rpc_admin_article_list_v1.sql) | 获取文章列表 |
| [`30_rpc/cms/rpc_admin_article_get_detail_v1.sql`](./30_rpc/cms/rpc_admin_article_get_detail_v1.sql) | 获取文章详情 |
| [`30_rpc/cms/rpc_admin_article_category_list_v1.sql`](./30_rpc/cms/rpc_admin_article_category_list_v1.sql) | 获取文章分类列表 |
#### 保存/更新类
| 文件路径 | 说明 |
|:---|:---|
| [`30_rpc/cms/rpc_admin_article_save_v1.sql`](./30_rpc/cms/rpc_admin_article_save_v1.sql) | 保存文章 |
| 文件路径 | 说明 |
| :--------------------------------------------------------------------------------------------------------- | :----------- |
| [`30_rpc/cms/rpc_admin_article_save_v1.sql`](./30_rpc/cms/rpc_admin_article_save_v1.sql) | 保存文章 |
| [`30_rpc/cms/rpc_admin_article_category_save_v1.sql`](./30_rpc/cms/rpc_admin_article_category_save_v1.sql) | 保存文章分类 |
#### 删除类(软删除)
| 文件路径 | 说明 |
|:---|:---|
| [`30_rpc/cms/rpc_admin_article_delete_v1.sql`](./30_rpc/cms/rpc_admin_article_delete_v1.sql) | 删除文章(软删除) |
| 文件路径 | 说明 |
| :------------------------------------------------------------------------------------------------------------- | :--------------------- |
| [`30_rpc/cms/rpc_admin_article_delete_v1.sql`](./30_rpc/cms/rpc_admin_article_delete_v1.sql) | 删除文章(软删除) |
| [`30_rpc/cms/rpc_admin_article_category_delete_v1.sql`](./30_rpc/cms/rpc_admin_article_category_delete_v1.sql) | 删除文章分类(软删除) |
#### 状态管理类
| 文件路径 | 说明 |
|:---|:---|
| [`30_rpc/cms/rpc_admin_article_set_status_v1.sql`](./30_rpc/cms/rpc_admin_article_set_status_v1.sql) | 设置文章状态 |
| 文件路径 | 说明 |
| :--------------------------------------------------------------------------------------------------------------------- | :--------------- |
| [`30_rpc/cms/rpc_admin_article_set_status_v1.sql`](./30_rpc/cms/rpc_admin_article_set_status_v1.sql) | 设置文章状态 |
| [`30_rpc/cms/rpc_admin_article_category_set_status_v1.sql`](./30_rpc/cms/rpc_admin_article_category_set_status_v1.sql) | 设置文章分类状态 |
---
@@ -267,19 +309,22 @@
### 3.4 Decoration 域(装修管理)
#### 查询类
| 文件路径 | 说明 |
|:---|:---|
| 文件路径 | 说明 |
| :--------------------------------------------------------------------------------------------------------------- | :---------------- |
| [`30_rpc/decoration/rpc_admin_get_diy_page_list_v1.sql`](./30_rpc/decoration/rpc_admin_get_diy_page_list_v1.sql) | 获取 DIY 页面列表 |
#### 保存/更新类
| 文件路径 | 说明 |
|:---|:---|
| 文件路径 | 说明 |
| :------------------------------------------------------------------------------------------------------- | :------------ |
| [`30_rpc/decoration/rpc_admin_save_diy_page_v1.sql`](./30_rpc/decoration/rpc_admin_save_diy_page_v1.sql) | 保存 DIY 页面 |
| [`30_rpc/decoration/rpc_admin_set_home_page_v1.sql`](./30_rpc/decoration/rpc_admin_set_home_page_v1.sql) | 设置首页 |
| [`30_rpc/decoration/rpc_admin_set_home_page_v1.sql`](./30_rpc/decoration/rpc_admin_set_home_page_v1.sql) | 设置首页 |
#### 删除类(软删除)
| 文件路径 | 说明 |
|:---|:---|
| 文件路径 | 说明 |
| :----------------------------------------------------------------------------------------------------------- | :---------------------- |
| [`30_rpc/decoration/rpc_admin_delete_diy_page_v1.sql`](./30_rpc/decoration/rpc_admin_delete_diy_page_v1.sql) | 删除 DIY 页面(软删除) |
---
@@ -287,21 +332,24 @@
### 3.5 Delivery 域(配送管理)
#### 查询类
| 文件路径 | 说明 |
|:---|:---|
| [`30_rpc/delivery/rpc_admin_get_delivery_staff_list_v1.sql`](./30_rpc/delivery/rpc_admin_get_delivery_staff_list_v1.sql) | 获取配送员列表 |
| 文件路径 | 说明 |
| :--------------------------------------------------------------------------------------------------------------------------- | :--------------- |
| [`30_rpc/delivery/rpc_admin_get_delivery_staff_list_v1.sql`](./30_rpc/delivery/rpc_admin_get_delivery_staff_list_v1.sql) | 获取配送员列表 |
| [`30_rpc/delivery/rpc_admin_get_delivery_station_list_v1.sql`](./30_rpc/delivery/rpc_admin_get_delivery_station_list_v1.sql) | 获取配送站点列表 |
#### 保存/更新类
| 文件路径 | 说明 |
|:---|:---|
| [`30_rpc/delivery/rpc_admin_save_delivery_staff_v1.sql`](./30_rpc/delivery/rpc_admin_save_delivery_staff_v1.sql) | 保存配送员 |
| 文件路径 | 说明 |
| :------------------------------------------------------------------------------------------------------------------- | :----------- |
| [`30_rpc/delivery/rpc_admin_save_delivery_staff_v1.sql`](./30_rpc/delivery/rpc_admin_save_delivery_staff_v1.sql) | 保存配送员 |
| [`30_rpc/delivery/rpc_admin_save_delivery_station_v1.sql`](./30_rpc/delivery/rpc_admin_save_delivery_station_v1.sql) | 保存配送站点 |
#### 删除类(软删除)
| 文件路径 | 说明 |
|:---|:---|
| [`30_rpc/delivery/rpc_admin_delete_delivery_staff_v1.sql`](./30_rpc/delivery/rpc_admin_delete_delivery_staff_v1.sql) | 删除配送员(软删除) |
| 文件路径 | 说明 |
| :----------------------------------------------------------------------------------------------------------------------- | :--------------------- |
| [`30_rpc/delivery/rpc_admin_delete_delivery_staff_v1.sql`](./30_rpc/delivery/rpc_admin_delete_delivery_staff_v1.sql) | 删除配送员(软删除) |
| [`30_rpc/delivery/rpc_admin_delete_delivery_station_v1.sql`](./30_rpc/delivery/rpc_admin_delete_delivery_station_v1.sql) | 删除配送站点(软删除) |
---
@@ -309,28 +357,32 @@
### 3.6 Distribution 域(分销管理)
#### 查询类
| 文件路径 | 说明 |
|:---|:---|
| [`30_rpc/distribution/rpc_admin_get_agent_list_v1.sql`](./30_rpc/distribution/rpc_admin_get_agent_list_v1.sql) | 获取代理列表 |
| 文件路径 | 说明 |
| :------------------------------------------------------------------------------------------------------------------------- | :--------------- |
| [`30_rpc/distribution/rpc_admin_get_agent_list_v1.sql`](./30_rpc/distribution/rpc_admin_get_agent_list_v1.sql) | 获取代理列表 |
| [`30_rpc/distribution/rpc_admin_get_agent_apply_list_v1.sql`](./30_rpc/distribution/rpc_admin_get_agent_apply_list_v1.sql) | 获取代理申请列表 |
| [`30_rpc/distribution/rpc_admin_get_division_list_v1.sql`](./30_rpc/distribution/rpc_admin_get_division_list_v1.sql) | 获取事业部列表 |
| [`30_rpc/distribution/rpc_admin_get_promoter_list_v1.sql`](./30_rpc/distribution/rpc_admin_get_promoter_list_v1.sql) | 获取推广员列表 |
| [`30_rpc/distribution/rpc_admin_get_division_list_v1.sql`](./30_rpc/distribution/rpc_admin_get_division_list_v1.sql) | 获取事业部列表 |
| [`30_rpc/distribution/rpc_admin_get_promoter_list_v1.sql`](./30_rpc/distribution/rpc_admin_get_promoter_list_v1.sql) | 获取推广员列表 |
#### 保存/更新类
| 文件路径 | 说明 |
|:---|:---|
| [`30_rpc/distribution/rpc_admin_save_agent_v1.sql`](./30_rpc/distribution/rpc_admin_save_agent_v1.sql) | 保存代理 |
| 文件路径 | 说明 |
| :----------------------------------------------------------------------------------------------------------- | :--------- |
| [`30_rpc/distribution/rpc_admin_save_agent_v1.sql`](./30_rpc/distribution/rpc_admin_save_agent_v1.sql) | 保存代理 |
| [`30_rpc/distribution/rpc_admin_save_division_v1.sql`](./30_rpc/distribution/rpc_admin_save_division_v1.sql) | 保存事业部 |
#### 删除类(软删除)
| 文件路径 | 说明 |
|:---|:---|
| [`30_rpc/distribution/rpc_admin_delete_agent_v1.sql`](./30_rpc/distribution/rpc_admin_delete_agent_v1.sql) | 删除代理(软删除) |
| 文件路径 | 说明 |
| :--------------------------------------------------------------------------------------------------------------- | :------------------- |
| [`30_rpc/distribution/rpc_admin_delete_agent_v1.sql`](./30_rpc/distribution/rpc_admin_delete_agent_v1.sql) | 删除代理(软删除) |
| [`30_rpc/distribution/rpc_admin_delete_division_v1.sql`](./30_rpc/distribution/rpc_admin_delete_division_v1.sql) | 删除事业部(软删除) |
#### 处理/审核类
| 文件路径 | 说明 |
|:---|:---|
| 文件路径 | 说明 |
| :----------------------------------------------------------------------------------------------------------------------- | :----------- |
| [`30_rpc/distribution/rpc_admin_process_agent_apply_v1.sql`](./30_rpc/distribution/rpc_admin_process_agent_apply_v1.sql) | 处理代理申请 |
---
@@ -338,68 +390,75 @@
### 3.7 Finance 域(财务管理)
#### 查询/统计类
| 文件路径 | 说明 |
|:---|:---|
| [`30_rpc/finance/rpc_admin_balance_stats_v1.sql`](./30_rpc/finance/rpc_admin_balance_stats_v1.sql) | 余额统计 |
| [`30_rpc/finance/rpc_admin_balance_distribution_v1.sql`](./30_rpc/finance/rpc_admin_balance_distribution_v1.sql) | 余额分布 |
| [`30_rpc/finance/rpc_admin_balance_trend_v1.sql`](./30_rpc/finance/rpc_admin_balance_trend_v1.sql) | 余额趋势 |
| 文件路径 | 说明 |
| :--------------------------------------------------------------------------------------------------------------- | :----------- |
| [`30_rpc/finance/rpc_admin_balance_stats_v1.sql`](./30_rpc/finance/rpc_admin_balance_stats_v1.sql) | 余额统计 |
| [`30_rpc/finance/rpc_admin_balance_distribution_v1.sql`](./30_rpc/finance/rpc_admin_balance_distribution_v1.sql) | 余额分布 |
| [`30_rpc/finance/rpc_admin_balance_trend_v1.sql`](./30_rpc/finance/rpc_admin_balance_trend_v1.sql) | 余额趋势 |
| [`30_rpc/finance/rpc_admin_finance_bill_summary_v1.sql`](./30_rpc/finance/rpc_admin_finance_bill_summary_v1.sql) | 财务账单汇总 |
| [`30_rpc/finance/rpc_admin_finance_overview_v1.sql`](./30_rpc/finance/rpc_admin_finance_overview_v1.sql) | 财务概览 |
| [`30_rpc/finance/rpc_admin_invoice_list_v1.sql`](./30_rpc/finance/rpc_admin_invoice_list_v1.sql) | 发票列表 |
| [`30_rpc/finance/rpc_admin_user_bill_list_v1.sql`](./30_rpc/finance/rpc_admin_user_bill_list_v1.sql) | 用户账单列表 |
| [`30_rpc/finance/rpc_admin_recharge_list_v1.sql`](./30_rpc/finance/rpc_admin_recharge_list_v1.sql) | 充值列表 |
| [`30_rpc/finance/rpc_admin_extract_list_v1.sql`](./30_rpc/finance/rpc_admin_extract_list_v1.sql) | 提现列表 |
| [`30_rpc/finance/rpc_admin_finance_overview_v1.sql`](./30_rpc/finance/rpc_admin_finance_overview_v1.sql) | 财务概览 |
| [`30_rpc/finance/rpc_admin_invoice_list_v1.sql`](./30_rpc/finance/rpc_admin_invoice_list_v1.sql) | 发票列表 |
| [`30_rpc/finance/rpc_admin_user_bill_list_v1.sql`](./30_rpc/finance/rpc_admin_user_bill_list_v1.sql) | 用户账单列表 |
| [`30_rpc/finance/rpc_admin_recharge_list_v1.sql`](./30_rpc/finance/rpc_admin_recharge_list_v1.sql) | 充值列表 |
| [`30_rpc/finance/rpc_admin_extract_list_v1.sql`](./30_rpc/finance/rpc_admin_extract_list_v1.sql) | 提现列表 |
#### 处理/审核类
| 文件路径 | 说明 |
|:---|:---|
| 文件路径 | 说明 |
| :----------------------------------------------------------------------------------------------------- | :------- |
| [`30_rpc/finance/rpc_admin_invoice_process_v1.sql`](./30_rpc/finance/rpc_admin_invoice_process_v1.sql) | 处理发票 |
| [`30_rpc/finance/rpc_admin_recharge_audit_v1.sql`](./30_rpc/finance/rpc_admin_recharge_audit_v1.sql) | 审核充值 |
| [`30_rpc/finance/rpc_admin_extract_review_v1.sql`](./30_rpc/finance/rpc_admin_extract_review_v1.sql) | 审核提现 |
| [`30_rpc/finance/rpc_admin_recharge_audit_v1.sql`](./30_rpc/finance/rpc_admin_recharge_audit_v1.sql) | 审核充值 |
| [`30_rpc/finance/rpc_admin_extract_review_v1.sql`](./30_rpc/finance/rpc_admin_extract_review_v1.sql) | 审核提现 |
---
### 3.8 Kefu 域(客服管理)
#### 查询类
| 文件路径 | 说明 |
|:---|:---|
| [`30_rpc/kefu/rpc_admin_kefu_account_list_v1.sql`](./30_rpc/kefu/rpc_admin_kefu_account_list_v1.sql) | 获取客服账号列表 |
| [`30_rpc/kefu/rpc_admin_kefu_auto_reply_list_v1.sql`](./30_rpc/kefu/rpc_admin_kefu_auto_reply_list_v1.sql) | 获取自动回复列表 |
| [`30_rpc/kefu/rpc_admin_kefu_word_list_v1.sql`](./30_rpc/kefu/rpc_admin_kefu_word_list_v1.sql) | 获取客服话术列表 |
| 文件路径 | 说明 |
| :--------------------------------------------------------------------------------------------------------------- | :--------------- |
| [`30_rpc/kefu/rpc_admin_kefu_account_list_v1.sql`](./30_rpc/kefu/rpc_admin_kefu_account_list_v1.sql) | 获取客服账号列表 |
| [`30_rpc/kefu/rpc_admin_kefu_auto_reply_list_v1.sql`](./30_rpc/kefu/rpc_admin_kefu_auto_reply_list_v1.sql) | 获取自动回复列表 |
| [`30_rpc/kefu/rpc_admin_kefu_word_list_v1.sql`](./30_rpc/kefu/rpc_admin_kefu_word_list_v1.sql) | 获取客服话术列表 |
| [`30_rpc/kefu/rpc_admin_kefu_word_category_list_v1.sql`](./30_rpc/kefu/rpc_admin_kefu_word_category_list_v1.sql) | 获取话术分类列表 |
| [`30_rpc/kefu/rpc_admin_kefu_feedback_list_v1.sql`](./30_rpc/kefu/rpc_admin_kefu_feedback_list_v1.sql) | 获取反馈列表 |
| [`30_rpc/kefu/rpc_admin_kefu_feedback_list_v1.sql`](./30_rpc/kefu/rpc_admin_kefu_feedback_list_v1.sql) | 获取反馈列表 |
#### 保存/更新类
| 文件路径 | 说明 |
|:---|:---|
| [`30_rpc/kefu/rpc_admin_kefu_account_save_v1.sql`](./30_rpc/kefu/rpc_admin_kefu_account_save_v1.sql) | 保存客服账号 |
| [`30_rpc/kefu/rpc_admin_kefu_auto_reply_save_v1.sql`](./30_rpc/kefu/rpc_admin_kefu_auto_reply_save_v1.sql) | 保存自动回复 |
| [`30_rpc/kefu/rpc_admin_kefu_word_save_v1.sql`](./30_rpc/kefu/rpc_admin_kefu_word_save_v1.sql) | 保存客服话术 |
| 文件路径 | 说明 |
| :--------------------------------------------------------------------------------------------------------------- | :----------- |
| [`30_rpc/kefu/rpc_admin_kefu_account_save_v1.sql`](./30_rpc/kefu/rpc_admin_kefu_account_save_v1.sql) | 保存客服账号 |
| [`30_rpc/kefu/rpc_admin_kefu_auto_reply_save_v1.sql`](./30_rpc/kefu/rpc_admin_kefu_auto_reply_save_v1.sql) | 保存自动回复 |
| [`30_rpc/kefu/rpc_admin_kefu_word_save_v1.sql`](./30_rpc/kefu/rpc_admin_kefu_word_save_v1.sql) | 保存客服话术 |
| [`30_rpc/kefu/rpc_admin_kefu_word_category_save_v1.sql`](./30_rpc/kefu/rpc_admin_kefu_word_category_save_v1.sql) | 保存话术分类 |
#### 删除类(软删除)
| 文件路径 | 说明 |
|:---|:---|
| [`30_rpc/kefu/rpc_admin_kefu_account_delete_v1.sql`](./30_rpc/kefu/rpc_admin_kefu_account_delete_v1.sql) | 删除客服账号(软删除) |
| [`30_rpc/kefu/rpc_admin_kefu_auto_reply_delete_v1.sql`](./30_rpc/kefu/rpc_admin_kefu_auto_reply_delete_v1.sql) | 删除自动回复(软删除) |
| [`30_rpc/kefu/rpc_admin_kefu_word_delete_v1.sql`](./30_rpc/kefu/rpc_admin_kefu_word_delete_v1.sql) | 删除客服话术(软删除) |
| 文件路径 | 说明 |
| :------------------------------------------------------------------------------------------------------------------- | :--------------------- |
| [`30_rpc/kefu/rpc_admin_kefu_account_delete_v1.sql`](./30_rpc/kefu/rpc_admin_kefu_account_delete_v1.sql) | 删除客服账号(软删除) |
| [`30_rpc/kefu/rpc_admin_kefu_auto_reply_delete_v1.sql`](./30_rpc/kefu/rpc_admin_kefu_auto_reply_delete_v1.sql) | 删除自动回复(软删除) |
| [`30_rpc/kefu/rpc_admin_kefu_word_delete_v1.sql`](./30_rpc/kefu/rpc_admin_kefu_word_delete_v1.sql) | 删除客服话术(软删除) |
| [`30_rpc/kefu/rpc_admin_kefu_word_category_delete_v1.sql`](./30_rpc/kefu/rpc_admin_kefu_word_category_delete_v1.sql) | 删除话术分类(软删除) |
#### 状态/处理类
| 文件路径 | 说明 |
|:---|:---|
| [`30_rpc/kefu/rpc_admin_kefu_account_set_status_v1.sql`](./30_rpc/kefu/rpc_admin_kefu_account_set_status_v1.sql) | 设置客服账号状态 |
| 文件路径 | 说明 |
| :--------------------------------------------------------------------------------------------------------------------- | :--------------- |
| [`30_rpc/kefu/rpc_admin_kefu_account_set_status_v1.sql`](./30_rpc/kefu/rpc_admin_kefu_account_set_status_v1.sql) | 设置客服账号状态 |
| [`30_rpc/kefu/rpc_admin_kefu_auto_reply_set_status_v1.sql`](./30_rpc/kefu/rpc_admin_kefu_auto_reply_set_status_v1.sql) | 设置自动回复状态 |
| [`30_rpc/kefu/rpc_admin_kefu_feedback_process_v1.sql`](./30_rpc/kefu/rpc_admin_kefu_feedback_process_v1.sql) | 处理客服反馈 |
| [`30_rpc/kefu/rpc_admin_kefu_feedback_process_v1.sql`](./30_rpc/kefu/rpc_admin_kefu_feedback_process_v1.sql) | 处理客服反馈 |
---
### 3.9 Marketing 域(营销管理)
#### 查询/统计类
| 文件路径 | 说明 |
|:---|:---|
| 文件路径 | 说明 |
| :--------------------------------------------------------------------------------------------------------------- | :----------- |
| [`30_rpc/marketing/rpc_admin_get_integral_stats_v1.sql`](./30_rpc/marketing/rpc_admin_get_integral_stats_v1.sql) | 获取积分统计 |
---
@@ -407,32 +466,35 @@
### 3.10 Order 域(订单管理)
#### 查询/统计类
| 文件路径 | 说明 |
|:---|:---|
| [`30_rpc/order/rpc_admin_order_list_v1.sql`](./30_rpc/order/rpc_admin_order_list_v1.sql) | 获取订单列表 |
| [`30_rpc/order/rpc_admin_order_source_stats_v1.sql`](./30_rpc/order/rpc_admin_order_source_stats_v1.sql) | 订单来源统计 |
| [`30_rpc/order/rpc_admin_order_type_stats_v1.sql`](./30_rpc/order/rpc_admin_order_type_stats_v1.sql) | 订单类型统计 |
| [`30_rpc/order/rpc_admin_order_stats_v1.sql`](./30_rpc/order/rpc_admin_order_stats_v1.sql) | 订单统计 |
| [`30_rpc/order/rpc_admin_order_trend_v1.sql`](./30_rpc/order/rpc_admin_order_trend_v1.sql) | 订单趋势 |
| 文件路径 | 说明 |
| :------------------------------------------------------------------------------------------------------------- | :----------- |
| [`30_rpc/order/rpc_admin_order_list_v1.sql`](./30_rpc/order/rpc_admin_order_list_v1.sql) | 获取订单列表 |
| [`30_rpc/order/rpc_admin_order_source_stats_v1.sql`](./30_rpc/order/rpc_admin_order_source_stats_v1.sql) | 订单来源统计 |
| [`30_rpc/order/rpc_admin_order_type_stats_v1.sql`](./30_rpc/order/rpc_admin_order_type_stats_v1.sql) | 订单类型统计 |
| [`30_rpc/order/rpc_admin_order_stats_v1.sql`](./30_rpc/order/rpc_admin_order_stats_v1.sql) | 订单统计 |
| [`30_rpc/order/rpc_admin_order_trend_v1.sql`](./30_rpc/order/rpc_admin_order_trend_v1.sql) | 订单趋势 |
| [`30_rpc/order/rpc_admin_write_off_record_list_v1.sql`](./30_rpc/order/rpc_admin_write_off_record_list_v1.sql) | 核销记录列表 |
| [`30_rpc/order/rpc_admin_refund_order_list_v1.sql`](./30_rpc/order/rpc_admin_refund_order_list_v1.sql) | 退款订单列表 |
| [`30_rpc/order/rpc_admin_cashier_order_list_v1.sql`](./30_rpc/order/rpc_admin_cashier_order_list_v1.sql) | 收银订单列表 |
| [`30_rpc/order/rpc_admin_refund_order_list_v1.sql`](./30_rpc/order/rpc_admin_refund_order_list_v1.sql) | 退款订单列表 |
| [`30_rpc/order/rpc_admin_cashier_order_list_v1.sql`](./30_rpc/order/rpc_admin_cashier_order_list_v1.sql) | 收银订单列表 |
---
### 3.11 Product 域(商品管理)
#### 查询/统计类
| 文件路径 | 说明 |
|:---|:---|
| 文件路径 | 说明 |
| :------------------------------------------------------------------------------------------------------------- | :----------- |
| [`30_rpc/product/rpc_admin_get_product_reviews_v1.sql`](./30_rpc/product/rpc_admin_get_product_reviews_v1.sql) | 获取商品评价 |
| [`30_rpc/product/rpc_admin_product_count_stats_v1.sql`](./30_rpc/product/rpc_admin_product_count_stats_v1.sql) | 商品数量统计 |
| [`30_rpc/product/rpc_admin_product_analytics_v1.sql`](./30_rpc/product/rpc_admin_product_analytics_v1.sql) | 商品分析 |
| [`30_rpc/product/rpc_admin_product_trend_v1.sql`](./30_rpc/product/rpc_admin_product_trend_v1.sql) | 商品趋势 |
| [`30_rpc/product/rpc_admin_product_analytics_v1.sql`](./30_rpc/product/rpc_admin_product_analytics_v1.sql) | 商品分析 |
| [`30_rpc/product/rpc_admin_product_trend_v1.sql`](./30_rpc/product/rpc_admin_product_trend_v1.sql) | 商品趋势 |
#### 删除类(软删除)
| 文件路径 | 说明 |
|:---|:---|
| 文件路径 | 说明 |
| :----------------------------------------------------------------------------------------------------- | :--------------------- |
| [`30_rpc/product/rpc_admin_category_delete_v1.sql`](./30_rpc/product/rpc_admin_category_delete_v1.sql) | 删除商品分类(软删除) |
---
@@ -440,45 +502,50 @@
### 3.12 User 域(用户管理)
#### 查询类
| 文件路径 | 说明 |
|:---|:---|
| 文件路径 | 说明 |
| :----------------------------------------------------------------------------------------------- | :--------------- |
| [`30_rpc/user/rpc_admin_user_label_list_v1.sql`](./30_rpc/user/rpc_admin_user_label_list_v1.sql) | 获取用户标签列表 |
| [`30_rpc/user/rpc_admin_user_group_list_v1.sql`](./30_rpc/user/rpc_admin_user_group_list_v1.sql) | 获取用户分组列表 |
| [`30_rpc/user/rpc_admin_user_level_list_v1.sql`](./30_rpc/user/rpc_admin_user_level_list_v1.sql) | 获取用户等级列表 |
#### 保存/更新类
| 文件路径 | 说明 |
|:---|:---|
| 文件路径 | 说明 |
| :----------------------------------------------------------------------------------------------- | :----------- |
| [`30_rpc/user/rpc_admin_user_label_save_v1.sql`](./30_rpc/user/rpc_admin_user_label_save_v1.sql) | 保存用户标签 |
| [`30_rpc/user/rpc_admin_user_group_save_v1.sql`](./30_rpc/user/rpc_admin_user_group_save_v1.sql) | 保存用户分组 |
| [`30_rpc/user/rpc_admin_user_level_save_v1.sql`](./30_rpc/user/rpc_admin_user_level_save_v1.sql) | 保存用户等级 |
#### 删除类(软删除)
| 文件路径 | 说明 |
|:---|:---|
| 文件路径 | 说明 |
| :--------------------------------------------------------------------------------------------------- | :--------------------- |
| [`30_rpc/user/rpc_admin_user_label_delete_v1.sql`](./30_rpc/user/rpc_admin_user_label_delete_v1.sql) | 删除用户标签(软删除) |
| [`30_rpc/user/rpc_admin_user_group_delete_v1.sql`](./30_rpc/user/rpc_admin_user_group_delete_v1.sql) | 删除用户分组(软删除) |
| [`30_rpc/user/rpc_admin_user_level_delete_v1.sql`](./30_rpc/user/rpc_admin_user_level_delete_v1.sql) | 删除用户等级(软删除) |
#### 状态/可见性管理类
| 文件路径 | 说明 |
|:---|:---|
| [`30_rpc/user/rpc_admin_user_label_set_status_v1.sql`](./30_rpc/user/rpc_admin_user_label_set_status_v1.sql) | 设置用户标签状态 |
| [`30_rpc/user/rpc_admin_user_group_set_status_v1.sql`](./30_rpc/user/rpc_admin_user_group_set_status_v1.sql) | 设置用户分组状态 |
| [`30_rpc/user/rpc_admin_user_level_set_status_v1.sql`](./30_rpc/user/rpc_admin_user_level_set_status_v1.sql) | 设置用户等级状态 |
| 文件路径 | 说明 |
| :------------------------------------------------------------------------------------------------------------- | :----------------- |
| [`30_rpc/user/rpc_admin_user_label_set_status_v1.sql`](./30_rpc/user/rpc_admin_user_label_set_status_v1.sql) | 设置用户标签状态 |
| [`30_rpc/user/rpc_admin_user_group_set_status_v1.sql`](./30_rpc/user/rpc_admin_user_group_set_status_v1.sql) | 设置用户分组状态 |
| [`30_rpc/user/rpc_admin_user_level_set_status_v1.sql`](./30_rpc/user/rpc_admin_user_level_set_status_v1.sql) | 设置用户等级状态 |
| [`30_rpc/user/rpc_admin_user_level_set_visible_v1.sql`](./30_rpc/user/rpc_admin_user_level_set_visible_v1.sql) | 设置用户等级可见性 |
---
### 3.13 Analytics 域(数据分析)
| 文件路径 | 说明 |
|:---|:---|
| 文件路径 | 说明 |
| :----------------------------------------------------------------------------------------------------------------------------------- | :--------------- |
| [`30_rpc/analytics/rpc_analytics_user_gender_distribution_v1.sql`](./30_rpc/analytics/rpc_analytics_user_gender_distribution_v1.sql) | 用户性别分布分析 |
---
## 执行后验证清单
- 字段存在性:抽查任一涉及表,确认 `deleted_at/deleted_by` 字段存在。
- 索引存在性:确认 `idx_<table>_soft_delete` 存在。
- RLS 生效:软删一条数据后,使用正常查询路径确认该条记录不可见。