- Introduced .pre-commit-config.yaml for pre-commit hooks using uv-pre-commit. - Created lint.sh script to run Ruff and Black for linting and formatting. - Added test.sh script to execute tests with coverage reporting. - Configured .uv file for uv settings including lockfile management and dependency resolution. - Updated Makefile with targets for virtual environment setup, dependency installation, linting, testing, formatting, and database migrations. - Established requirements.txt with main and development dependencies for the project.
5.0 KiB
Chat Analytics Dashboard
A Django application that creates an analytics dashboard for chat session data. The application allows different companies to have their own dashboards and view their own data.
Features
- Multi-company support with user authentication
- CSV file upload and processing
- Interactive dashboard with charts and visualizations
- Detailed data views for chat sessions
- Search functionality to find specific chat sessions
- Admin interface for managing users and companies
- Responsive design using Bootstrap 5
Requirements
- Python 3.13+
- Django 5.2+
- UV package manager (recommended)
- Other dependencies listed in
pyproject.toml
Setup
Local Development
-
Clone the repository:
git clone <repository-url> cd LiveGraphsDjango -
Install uv if you don't have it yet:
# Install using pip pip install uv # Or with curl (Unix/macOS) curl -sSf https://install.pypa.io/get-uv.py | python3 - # Or on Windows with PowerShell irm https://install.pypa.io/get-uv.ps1 | iex -
Create a virtual environment and activate it:
uv venv source .venv/bin/activate # On Windows: .venv\Scripts\activate -
Install dependencies:
# Install all dependencies including dev dependencies uv pip install -e ".[dev]" # Or just runtime dependencies uv pip install -e . -
Run migrations:
cd dashboard_project python manage.py makemigrations python manage.py migrate -
Create a superuser:
python manage.py createsuperuser -
Run the development server:
python manage.py runserver -
Access the application at http://127.0.0.1:8000/
Development Workflow with UV
UV offers several advantages over traditional pip, including faster dependency resolution and installation:
-
Running linting and formatting:
# Using the convenience script ./.scripts/lint.sh # Or directly uv run -m ruff check dashboard_project uv run -m ruff format dashboard_project uv run -m black dashboard_project -
Running tests:
# Using the convenience script ./.scripts/test.sh # Or directly uv run -m pytest -
Adding new dependencies:
# Add to project uv pip install package_name # Then update pyproject.toml manually # And update the lockfile uv pip freeze > requirements.lock -
Updating the lockfile:
uv pip compile pyproject.toml -o uv.lock
Using Docker
-
Clone the repository:
git clone <repository-url> cd dashboard_project -
Build and run with Docker Compose:
docker-compose up -d --build -
Create a superuser:
docker-compose exec web python manage.py createsuperuser -
Access the application at http://localhost/
Usage
- Login as the superuser you created.
- Go to the admin interface (http://localhost/admin/) and create companies and users.
- Assign users to companies.
- Upload CSV files for each company.
- View the analytics dashboard.
CSV File Format
The CSV file should contain the following columns:
| Column | Description |
|---|---|
session_id |
Unique identifier for the chat session |
start_time |
When the session started (datetime) |
end_time |
When the session ended (datetime) |
ip_address |
IP address of the user |
country |
Country of the user |
language |
Language used in the conversation |
messages_sent |
Number of messages in the conversation (integer) |
sentiment |
Sentiment analysis of the conversation (string) |
escalated |
Whether the conversation was escalated (boolean) |
forwarded_hr |
Whether the conversation was forwarded to HR (boolean) |
full_transcript |
Full transcript of the conversation (text) |
avg_response_time |
Average response time in seconds (float) |
tokens |
Total number of tokens used (integer) |
tokens_eur |
Cost of tokens in EUR (float) |
category |
Category of the conversation (string) |
initial_msg |
First message from the user (text) |
user_rating |
User rating of the conversation (string) |
Future Enhancements
- API integration for real-time data
- More advanced visualizations
- Custom reports
- Export functionality
- Theme customization
- User access control with more granular permissions
License
This project is unlicensed. Usage is restricted to personal and educational purposes only. For commercial use, please contact the author.