T19-T28: distribusi profit harian (distribute.py, /history, tests)

This commit is contained in:
proitlab committed 2026-08-05 16:07:36 +07:00
1 parent 656f26085f
commit 8ab8001b34
14 files changed
+789 -11

No files matched your search

+94
View File
@@ -0,0 +1,94 @@
<!doctype html>
<html lang="id">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>RIWAYAT DISTRIBUSI — {{ bp }}</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Saira+Condensed:wght@400&family=EB+Garamond:ital,wght@0,400;1,400&family=JetBrains+Mono:wght@400&display=swap" rel="stylesheet">
<link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">
</head>
<body>
<header class="top-nav">
<span class="nav-label">RIWAYAT</span>
<span class="wordmark">DATABISNISID</span>
<span class="nav-label"><a class="nav-link" href="{{ url_for('index') }}">DAFTAR</a></span>
</header>
<main class="page">
<section class="hero">
<p class="caption">DISTRIBUSI PROFIT-SHARE · VEX.TOKEN · PRO-RATA STAKE</p>
<h1 class="display-xl">RIWAYAT DISTRIBUSI</h1>
<p class="caption">BACA-ONLY · DISAJIKAN DARI PENYIMPANAN HARIAN</p>
</section>
<section class="stats">
<div class="spec-cell">
<span class="cell-value">{{ runs|length }}</span>
<span class="cell-label">TOTAL RUN</span>
</div>
<div class="spec-cell">
<span class="cell-value">{{ payments|length }}</span>
<span class="cell-label">TOTAL TRANSFER</span>
</div>
</section>
<section class="spec-list">
<div class="list-header">
<span>RUN</span>
<span>TANGGAL</span>
<span>SALDO AWAL</span>
<span>PEMILIH</span>
<span>TERKIRIM</span>
<span>STATUS</span>
</div>
<div class="list-rows">
{% for run in runs %}
<div class="list-row">
<span class="rank">{{ run[0] }}</span>
<span class="owner">{{ run[1] }}</span>
<span class="stake" data-label="SALDO AWAL">{{ run[2]|vex }}</span>
<span class="vote-date" data-label="PEMILIH">{{ run[3] }}</span>
<span class="stake" data-label="TERKIRIM">{{ run[5]|vex }}</span>
<span class="vote-date" data-label="STATUS">{{ 'OK' if run[6] == 'ok' else 'SEBAGIAN' }}</span>
</div>
{% else %}
<div class="empty">BELUM ADA RUN — JALANKAN distribute.py</div>
{% endfor %}
</div>
</section>
<p class="caption">TRANSFER PER PEMILIH</p>
<section class="spec-list">
<div class="list-header">
<span>AKUN</span>
<span>TANGGAL</span>
<span>JUMLAH</span>
<span>STATUS</span>
<span>MEMO</span>
<span>TXID</span>
</div>
<div class="list-rows">
{% for pay in payments %}
<div class="list-row">
<span class="owner">{{ pay[2] }}</span>
<span class="vote-date" data-label="TANGGAL">{{ pay[10] }}</span>
<span class="stake" data-label="JUMLAH">{{ pay[3]|vex }}</span>
<span class="vote-date" data-label="STATUS">{{ pay[6]|upper }}</span>
<span class="txid memo" data-label="MEMO">{{ pay[4] }}</span>
<span class="owner txid" data-label="TXID">{{ pay[5] or '—' }}</span>
</div>
{% else %}
<div class="empty">BELUM ADA TRANSFER</div>
{% endfor %}
</div>
</section>
</main>
<footer class="footer">
<span>DATA TERVALIDASI DARI JARINGAN VEXANIUM · VEX.TOKEN · TRANSFER</span>
</footer>
</body>
</html>
+1 -1
View File
@@ -13,7 +13,7 @@
<header class="top-nav">
<span class="nav-label">DAFTAR</span>
<span class="wordmark">DATABISNISID</span>
<span class="nav-label">VEX</span>
<span class="nav-label"><a class="nav-link" href="{{ url_for('history') }}">RIWAYAT</a></span>
</header>
<main class="page">