Round DSP report values to whole numbers

This commit is contained in:
2026-10-15 14:49:33 +08:00
parent 29eb138f93
commit fdf269e3f5
2 changed files with 10 additions and 6 deletions
+3 -3
View File
@@ -241,7 +241,7 @@
<button id="nextPage" type="button">下一页</button> <button id="nextPage" type="button">下一页</button>
</nav> </nav>
</section> </section>
<p class="footnote"><strong>差额规则:</strong>T-1 − T-2 和 T-1 − T-4:≥ +100 显示绿色;≤ −100 显示红色;其余差额显示黑色。页面数据由 AgentStage 每日 10:45(Asia/Shanghai)自动更新。</p> <p class="footnote"><strong>差额规则:</strong>T-1 − T-2 和 T-1 − T-4:≥ +100 显示绿色;≤ −100 显示红色;其余差额显示黑色。页面数据由自动任务每日 10:30(Asia/Shanghai)更新。</p>
</main> </main>
<script> <script>
@@ -256,12 +256,12 @@
page: 1, page: 1,
pageSize: 100, pageSize: 100,
}; };
const numberFormatter = new Intl.NumberFormat('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 }); const numberFormatter = new Intl.NumberFormat('en-US', { maximumFractionDigits: 0 });
const compactFormatter = new Intl.NumberFormat('en-US', { notation: 'compact', maximumFractionDigits: 1 }); const compactFormatter = new Intl.NumberFormat('en-US', { notation: 'compact', maximumFractionDigits: 1 });
const dateFormatter = new Intl.DateTimeFormat('zh-CN', { dateStyle: 'medium', timeStyle: 'short' }); const dateFormatter = new Intl.DateTimeFormat('zh-CN', { dateStyle: 'medium', timeStyle: 'short' });
const $ = (id) => document.getElementById(id); const $ = (id) => document.getElementById(id);
const text = (value) => (value === undefined || value === null ? '' : String(value)); const text = (value) => (value === undefined || value === null ? '' : String(value));
const money = (value) => numberFormatter.format(Number(value || 0)); const money = (value) => numberFormatter.format(Math.round(Number(value || 0)));
const shortDate = (date) => date && date.length >= 10 ? date.slice(5).replace('-', '/') : text(date); const shortDate = (date) => date && date.length >= 10 ? date.slice(5).replace('-', '/') : text(date);
const svgNode = (name, attributes = {}) => { const svgNode = (name, attributes = {}) => {
const node = document.createElementNS('http://www.w3.org/2000/svg', name); const node = document.createElementNS('http://www.w3.org/2000/svg', name);
+7 -3
View File
@@ -59,11 +59,15 @@ def read_response(response) -> str:
return response.read().decode("utf-8", errors="replace") return response.read().decode("utf-8", errors="replace")
def to_number(value) -> float: def to_number(value) -> int:
"""Return a nearest whole number for report metrics."""
try: try:
return float(value or 0) number = float(value or 0)
except (TypeError, ValueError): except (TypeError, ValueError):
return 0.0 return 0
# Metrics are non-negative in the source; this also handles any negative
# values with conventional half-away-from-zero rounding.
return int(number + 0.5) if number >= 0 else int(number - 0.5)
def normalise_date(value) -> str: def normalise_date(value) -> str: