Branding, Excel watermark, live run progress, and uv

- Login and Reports pages: eCare logo, Waystar and Aquilaehr logos (light
  versions for the dark pages), eCare favicon.
- Excel reports: faded eCare/Waystar/Aquila watermark as the sheet
  background on both sheets. Report writer moves to xlsxwriter, the only
  engine that can set a sheet background.
- Reports page: animated run progress (both download lanes piped into the
  Excel sheet) and a plain-language activity feed built from the run log;
  the raw log stays under "Technical log". /status now returns the
  location count.
- Dependencies move from requirements.txt to pyproject.toml + uv.lock;
  Dockerfile installs uv from PyPI and runs uv sync --frozen.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
VasanthandClaude Opus 5.5 committed 2026-10-28 14:43:31 +05:30
1 parent 2e1f28967e
commit 6616c91b7f
17 files changed
+816 -31

No files matched your search

+2 -1
View File
@@ -2,7 +2,7 @@
Env: APP_PASSWORD (sign-in password), SECRET_KEY (session signing; random if unset),
COOKIE_SECURE=1 behind HTTPS, plus the Waystar/Aquilaehr logins mek_recon.py reads.
Run locally: python app.py -> http://127.0.0.1:8000
Run locally: uv run app.py -> http://127.0.0.1:8000
"""
import hmac
import io
@@ -107,6 +107,7 @@ def status():
log = LOG.read_text(encoding="utf-8", errors="replace") if LOG.exists() else ""
return jsonify(
running=running, started=run["started"], finished=run["finished"], code=run["code"],
locations=len(mek_recon.LOCATIONS),
log="\n".join(log.splitlines()[-300:]),
files=[{"name": f.name, "size": f.stat().st_size, "mtime": f.stat().st_mtime} for f in reports()],
)