feat: add structured manual trading journal

This commit is contained in:
leefer
2026-07-23 00:12:28 +08:00
parent a2a5db8f6a
commit 7d8d270e98
8 changed files with 564 additions and 1 deletions
+58
View File
@@ -11472,3 +11472,61 @@ button.account-role-badge:focus-visible { outline: 2px solid var(--blue); outlin
.alert-item-icon { width: 32px; height: 32px; }
.alert-item-actions { grid-column: 2; }
}
.trade-journal-section { grid-column: 1 / -1; padding: 0; }
.trade-journal-section > .workspace-heading { padding: 16px 16px 0; }
.trade-log-form { padding: 16px; border-top: 1px solid var(--border); border-bottom: 1px solid var(--border); background: var(--surface-muted); }
.trade-log-form-grid { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 12px; }
.trade-tags-field { grid-column: span 2; }
.trade-log-text-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 12px; }
.trade-log-text-grid textarea { min-height: 82px; }
.trade-log-summary {
display: grid;
grid-template-columns: repeat(5, minmax(0, 1fr));
border-top: 1px solid var(--border);
background: var(--surface);
}
.trade-log-summary > div { padding: 11px 16px; border-right: 1px solid var(--border); }
.trade-log-summary > div:last-child { border-right: 0; }
.trade-log-summary span { display: block; color: var(--text-secondary); font-size: 11px; }
.trade-log-summary strong { display: block; margin-top: 4px; font-size: 15px; font-variant-numeric: tabular-nums; }
.trade-log-table-frame { max-height: 520px; border: 0; border-radius: 0; }
.trade-log-table { min-width: 1380px; }
.trade-log-table td.number small { display: block; margin-top: 3px; font-size: 9px; }
.trade-copy { max-width: 210px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--text-secondary); }
.trade-row-actions { display: flex; gap: 4px; }
.trade-action,
.trade-emotion {
display: inline-flex;
min-height: 22px;
align-items: center;
padding: 0 7px;
border: 1px solid var(--border);
border-radius: 4px;
background: var(--surface-muted);
font-size: 10px;
white-space: nowrap;
}
.trade-action-buy,
.trade-action-add { border-color: #efc5c8; background: var(--market-up-soft); color: var(--market-up); }
.trade-action-sell,
.trade-action-trim { border-color: #b9dfcf; background: var(--market-down-soft); color: var(--market-down); }
.trade-tags { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 5px; }
.trade-tags em { padding: 2px 5px; border-radius: 3px; background: var(--action-soft); color: var(--action); font-size: 9px; font-style: normal; }
@media (max-width: 900px) {
.trade-log-form-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.trade-tags-field { grid-column: auto; }
}
@media (max-width: 720px) {
.trade-log-summary { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.trade-log-summary > div { border-bottom: 1px solid var(--border); }
.trade-log-summary > div:nth-child(2n) { border-right: 0; }
.trade-log-form-grid,
.trade-log-text-grid { grid-template-columns: 1fr; }
}