repos
/ finance-rust master

finance-rust

mirror archived upstream

Single-binary self-hosted market watcher for stocks, ETFs, indexes, and futures: live charts, key stats, fundamentals, SEC filings, and SSE streaming.

axumdockerfinancerustself-hostedsqlitestocksvite

2.2 KB · 52 lines · HTML Raw History
 1{% extends "base.html" %}
 2{% block title %}Data health{% endblock %}
 3{% block description %}Live status of the on-demand data fetches, the endpoint guards, and the fetch log.{% endblock %}
 4{% block extra_css %}<link rel="stylesheet" href="{{ vite_asset('static_src/health/index.js', 'css') }}">{% endblock %}
 5
 6{% block main %}
 7<div class="wrap">
 8  <div class="page-head">
 9    <h1>Data health</h1>
10    <span class="health-asof" data-role="asof"></span>
11  </div>
12
13  {# Systems verdict (Phase 7): a one-line plain read distilling the whole page
14     — are the upstreams healthy, are the jobs on schedule, how fresh is the
15     last fetch. Filled + kept live by the page script from the same snapshot
16     that drives the detail below, so it never disagrees with it. #}
17  <div class="health-verdict" data-role="verdict" hidden>
18    <span class="health-verdict__dot"></span>
19    <div class="health-verdict__text">
20      <p class="health-verdict__head" data-role="verdict-head"></p>
21      <p class="health-verdict__detail" data-role="verdict-detail"></p>
22    </div>
23  </div>
24
25  <p class="health-lede">
26    This app fetches market data <strong>on demand</strong> &mdash; when you open
27    a page &mdash; through a request guard per upstream; the timed jobs are the
28    live intraday poll for the symbols on screen and the 15-minute home sweep
29    that keeps the dashboard fresh. Laid open here: each guard and its hourly
30    budget, those jobs, and a live tail of the fetch log.
31  </p>
32
33  {# Shown only while a job is fetching; the page script toggles `hidden`. #}
34  <div class="health-banner" data-role="banner" hidden></div>
35
36  <h2 class="section-title">Endpoints</h2>
37  <div data-role="endpoints"></div>
38
39  <h2 class="section-title">Background jobs</h2>
40  <div data-role="jobs"></div>
41
42  <h2 class="section-title">Activity log</h2>
43  <div data-role="log"></div>
44
45  {# Initial snapshot, rendered by the page script on load so there is no
46     flash; `<`/`>`/`&` are pre-escaped to \uXXXX (see routes::health). #}
47  <script type="application/json" id="health-data">{{ health_json|safe }}</script>
48</div>
49{% endblock %}
50
51{% block extra_js %}<script type="module" src="{{ vite_asset('static_src/health/index.js') }}"></script>{% endblock %}