feat: 累积功能变更 — 聊天集成、租户管理、小程序更新、ETL 增强、迁移脚本
包含多个会话的累积代码变更: - backend: AI 聊天服务、触发器调度、认证增强、WebSocket、调度器最小间隔 - admin-web: ETL 状态页、任务管理、调度配置、登录优化 - miniprogram: 看板页面、聊天集成、UI 组件、导航更新 - etl: DWS 新任务(finance_area_daily/board_cache)、连接器增强 - tenant-admin: 项目初始化 - db: 19 个迁移脚本(etl_feiqiu 11 + zqyy_app 8) - packages/shared: 枚举和工具函数更新 - tools: 数据库工具、报表生成、健康检查 - docs: PRD/架构/部署/合约文档更新 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -2,6 +2,8 @@
|
||||
# - 2026-03-20 | Prompt: R3 项目类型筛选接口重建 | SkillFilterEnum 和 ProjectFilterEnum
|
||||
# 枚举值从 all/chinese/snooker/mahjong/karaoke 改为 ALL/BILLIARD/SNOOKER/MAHJONG/KTV,
|
||||
# 与 dws.cfg_area_category.category_code 一致,消除前后端映射层。
|
||||
# - 2026-03-27 | Prompt: board-finance-integration T2.4 | AreaFilterEnum 从 7 项重建为 9 项
|
||||
# (新增 vip/snooker/ktv,移除 teamBuilding),与区域筛选对照表一致。
|
||||
|
||||
"""三看板接口 Pydantic Schema(BOARD-1/2/3 请求参数枚举 + 响应模型)。"""
|
||||
|
||||
@@ -84,13 +86,17 @@ class FinanceTimeEnum(str, Enum):
|
||||
|
||||
class AreaFilterEnum(str, Enum):
|
||||
"""BOARD-3 区域筛选。"""
|
||||
# CHANGE 2026-03-27 | board-finance-integration T2.4 | 枚举从 7 项重建为 9 项,
|
||||
# 与区域筛选对照表一致(all/hall/hallA-C/vip/snooker/mahjong/ktv)
|
||||
all = "all"
|
||||
hall = "hall"
|
||||
hallA = "hallA"
|
||||
hallB = "hallB"
|
||||
hallC = "hallC"
|
||||
vip = "vip"
|
||||
snooker = "snooker"
|
||||
mahjong = "mahjong"
|
||||
teamBuilding = "teamBuilding"
|
||||
ktv = "ktv"
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
@@ -137,6 +143,9 @@ class CoachBoardItem(CamelModel):
|
||||
|
||||
class CoachBoardResponse(CamelModel):
|
||||
items: list[CoachBoardItem]
|
||||
total: int
|
||||
page: int
|
||||
page_size: int
|
||||
dim_type: str # perf/salary/sv/task
|
||||
|
||||
|
||||
@@ -261,10 +270,10 @@ class OverviewPanel(CamelModel):
|
||||
discount: float # 负值
|
||||
discount_rate: float
|
||||
confirmed_revenue: float
|
||||
cash_in: float
|
||||
cash_out: float
|
||||
cash_balance: float
|
||||
balance_rate: float
|
||||
cash_in: float | None = None
|
||||
cash_out: float | None = None
|
||||
cash_balance: float | None = None
|
||||
balance_rate: float | None = None
|
||||
# occurrence 环比
|
||||
occurrence_compare: str | None = None
|
||||
occurrence_down: bool | None = None
|
||||
@@ -340,6 +349,10 @@ class RechargePanel(CamelModel):
|
||||
card_balance_compare: str | None = None
|
||||
card_balance_down: bool | None = None
|
||||
card_balance_flat: bool | None = None
|
||||
# 全类别会员卡余额合计环比
|
||||
all_card_balance_compare: str | None = None
|
||||
all_card_balance_down: bool | None = None
|
||||
all_card_balance_flat: bool | None = None
|
||||
|
||||
|
||||
class RevenueStructureRow(CamelModel):
|
||||
@@ -355,32 +368,53 @@ class RevenueStructureRow(CamelModel):
|
||||
|
||||
class RevenueItem(CamelModel):
|
||||
label: str
|
||||
desc: str | None = None
|
||||
amount: float
|
||||
compare: str | None = None
|
||||
|
||||
|
||||
class ChannelItem(CamelModel):
|
||||
label: str
|
||||
desc: str | None = None
|
||||
amount: float
|
||||
compare: str | None = None
|
||||
|
||||
|
||||
class RevenuePanel(CamelModel):
|
||||
structure_rows: list[RevenueStructureRow]
|
||||
price_items: list[RevenueItem] # 4 项
|
||||
price_items: list[RevenueItem]
|
||||
total_occurrence: float
|
||||
discount_items: list[RevenueItem] # 4 项
|
||||
total_occurrence_compare: str | None = None
|
||||
total_occurrence_down: bool | None = None
|
||||
total_occurrence_flat: bool | None = None
|
||||
discount_items: list[RevenueItem]
|
||||
# CHANGE 2026-03-28 | board-finance-phase2 bugfix | 优惠总计供前端展示
|
||||
discount_total: float = 0.0
|
||||
discount_total_compare: str | None = None
|
||||
discount_total_down: bool | None = None
|
||||
discount_total_flat: bool | None = None
|
||||
confirmed_total: float
|
||||
channel_items: list[ChannelItem] # 3 项
|
||||
confirmed_total_compare: str | None = None
|
||||
confirmed_total_down: bool | None = None
|
||||
confirmed_total_flat: bool | None = None
|
||||
channel_items: list[ChannelItem]
|
||||
|
||||
|
||||
class CashflowItem(CamelModel):
|
||||
label: str
|
||||
desc: str | None = None
|
||||
amount: float
|
||||
compare: str | None = None
|
||||
down: bool | None = None
|
||||
|
||||
|
||||
class CashflowPanel(CamelModel):
|
||||
consume_items: list[CashflowItem] # 3 项
|
||||
recharge_items: list[CashflowItem] # 1 项
|
||||
total: float
|
||||
total_compare: str | None = None
|
||||
total_down: bool | None = None
|
||||
total_flat: bool | None = None
|
||||
|
||||
|
||||
class ExpenseItem(CamelModel):
|
||||
@@ -437,6 +471,6 @@ class FinanceBoardResponse(CamelModel):
|
||||
overview: OverviewPanel
|
||||
recharge: RechargePanel | None # area≠all 时为 null
|
||||
revenue: RevenuePanel
|
||||
cashflow: CashflowPanel
|
||||
expense: ExpensePanel
|
||||
cashflow: CashflowPanel | None # area≠all 时为 null
|
||||
expense: ExpensePanel | None # area≠all 时为 null
|
||||
coach_analysis: CoachAnalysisPanel
|
||||
|
||||
Reference in New Issue
Block a user