feat: Add Streamlit dashboard with Blueprint compliance (v2.1.0)

Dashboard Features:
- 8 navigation sections: Overview, Outcomes, Poor CX, FCR, Churn, Agent, Call Explorer, Export
- Beyond Brand Identity styling (colors #6D84E3, Outfit font)
- RCA Sankey diagram (Driver → Outcome → Churn Risk flow)
- Correlation heatmaps (driver co-occurrence, driver-outcome)
- Outcome Deep Dive (root causes, correlation, duration analysis)
- Export functionality (Excel, HTML, JSON)

Blueprint Compliance:
- FCR: 4 categories (Primera Llamada/Rellamada × Sin/Con Riesgo de Fuga)
- Churn: Binary view (Sin Riesgo de Fuga / En Riesgo de Fuga)
- Agent: Talento Para Replicar / Oportunidades de Mejora
- Fixed FCR rate calculation (only FIRST_CALL counts as success)

Technical:
- Streamlit + Plotly for interactive visualizations
- Light theme configuration (.streamlit/config.toml)
- Fixed Plotly colorbar titlefont deprecation

Documentation:
- Updated PROJECT_CONTEXT.md, TODO.md, CHANGELOG.md
- Added 4 new technical decisions (TD-014 to TD-017)
- Created TROUBLESHOOTING.md with 10 common issues

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
sujucu70
2026-01-19 16:27:30 +01:00
commit 75e7b9da3d
110 changed files with 28247 additions and 0 deletions

View File

@@ -0,0 +1,72 @@
Analyze the following call transcript and provide structured analysis.
## CALL METADATA
- Call ID: {call_id}
- Duration: {duration_sec} seconds
- Queue: {queue}
## OBSERVED EVENTS (Pre-detected)
{observed_events}
## TRANSCRIPT
{transcript}
## TAXONOMY - LOST SALES DRIVERS
{lost_sales_taxonomy}
## TAXONOMY - POOR CX DRIVERS
{poor_cx_taxonomy}
## INSTRUCTIONS
1. Determine the call outcome from: SALE_COMPLETED, SALE_LOST, CANCELLATION_SAVED, CANCELLATION_COMPLETED, INQUIRY_RESOLVED, INQUIRY_UNRESOLVED, COMPLAINT_RESOLVED, COMPLAINT_UNRESOLVED, TRANSFER_OUT, CALLBACK_SCHEDULED, UNKNOWN
2. Identify lost_sales_drivers (if applicable):
- Use ONLY codes from the Lost Sales taxonomy
- Each driver MUST have evidence_spans with exact quotes and timestamps
- Assign confidence based on evidence strength
3. Identify poor_cx_drivers (if applicable):
- Use ONLY codes from the Poor CX taxonomy
- Each driver MUST have evidence_spans with exact quotes and timestamps
- Assign confidence based on evidence strength
4. For OTHER_EMERGENT, provide a proposed_label describing the new cause.
Respond with JSON only:
```json
{
"outcome": "SALE_LOST",
"lost_sales_drivers": [
{
"driver_code": "PRICE_TOO_HIGH",
"confidence": 0.85,
"evidence_spans": [
{
"text": "Es demasiado caro para mí",
"start_time": 45.2,
"end_time": 47.8,
"speaker": "customer"
}
],
"reasoning": "Customer explicitly states price is too high"
}
],
"poor_cx_drivers": [
{
"driver_code": "LONG_HOLD",
"confidence": 0.90,
"evidence_spans": [
{
"text": "Llevo esperando mucho tiempo",
"start_time": 120.5,
"end_time": 123.1,
"speaker": "customer"
}
],
"reasoning": "Customer complains about wait time"
}
]
}
```