analista: testata mostra trading_giorno (non l'equity grezza) e 'nel giorno', non 'oggi' (#35 C8)
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
+14
-1
@@ -206,9 +206,22 @@ def testata(voce: dict) -> str:
|
||||
p, lb = voce.get("pnl") or {}, voce.get("libro") or {}
|
||||
dq, cum = p.get("delta_equity"), p.get("cumulato_da_arming")
|
||||
eq = p.get("equity_fine")
|
||||
# (#35 C8) il cron gira alle 00:30 sul giorno CHIUSO: "oggi" e' ieri -> "nel giorno". E se
|
||||
# ci sono movimenti di capitale CERTI (mov_giorno; bool() come journal.scorporo: assente o
|
||||
# 0 -> nessun movimento) la cifra da mostrare e' trading_giorno (al netto), non l'equity
|
||||
# grezza: altrimenti un versamento si legge come P&L (successo il 25/08, +$1.399 letti come
|
||||
# profitto). Se trading_giorno non e' calcolabile si resta su delta_equity, ma con l'etichetta
|
||||
# nuova: non e' "oggi", e non e' comunque il trading al netto.
|
||||
dq_t = p.get("trading_giorno")
|
||||
if p.get("mov_giorno") and dq_t is not None:
|
||||
nota_dq = f" ({dq_t:+.2f} nel giorno, di cui {p['mov_giorno']:+.2f} movimenti)"
|
||||
elif dq is not None:
|
||||
nota_dq = f" ({dq:+.2f} nel giorno)"
|
||||
else:
|
||||
nota_dq = ""
|
||||
r = [f"<b>📓 Giornale — {_b(voce['giorno'])}</b>"]
|
||||
r.append(" equity " + (f"<b>${eq:,.2f}</b>" if eq is not None else "n/d")
|
||||
+ ("" if dq is None else f" ({dq:+.2f} oggi)")
|
||||
+ nota_dq
|
||||
+ ("" if cum is None else f" · dall'arming {cum:+.2f}"
|
||||
+ (f" (di cui {p['mov_arming']:+.2f} versati -> trading "
|
||||
f"{p['trading_da_arming']:+.2f})"
|
||||
|
||||
@@ -285,6 +285,39 @@ def test_la_testata_porta_i_numeri_che_si_leggono_dalla_notifica():
|
||||
t = A.testata(_voce_piena())
|
||||
assert "$637.36" in t and "+2.36" in t and "+39.30" in t
|
||||
assert "BTC $+116" in t and "leva 0.41x" in t and "1 fill" in t
|
||||
# (#35 C8) il cron gira alle 00:30 sul giorno CHIUSO: non e' "oggi", e' "nel giorno".
|
||||
assert "nel giorno" in t and "oggi" not in t
|
||||
|
||||
|
||||
def test_testata_con_movimento_mostra_trading_giorno_non_il_grezzo():
|
||||
"""(#35 C8) Un versamento di $1.399 non deve leggersi come P&L: con mov_giorno != 0 e
|
||||
trading_giorno calcolabile, la cifra mostrata e' trading_giorno, non delta_equity."""
|
||||
voce = _voce_piena()
|
||||
voce["pnl"] = dict(voce["pnl"], delta_equity=1401.36, mov_giorno=1399.0, trading_giorno=2.36)
|
||||
t = A.testata(voce)
|
||||
assert "+2.36 nel giorno" in t
|
||||
assert "di cui +1399.00 movimenti" in t
|
||||
assert "+1401.36" not in t # il grezzo non compare piu' in testata
|
||||
|
||||
|
||||
def test_testata_con_movimento_ma_trading_giorno_none_resta_sul_grezzo():
|
||||
"""(#35 C8) Se trading_giorno non e' calcolabile (None) si resta su delta_equity, ma con
|
||||
l'etichetta nuova, non "oggi"."""
|
||||
voce = _voce_piena()
|
||||
voce["pnl"] = dict(voce["pnl"], delta_equity=1401.36, mov_giorno=1399.0, trading_giorno=None)
|
||||
t = A.testata(voce)
|
||||
assert "+1401.36 nel giorno" in t
|
||||
assert "di cui" not in t
|
||||
|
||||
|
||||
def test_testata_senza_movimento_mostra_il_grezzo_con_etichetta_nuova():
|
||||
"""(#35 C8) mov_giorno assente o 0: nessun movimento da scorporare, stesso trattamento di
|
||||
journal.scorporo (bool())."""
|
||||
voce = _voce_piena()
|
||||
voce["pnl"] = dict(voce["pnl"], mov_giorno=0.0, trading_giorno=2.36)
|
||||
t = A.testata(voce)
|
||||
assert "+2.36 nel giorno" in t
|
||||
assert "di cui" not in t
|
||||
|
||||
|
||||
def test_il_messaggio_sfugge_l_HTML_e_converte_il_grassetto():
|
||||
|
||||
Reference in New Issue
Block a user