{% if analysis_result.has_sure_bets %}
{% endif %}
{% if analysis_result.success is defined and analysis_result.success and analysis_result.matches_repaired is defined %}
{% endif %}
{% endif %}
⚠️ Sure Bet Conditions Detected!
Found {{ analysis_result.total_issues }} sure bet issue(s) in {{ analysis_result.matches_with_issues }} match(es).
These odds allow players to guarantee a win!
Problematic Matches
{% for issue in analysis_result.issues %}
Match #{{ issue.match_number }} - {{ issue.extraction|title }} Extraction
{{ issue.description }}
Outcomes involved: {{ issue.outcomes_involved|join(', ') }}
Odds: {% for outcome, odds in issue.odds_values.items() %} {{ outcome }}: {{ odds }}{% if not loop.last %}, {% endif %} {% endfor %} {% if issue.guaranteed_profit > 0 %}
Guaranteed profit per 100 bet: {{ "%.2f"|format(issue.guaranteed_profit) }} {% endif %}
{% endfor %}
{% else %}
{{ issue.description }}
Outcomes involved: {{ issue.outcomes_involved|join(', ') }}
Odds: {% for outcome, odds in issue.odds_values.items() %} {{ outcome }}: {{ odds }}{% if not loop.last %}, {% endif %} {% endfor %} {% if issue.guaranteed_profit > 0 %}
Guaranteed profit per 100 bet: {{ "%.2f"|format(issue.guaranteed_profit) }} {% endif %}
✅ No Sure Bet Conditions Detected
All matches in this fixture have safe odds distribution.
🔧 Repair Complete
Repaired {{ analysis_result.matches_repaired }} matches ({{ analysis_result.total_repairs }} odds adjusted).
Remaining issues: {{ analysis_result.remaining_issues }}
Fixture ID
{{ fixture_info.fixture_id[:8] }}...
Filename
{{ fixture_info.filename }}
Upload Date
{{ fixture_info.upload_date.strftime('%Y-%m-%d %H:%M') if fixture_info.upload_date else 'N/A' }}
Total Matches
{{ fixture_info.total_matches }}
Active Matches
{{ fixture_info.active_matches }}
Status
{% if fixture_info.active_matches == fixture_info.total_matches %}
All Active
{% elif fixture_info.active_matches > 0 %}
Partial
{% else %}
Inactive
{% endif %}
Matches in this Fixture
{% if matches %}| Match # | Fighter 1 | Fighter 2 | Venue | Status | ZIP Status | Actions |
|---|---|---|---|---|---|---|
| {{ match.match_number }} | {{ match.fighter1_township }} | {{ match.fighter2_township }} | {{ match.venue_kampala_township }} | {% if match.active_status %} Active {% else %} Inactive {% endif %} | {% if match.zip_upload_status == 'completed' %} Completed {% elif match.zip_upload_status == 'pending' %} Pending {% elif match.zip_upload_status == 'failed' %} Failed {% else %} {{ match.zip_upload_status.title() }} {% endif %} |
No matches found in this fixture.
{% endif %}Upload ZIP for All Matches
Bulk ZIP Upload
Upload a single ZIP file that will be associated with all {{ matches_without_zip|length }} matches that don't have ZIP files yet.
{{ matches_without_zip|length }}
matches pending
How it works:
- The same ZIP file will be associated with all matches that don't have one
- Matches that already have ZIP files will not be affected
- All affected matches will become active once the upload completes
- Supports large files up to 2GB with progress tracking
Associated File Uploads
| Filename | File Type | Size | Status | Upload Date |
|---|---|---|---|---|
| {{ upload.original_filename }} | {{ upload.file_type.upper() }} | {{ "%.1f"|format(upload.file_size / 1024 / 1024) }} MB | {% if upload.upload_status == 'completed' %} Completed {% elif upload.upload_status == 'failed' %} Failed {% else %} {{ upload.upload_status.title() }} {% endif %} | {{ upload.created_at.strftime('%Y-%m-%d %H:%M') if upload.created_at else 'N/A' }} |