--- id: "0088i" title: "Trading: app `trading_journal` (reflection log)" status: pendiente type: feature domain: - trading scope: app-scoped priority: alta depends: [] blocks: [] related: [] created: 2026-05-17 updated: 2026-05-17 tags: [] --- # 0088i — Trading: app `trading_journal` (reflection log) **Status:** pendiente **Created:** 2026-05-14 **Type:** feature **Parent:** 0088 **Depends:** 0088a, 0088d **Blocks:** 0088j (assertions sobre adherencia a reflection) ## Problema Sin post-mortem por trade y por sesion, "mejorar" es una ilusion. El journal fuerza la reflexion en momentos clave (close de trade, fin de sesion, dia de drawdown notable). Es la pieza de **skill autoiterado** propiamente dicha: no es codigo del runner, es el ledger psicologico/operativo del operador. ## Piezas 1. App `projects/trading/apps/trading_journal/` (Mantine UI + sqlite_api + Go service). 2. Schema: - `sessions` (id, started_at, ended_at, market_context, mood_tag, notes). - `trade_reflections` (id, trade_group_id (link a transactions), opened_at, closed_at, thesis, what_went_right, what_went_wrong, lessons, tags, screenshots_paths). - `weekly_reviews` (id, week_iso, sharpe_week, drawdown_week, n_trades, adherence_score, lessons). - `tags` (id, name, color). 3. Reglas de UX: - **Forzar reflection** antes de marcar un trade_group como "closed". Si no se rellena, queda `closed_pending_reflection` y aparece destacado. - Atajo desde Mantine para vincular un trade con N screenshots (drop en local_files/). 4. Funciones puras: - `compute_adherence_score_py_finance(trades, plan_yaml) -> float` (mide cuanto de lo ejecutado coincide con el plan declarado). - `aggregate_weekly_metrics_py_finance(trades, reflections) -> dict`. 5. `e2e_checks`: build + smoke + check de `force_reflection` (intentar cerrar sin reflection devuelve 422). 6. Capability group `journal`. Pagina madre `docs/capabilities/journal.md`. ## Aceptacion - Cerrar trade sin reflection es imposible via UI/API. - Adherence score computable y exportable. - Weekly review autogenerado los domingos (cron) — opcional para cerrar el issue, no obligatorio. ## No-objetivos - AI auto-resumiendo reflections — futuro. - Sentiment analysis sobre notas.