13 KiB
13 KiB
权限、物流及系统基础设施全量集成报告
摘要
本次对 Admin 侧进行了基础设施补齐与核心管理模块重构,完成以下闭环:
- 新增系统统一 KV 配置表
ml_system_configs,并提供管理端 RPC 读写; - 建立 RBAC 权限体系(角色/权限/关联表),并以管理端 RPC 提供 CRUD;
- 新增物流资源表(配送员、提货点),并以管理端 RPC 提供 CRUD;
- 将 Admin 侧相关页面从 Mock/静态数据切换为真实 RPC 数据流。
动机
商城核心业务(商品、订单等)已基本闭环,但系统底座模块(权限控制、系统开关、物流资源)仍长期处于 Mock/静态模拟阶段,无法满足生产环境可审计、可配置、可授权的要求,因此需要补齐数据库资产(Schema/RLS/RPC)与前端服务层。
影响范围
- 数据库:新增表、启用 RLS、增加
SECURITY DEFINERRPC,影响 admin/analytics 权限闭环。 - 管理端页面:权限管理(管理员/角色/菜单权限)、物流设置(配送员/提货点)、系统配置、统计概览、系统信息页面。
- 服务层:新增
services/admin/*Service.uts,统一数据访问出口(页面不再直连底层 client)。
变更清单
以提交
5d00e3d为准(feat(admin): complete integration of auth, delivery, and system infrastructure modules)。
新增文件
数据库(权威入库:docs/sql/)
- Schema(
docs/sql/10_schema/)docs/sql/10_schema/admin/ml_system_configs_v1.sqldocs/sql/10_schema/user/ak_auth_system_v1.sqldocs/sql/10_schema/delivery/ak_delivery_system_v1.sql
- RLS(
docs/sql/20_rls/)docs/sql/20_rls/admin/ml_system_configs_rls_v1.sqldocs/sql/20_rls/auth/ak_auth_rls_v1.sqldocs/sql/20_rls/delivery/ak_delivery_rls_v1.sql
- RPC(
docs/sql/30_rpc/)- Admin
docs/sql/30_rpc/admin/rpc_admin_get_overall_stats_v1.sqldocs/sql/30_rpc/admin/rpc_admin_get_system_info_v1.sqldocs/sql/30_rpc/admin/rpc_admin_system_config_get_v1.sql
- Auth
docs/sql/30_rpc/auth/rpc_admin_get_admin_list_v1.sqldocs/sql/30_rpc/auth/rpc_admin_get_role_list_v1.sqldocs/sql/30_rpc/auth/rpc_admin_save_role_v1.sqldocs/sql/30_rpc/auth/rpc_admin_delete_role_v1.sqldocs/sql/30_rpc/auth/rpc_admin_get_permission_list_v1.sqldocs/sql/30_rpc/auth/rpc_admin_save_permission_v1.sqldocs/sql/30_rpc/auth/rpc_admin_delete_permission_v1.sql
- Delivery
docs/sql/30_rpc/delivery/rpc_admin_get_delivery_staff_list_v1.sqldocs/sql/30_rpc/delivery/rpc_admin_save_delivery_staff_v1.sqldocs/sql/30_rpc/delivery/rpc_admin_delete_delivery_staff_v1.sqldocs/sql/30_rpc/delivery/rpc_admin_get_delivery_station_list_v1.sqldocs/sql/30_rpc/delivery/rpc_admin_save_delivery_station_v1.sqldocs/sql/30_rpc/delivery/rpc_admin_delete_delivery_station_v1.sql
- Admin
前端服务层(services/admin/)
services/admin/systemConfigService.utsservices/admin/authService.utsservices/admin/deliveryService.utsservices/admin/maintainService.uts
修改文件
数据库
docs/sql/30_rpc/admin/rpc_admin_system_config_save_v1.sql
页面(pages/)
pages/mall/admin/setting/auth/admin.uvuepages/mall/admin/setting/auth/role.uvuepages/mall/admin/setting/auth/permission.uvuepages/mall/admin/setting/delivery/staff.uvuepages/mall/admin/setting/delivery/station.uvuepages/mall/admin/setting/system/config.uvuepages/mall/admin/statistic/index.uvuepages/mall/admin/maintain/sys/info.uvuepages/mall/admin/app/mobile/config.uvuepages/mall/admin/app/pc/config.uvue
删除文件
- 无
兼容性与风险
- 权限口径依赖:本项目角色字段权威为
public.ak_users.role。RPC 入口鉴权依赖该字段(至少admin/analytics),若数据不一致会导致管理端接口不可用。 - RLS 与 RPC 闭环:Auth/Delivery 等表启用 RLS 后,若绕开 RPC 进行直接表访问会被拒绝;需确保前端全部走 service -> RPC。
- 配置键名约束:
ml_system_configs使用config_key唯一约束;变更 key 会造成读取不到旧配置。 - 配送员/提货点数据影响:提货点对
anon/authenticated开放SELECT(受status=1限制),属于预期的消费者端只读能力。
回滚方案
- 数据库回滚:
- 依次
DROP FUNCTION IF EXISTS ...移除本次新增 RPC(按docs/sql/30_rpc/{admin,auth,delivery}/列表)。 ALTER TABLE ... DISABLE ROW LEVEL SECURITY或移除新增 policy(对应docs/sql/20_rls/)。DROP TABLE IF EXISTS移除新增表(谨慎,需确认无业务数据依赖)。
- 依次
- 代码回滚:
git revert 5d00e3d(推荐)或git checkout <old_commit> -- <paths>恢复页面与 service 变更。
验证方式
- 系统配置:进入“系统设置”修改任意字段(如网站名称)-> 保存 -> 刷新确认持久化。
- 权限管理:
- 角色管理:新增角色 -> 列表可见;
- 菜单权限:新增权限项 -> 列表可见;
- 管理员列表:能拉取
rpc_admin_get_admin_list并显示角色标签。
- 物流设置:新增配送员/提货点 -> 列表可见;切换启用/显示状态后刷新保持一致。
- 统计概览:进入数据概览页,确认 RPC 返回聚合指标且页面可渲染。
关联文档
docs/project_spec/AGENT_PROJECT_SPEC.md(操作文档规范与 SQL 入库规范)
注意:规范要求对照
docs/sql/11_roles_and_permissions_strategy.md,但仓库当前未找到该文件。此处已按规范第 5/7 节口径执行(角色字段ak_users.role、RLS 默认收口、全局访问走 SECURITY DEFINER RPC)。建议后续补齐该策略文档或确认其真实路径,并在此处更新引用。
SQL 安全评审报告(逐文件)
评审结论枚举:Reject / High / OK。评审标准:AGENT_PROJECT_SPEC.md 第 7 节。
Schema
SQL 安全评审报告
- 对象:
docs/sql/10_schema/admin/ml_system_configs_v1.sql - 目标:提供统一 KV 配置表用于管理端持久化系统/接口配置。
- 结论:OK
- 涉及对象:表
ml_system_configs(DDL);无 grants。 - RLS:由对应 RLS 文件启用。
- 风险点:低(仅 DDL)。
- 整改建议:无。
- 准入建议:允许进入
docs/sql/。
SQL 安全评审报告
- 对象:
docs/sql/10_schema/user/ak_auth_system_v1.sql - 目标:建立 RBAC(角色/权限/关联)基础表。
- 结论:OK
- 涉及对象:
ak_roles,ak_permissions,ak_admin_roles,ak_role_permissions。 - 风险点:低(仅 DDL);注意外键引用
ak_users。 - 整改建议:可选:为
ak_roles.updated_at增加触发器自动更新(非必须)。 - 准入建议:允许进入
docs/sql/。
SQL 安全评审报告
- 对象:
docs/sql/10_schema/delivery/ak_delivery_system_v1.sql - 目标:新增配送员与提货点基础表。
- 结论:OK
- 涉及对象:
ml_delivery_staff,ml_delivery_stations。 - 风险点:低(仅 DDL)。
- 整改建议:可选:对 phone 增加格式校验(应用层)。
- 准入建议:允许进入
docs/sql/。
RLS
SQL 安全评审报告
- 对象:
docs/sql/20_rls/admin/ml_system_configs_rls_v1.sql - 目标:启用系统配置表 RLS,限制直接表访问。
- 结论:OK
- RLS:启用;策略以 RPC 为主。
- 风险点:低。
- 整改建议:如需管理员直连查询,可增加更严格 policy(建议仍走 RPC)。
- 准入建议:允许进入
docs/sql/。
SQL 安全评审报告
- 对象:
docs/sql/20_rls/auth/ak_auth_rls_v1.sql - 目标:启用 RBAC 表 RLS,默认不开放直接访问。
- 结论:OK
- 风险点:低;默认闭网符合规范。
- 整改建议:无。
- 准入建议:允许进入
docs/sql/。
SQL 安全评审报告
- 对象:
docs/sql/20_rls/delivery/ak_delivery_rls_v1.sql - 目标:启用物流表 RLS;提货点开放消费者端只读(
status=1)。 - 结论:OK
- 风险点:中(对
anon/authenticated开放 select);但USING (status=1)有约束,符合业务需求。 - 整改建议:若需进一步限制字段暴露,可改走 RPC 只返回必要字段。
- 准入建议:允许进入
docs/sql/。
RPC
SQL 安全评审报告
- 对象:
docs/sql/30_rpc/admin/rpc_admin_system_config_save_v1.sql - 目标:保存系统配置(upsert)。
- 结论:OK
- SECURITY DEFINER:是;
search_path固定:是;入口鉴权:是(role IN ('admin','analytics'))。 - 风险点:低。
- 整改建议:可选:对
p_key增加白名单约束(按业务需要)。 - 准入建议:允许进入
docs/sql/。
SQL 安全评审报告
- 对象:
docs/sql/30_rpc/admin/rpc_admin_system_config_get_v1.sql - 目标:读取系统配置。
- 结论:OK
- SECURITY DEFINER:是;
search_path固定:是;入口鉴权:是。 - 风险点:低。
- 整改建议:无。
- 准入建议:允许进入
docs/sql/。
SQL 安全评审报告
- 对象:
docs/sql/30_rpc/admin/rpc_admin_get_overall_stats_v1.sql - 目标:返回聚合统计指标(概览页)。
- 结论:OK
- 风险点:低(聚合返回)。
- 整改建议:确保有合理的索引与时间过滤(如后续扩展)。
- 准入建议:允许进入
docs/sql/。
SQL 安全评审报告
- 对象:
docs/sql/30_rpc/admin/rpc_admin_get_system_info_v1.sql - 目标:返回系统信息(用于维护页)。
- 结论:OK
- 风险点:中(可能暴露服务器信息);需确保返回字段不包含密钥。
- 整改建议:后续如需增加字段,必须最小化并脱敏。
- 准入建议:允许进入
docs/sql/。
SQL 安全评审报告
- 对象:
docs/sql/30_rpc/auth/rpc_admin_get_admin_list_v1.sql - 目标:分页获取管理员列表(关联角色名)。
- 结论:OK
- 风险点:中(涉及用户表字段);当前仅返回必要字段,未返回敏感信息。
- 整改建议:如扩展字段,避免返回手机号/财务信息等。
- 准入建议:允许进入
docs/sql/。
SQL 安全评审报告
- 对象:
docs/sql/30_rpc/auth/rpc_admin_get_role_list_v1.sql - 目标:分页获取角色列表。
- 结论:OK
SQL 安全评审报告
- 对象:
docs/sql/30_rpc/auth/rpc_admin_save_role_v1.sql - 目标:新增/更新角色。
- 结论:OK
SQL 安全评审报告
- 对象:
docs/sql/30_rpc/auth/rpc_admin_delete_role_v1.sql - 目标:删除角色。
- 结论:OK
- 风险点:中(物理删除);需注意被引用时的级联行为。
- 整改建议:如需审计/恢复,考虑改为软删除。
SQL 安全评审报告
- 对象:
docs/sql/30_rpc/auth/rpc_admin_get_permission_list_v1.sql - 目标:获取全量权限/菜单列表。
- 结论:OK
SQL 安全评审报告
- 对象:
docs/sql/30_rpc/auth/rpc_admin_save_permission_v1.sql - 目标:新增/更新权限/菜单。
- 结论:OK
SQL 安全评审报告
- 对象:
docs/sql/30_rpc/auth/rpc_admin_delete_permission_v1.sql - 目标:删除权限/菜单。
- 结论:OK
- 风险点:中(物理删除 + 级联)。
SQL 安全评审报告
- 对象:
docs/sql/30_rpc/delivery/rpc_admin_get_delivery_staff_list_v1.sql - 目标:分页获取配送员列表。
- 结论:OK
SQL 安全评审报告
- 对象:
docs/sql/30_rpc/delivery/rpc_admin_save_delivery_staff_v1.sql - 目标:新增/更新配送员。
- 结论:OK
SQL 安全评审报告
- 对象:
docs/sql/30_rpc/delivery/rpc_admin_delete_delivery_staff_v1.sql - 目标:删除配送员。
- 结论:OK
- 风险点:中(物理删除)。
SQL 安全评审报告
- 对象:
docs/sql/30_rpc/delivery/rpc_admin_get_delivery_station_list_v1.sql - 目标:分页获取提货点列表。
- 结论:OK
SQL 安全评审报告
- 对象:
docs/sql/30_rpc/delivery/rpc_admin_save_delivery_station_v1.sql - 目标:新增/更新提货点。
- 结论:OK
SQL 安全评审报告
- 对象:
docs/sql/30_rpc/delivery/rpc_admin_delete_delivery_station_v1.sql - 目标:删除提货点。
- 结论:OK
- 风险点:中(物理删除)。
准入结论
- 本次新增/修改 SQL 未出现硬阻断项(裸放权、破坏性操作、无鉴权 SECURITY DEFINER),评审结论整体为 OK,允许进入
docs/sql/作为权威口径。