This fixes the critical bug where all conversations and messages were being filtered out (0 results) despite successfully fetching data from the API. Root causes fixed: 1. Race condition: window.validAssistantIds was undefined when filtering logic ran 2. Overly restrictive filtering: Only assistants with friendly names were shown 3. Assistant ID mismatch: Hardcoded IDs didn't match actual data Changes in Dashboard.jsx: - Replaced window global variables with React state (validAssistantIds, assistantDisplayToIdMap, etc.) - Added guard to prevent filtering until validAssistantIds is initialized - Removed filter that required friendly names - now all assistants display - Use raw Assistant_ID as fallback if no friendly name exists - Fixed useEffect dependencies to properly track state changes Changes in assistantMapping.js: - Added mapping for asst_eECsc64ZG3t6HHuvqR9FvoPt (Copy Assistant) - Kept existing mappings for backwards compatibility Result: All 469 conversations and 2471 messages now display correctly in the dashboard. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> |
||
|---|---|---|
| backend | ||
| frontend | ||
| .env.example | ||
| .gitignore | ||
| CLAUDE.md | ||
| deploy.sh | ||
| email_analysis.py | ||
| README.md | ||
| run.sh | ||
| test_user_mapping.js | ||
| USER_FILTERING_NOTES.md | ||
Oliver Agency Reporting Module
A web-based reporting module to display usage analytics for conversations and messages with various filtering options and CSV export functionality.
Project Structure
/backend: Python Flask backend API/frontend: React + Vite frontend application
Environment Setup
Before running the application, you need to configure environment variables:
-
Copy the example environment file:
cp .env.example .env -
Edit
.envwith your configuration:- DOMAIN: Your deployment domain (e.g.,
yourdomain.com) - BASE_PATH: Application base path (default:
/dashboard/) - AZURE_TENANT_ID: Azure AD tenant identifier
- AZURE_CLIENT_ID: Azure AD application (client) identifier
- BACKEND_PORT: Backend server port (default:
5001) - MAKE_WEBHOOK_URL: Make.com webhook endpoint
- VITE_* variables: Duplicate the above values with
VITE_prefix for frontend
- DOMAIN: Your deployment domain (e.g.,
-
Azure AD Setup:
- Create an app registration in Azure Portal
- Add redirect URIs for your deployment domain
- Copy the Tenant ID and Client ID to your
.envfile
Getting Started
Quick Start (Recommended)
Run both backend and frontend together:
./run.sh
This script automatically loads environment variables from .env and starts both servers.
Backend
-
Navigate to the backend directory:
cd backend -
Activate the virtual environment:
source venv/bin/activate -
Install dependencies:
pip install -r requirements.txt -
Load environment variables and start the development server:
# Load environment variables set -a && source ../.env && set +a # Start server python app.py
The API will be available at http://localhost:{BACKEND_PORT} (default: 5001).
Frontend
-
Navigate to the frontend directory:
cd frontend -
Install dependencies:
npm install -
Start the development server:
npm run dev
The application will be available at http://localhost:5173.
Features
- Dashboard displaying conversation and message volume over time
- Filter data by user, assistant, brand/TOV, and date range
- Export filtered data to CSV
- Interactive graph with assistant-specific coloring
API Endpoints
GET /api/data: Returns all conversations and messages data