移除日历视图:功能与决策卡重叠,维护成本高于价值

- 删除 CalendarView.tsx、calendar-action-utils.ts 及其测试文件
- 删除 ScanTerminalCalendar.module.css
- ScanTerminalDashboard:移除日历 tab 按钮、日历渲染分支、ContentView 类型中的 calendar
- ScanTerminalLightTheme:清理所有 .scan-calendar-* 规则(~40 行)
- scan-root-styles.ts:移除 ScanTerminalCalendar 导入

同时完善地理排序:
- scan_terminal_filters.py:market_region_from_tz_offset 细化为 7 个区域(东亚/东南亚/中亚/西亚/欧洲非洲/南美/北美)并增加 sort_order
- scan_terminal_city_row.py:传递 trading_region_sort
- dashboard-types.ts:增加 trading_region_sort 字段
- decision-utils.ts:sortRowsByUserTime 按 trading_region_sort 优先排序

Rejected: keep-calendar-view, calendar-actions-overlap-with-decision-cards
Tested: npx tsc --noEmit, python -m ruff check .
This commit is contained in:
2569718930@qq.com
2026-05-10 15:48:18 +08:00
parent 5ff9fade5f
commit 9635387beb
11 changed files with 28 additions and 1054 deletions
@@ -30,7 +30,6 @@
.root :global(.scan-terminal.light .scan-detail-volume-big),
.root :global(.scan-terminal.light .scan-kv strong),
.root :global(.scan-terminal.light .scan-time-main),
.root :global(.scan-terminal.light .scan-calendar-group-label),
.root :global(.scan-terminal.light .scan-summary-value),
.root :global(.scan-terminal.light .scan-distribution-card strong),
.root :global(.scan-terminal.light .scan-table-header),
@@ -141,8 +140,6 @@
.root :global(.scan-terminal.light .scan-mode-tab),
.root :global(.scan-terminal.light .scan-table-shell),
.root :global(.scan-terminal.light .scan-table-header),
.root :global(.scan-terminal.light .scan-calendar-group),
.root :global(.scan-terminal.light .scan-calendar-card),
.root :global(.scan-terminal.light .scan-summary-card),
.root :global(.scan-terminal.light .scan-settings-card),
.root :global(.scan-terminal.light .scan-distribution-card),
@@ -170,66 +167,6 @@
color: #475569;
}
.root :global(.scan-terminal.light .scan-calendar-group-sub),
.root :global(.scan-terminal.light .scan-calendar-deb span),
.root :global(.scan-terminal.light .scan-calendar-city-time) {
color: #647a98;
}
.root :global(.scan-terminal.light .scan-calendar-deb b) {
color: #122033;
}
.root :global(.scan-terminal.light .scan-calendar-reason) {
color: #334155;
}
.root :global(.scan-terminal.light .scan-calendar-card.peak-active) {
border-color: rgba(10, 160, 100, 0.34);
background: linear-gradient(180deg, rgba(220, 252, 239, 0.84), rgba(255, 255, 255, 0.86));
}
.root :global(.scan-terminal.light .scan-calendar-header) {
background: linear-gradient(135deg, rgba(59, 130, 246, 0.06), rgba(16, 185, 129, 0.03));
border-color: rgba(37, 99, 235, 0.14);
}
.root :global(.scan-terminal.light .scan-calendar-clock-time) {
color: #0F172A;
}
.root :global(.scan-terminal.light .scan-calendar-clock-date) {
color: #475569;
}
.root :global(.scan-terminal.light .scan-calendar-clock-meta) {
color: #64748B;
}
.root :global(.scan-terminal.light .scan-calendar-user-time) {
background: rgba(37, 99, 235, 0.04);
}
.root :global(.scan-terminal.light .scan-calendar-user-label),
.root :global(.scan-terminal.light .scan-calendar-phase),
.root :global(.scan-terminal.light .scan-calendar-group-sub),
.root :global(.scan-terminal.light .scan-calendar-city-time) {
color: #64748B;
}
.root :global(.scan-terminal.light .scan-calendar-group-count) {
background: rgba(37, 99, 235, 0.1);
color: #2563EB;
}
.root :global(.scan-terminal.light .scan-calendar-empty-title) {
color: #0F172A;
}
.root :global(.scan-terminal.light .scan-calendar-empty-sub) {
color: #475569;
}
.root :global(.scan-terminal.light .scan-mode-tab.active .scan-mode-icon) {
background: rgba(16, 185, 129, 0.16);
color: #069668;
@@ -695,9 +632,6 @@
.root :global(.scan-terminal.light .panel-weather-chip),
.root :global(.scan-terminal.light .scan-distribution-card),
.root :global(.scan-terminal.light .scan-chart-legend),
.root :global(.scan-terminal.light .scan-calendar-group-sub),
.root :global(.scan-terminal.light .scan-calendar-deb span),
.root :global(.scan-terminal.light .scan-calendar-city-time),
.root :global(.scan-terminal.light .scan-opportunity-ai small),
.root :global(.scan-terminal.light .scan-ai-log-head span),
.root :global(.scan-terminal.light .scan-ai-log-time),