feat: P1-P3 全栈集成 — 数据库基础 + DWS 扩展 + 小程序鉴权 + 工程化体系

## P1 数据库基础
- zqyy_app: 创建 auth/biz schema、FDW 连接 etl_feiqiu
- etl_feiqiu: 创建 app schema RLS 视图、商品库存预警表
- 清理 assistant_abolish 残留数据

## P2 ETL/DWS 扩展
- 新增 DWS 助教订单贡献度表 (dws.assistant_order_contribution)
- 新增 assistant_order_contribution_task 任务及 RLS 视图
- member_consumption 增加充值字段、assistant_daily 增加处罚字段
- 更新 ODS/DWD/DWS 任务文档及业务规则文档
- 更新 consistency_checker、flow_runner、task_registry 等核心模块

## P3 小程序鉴权系统
- 新增 xcx_auth 路由/schema(微信登录 + JWT)
- 新增 wechat/role/matching/application 服务层
- zqyy_app 鉴权表迁移 + 角色权限种子数据
- auth/dependencies.py 支持小程序 JWT 鉴权

## 文档与审计
- 新增 DOCUMENTATION-MAP 文档导航
- 新增 7 份 BD_Manual 数据库变更文档
- 更新 DDL 基线快照(etl_feiqiu 6 schema + zqyy_app auth)
- 新增全栈集成审计记录、部署检查清单更新
- 新增 BACKLOG 路线图、FDW→Core 迁移计划

## Kiro 工程化
- 新增 5 个 Spec(P1/P2/P3/全栈集成/核心业务)
- 新增审计自动化脚本(agent_on_stop/build_audit_context/compliance_prescan)
- 新增 6 个 Hook(合规检查/会话日志/提交审计等)
- 新增 doc-map steering 文件

## 运维与测试
- 新增 ops 脚本:迁移验证/API 健康检查/ETL 监控/集成报告
- 新增属性测试:test_dws_contribution / test_auth_system
- 清理过期 export 报告文件
- 更新 .gitignore 排除规则
This commit is contained in:
Neo
2026-02-26 08:03:53 +08:00
parent fafc95e64c
commit b25308c3f4
224 changed files with 17660 additions and 32198 deletions

View File

@@ -164,7 +164,7 @@
| 功能 | 数据源 | 状态 |
|------|--------|------|
| 用户审核列表 | `zqyy_app.auth.user_applications` + `zqyy_app.auth.users` | 📱 新建 |
| 用户-助教关联建议 | `dwd.dim_assistant`通过球房ID+手机号匹配) | ✅ FDW |
| 用户-助教关联建议 | `dwd.dim_assistant`通过球房ID+手机号匹配)+ `dwd.dim_staff` / `dwd.dim_staff_ex`(员工信息表匹配) | ✅ FDW |
| 球房ID映射 | `zqyy_app.auth.site_code_mapping` | 📱 新建 |
| Excel 上传-财务支出 | `dws.dws_finance_expense_summary`(或新建 staging 表) | 🔧/📱 |
| Excel 上传-团购收入 | `dws.dws_platform_settlement`(或新建 staging 表) | 🔧/📱 |
@@ -263,7 +263,14 @@
| `dws.cfg_performance_tier` | 定档配置 |
| `dws.cfg_assistant_level_price` | 助教等级单价 |
| `dws.cfg_bonus_rules` | 奖金规则 |
| `dws.cfg_index_parameters` | 指数参数配置 |
| `dws.cfg_index_parameters` | 指数参数配置(含 SPI 26 个参数 ✅) |
| `dws.dws_order_summary` | 订单汇总 |
### 新增 FDW 映射(员工信息表)
| 来源表 | 用途 |
|--------|------|
| `dwd.dim_staff` | 员工基础维度(姓名、手机、岗位、在职状态等),用于用户申请人员匹配 |
| `dwd.dim_staff_ex` | 员工扩展维度(工号、头像、职级、分组等),用于用户申请人员匹配 |
---

View File

@@ -87,14 +87,15 @@ P11 部署与上线(环境配置 + 监控 + 灰度)
### SPEC 名称建议:`miniapp-auth-system`
### 需求概述
构建小程序的完整用户认证体系包括微信登录、用户申请、审核流程、RBAC 权限、用户-助教绑定。
构建小程序的完整用户认证体系包括微信登录、用户申请、审核流程、RBAC 权限、用户-助教/员工绑定。
### 关键交付物
1. 新建表:`auth.users`(重构,增加 wx_openid、status、site_id 等)、`auth.user_applications``auth.site_code_mapping``auth.user_assistant_binding`
1. 新建表:`auth.users`(重构,增加 wx_openid、status、site_id 等)、`auth.user_applications``auth.site_code_mapping``auth.user_assistant_binding`(增加 `staff_id` 字段支持员工绑定)
2. 重构现有 `public.roles``public.permissions``public.user_roles``public.role_permissions` 迁移至 `auth` Schema
3. 后端 API微信 code2Session 登录、用户申请提交、JWT 签发
4. 后端 API用户状态查询审核中/通过/拒绝)
5. 权限中间件:基于角色的 API 访问控制
6. 人员匹配:用户申请时同时在助教表(`dim_assistant`)和员工信息表(`dim_staff` + `dim_staff_ex`)中匹配
### 依赖
- P1`auth` Schema 已创建)

View File

