|
@@ -45,28 +45,29 @@
|
|
|
## 5. 前端 agent
|
|
## 5. 前端 agent
|
|
|
|
|
|
|
|
- **目录**:只在 `apps/web/`。
|
|
- **目录**:只在 `apps/web/`。
|
|
|
|
|
+- **技术**:React 19 + Vite + TypeScript + **shadcn/ui + Tailwind v4** + ECharts(漏斗图)+ TanStack Query。
|
|
|
- **职责**:
|
|
- **职责**:
|
|
|
- - 平台导航/布局壳,五大能力域全部进入导航。
|
|
|
|
|
- - 漏斗模块:时间选择区、漏斗配置区、结果图表区(ECharts 漏斗图)、结果表格区、空/错误状态。
|
|
|
|
|
- - 其余四域:"待开发"占位页。
|
|
|
|
|
- - 前端校验:自定义范围最大 15 天、今天不可选/不可提交。
|
|
|
|
|
- - 调用后端 `POST /api/funnels/query`,消费 UV/转化率/流失率/数据状态。
|
|
|
|
|
-- **不碰**:bitmap 字节解析与计算、后端代码、数据契约的服务端实现。
|
|
|
|
|
|
|
+ - 平台导航/布局壳,五个 L1 能力域进导航(见 `docs/01` §2)。
|
|
|
|
|
+ - 拼团漏斗模块:时间控件(单日 / 近 7 天 / 近 30 天,单日带历史日历)、ECharts 漏斗图、结果表格、空/错误状态。
|
|
|
|
|
+ - 其余域:"待开发"占位页(复用同一占位组件)。
|
|
|
|
|
+ - 前端校验:单日上限昨日、今天/未来不可选(T+1)。
|
|
|
|
|
+ - 调用后端 `POST /api/funnels/query`,消费 UV/转化率/流失率/`data_status`。
|
|
|
|
|
+- **不碰**:后端代码、数据契约的服务端实现。
|
|
|
- **产出**:可运行前端 + 组件;契约未就绪时用 **mock 响应** 对齐字段并行开发。
|
|
- **产出**:可运行前端 + 组件;契约未就绪时用 **mock 响应** 对齐字段并行开发。
|
|
|
-- **测试**:快捷时间选择、15 天限制、今天不可提交、图表渲染、表格渲染、空/错误状态。
|
|
|
|
|
|
|
+- **测试**:周期选择、单日历史/今天不可选、图表渲染、表格渲染、`missing`/错误状态。
|
|
|
|
|
|
|
|
## 6. 后端 agent
|
|
## 6. 后端 agent
|
|
|
|
|
|
|
|
- **目录**:只在 `apps/api/`。
|
|
- **目录**:只在 `apps/api/`。
|
|
|
|
|
+- **技术**:FastAPI + Pydantic v2 + SQLAlchemy(async)。
|
|
|
- **职责**:
|
|
- **职责**:
|
|
|
- 提供 `POST /api/funnels/query`。
|
|
- 提供 `POST /api/funnels/query`。
|
|
|
- - 校验时间范围与漏斗步骤参数(15 天上限、今天不可查)。
|
|
|
|
|
- - 从 PostgreSQL 读取 `bytea` bitmap;自定义范围对 daily bitmap 做 OR 后取 cardinality;标准周期优先读 period 表。
|
|
|
|
|
- - 返回每层 UV、转化率、流失率、数据状态。
|
|
|
|
|
- - bitmap 的 CPU 计算不阻塞 async event loop(放线程/进程池)。
|
|
|
|
|
|
|
+ - 校验 `period`(枚举)与 `snapshot_dt`(仅单日有效、上限昨日、今天/未来拒绝)。
|
|
|
|
|
+ - 从 PostgreSQL 读**预聚合两表**(`ads_trd_group_funnel_daily` / `_rolling`,见 `docs/03` §11):单日取 daily 行、近 7/30 天取 rolling 行的对应列;**不读 bitmap、不做 OR、不跨天聚合**。
|
|
|
|
|
+ - 返回每层 UV、相邻转化率/流失率、`data_status`(`ready`/`missing`)。
|
|
|
- **不碰**:前端代码、埋点明细存储、数仓侧产出逻辑(只消费 `docs/03` 约定的表)。
|
|
- **不碰**:前端代码、埋点明细存储、数仓侧产出逻辑(只消费 `docs/03` 约定的表)。
|
|
|
-- **产出**:可运行 API + 单测;真数据未就绪时基于 **seed 假数据** 开发。
|
|
|
|
|
-- **测试**:单日/多日/标准周期/空 bitmap/缺失数据查询、重复用户只计一次、多步骤 UV 与转化率计算。
|
|
|
|
|
|
|
+- **产出**:可运行 API + 单测;真数据未就绪时基于 **seed 假数据** 开发(`USE_FAKE_DATA` 兜底)。
|
|
|
|
|
+- **测试**:`period` 校验、单日(最新/指定/不存在/今天拒绝)、近 7/30 天取列、转化率(第 1 层 null)、`data_status` 两态。
|
|
|
|
|
|
|
|
## 7. 契约交接点
|
|
## 7. 契约交接点
|
|
|
|
|
|
|
@@ -75,7 +76,7 @@
|
|
|
- **唯一来源**:`docs/02-技术架构` §5 的请求/响应字段。
|
|
- **唯一来源**:`docs/02-技术架构` §5 的请求/响应字段。
|
|
|
- **并行机制**:前端按契约 mock、后端按契约 + seed 实现,各自先跑通,再联调。
|
|
- **并行机制**:前端按契约 mock、后端按契约 + seed 实现,各自先跑通,再联调。
|
|
|
- **改契约协议**:任一侧需要改字段,先改 `docs/02` 并同步对端,不在代码里单方面偏离。
|
|
- **改契约协议**:任一侧需要改字段,先改 `docs/02` 并同步对端,不在代码里单方面偏离。
|
|
|
-- **数据状态**:`ready`/`partial`/`missing`/`invalid` 由后端判定并返回,前端按状态渲染,**两侧都不静默补零**。
|
|
|
|
|
|
|
+- **数据状态**:`ready` / `missing` 由后端判定并返回,前端按状态渲染,**两侧都不静默补零**。
|
|
|
|
|
|
|
|
## 8. 主会话职责(不下放给 agent)
|
|
## 8. 主会话职责(不下放给 agent)
|
|
|
|
|
|