Spaces:
Runtime error
Runtime error
Commit History
-
fix: 移除 /api/monitor 中的自动同步,避免 Google API rate limit 导致数据加载失败
wen Qiu_quick_sync_stale_platforms 在 monitor 请求前执行会占用 Google Sheets API 配额,导致紧接着的 load_raw 被 rate limit 拒绝后 fallback 到本地 Excel(不存在), 报出"未找到 .xlsx 文件"错误。数据同步改为仅通过手动按钮触发。 Made-with: Cursor3fdab06 -
feat: 数据看板重构 — 四维筛选 + 产品线看板 + 昨日数据
wen Qiu- 重命名"日常监控"为"数据看板",拆分为上下两区 - 上区:自定义日期范围 + 6维筛选器(国家/平台/广告目标/产品线/产品型号/项目类型) - 新增产品线/型号小看板,展示各 funnel 的 Cost/Sales/ROAS 及占比 - 下区:昨日数据固定 overview,含告警 + campaign 异动 + 层级花费树 - 后端新增 /api/dashboard 和 /api/dashboard/filters 接口 - 集成 campaign_parser.enrich_dataframe 为 monitor 数据提供解析维度 Made-with: Cursor6633362
-
feat: add /api/rebuild_sheets endpoint for one-time data refresh
wen QiuClears all platform sheet data rows (keeps header), then re-syncs all platforms with raw numeric format to eliminate precision loss. Made-with: Cursor473acec -
refactor: simplify data pipeline to single source (Sheets platform tabs only)
wen Qiu- Remove Export sheet and local CSV as data sources, only read Meta/Google/Criteo/Bing platform tabs from Google Sheets - Remove _merge_api_data and _platforms_loaded_from_sheets - Write raw numbers to Sheets instead of formatted strings ($, %) to eliminate precision loss in round-trip - Add country to write dedup key (country, date, campaign_name) - Fix _quick_sync_stale_platforms to write back to Sheets instead of only saving local CSV - Only apply ffill when data source is Excel (not API Sheets) - Add daily throttle to quick sync to avoid redundant API calls Made-with: Cursora2b76e3 -
feat: add P3 投放分析引擎 (campaign analysis engine)
wen Qiu- Campaign Name 12-field parser with audience classification - Dynamic config loader from Google Sheets (budgets, KPI, benchmarks) - Per-objective metrics engine (Purchase/Lead/ATC/Linkclick/Pageview/PE) - L1-L4 hierarchical aggregation (market → funnel → platform → campaign) - Benchmark annotation (red/yellow/green) driven entirely by Sheets data - Diagnostic rules engine with actionable recommendations - Markdown weekly report formatter - API routes: GET /api/p3/analysis, GET /api/p3/config, POST /api/p3/push - 16 unit tests for campaign name parser - Fix Python 3.9 compatibility (from __future__ import annotations) - Fix percentage parsing bug (0.14% was incorrectly kept as 0.14) Made-with: Cursorebb46dc
-
refactor: consolidate repo structure, remove upload_to_github duplication
unknownMade-with: Cursor3291500