1.6 KiB
1.6 KiB
Public Mobile H5 Dashboard
Request
Make the mobile dashboard publicly viewable while preserving the authenticated Finance/operator surface.
Public contract
- Anonymous
GET /h5,/h5.html,/assets/h5.cssand/assets/h5.jsare allowed.i18n.jswas already public as a login asset. - Anonymous
GET /api/public/h5/monthsreturns only month key, update time and maximum ARRIVAL watermark. - Anonymous
GET /api/public/h5/analytics?month=YYYY-MMreturns aggregate channel/room metrics and date coverage. The public projection omitssource_monthly_sha256, filenames and operational metadata; JSON responses areCache-Control: no-store. - H5 uses anonymous
/healthzfor its connection indicator and does not require a CSRF token for read-only data. When a logged-in operator opens H5, the existing session is still detected and the optional logout control remains available.
Protected contract retained
Anonymous desktop /, /api/health, generic /api/months, /api/analytics, legacy /api/h5/months, legacy
/api/monthly/{month}/analytics, jobs, traces, downloads, uploads, Booking/company/report routes and mutations remain
protected by the existing session/CSRF boundary.
Verification
python3 -m unittest tests.test_arr_web_auth tests.test_arr_web— 26 passed.python3 -m unittest discover -s tests -p 'test_arr_web*.py'— 71 passed.node --check arr_web/static/h5.js,node --check arr_web/static/app.jsandpython3 -m py_compile arr_web/app.py— passed.git diff --check— passed.- No live service restart, public deployment, database write or business/report mutation was performed.