Spaces:
Runtime error
Runtime error
Commit History
-
Fix refresh button to invalidate cache before fetching
Mathias +1: Claude Opus 4.5- Frontend: refreshData() now calls /api/invalidate-cache before fetching - Backend: Added logging to webhook endpoint for debugging This ensures clicking "Refresh Data" fetches fresh data from Google Sheets instead of returning cached data. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>e55761d -
Fix cache invalidation for multi-month support
Mathias +1: Claude Opus 4.5Cache keys are stored as "{month}:{source}" (e.g., "2026-02:api") but invalidation was looking for exact match of just "{month}". Now uses startswith() to find and clear all cache entries for a given month. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>1a36032 -
Add dynamic week calculation based on month's start_week
Mathias +1: Claude Opus 4.5- API returns start_week for each month - Frontend calculates current week dynamically - February starts at week 6, January at week 2 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>44a481a -
Add per-month start_week support for different week numbering
Mathias +1: Claude Opus 4.5- January 2026 starts at week 2 - February 2026 starts at week 6 - Column positions remain the same, only week numbers change Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>2510bf9 -
Fix: use absolute path for months_config.json
Mathias +1: Claude Opus 4.5The relative path wasn't resolving correctly in Docker container. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>da8881d -
Fix: make excel_parser import optional for production
Mathias +1: Claude Opus 4.5The excel_parser module is only needed for local testing with Excel files. In production (HuggingFace Spaces), we always use Google Sheets API. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>de7e1ec -
Add February 2026 support with multi-month selection
Mathias +1: Claude Opus 4.5- Add multi-month configuration via months_config.json - Implement per-month caching for Google Sheets data - Add month selector in dashboard UI - Support January 2026 and February 2026 data sources - Add Excel fallback for local development testing Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>d5e4667
-
Use sheet percentages from column AI for monthly progress
Mathias +1: Claude Opus 4.5Instead of calculating monthly percentages from actuals/targets, now reads pre-calculated percentages directly from column AI and averages them per activity type (SQL vs Activity). Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>979e803 -
Aggregate Discovery with SQL for monthly, fix dark theme headers
Mathias +1: Claude Opus 4.5- Discovery now combines with SQL in monthly totals (pipeline metrics) - Keep Discovery separate for weekly view - Fix dark theme table headers to use consistent colors - Add fullWidth to space config Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>d7164cf -
Add SSE for instant updates on webhook trigger
Mathias +1: Claude Opus 4.5- Replace polling with Server-Sent Events - Webhook now notifies all connected browsers instantly - Browser reconnects automatically if connection drops Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>2c441e3
-
Add Prospects & Discovery columns + column auto-detection
Mathias +1: Claude Opus 4.5- Add Prospects % and Discovery % columns to dashboard (6 activity columns total) - Show "No target" for missing activity rows - Add column_config.json for dynamic column configuration - Add detect_columns.py script for monthly config updates - Add /api/reload-config and /api/column-config endpoints - Update leaderboard scoring to include all activity types Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>d378246 -
Fix column mapping: sum daily columns for actual totals
Mathias +1: Claude Opus 4.5- WEEK_CONFIGS now includes daily column range, target col, and percentage col - Actual values calculated by summing daily columns (not from target column) - Weekly targets read directly from sheet (not calculated as monthly/4) - Added sum_daily() and extract_percentage() helper functions Fixes issue where weekly percentages showed 100% because target was being used as actual value. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>8e9f28f -
Fix merged cell parsing with block-based algorithm
Mathias +1: Claude Opus 4.5- Rewrite parse_sheet_data() to group rows into blocks (SQL terminates blocks) - Scan entire block to find Case/GS names (handles merged cells correctly) - Add support for SQL variants like "SQL (offer sent)" - Enhance /api/debug endpoint to show detected blocks - Add sheet-parsing skill documentation Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>db4f0e6 -
Load cases and SDRs dynamically from Google Sheets
Mathias +1: Claude Opus 4.5- Updated backend parser to extract monthly TARGET and ACTUAL from columns AG/AH - Calculate weekly targets from monthly target / 4 - Removed all hardcoded case data from frontend - Frontend now loads entirely from API with localStorage cache - Added loading and error states for better UX - Bumped storage key to v5 to clear old cached data Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>7a400f4 -
Debug: Search for Bannerflow case rows
Mathias +1: Claude Opus 4.5Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>13e258e -
Debug: Search for Ardit rows in sheet data
Mathias +1: Claude Opus 4.5Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>1a829e7 -
Extend sheet range to A:AH and add debug endpoint
Mathias +1: Claude Opus 4.5- Extended range from A:Z to A:AH to capture Week 5 data (column AD) - Added /api/debug endpoint to inspect raw sheet structure - Updated .gitignore to exclude credentials files Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>1ae41e4 -
Fix parser to handle DAILY sheet structure with activity rows
Mathias2bc6b2a -
Fix: Read from DAILY sheet tab instead of default
Mathiasfe91a8b -
Add webhook endpoint for cache invalidation
Mathias +1: Claude Opus 4.5- Add POST /api/invalidate-cache endpoint for Google Apps Script to call - Add GET /api/cache-status to check cache state - Increase cache TTL to 1 hour (webhook handles invalidation) - Optional WEBHOOK_SECRET for security Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>3692ed3 -
Add Google Sheets integration with Python backend
Mathias +1: Claude Opus 4.5- Add FastAPI backend (app.py) to fetch data from Google Sheets - Move index.html to static/ folder - Update dashboard JS to fetch from /api/data endpoint - Add Dockerfile for HuggingFace Spaces - Update README with Docker SDK configuration - Add requirements.txt with dependencies The dashboard now syncs with Google Sheets via service account. Credentials stored as HF secrets (GOOGLE_CREDENTIALS). Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>700614a