2e9c7cd69e
Core changes: - Refactor FastAnalysisService: single LLM multi-factor analysis replaces 7-agent pipeline; add multi-timeframe consensus, threshold calibration, confidence calibration, multi-model ensemble voting - Add RAG memory injection and reflection validation (analysis_memory + reflection worker) - Simplify billing config: remove unused strategy_run/backtest/portfolio_monitor, add ai_code_gen separate billing (different token consumption scale) - Settings hot-reload after save, no backend restart needed Frontend: - Global dark theme overhaul: pure black palette replacing blue-tinted colors across sidebar/header/dashboard/analysis/K-line/user-manage/profile/settings/billing - Fix USDT payment modal dark theme (portal rendering broke CSS selectors) - Refactor position modal: direction + quantity + entry price, remove add/reduce logic, show raw DB values on re-open, save exactly what user inputs - Fix Polymarket prediction market dark text - i18n for position modal title Backend: - Position management: one record per symbol (DELETE+INSERT replacing ON CONFLICT with side), fixes PnL showing 0 when switching long/short - MarketDataCollector data fetching optimization - portfolio_monitor scheduled monitoring improvements - env.example reorganized: common config first, advanced config last Documentation: - README architecture diagram updated to FastAnalysisService flow - Add virtual position, AI tuning config, billing items documentation - Add INDICATOR_DEFINITIONS_CN.md, FRONTEND_FAST_ANALYSIS.md Made-with: Cursor
1 line
9.6 KiB
CSS
1 line
9.6 KiB
CSS
.user-manage-page[data-v-f0405968]{padding:24px;min-height:calc(100vh - 120px);background:-webkit-gradient(linear,left top,left bottom,from(#f8fafc),to(#f1f5f9));background:linear-gradient(180deg,#f8fafc,#f1f5f9)}.user-manage-page .page-header[data-v-f0405968]{margin-bottom:24px}.user-manage-page .page-header .page-title[data-v-f0405968]{font-size:24px;font-weight:700;margin:0 0 8px 0;color:#1e3a5f;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px}.user-manage-page .page-header .page-title .anticon[data-v-f0405968]{font-size:28px;color:#1890ff}.user-manage-page .page-header .page-desc[data-v-f0405968]{color:#64748b;font-size:14px;margin:0}.user-manage-page .manage-tabs[data-v-f0405968] .ant-tabs-bar{margin-bottom:20px}.user-manage-page .summary-cards[data-v-f0405968]{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:20px}.user-manage-page .summary-cards .summary-card[data-v-f0405968]{background:#fff;border-radius:12px;padding:20px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:16px;-webkit-box-shadow:0 2px 12px rgba(0,0,0,.06);box-shadow:0 2px 12px rgba(0,0,0,.06);-webkit-transition:-webkit-transform .2s,-webkit-box-shadow .2s;transition:-webkit-transform .2s,-webkit-box-shadow .2s;transition:transform .2s,box-shadow .2s;transition:transform .2s,box-shadow .2s,-webkit-transform .2s,-webkit-box-shadow .2s}.user-manage-page .summary-cards .summary-card[data-v-f0405968]:hover{-webkit-transform:translateY(-2px);transform:translateY(-2px);-webkit-box-shadow:0 4px 20px rgba(0,0,0,.1);box-shadow:0 4px 20px rgba(0,0,0,.1)}.user-manage-page .summary-cards .summary-card .summary-icon[data-v-f0405968]{width:48px;height:48px;border-radius:12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-ms-flex-negative:0;flex-shrink:0}.user-manage-page .summary-cards .summary-card .summary-icon .anticon[data-v-f0405968]{font-size:22px;color:#fff}.user-manage-page .summary-cards .summary-card .summary-info[data-v-f0405968]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.user-manage-page .summary-cards .summary-card .summary-info .summary-value[data-v-f0405968]{font-size:22px;font-weight:700;color:#1e293b;line-height:1.3}.user-manage-page .summary-cards .summary-card .summary-info .summary-value .roi-badge[data-v-f0405968]{font-size:13px;font-weight:600;margin-left:6px;padding:1px 6px;border-radius:4px;background:rgba(0,0,0,.04)}.user-manage-page .summary-cards .summary-card .summary-info .summary-sub[data-v-f0405968]{font-size:12px;color:#64748b;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-manage-page .summary-cards .summary-card .summary-info .summary-label[data-v-f0405968]{font-size:13px;color:#94a3b8;margin-top:2px}.user-manage-page .toolbar[data-v-f0405968]{margin-bottom:16px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.user-manage-page .toolbar .toolbar-left[data-v-f0405968],.user-manage-page .toolbar .toolbar-right[data-v-f0405968]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px}.user-manage-page .user-table-card[data-v-f0405968]{border-radius:12px;-webkit-box-shadow:0 4px 20px rgba(0,0,0,.08);box-shadow:0 4px 20px rgba(0,0,0,.08)}.user-manage-page .user-table-card .text-muted[data-v-f0405968]{color:#94a3b8}.user-manage-page .text-profit[data-v-f0405968]{color:#52c41a;font-weight:600}.user-manage-page .text-loss[data-v-f0405968]{color:#ff4d4f;font-weight:600}.user-manage-page .pnl-value[data-v-f0405968]{font-size:14px}.user-manage-page .roi-text[data-v-f0405968]{font-size:12px;margin-left:4px}.user-manage-page .pnl-detail[data-v-f0405968]{font-size:11px;margin-top:2px}.user-manage-page .symbol-text[data-v-f0405968]{font-weight:500}.user-manage-page .symbol-count[data-v-f0405968]{font-size:11px;margin-top:2px}.user-manage-page .status-cell[data-v-f0405968]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;white-space:nowrap}.user-manage-page .status-cell .status-dot[data-v-f0405968]{display:inline-block;width:7px;height:7px;border-radius:50%;-ms-flex-negative:0;flex-shrink:0}.user-manage-page .status-cell .status-dot.dot-running[data-v-f0405968]{background:#52c41a;-webkit-box-shadow:0 0 6px rgba(82,196,26,.5);box-shadow:0 0 6px rgba(82,196,26,.5);-webkit-animation:pulse-green-f0405968 2s infinite;animation:pulse-green-f0405968 2s infinite}.user-manage-page .status-cell .status-dot.dot-stopped[data-v-f0405968]{background:#d9d9d9}.user-manage-page .status-cell .status-running[data-v-f0405968]{color:#52c41a;font-weight:500;font-size:13px}.user-manage-page .status-cell .status-stopped[data-v-f0405968]{color:#999;font-size:13px}@-webkit-keyframes pulse-green-f0405968{0%,to{opacity:1}50%{opacity:.5}}@keyframes pulse-green-f0405968{0%,to{opacity:1}50%{opacity:.5}}.user-manage-page .user-cell[data-v-f0405968]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;max-width:100%;overflow:hidden;white-space:nowrap;cursor:default}.user-manage-page .user-cell .user-name[data-v-f0405968]{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:80px}.user-manage-page .indicator-name[data-v-f0405968]{color:#722ed1;font-size:12px}.user-manage-page .exchange-name[data-v-f0405968]{font-size:12px;text-transform:capitalize}.user-manage-page .address-text[data-v-f0405968],.user-manage-page .hash-text[data-v-f0405968]{font-family:Roboto Mono,Courier New,monospace;font-size:12px;color:#1890ff;cursor:pointer}.user-manage-page .address-text[data-v-f0405968]:hover,.user-manage-page .hash-text[data-v-f0405968]:hover{text-decoration:underline}.user-manage-page[data-v-f0405968] .ant-tag.ant-tag-grey{background-color:#f5f5f5;border-color:#d9d9d9;color:#595959}.user-manage-page.theme-dark[data-v-f0405968]{background:-webkit-gradient(linear,left top,left bottom,from(#141414),to(#1c1c1c));background:linear-gradient(180deg,#141414,#1c1c1c)}.user-manage-page.theme-dark .page-header .page-title[data-v-f0405968]{color:#e0e6ed}.user-manage-page.theme-dark .page-header .page-desc[data-v-f0405968]{color:#8b949e}.user-manage-page.theme-dark .manage-tabs[data-v-f0405968] .ant-tabs-bar{border-bottom-color:#2a2a2a}.user-manage-page.theme-dark .manage-tabs[data-v-f0405968] .ant-tabs-tab{color:#8b949e}.user-manage-page.theme-dark .manage-tabs[data-v-f0405968] .ant-tabs-tab:hover{color:#c9d1d9}.user-manage-page.theme-dark .manage-tabs[data-v-f0405968] .ant-tabs-tab-active{color:#1890ff}.user-manage-page.theme-dark .summary-cards .summary-card[data-v-f0405968]{background:#1c1c1c;-webkit-box-shadow:0 2px 12px rgba(0,0,0,.3);box-shadow:0 2px 12px rgba(0,0,0,.3)}.user-manage-page.theme-dark .summary-cards .summary-card .summary-info .summary-value[data-v-f0405968]{color:#e0e6ed}.user-manage-page.theme-dark .summary-cards .summary-card .summary-info .summary-value .roi-badge[data-v-f0405968]{background:hsla(0,0%,100%,.08)}.user-manage-page.theme-dark .summary-cards .summary-card .summary-info .summary-sub[data-v-f0405968]{color:#8b949e}.user-manage-page.theme-dark .summary-cards .summary-card .summary-info .summary-label[data-v-f0405968]{color:#6e7681}.user-manage-page.theme-dark .user-table-card[data-v-f0405968]{background:#1c1c1c;-webkit-box-shadow:0 4px 24px rgba(0,0,0,.25);box-shadow:0 4px 24px rgba(0,0,0,.25)}.user-manage-page.theme-dark .user-table-card[data-v-f0405968] .ant-card-body{background:#1c1c1c}.user-manage-page.theme-dark .user-table-card[data-v-f0405968] .ant-table{background:#1c1c1c;color:#c9d1d9}.user-manage-page.theme-dark .user-table-card[data-v-f0405968] .ant-table .ant-table-thead>tr>th{background:#252525;color:#e0e6ed;border-bottom-color:#2a2a2a}.user-manage-page.theme-dark .user-table-card[data-v-f0405968] .ant-table .ant-table-tbody>tr>td{border-bottom-color:#2a2a2a}.user-manage-page.theme-dark .user-table-card[data-v-f0405968] .ant-table .ant-table-tbody>tr:hover>td{background:#252525}.user-manage-page.theme-dark .user-table-card .text-muted[data-v-f0405968]{color:#6e7681}.user-manage-page.theme-dark .user-table-card h4[data-v-f0405968]{color:#e0e6ed!important}.user-manage-page .credits-value[data-v-f0405968]{font-weight:600;color:#722ed1}.user-manage-page .current-credits-info[data-v-f0405968],.user-manage-page .current-vip-info[data-v-f0405968]{margin-bottom:16px;padding:12px 16px;background:#f5f5f5;border-radius:8px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px}.user-manage-page .current-credits-info .label[data-v-f0405968],.user-manage-page .current-vip-info .label[data-v-f0405968]{color:#666}.user-manage-page .current-credits-info .value[data-v-f0405968],.user-manage-page .current-vip-info .value[data-v-f0405968]{font-weight:600;color:#1890ff;font-size:18px}.user-manage-page .current-credits-info .value.active[data-v-f0405968],.user-manage-page .current-vip-info .value.active[data-v-f0405968]{color:#52c41a}.user-manage-page .current-credits-info .value.expired[data-v-f0405968],.user-manage-page .current-vip-info .value.expired[data-v-f0405968]{color:#999}@media (max-width:1200px){.summary-cards[data-v-f0405968]{grid-template-columns:repeat(2,1fr)!important}}@media (max-width:768px){.summary-cards[data-v-f0405968]{grid-template-columns:1fr!important}} |