Initial import: eCW Charge Validation bot and results Portal

Snapshot of the working project as of 2026-10-23 (local 2d4d4fc), one
commit with no earlier history: the tracked files were de-identified
first (synthetic claim ids and patient data only; see Context.md
section 7). Credentials, run logs, screenshots, claim reports and client
workbooks are gitignored and not included.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
ManikandanandClaude Opus 5.5 committed 2026-10-23 18:38:17 +05:30
commit ba15a574ab
205 files changed
+56772

No files matched your search

+57
View File
@@ -0,0 +1,57 @@
{% extends "base.html" %}
{% block title %}Claim status{% endblock %}
{% block style %}
.days { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
gap: 14px; }
a.daycard { display: block; background: var(--panel); color: var(--text);
border: 1px solid var(--line); border-left: 5px solid var(--accent);
border-radius: 10px; padding: 14px 16px; box-shadow: var(--shadow); }
a.daycard:hover { text-decoration: none; border-color: var(--accent);
background: var(--hilite); }
.daycard .d { font-size: 16px; font-weight: 700; }
.daycard .m { color: var(--muted); font-size: 12px; margin: 2px 0 8px; }
.daycard .c { display: flex; gap: 12px; font-weight: 600; font-size: 13px; }
.daycard .c .Pass { color: var(--pass); }
.daycard .c .Fail { color: var(--fail); }
.daycard .c .Review { color: var(--review); }
.stack { display: flex; height: 7px; border-radius: 4px; overflow: hidden;
background: var(--head); margin-top: 10px; }
.stack i { display: block; }
.stack i.Pass { background: var(--pass); }
.stack i.Fail { background: var(--fail); }
.stack i.Review { background: var(--review-bar); }
{% endblock %}
{% block content %}
<h1>Claim status</h1>
<p class="sub">Every day the bot checked claims, newest first — all runs of a
day together. Pick a day to see its claims.</p>
{% if days %}
<div class="days">
{% for d in days %}
<a class="daycard" href="/day/{{ d.day.isoformat() }}">
<div class="d">{{ d.day | longdate }}</div>
<div class="m">{{ d.claims }} claims checked · {{ d.runs }} run{{ "" if d.runs == 1 else "s" }}</div>
<div class="c">
<span class="Pass">{{ d.pass_count }} Pass</span>
<span class="Fail">{{ d.fail_count }} Fail</span>
<span class="Review">{{ d.review_count }} Review</span>
</div>
<div class="stack" aria-hidden="true">
<i class="Pass" data-n="{{ d.pass_count }}"></i><i class="Fail" data-n="{{ d.fail_count }}"></i><i class="Review" data-n="{{ d.review_count }}"></i>
</div>
</a>
{% endfor %}
</div>
{% else %}
<div class="empty">No results saved yet. Run the bot with <code>RESULTS_DB=1</code>
in <code>.env</code>; each day's claims appear here.</div>
{% endif %}
{% endblock %}
{% block scripts %}
<script>
// Each part of a day's colour bar as wide as its count.
document.querySelectorAll('.stack i').forEach(i => {
i.style.flexGrow = Number(i.dataset.n) || 0;
});
</script>
{% endblock %}