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:
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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(不含新字段)
|
||||
Reference in New Issue
Block a user