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

@@ -845,6 +845,9 @@ CREATE TABLE IF NOT EXISTS dim_store_goods_ex (
sort_order INTEGER,
batch_stock_quantity NUMERIC(18,2), -- CHANGE 2026-02-21 | 修正类型:与 DB 实际一致(迁移脚本用 NUMERIC(18,2)
time_slot_sale INTEGER, -- CHANGE 2026-02-21 | 新增:分时段销售标记
warning_sales_day NUMERIC(18,2), -- CHANGE 2026-02-24 | 新增:库存预警日均销量
warning_day_max INTEGER, -- CHANGE 2026-02-24 | 新增:预警天数上限
warning_day_min INTEGER, -- CHANGE 2026-02-24 | 新增:预警天数下限
SCD2_start_time TIMESTAMPTZ,
SCD2_end_time TIMESTAMPTZ,
SCD2_is_current INT,

View File

@@ -1744,6 +1744,9 @@ CREATE TABLE IF NOT EXISTS ods.store_goods_master (
commodity_code TEXT,
not_sale INTEGER,
time_slot_sale INTEGER, -- CHANGE 2026-02-21 | 新增分时段销售标记API 返回但此前未收录)
warning_sales_day NUMERIC(18,2), -- CHANGE 2026-02-24 | 新增库存预警日均销量goodsStockWarningInfo.sales_day
warning_day_max INTEGER, -- CHANGE 2026-02-24 | 新增预警天数上限goodsStockWarningInfo.warning_day_max
warning_day_min INTEGER, -- CHANGE 2026-02-24 | 新增预警天数下限goodsStockWarningInfo.warning_day_min
payload JSONB NOT NULL,
content_hash TEXT NOT NULL,
source_file TEXT,

View File

@@ -0,0 +1,139 @@
-- =============================================================================
-- FDW 外部表扩展 — DWS 层新表 + 已有表新增字段
-- 目标库test_zqyy_app测试/ zqyy_app生产
-- 前提ETL 库 app schema 已创建/更新对应 RLS 视图
-- =============================================================================
-- -----------------------------------------------------------------------------
-- 1. 新建:助教订单流水统计 FDW 外部表
-- -----------------------------------------------------------------------------
CREATE FOREIGN TABLE IF NOT EXISTS fdw_etl.v_dws_assistant_order_contribution (
contribution_id BIGINT,
site_id INTEGER,
tenant_id INTEGER,
assistant_id BIGINT,
assistant_nickname VARCHAR(100),
stat_date DATE,
order_gross_revenue NUMERIC(14,2),
order_net_revenue NUMERIC(14,2),
time_weighted_revenue NUMERIC(14,2),
time_weighted_net_revenue NUMERIC(14,2),
order_count INTEGER,
total_service_seconds INTEGER,
created_at TIMESTAMP WITH TIME ZONE,
updated_at TIMESTAMP WITH TIME ZONE
) SERVER etl_server
OPTIONS (schema_name 'app', table_name 'v_dws_assistant_order_contribution');
-- -----------------------------------------------------------------------------
-- 2. 重建:会员消费汇总 FDW 外部表(新增充值窗口 + 次均消费字段)
-- -----------------------------------------------------------------------------
DROP FOREIGN TABLE IF EXISTS fdw_etl.v_dws_member_consumption_summary;
CREATE FOREIGN TABLE fdw_etl.v_dws_member_consumption_summary (
id BIGINT,
site_id BIGINT,
tenant_id BIGINT,
member_id BIGINT,
stat_date DATE,
member_nickname VARCHAR(100),
member_mobile VARCHAR(20),
card_grade_name VARCHAR(50),
register_date DATE,
first_consume_date DATE,
last_consume_date DATE,
total_visit_count INTEGER,
total_consume_amount NUMERIC(14,2),
total_recharge_amount NUMERIC(14,2),
total_table_fee NUMERIC(14,2),
total_goods_amount NUMERIC(14,2),
total_assistant_amount NUMERIC(14,2),
visit_count_7d INTEGER,
visit_count_10d INTEGER,
visit_count_15d INTEGER,
visit_count_30d INTEGER,
visit_count_60d INTEGER,
visit_count_90d INTEGER,
consume_amount_7d NUMERIC(14,2),
consume_amount_10d NUMERIC(14,2),
consume_amount_15d NUMERIC(14,2),
consume_amount_30d NUMERIC(14,2),
consume_amount_60d NUMERIC(14,2),
consume_amount_90d NUMERIC(14,2),
cash_card_balance NUMERIC(14,2),
gift_card_balance NUMERIC(14,2),
total_card_balance NUMERIC(14,2),
days_since_last INTEGER,
is_active_7d BOOLEAN,
is_active_30d BOOLEAN,
is_active_90d BOOLEAN,
customer_tier VARCHAR(20),
created_at TIMESTAMP WITH TIME ZONE,
updated_at TIMESTAMP WITH TIME ZONE,
recharge_count_30d INTEGER,
recharge_count_60d INTEGER,
recharge_count_90d INTEGER,
recharge_amount_30d NUMERIC(14,2),
recharge_amount_60d NUMERIC(14,2),
recharge_amount_90d NUMERIC(14,2),
avg_ticket_amount NUMERIC(14,2)
) SERVER etl_server
OPTIONS (schema_name 'app', table_name 'v_dws_member_consumption_summary');
-- -----------------------------------------------------------------------------
-- 3. 重建:助教日度明细 FDW 外部表(新增惩罚字段)
-- -----------------------------------------------------------------------------
DROP FOREIGN TABLE IF EXISTS fdw_etl.v_dws_assistant_daily_detail;
CREATE FOREIGN TABLE fdw_etl.v_dws_assistant_daily_detail (
id BIGINT,
site_id BIGINT,
tenant_id BIGINT,
assistant_id BIGINT,
assistant_nickname VARCHAR(50),
stat_date DATE,
assistant_level_code INTEGER,
assistant_level_name VARCHAR(20),
total_service_count INTEGER,
base_service_count INTEGER,
bonus_service_count INTEGER,
room_service_count INTEGER,
total_seconds INTEGER,
base_seconds INTEGER,
bonus_seconds INTEGER,
room_seconds INTEGER,
total_hours NUMERIC(10,2),
base_hours NUMERIC(10,2),
bonus_hours NUMERIC(10,2),
room_hours NUMERIC(10,2),
total_ledger_amount NUMERIC(12,2),
base_ledger_amount NUMERIC(12,2),
bonus_ledger_amount NUMERIC(12,2),
room_ledger_amount NUMERIC(12,2),
unique_customers INTEGER,
unique_tables INTEGER,
trashed_seconds INTEGER,
trashed_count INTEGER,
created_at TIMESTAMP WITH TIME ZONE,
updated_at TIMESTAMP WITH TIME ZONE,
penalty_minutes NUMERIC(10,2),
penalty_reason TEXT,
is_exempt BOOLEAN,
per_hour_contribution NUMERIC(14,2)
) SERVER etl_server
OPTIONS (schema_name 'app', table_name 'v_dws_assistant_daily_detail');
-- -----------------------------------------------------------------------------
-- 授权
-- -----------------------------------------------------------------------------
GRANT SELECT ON fdw_etl.v_dws_assistant_order_contribution TO app_user;
-- =============================================================================
-- 回滚脚本(按逆序执行)
-- =============================================================================
-- REVOKE SELECT ON fdw_etl.v_dws_assistant_order_contribution FROM app_user;
-- DROP FOREIGN TABLE IF EXISTS fdw_etl.v_dws_assistant_daily_detail;
-- DROP FOREIGN TABLE IF EXISTS fdw_etl.v_dws_member_consumption_summary;
-- DROP FOREIGN TABLE IF EXISTS fdw_etl.v_dws_assistant_order_contribution;
-- 然后重建旧版本的 v_dws_assistant_daily_detail 和 v_dws_member_consumption_summary不含新字段