V40-V43: band umur vote (BARU/VALID/KADALUARSA, scan simpan semua umur) → REVOTE = VALID langsung (V42) → tag mint 1-hari + badge VOTE ULANG SEGERA (V43) ; klaim recovery jendela lewat + parse respons dict rows (B7/B8) ; backend mysql test_mariadb ; oracle test_dashboard/distribute/get_voters/mariadb ; images web/scan/dist/claim rebuild + push

This commit is contained in:
proitlab committed 2026-08-07 12:07:34 +07:00
1 parent af9a0291b9
commit 81ec6bdfe7
17 files changed
+914 -148

No files matched your search

+78 -6
View File
@@ -7,7 +7,7 @@
<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', v=9) }}">
<link rel="stylesheet" href="{{ url_for('static', filename='style.css', v=14) }}">
</head>
<body>
<header class="top-nav">
@@ -64,6 +64,7 @@
{% if q %}HASIL · {{ filtered_count }} AKUN UNTUK "{{ q }}"{% endif %}
</p>
{% if q %}
<section class="spec-list voter-list" id="spec-list">
<div class="list-header">
<span>RANK</span>
@@ -73,22 +74,92 @@
<span>VOTE TERAKHIR</span>
</div>
<div class="list-rows" id="rows">
{% for r in search_rows %}
<div class="list-row{% if r.expired %} expired{% endif %}">
<span class="rank">{{ r.rank }}</span>
<span class="owner">{{ r.owner }} <span class="group-tag tag-{{ r.group }}">{{ {'baru': 'BARU', 'revote': 'REVOTE', 'valid': 'VALID', 'kadaluarsa': 'KADALUARSA'}[r.group] }}</span>{% if r.expiring %}<span class="warn-badge">VOTE ULANG SEGERA</span>{% endif %}{% if r.expired %}<span class="expired-badge">VOTE ULANG</span>{% endif %}</span>
<span class="stake" data-label="STAKE (VEX)">{{ r.staked|vex }}</span>
<span class="reward" data-label="TOTAL REWARD (VEX)">{{ r.total_reward|vex }}</span>
<span class="vote-date" data-label="VOTE TERAKHIR">{{ r.last_vote|shortdate }}</span>
</div>
{% else %}
<div class="empty">TAK ADA AKUN COCOK — "{{ q }}"</div>
{% endfor %}
</div>
</section>
{% else %}
{% if new_rows %}
<section class="spec-list band-list news-list">
<p class="caption section-caption">PEMILIH BARU · BELUM MATANG (0-3 HARI) · {{ new_count }}</p>
<div class="list-header">
<span>RANK</span>
<span>AKUN</span>
<span>STAKE (VEX)</span>
<span>TOTAL REWARD (VEX)</span>
<span>VOTE TERAKHIR</span>
</div>
<div class="list-rows">
{% for row in new_rows %}
<div class="list-row">
<span class="rank">{{ loop.index }}</span>
<span class="owner">{{ row[0] }} <span class="group-tag tag-baru">BARU</span></span>
<span class="stake" data-label="STAKE (VEX)">{{ row[1]|vex }}</span>
<span class="reward" data-label="TOTAL REWARD (VEX)">{{ row[3]|vex }}</span>
<span class="vote-date" data-label="VOTE TERAKHIR">{{ row[2]|shortdate }}</span>
</div>
{% endfor %}
</div>
</section>
{% endif %}
{% if revote_count %}
<p class="caption section-legend mint-legend">TAG MINT = REVOTE KURANG DARI 1 HARI · VALID LANGSUNG · {{ revote_count }} AKUN</p>
{% endif %}
<section class="spec-list voter-list" id="spec-list">
{% if expiring_count %}
<p class="caption section-legend warn-legend">TAG AMBER = KADALUARSA DALAM {{ warn_days }} HARI — VOTE ULANG DATABISNISID · {{ expiring_count }} PEMILIH</p>
{% endif %}
{% if expired_rows %}
<p class="caption section-legend">BARIS AMBER = VOTE LEWAT {{ stale_days }} HARI — VOTE ULANG DATABISNISID UNTUK TETAP MENERIMA PROFIT SHARE · {{ expired_count }} SUARA KADALUARSA</p>
{% endif %}
<div class="list-header">
<span>RANK</span>
<span>AKUN</span>
<span>STAKE (VEX)</span>
<span>TOTAL REWARD (VEX)</span>
<span>VOTE TERAKHIR</span>
</div>
<div class="list-rows" id="rows">
{% for row in expired_rows %}
<div class="list-row expired">
<span class="rank">{{ loop.index }}</span>
<span class="owner">{{ row[0] }} <span class="expired-badge">VOTE ULANG</span></span>
<span class="stake" data-label="STAKE (VEX)">{{ row[1]|vex }}</span>
<span class="reward" data-label="TOTAL REWARD (VEX)">{{ row[3]|vex }}</span>
<span class="vote-date" data-label="VOTE TERAKHIR">{{ row[2]|shortdate }}</span>
</div>
{% endfor %}
{% for row in rows %}
<div class="list-row">
<span class="rank">{{ row[4] }}</span>
<span class="owner">{{ row[0] }}</span>
<span class="rank">{{ row[4] + expired_count }}</span>
<span class="owner">{{ row[0] }}{% if row[8] %} <span class="group-tag tag-revote">REVOTE</span>{% endif %}{% if row[9] %} <span class="warn-badge">VOTE ULANG SEGERA</span>{% endif %}</span>
<span class="stake" data-label="STAKE (VEX)">{{ row[1]|vex }}</span>
<span class="reward" data-label="TOTAL REWARD (VEX)">{{ row[6]|vex }}</span>
<span class="vote-date" data-label="VOTE TERAKHIR">{{ row[5]|shortdate }}</span>
</div>
{% else %}
<div class="empty">
{% if q %}TAK ADA AKUN COCOK — "{{ q }}"{% else %}BELUM ADA DATA — JALANKAN get_voters.py{% endif %}
</div>
{% if not expired_rows %}
<div class="empty">BELUM ADA DATA — JALANKAN get_voters.py</div>
{% endif %}
{% endfor %}
</div>
</section>
{% endif %}
{% if not q %}
<nav class="pager" id="pager" aria-label="Navigasi halaman">
{% set qp = q if q else None %}
<a class="pill {% if page <= 1 %}pill-disabled{% endif %}"
@@ -97,6 +168,7 @@
<a class="pill {% if page >= total_pages %}pill-disabled{% endif %}"
href="{{ url_for('index', page=page+1, q=qp) }}">BERIKUTNYA →</a>
</nav>
{% endif %}
</main>
<footer class="footer">