@@ -19,7 +19,7 @@
- AC1租户管理后台是独立 Web 应用,独立登录入口
- AC2租户管理员只能看到自己租户下的店铺和用户
- AC3用户审核页面申请列表、状态筛选、球房ID+手机号关联建议、审核操作
- AC3用户审核页面申请列表、状态筛选、球房ID+手机号关联建议(同时匹配助教表+员工信息表)、审核操作
- AC4Excel 上传校验:必填、金额精度、表头格式、类型合法
- AC5主键冲突时前端展示 diff 交互,逐条确认后保存
- AC6助教奖罚支持同一助教同月多笔
@@ -130,4 +130,4 @@ biz.excel_upload_log
- [ ] T6实现 Excel 上传后端(解析 + 校验 + 冲突检测)
- [ ] T7实现 Excel 上传前端(模板下载 + 上传 + diff 交互 + 确认)
- [ ] T8实现 4 种 Excel 模板的校验规则
- [ ] T9实现助教姓名+编号匹配校验(对照 `dim_assistant`
- [ ] T9实现人员姓名+编号匹配校验(同时对照 `dim_assistant` 助教表和 `dim_staff` + `dim_staff_ex` 员工信息表

View File

@@ -21,7 +21,7 @@
- AC3`dws_member_consumption_summary` 新增字段有值(`recharge_count_30d/60d/90d``recharge_amount_30d/60d/90d``avg_ticket_amount`
- AC4`dws_assistant_daily_detail` 新增字段在符合惩罚条件的订单上正确填充
- AC5新表的 RLS 视图和 FDW 映射已同步创建
- AC6`cfg_index_parameters` 中新增 `SPI` 类型的配置行
- AC6`cfg_index_parameters` 中新增 `SPI` 类型的配置行已完成26 个参数effective_from=2026-02-23
---
@@ -56,9 +56,9 @@
## 任务清单
- [ ] T1设计并创建 `dws_member_spending_power_index`
- [ ] T2实现 `SpendingPowerIndexTask`(含 Level/Speed/Stability 子分)
- [ ] T3`cfg_index_parameters` 中插入 SPI 默认参数
- [x] T1设计并创建 `dws_member_spending_power_index`已完成24 字段 + 2 索引,迁移脚本 `2026-02-23_create_dws_member_spending_power_index.sql`测试库已建表0 行待跑数)
- [x] T2实现 `SpendingPowerIndexTask`(含 Level/Speed/Stability 子分)✅(已完成,代码 `tasks/dws/index/spending_power_index_task.py`,已注册 task_registry含单元测试 + 属性测试 + BD_Manual 文档)
- [x] T3`cfg_index_parameters` 中插入 SPI 默认参数已完成27 个参数含 Level/Speed/Stability 权重、压缩基数、窗口天数等)
- [ ] T4设计并创建 `dws_assistant_order_contribution`
- [ ] T5实现 `AssistantOrderContributionTask`
- [ ] T6扩展 `dws_member_consumption_summary`(充值窗口 + 次均消费字段)

View File

@@ -11,7 +11,7 @@
1. 作为球房工作人员我需要通过微信登录小程序首次登录时填写申请表单球房ID、申请身份、手机号、编号、昵称
2. 作为租户管理员,我需要审核用户申请,将用户关联到对应的助教/员工,并分配身份权限。
3. 作为系统我需要通过球房ID+手机号自动建议用户与助教的对应关系。
3. 作为系统我需要通过球房ID+手机号自动建议用户与助教/员工的对应关系(同时匹配 `dwd.dim_assistant` 助教表和 `dwd.dim_staff` + `dwd.dim_staff_ex` 员工信息表)
4. 作为用户,我需要看到自己的申请状态(审核中/通过/拒绝)。
5. 作为用户,我可以同时属于多个店铺(连锁场景),权限按店铺独立。
@@ -21,6 +21,7 @@
- AC2新用户首次登录后进入申请页面提交后状态为 pending
- AC3管理员审核通过后用户状态变为 approved可正常访问小程序
- AC4球房ID 不存在时,申请仍可提交,管理端显示"未找到关联信息"
- AC7用户申请信息比对时系统同时在助教表`dwd.dim_assistant`)和员工信息表(`dwd.dim_staff` / `dwd.dim_staff_ex`)中匹配,返回所有匹配结果供管理员选择
- AC5权限中间件正确拦截无权请求如助教不能看财务看板
- AC6一个用户可关联多个店铺切换店铺后数据正确隔离
@@ -51,10 +52,22 @@ auth.user_site_roles
auth.user_assistant_binding
- id, user_id, site_id, assistant_id (ETL dim_assistant)
- staff_id (ETL dim_staff可选员工绑定时填写)
- binding_type (assistant/staff/manager)
- created_at
```
### 人员匹配逻辑(用户申请 → 信息比对)
用户提交申请时填写球房ID + 手机号(或编号),系统自动在以下两张表中匹配:
1. 助教表 `dwd.dim_assistant`(通过 FDW `fdw_etl.v_assistant`):按 `site_id` + `mobile``alias_name` 匹配
2. 员工信息表 `dwd.dim_staff` + `dwd.dim_staff_ex`(通过 FDW`site_id` + `mobile``staff_name` / `alias_name` / `job_num` 匹配
匹配结果合并后返回给管理端,管理员从候选列表中选择正确的关联对象。若两张表均无匹配,显示"未找到关联信息",管理员可手动填写。
> 员工信息表数据链路:上游 API → `ods.staff_info_master` → `dwd.dim_staff`基础维度SCD2+ `dwd.dim_staff_ex`扩展维度SCD2
### 权限列表(固定)
| 权限 code | 说明 |