From 2d969d666115efb5a2bf37d177e5400ac99a2537 Mon Sep 17 00:00:00 2001 From: Dinger Date: Tue, 24 Mar 2026 19:10:38 +0800 Subject: [PATCH] chore(frontend): rebuild dist for exchange modal updates - VERSION 3.0.4+build-20260324-2 - Includes IPv4/IPv6 whitelist display and related UI (source in local QuantDinger-Vue-src, not in repo) Made-with: Cursor --- frontend/VERSION | 2 +- frontend/dist/css/127.340147b1.css | 1 - frontend/dist/css/159.c13a970c.css | 1 + frontend/dist/css/170.2e8a4a95.css | 1 + frontend/dist/css/200.e5d22965.css | 1 + frontend/dist/css/221.340147b1.css | 1 - frontend/dist/css/275.1ff28001.css | 1 + frontend/dist/css/313.c13a970c.css | 1 + frontend/dist/css/420.2e8a4a95.css | 1 + frontend/dist/css/472.e7ead240.css | 1 - frontend/dist/css/488.c66b70a6.css | 1 - frontend/dist/css/662.ff086137.css | 1 - frontend/dist/css/668.b1bf2178.css | 1 + frontend/dist/css/727.b1bf2178.css | 1 + frontend/dist/css/795.752239ab.css | 1 - frontend/dist/css/798.c66b70a6.css | 1 - frontend/dist/css/805.ff086137.css | 1 - frontend/dist/css/855.e5d22965.css | 1 + frontend/dist/css/875.752239ab.css | 1 - .../{app.23a9a8f8.css => app.9dca4aef.css} | 2 +- ...e1bf67d0.css => theme-colors-6550dbc0.css} | 167 ++++++++++-------- frontend/dist/index.html | 2 +- frontend/dist/js/127-legacy.18ffff11.js | 1 - frontend/dist/js/159.70e0a0a9.js | 1 + frontend/dist/js/170-legacy.6fed9f9b.js | 1 + frontend/dist/js/200-legacy.5be65bce.js | 1 + frontend/dist/js/221.965c8579.js | 1 - frontend/dist/js/275-legacy.de5ce964.js | 1 + frontend/dist/js/275.7f1d5053.js | 1 + frontend/dist/js/313-legacy.5dbecb07.js | 1 + frontend/dist/js/420.3e3af7b7.js | 1 + frontend/dist/js/472-legacy.378c6ee4.js | 1 - frontend/dist/js/472.4317bd73.js | 1 - frontend/dist/js/488-legacy.c093a9e0.js | 1 - ...acy.07ea73fa.js => 506-legacy.d95b4e4d.js} | 2 +- .../js/{506.7a09321c.js => 506.dbfbc559.js} | 2 +- .../js/{611.a7ee790d.js => 611.caffc5da.js} | 2 +- frontend/dist/js/662.ec37067e.js | 1 - frontend/dist/js/668-legacy.b2485dd5.js | 1 + ...acy.1ac4000c.js => 684-legacy.1aed93ea.js} | 2 +- frontend/dist/js/727.f889c30b.js | 1 + frontend/dist/js/795.a2daad4d.js | 1 - frontend/dist/js/798.449c05b6.js | 1 - frontend/dist/js/805-legacy.7541cd95.js | 1 - frontend/dist/js/855.b7c480e0.js | 1 + frontend/dist/js/875-legacy.6eba2135.js | 1 - .../js/{916.c888fcbc.js => 916.7841c52d.js} | 2 +- ...acy.bf52892c.js => 973-legacy.a4d8239f.js} | 2 +- ...acy.fca528f4.js => app-legacy.6beb7055.js} | 2 +- .../js/{app.09efca8e.js => app.740bc472.js} | 2 +- ...f4.js => chunk-vendors-legacy.0b89f5de.js} | 4 +- ....74240b6f.js => chunk-vendors.b465f607.js} | 4 +- ...213cf.js => lang-zh-CN-legacy.36373cf6.js} | 2 +- ...acy.bbd28917.js => lang-zh-CN.4d84ea2b.js} | 2 +- 54 files changed, 127 insertions(+), 112 deletions(-) delete mode 100644 frontend/dist/css/127.340147b1.css create mode 100644 frontend/dist/css/159.c13a970c.css create mode 100644 frontend/dist/css/170.2e8a4a95.css create mode 100644 frontend/dist/css/200.e5d22965.css delete mode 100644 frontend/dist/css/221.340147b1.css create mode 100644 frontend/dist/css/275.1ff28001.css create mode 100644 frontend/dist/css/313.c13a970c.css create mode 100644 frontend/dist/css/420.2e8a4a95.css delete mode 100644 frontend/dist/css/472.e7ead240.css delete mode 100644 frontend/dist/css/488.c66b70a6.css delete mode 100644 frontend/dist/css/662.ff086137.css create mode 100644 frontend/dist/css/668.b1bf2178.css create mode 100644 frontend/dist/css/727.b1bf2178.css delete mode 100644 frontend/dist/css/795.752239ab.css delete mode 100644 frontend/dist/css/798.c66b70a6.css delete mode 100644 frontend/dist/css/805.ff086137.css create mode 100644 frontend/dist/css/855.e5d22965.css delete mode 100644 frontend/dist/css/875.752239ab.css rename frontend/dist/css/{app.23a9a8f8.css => app.9dca4aef.css} (91%) rename frontend/dist/css/{theme-colors-e1bf67d0.css => theme-colors-6550dbc0.css} (81%) delete mode 100644 frontend/dist/js/127-legacy.18ffff11.js create mode 100644 frontend/dist/js/159.70e0a0a9.js create mode 100644 frontend/dist/js/170-legacy.6fed9f9b.js create mode 100644 frontend/dist/js/200-legacy.5be65bce.js delete mode 100644 frontend/dist/js/221.965c8579.js create mode 100644 frontend/dist/js/275-legacy.de5ce964.js create mode 100644 frontend/dist/js/275.7f1d5053.js create mode 100644 frontend/dist/js/313-legacy.5dbecb07.js create mode 100644 frontend/dist/js/420.3e3af7b7.js delete mode 100644 frontend/dist/js/472-legacy.378c6ee4.js delete mode 100644 frontend/dist/js/472.4317bd73.js delete mode 100644 frontend/dist/js/488-legacy.c093a9e0.js rename frontend/dist/js/{506-legacy.07ea73fa.js => 506-legacy.d95b4e4d.js} (96%) rename frontend/dist/js/{506.7a09321c.js => 506.dbfbc559.js} (97%) rename frontend/dist/js/{611.a7ee790d.js => 611.caffc5da.js} (97%) delete mode 100644 frontend/dist/js/662.ec37067e.js create mode 100644 frontend/dist/js/668-legacy.b2485dd5.js rename frontend/dist/js/{684-legacy.1ac4000c.js => 684-legacy.1aed93ea.js} (96%) create mode 100644 frontend/dist/js/727.f889c30b.js delete mode 100644 frontend/dist/js/795.a2daad4d.js delete mode 100644 frontend/dist/js/798.449c05b6.js delete mode 100644 frontend/dist/js/805-legacy.7541cd95.js create mode 100644 frontend/dist/js/855.b7c480e0.js delete mode 100644 frontend/dist/js/875-legacy.6eba2135.js rename frontend/dist/js/{916.c888fcbc.js => 916.7841c52d.js} (96%) rename frontend/dist/js/{973-legacy.bf52892c.js => 973-legacy.a4d8239f.js} (96%) rename frontend/dist/js/{app-legacy.fca528f4.js => app-legacy.6beb7055.js} (51%) rename frontend/dist/js/{app.09efca8e.js => app.740bc472.js} (51%) rename frontend/dist/js/{chunk-vendors-legacy.a81203f4.js => chunk-vendors-legacy.0b89f5de.js} (99%) rename frontend/dist/js/{chunk-vendors.74240b6f.js => chunk-vendors.b465f607.js} (99%) rename frontend/dist/js/{lang-zh-CN.8bd213cf.js => lang-zh-CN-legacy.36373cf6.js} (61%) rename frontend/dist/js/{lang-zh-CN-legacy.bbd28917.js => lang-zh-CN.4d84ea2b.js} (61%) diff --git a/frontend/VERSION b/frontend/VERSION index 975ad37..6901158 100644 --- a/frontend/VERSION +++ b/frontend/VERSION @@ -1 +1 @@ -3.0.4+indicators-copy-strict-20260323 +3.0.4+build-20260324-2 diff --git a/frontend/dist/css/127.340147b1.css b/frontend/dist/css/127.340147b1.css deleted file mode 100644 index bb88163..0000000 --- a/frontend/dist/css/127.340147b1.css +++ /dev/null @@ -1 +0,0 @@ -.profile-page[data-v-6dceb76a]{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)}.profile-page .page-header[data-v-6dceb76a]{margin-bottom:24px}.profile-page .page-header .page-title[data-v-6dceb76a]{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}.profile-page .page-header .page-title .anticon[data-v-6dceb76a]{font-size:28px;color:#1890ff}.profile-page .page-header .page-desc[data-v-6dceb76a]{color:#64748b;font-size:14px;margin:0}.profile-page .profile-cards-row[data-v-6dceb76a]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.profile-page .profile-cards-row .profile-card-col .ant-card[data-v-6dceb76a],.profile-page .profile-cards-row .profile-card-col[data-v-6dceb76a],.profile-page .profile-cards-row .right-cards-col .ant-card[data-v-6dceb76a],.profile-page .profile-cards-row .right-cards-col[data-v-6dceb76a]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.profile-page .profile-cards-row .profile-card-col .ant-card[data-v-6dceb76a],.profile-page .profile-cards-row .right-cards-col .ant-card[data-v-6dceb76a]{height:100%}.profile-page .profile-cards-row .profile-card-col[data-v-6dceb76a] .ant-card-body,.profile-page .profile-cards-row .right-cards-col[data-v-6dceb76a] .ant-card-body{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.profile-page .profile-cards-row .right-cards-row[data-v-6dceb76a]{height:100%;display:-webkit-box;display:-ms-flexbox;display:flex}.profile-page .profile-cards-row .right-cards-row .ant-col .ant-card[data-v-6dceb76a],.profile-page .profile-cards-row .right-cards-row .ant-col[data-v-6dceb76a]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.profile-page .profile-cards-row .right-cards-row .ant-col .ant-card[data-v-6dceb76a]{height:100%}.profile-page .profile-cards-row .right-cards-row .ant-col[data-v-6dceb76a] .ant-card-body{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.profile-page .profile-card[data-v-6dceb76a]{border-radius:12px;-webkit-box-shadow:0 4px 20px rgba(0,0,0,.08);box-shadow:0 4px 20px rgba(0,0,0,.08);text-align:center}.profile-page .profile-card .avatar-section[data-v-6dceb76a]{padding:20px 0}.profile-page .profile-card .avatar-section .ant-avatar[data-v-6dceb76a]{-webkit-box-shadow:0 4px 12px rgba(0,0,0,.15);box-shadow:0 4px 12px rgba(0,0,0,.15)}.profile-page .profile-card .avatar-section .username[data-v-6dceb76a]{margin:16px 0 8px;font-size:20px;font-weight:600;color:#1e3a5f}.profile-page .profile-card .avatar-section .user-role[data-v-6dceb76a]{margin:0}.profile-page .profile-card .profile-info[data-v-6dceb76a]{text-align:left;-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:distribute;justify-content:space-around}.profile-page .profile-card .profile-info .info-item[data-v-6dceb76a]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:12px 0;border-bottom:1px solid #f0f0f0}.profile-page .profile-card .profile-info .info-item[data-v-6dceb76a]:last-child{border-bottom:none}.profile-page .profile-card .profile-info .info-item .anticon[data-v-6dceb76a]{font-size:16px;color:#1890ff;margin-right:12px}.profile-page .profile-card .profile-info .info-item .label[data-v-6dceb76a]{color:#64748b;margin-right:8px}.profile-page .profile-card .profile-info .info-item .value[data-v-6dceb76a]{color:#1e3a5f;font-weight:500}.profile-page .edit-card[data-v-6dceb76a]{border-radius:12px;-webkit-box-shadow:0 4px 20px rgba(0,0,0,.08);box-shadow:0 4px 20px rgba(0,0,0,.08)}.profile-page .edit-card .password-form[data-v-6dceb76a],.profile-page .edit-card .profile-form[data-v-6dceb76a]{max-width:500px}.profile-page .edit-card .password-form[data-v-6dceb76a] .ant-input,.profile-page .edit-card .password-form[data-v-6dceb76a] .ant-input-password,.profile-page .edit-card .profile-form[data-v-6dceb76a] .ant-input,.profile-page .edit-card .profile-form[data-v-6dceb76a] .ant-input-password{border-radius:8px}.profile-page .edit-card .password-form .email-hint[data-v-6dceb76a],.profile-page .edit-card .profile-form .email-hint[data-v-6dceb76a]{margin-top:8px;font-size:12px;color:rgba(0,0,0,.45)}.profile-page .edit-card .password-form .email-hint.email-warning[data-v-6dceb76a],.profile-page .edit-card .profile-form .email-hint.email-warning[data-v-6dceb76a]{color:#faad14}.profile-page .edit-card .amount-positive[data-v-6dceb76a]{color:#52c41a;font-weight:600}.profile-page .edit-card .amount-negative[data-v-6dceb76a]{color:#ff4d4f;font-weight:600}.profile-page .edit-card .notification-settings-form .field-hint[data-v-6dceb76a]{margin-top:6px;font-size:12px;color:rgba(0,0,0,.45);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px}.profile-page .edit-card .notification-settings-form .field-hint .anticon[data-v-6dceb76a]{font-size:12px}.profile-page .edit-card .notification-settings-form[data-v-6dceb76a] .ant-checkbox-group{width:100%}.profile-page .edit-card .notification-settings-form[data-v-6dceb76a] .ant-checkbox-wrapper{margin-bottom:8px}.profile-page .credits-card[data-v-6dceb76a]{border-radius:12px;-webkit-box-shadow:0 4px 20px rgba(0,0,0,.08);box-shadow:0 4px 20px rgba(0,0,0,.08);background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.profile-page .credits-card[data-v-6dceb76a] .ant-card-body{background:transparent;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.profile-page .credits-card[data-v-6dceb76a] .ant-divider{border-color:hsla(0,0%,100%,.2)}.profile-page .credits-card .credits-header .credits-title[data-v-6dceb76a]{font-size:16px;font-weight:600;margin:0;color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.profile-page .credits-card .credits-header .credits-title .anticon[data-v-6dceb76a]{font-size:18px}.profile-page .credits-card .credits-body[data-v-6dceb76a]{padding:20px 0;text-align:center;-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.profile-page .credits-card .credits-body .credits-amount .amount-value[data-v-6dceb76a]{font-size:42px;font-weight:700;color:#fff;text-shadow:0 2px 4px rgba(0,0,0,.2)}.profile-page .credits-card .credits-body .credits-amount .amount-label[data-v-6dceb76a]{font-size:16px;color:hsla(0,0%,100%,.9);margin-left:8px}.profile-page .credits-card .credits-body .vip-status[data-v-6dceb76a]{margin-top: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;gap:6px;font-size:13px}.profile-page .credits-card .credits-body .vip-status .vip-active[data-v-6dceb76a]{color:gold}.profile-page .credits-card .credits-body .vip-status .vip-expired[data-v-6dceb76a]{color:hsla(0,0%,100%,.6)}.profile-page .credits-card .credits-body .vip-status .no-vip[data-v-6dceb76a]{color:hsla(0,0%,100%,.7)}.profile-page .credits-card .credits-actions[data-v-6dceb76a]{text-align:center;margin-top:auto}.profile-page .credits-card .credits-actions .ant-btn[data-v-6dceb76a]{border-radius:20px;padding:0 24px;height:36px;font-weight:500;background:#fff;color:#667eea;border:none}.profile-page .credits-card .credits-actions .ant-btn[data-v-6dceb76a]:hover{background:hsla(0,0%,100%,.9);color:#764ba2}.profile-page .credits-card .credits-hint[data-v-6dceb76a]{margin-top:12px;text-align:center;font-size:12px;color:hsla(0,0%,100%,.7);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;gap:6px}.profile-page .referral-card[data-v-6dceb76a]{border-radius:12px;-webkit-box-shadow:0 4px 20px rgba(0,0,0,.08);box-shadow:0 4px 20px rgba(0,0,0,.08);background:linear-gradient(135deg,#11998e,#38ef7d);color:#fff}.profile-page .referral-card[data-v-6dceb76a] .ant-card-body{background:transparent;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.profile-page .referral-card[data-v-6dceb76a] .ant-divider{border-color:hsla(0,0%,100%,.2)}.profile-page .referral-card .referral-header .referral-title[data-v-6dceb76a]{font-size:16px;font-weight:600;margin:0;color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.profile-page .referral-card .referral-header .referral-title .anticon[data-v-6dceb76a]{font-size:18px}.profile-page .referral-card .referral-body[data-v-6dceb76a]{padding:12px 0;-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.profile-page .referral-card .referral-body .referral-stats[data-v-6dceb76a]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-pack:distribute;justify-content:space-around}.profile-page .referral-card .referral-body .referral-stats .stat-item[data-v-6dceb76a]{text-align:center}.profile-page .referral-card .referral-body .referral-stats .stat-item .stat-value[data-v-6dceb76a]{font-size:28px;font-weight:700;color:#fff;display:block}.profile-page .referral-card .referral-body .referral-stats .stat-item .stat-label[data-v-6dceb76a]{font-size:12px;color:hsla(0,0%,100%,.8)}.profile-page .referral-card .referral-body .referral-link-section .link-label[data-v-6dceb76a]{font-size:12px;color:hsla(0,0%,100%,.9);margin-bottom:6px}.profile-page .referral-card .referral-body .referral-link-section .link-box[data-v-6dceb76a] .ant-input{background:hsla(0,0%,100%,.2);border:1px solid hsla(0,0%,100%,.3);color:#fff}.profile-page .referral-card .referral-body .referral-link-section .link-box[data-v-6dceb76a] .ant-input::-webkit-input-placeholder{color:hsla(0,0%,100%,.6)}.profile-page .referral-card .referral-body .referral-link-section .link-box[data-v-6dceb76a] .ant-input::-moz-placeholder{color:hsla(0,0%,100%,.6)}.profile-page .referral-card .referral-body .referral-link-section .link-box[data-v-6dceb76a] .ant-input:-ms-input-placeholder{color:hsla(0,0%,100%,.6)}.profile-page .referral-card .referral-body .referral-link-section .link-box[data-v-6dceb76a] .ant-input::-ms-input-placeholder{color:hsla(0,0%,100%,.6)}.profile-page .referral-card .referral-body .referral-link-section .link-box[data-v-6dceb76a] .ant-input::placeholder{color:hsla(0,0%,100%,.6)}.profile-page .referral-card .referral-body .referral-link-section .link-box[data-v-6dceb76a] .anticon-copy{color:#fff}.profile-page .referral-card .referral-body .referral-link-section .link-box[data-v-6dceb76a] .anticon-copy:hover{color:gold}.profile-page .referral-card .referral-body .referral-hint[data-v-6dceb76a]{margin-top:auto;text-align:center;font-size:12px;color:hsla(0,0%,100%,.85);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;gap:6px}.profile-page .referral-card .referral-body .referral-hint .anticon-gift[data-v-6dceb76a]{color:gold}.profile-page .referral-user-cell[data-v-6dceb76a]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px}.profile-page .referral-user-cell .user-info[data-v-6dceb76a]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.profile-page .referral-user-cell .user-info .nickname[data-v-6dceb76a]{font-weight:500;color:#333}.profile-page .referral-user-cell .user-info .username[data-v-6dceb76a]{font-size:12px;color:#999}.profile-page .exchange-config-section .credential-hint[data-v-6dceb76a]{font-family:SFMono-Regular,Consolas,monospace;font-size:13px;color:#666}.profile-page .test-result-msg[data-v-6dceb76a]{margin-top:8px;font-size:13px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}.profile-page .test-result-msg.success[data-v-6dceb76a]{color:#52c41a}.profile-page .test-result-msg.error[data-v-6dceb76a]{color:#f5222d}.profile-page.theme-dark[data-v-6dceb76a]{background:-webkit-gradient(linear,left top,left bottom,from(#141414),to(#1c1c1c));background:linear-gradient(180deg,#141414,#1c1c1c)}.profile-page.theme-dark .page-header .page-title[data-v-6dceb76a]{color:#e0e6ed}.profile-page.theme-dark .page-header .page-desc[data-v-6dceb76a]{color:#8b949e}.profile-page.theme-dark .edit-card[data-v-6dceb76a],.profile-page.theme-dark .profile-card[data-v-6dceb76a]{background:#1c1c1c;-webkit-box-shadow:0 4px 24px rgba(0,0,0,.25);box-shadow:0 4px 24px rgba(0,0,0,.25)}.profile-page.theme-dark .edit-card[data-v-6dceb76a] .ant-card-body,.profile-page.theme-dark .profile-card[data-v-6dceb76a] .ant-card-body{background:#1c1c1c}.profile-page.theme-dark .profile-card .avatar-section .username[data-v-6dceb76a]{color:#e0e6ed}.profile-page.theme-dark .profile-card .profile-info .info-item[data-v-6dceb76a]{border-bottom-color:#2a2a2a}.profile-page.theme-dark .profile-card .profile-info .info-item .label[data-v-6dceb76a]{color:#8b949e}.profile-page.theme-dark .profile-card .profile-info .info-item .value[data-v-6dceb76a]{color:#e0e6ed}.profile-page.theme-dark .edit-card[data-v-6dceb76a] .ant-tabs-bar{border-bottom-color:#2a2a2a}.profile-page.theme-dark .edit-card[data-v-6dceb76a] .ant-tabs-tab{color:#8b949e}.profile-page.theme-dark .edit-card[data-v-6dceb76a] .ant-tabs-tab:hover{color:#e0e6ed}.profile-page.theme-dark .edit-card[data-v-6dceb76a] .ant-tabs-tab-active{color:#1890ff}.profile-page.theme-dark .edit-card[data-v-6dceb76a] .ant-form-item-label label{color:#c9d1d9}.profile-page.theme-dark .edit-card[data-v-6dceb76a] .ant-input,.profile-page.theme-dark .edit-card[data-v-6dceb76a] .ant-input-password{background:#141414;border-color:#2a2a2a;color:#c9d1d9}.profile-page.theme-dark .edit-card[data-v-6dceb76a] .ant-input-password:focus,.profile-page.theme-dark .edit-card[data-v-6dceb76a] .ant-input-password:hover,.profile-page.theme-dark .edit-card[data-v-6dceb76a] .ant-input:focus,.profile-page.theme-dark .edit-card[data-v-6dceb76a] .ant-input:hover{border-color:#1890ff}.profile-page.theme-dark .credits-card[data-v-6dceb76a]{background:linear-gradient(135deg,#1c1c1c,#1a1a1a 50%,#141414);-webkit-box-shadow:0 4px 24px rgba(0,0,0,.25);box-shadow:0 4px 24px rgba(0,0,0,.25)}.profile-page.theme-dark .credits-card[data-v-6dceb76a] .ant-divider{border-color:hsla(0,0%,100%,.1)}.profile-page.theme-dark .credits-card .credits-actions .ant-btn[data-v-6dceb76a]{background:hsla(0,0%,100%,.15);color:#fff;border:1px solid hsla(0,0%,100%,.2)}.profile-page.theme-dark .credits-card .credits-actions .ant-btn[data-v-6dceb76a]:hover{background:hsla(0,0%,100%,.25)}.profile-page.theme-dark[data-v-6dceb76a] .ant-table-wrapper .ant-table{background:#1c1c1c;color:#c9d1d9}.profile-page.theme-dark[data-v-6dceb76a] .ant-table-wrapper .ant-table-thead>tr>th{background:#2a2a2a;color:#c9d1d9;border-bottom-color:#2a2a2a}.profile-page.theme-dark[data-v-6dceb76a] .ant-table-wrapper .ant-table-tbody>tr>td{background:#1c1c1c;color:#c9d1d9;border-bottom-color:#2a2a2a}.profile-page.theme-dark[data-v-6dceb76a] .ant-table-wrapper .ant-table-tbody>tr:hover>td{background:#2a2a2a}.profile-page.theme-dark[data-v-6dceb76a] .ant-table-wrapper .ant-table-placeholder{background:#1c1c1c;color:#8b949e}.profile-page.theme-dark[data-v-6dceb76a] .ant-table-wrapper .ant-table-tbody>tr>td,.profile-page.theme-dark[data-v-6dceb76a] .ant-table-wrapper .ant-table-tbody>tr>td :not(.ant-tag):not(.ant-btn),.profile-page.theme-dark[data-v-6dceb76a] .ant-table-wrapper .ant-table-tbody>tr>td div,.profile-page.theme-dark[data-v-6dceb76a] .ant-table-wrapper .ant-table-tbody>tr>td span{color:#c9d1d9}.profile-page.theme-dark[data-v-6dceb76a] .ant-table-wrapper .amount-positive{color:#52c41a}.profile-page.theme-dark[data-v-6dceb76a] .ant-table-wrapper .amount-negative{color:#f5222d}.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-form-item-label>label,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-form-item-label>label,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-form-item-label>label{color:#c9d1d9}.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-form-item-explain,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-form-item-extra,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-form-item-explain,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-form-item-extra,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-form-item-explain,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-form-item-extra{color:#8b949e}.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-input,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-input-number,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-input-password,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-select-selector,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-input,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-input-number,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-input-password,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-select-selector,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-input,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-input-number,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-input-password,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-select-selector{background:#141414;border-color:#2a2a2a;color:#c9d1d9}.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-input-number::-webkit-input-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-input-password::-webkit-input-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-input::-webkit-input-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-select-selector::-webkit-input-placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-input-number::-webkit-input-placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-input-password::-webkit-input-placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-input::-webkit-input-placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-select-selector::-webkit-input-placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-input-number::-webkit-input-placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-input-password::-webkit-input-placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-input::-webkit-input-placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-select-selector::-webkit-input-placeholder{color:#6e7681}.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-input-number::-moz-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-input-password::-moz-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-input::-moz-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-select-selector::-moz-placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-input-number::-moz-placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-input-password::-moz-placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-input::-moz-placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-select-selector::-moz-placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-input-number::-moz-placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-input-password::-moz-placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-input::-moz-placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-select-selector::-moz-placeholder{color:#6e7681}.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-input-number:-ms-input-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-input-password:-ms-input-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-input:-ms-input-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-select-selector:-ms-input-placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-input-number:-ms-input-placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-input-password:-ms-input-placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-input:-ms-input-placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-select-selector:-ms-input-placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-input-number:-ms-input-placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-input-password:-ms-input-placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-input:-ms-input-placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-select-selector:-ms-input-placeholder{color:#6e7681}.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-input-number::-ms-input-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-input-password::-ms-input-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-input::-ms-input-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-select-selector::-ms-input-placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-input-number::-ms-input-placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-input-password::-ms-input-placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-input::-ms-input-placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-select-selector::-ms-input-placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-input-number::-ms-input-placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-input-password::-ms-input-placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-input::-ms-input-placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-select-selector::-ms-input-placeholder{color:#6e7681}.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-input-number::placeholder,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-input-password::placeholder,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-input::placeholder,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-select-selector::placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-input-number::placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-input-password::placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-input::placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-select-selector::placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-input-number::placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-input-password::placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-input::placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-select-selector::placeholder{color:#6e7681}.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-checkbox-wrapper,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-checkbox-wrapper span,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-radio-wrapper,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-radio-wrapper span,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-select-selection-item,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-select-selection-placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-checkbox-wrapper,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-checkbox-wrapper span,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-radio-wrapper,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-radio-wrapper span,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-select-selection-item,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-select-selection-placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-checkbox-wrapper,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-checkbox-wrapper span,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-radio-wrapper,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-radio-wrapper span,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-select-selection-item,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-select-selection-placeholder{color:#c9d1d9}.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-checkbox-checked .ant-checkbox-inner,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-radio-checked .ant-radio-inner,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-checkbox-checked .ant-checkbox-inner,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-radio-checked .ant-radio-inner,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-checkbox-checked .ant-checkbox-inner,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-radio-checked .ant-radio-inner{background-color:#1890ff;border-color:#1890ff}.profile-page.theme-dark .notification-settings-form .email-hint[data-v-6dceb76a],.profile-page.theme-dark .notification-settings-form .field-hint[data-v-6dceb76a],.profile-page.theme-dark .password-form .email-hint[data-v-6dceb76a],.profile-page.theme-dark .password-form .field-hint[data-v-6dceb76a],.profile-page.theme-dark .profile-form .email-hint[data-v-6dceb76a],.profile-page.theme-dark .profile-form .field-hint[data-v-6dceb76a]{color:#8b949e}.profile-page.theme-dark .notification-settings-form .email-warning[data-v-6dceb76a],.profile-page.theme-dark .password-form .email-warning[data-v-6dceb76a],.profile-page.theme-dark .profile-form .email-warning[data-v-6dceb76a]{color:#f5222d}.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-alert{background:#1c1c1c;border-color:#2a2a2a;color:#c9d1d9}.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-alert .ant-alert-message{color:#c9d1d9}.profile-page.theme-dark .exchange-config-section .credential-hint[data-v-6dceb76a],.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-alert .ant-alert-description{color:#8b949e}.profile-page.theme-dark .test-result-msg.success[data-v-6dceb76a]{color:#52c41a}.profile-page.theme-dark .test-result-msg.error[data-v-6dceb76a]{color:#f5222d}.profile-page.theme-dark .referral-user-cell .user-info .nickname[data-v-6dceb76a]{color:#c9d1d9}.profile-page.theme-dark .referral-user-cell .user-info .username[data-v-6dceb76a]{color:#8b949e}.profile-page.theme-dark[data-v-6dceb76a] .ant-tag{color:#c9d1d9}.profile-page.theme-dark[data-v-6dceb76a] .ant-tag.ant-tag-has-color{color:#fff!important;border-color:transparent!important}.profile-page.theme-dark[data-v-6dceb76a] .ant-input-prefix .anticon,.profile-page.theme-dark[data-v-6dceb76a] .ant-input-suffix .anticon,.profile-page.theme-dark[data-v-6dceb76a] .credits-hint .anticon,.profile-page.theme-dark[data-v-6dceb76a] .email-hint .anticon,.profile-page.theme-dark[data-v-6dceb76a] .field-hint .anticon,.profile-page.theme-dark[data-v-6dceb76a] .notification-settings-form .anticon{color:#c9d1d9!important}.profile-page.theme-dark[data-v-6dceb76a] .ant-pagination .ant-pagination-item{background:#1c1c1c;border-color:#2a2a2a}.profile-page.theme-dark[data-v-6dceb76a] .ant-pagination .ant-pagination-item a{color:#c9d1d9}.profile-page.theme-dark[data-v-6dceb76a] .ant-pagination .ant-pagination-item:hover{border-color:#1890ff}.profile-page.theme-dark[data-v-6dceb76a] .ant-pagination .ant-pagination-item-active{background:#1890ff;border-color:#1890ff}.profile-page.theme-dark[data-v-6dceb76a] .ant-pagination .ant-pagination-item-active a{color:#fff}.profile-page.theme-dark[data-v-6dceb76a] .ant-pagination .ant-pagination-next .ant-pagination-item-link,.profile-page.theme-dark[data-v-6dceb76a] .ant-pagination .ant-pagination-prev .ant-pagination-item-link{background:#1c1c1c;border-color:#2a2a2a;color:#c9d1d9}.profile-page.theme-dark[data-v-6dceb76a] .ant-pagination .ant-pagination-options .ant-select-selector{background:#141414;border-color:#2a2a2a;color:#c9d1d9}.profile-page.theme-dark[data-v-6dceb76a] .ant-btn.ant-btn-default{background:#1c1c1c;border-color:#2a2a2a;color:#c9d1d9}.profile-page.theme-dark[data-v-6dceb76a] .ant-btn.ant-btn-default:hover{border-color:#1890ff;color:#1890ff}@media screen and (max-width:768px){.profile-page[data-v-6dceb76a]{padding:12px}.profile-page .page-header[data-v-6dceb76a]{margin-bottom:16px}.profile-page .page-header .page-title[data-v-6dceb76a]{font-size:20px}.profile-page .page-header .page-title .anticon[data-v-6dceb76a]{font-size:22px}.profile-page .page-header .page-desc[data-v-6dceb76a]{font-size:13px}.profile-page .profile-cards-row[data-v-6dceb76a]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.profile-page .profile-cards-row .profile-card-col[data-v-6dceb76a]{margin-bottom:12px}.profile-page .profile-cards-row .right-cards-col .right-cards-row[data-v-6dceb76a]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.profile-page .profile-cards-row .right-cards-col .right-cards-row .ant-col[data-v-6dceb76a]{margin-bottom:12px}.profile-page .profile-card[data-v-6dceb76a]{border-radius:10px}.profile-page .profile-card .avatar-section[data-v-6dceb76a]{padding:16px 0}.profile-page .profile-card .avatar-section[data-v-6dceb76a] .ant-avatar{width:80px!important;height:80px!important;line-height:80px!important}.profile-page .profile-card .avatar-section .username[data-v-6dceb76a]{font-size:18px;margin:12px 0 6px}.profile-page .profile-card .profile-info .info-item[data-v-6dceb76a]{padding:10px 0;-ms-flex-wrap:wrap;flex-wrap:wrap}.profile-page .profile-card .profile-info .info-item .anticon[data-v-6dceb76a]{font-size:14px;margin-right:8px}.profile-page .profile-card .profile-info .info-item .label[data-v-6dceb76a]{font-size:13px}.profile-page .profile-card .profile-info .info-item .value[data-v-6dceb76a]{font-size:13px;word-break:break-all}.profile-page .credits-card[data-v-6dceb76a]{border-radius:10px}.profile-page .credits-card .credits-header .credits-title[data-v-6dceb76a]{font-size:15px}.profile-page .credits-card .credits-header .credits-title .anticon[data-v-6dceb76a]{font-size:16px}.profile-page .credits-card .credits-body[data-v-6dceb76a]{padding:16px 0}.profile-page .credits-card .credits-body .credits-amount .amount-value[data-v-6dceb76a]{font-size:32px}.profile-page .credits-card .credits-body .credits-amount .amount-label[data-v-6dceb76a]{font-size:14px}.profile-page .credits-card .credits-body .vip-status[data-v-6dceb76a]{font-size:12px;margin-top:10px}.profile-page .credits-card .credits-actions .ant-btn[data-v-6dceb76a]{height:34px;padding:0 20px;font-size:14px}.profile-page .credits-card .credits-hint[data-v-6dceb76a]{font-size:11px;margin-top:10px}.profile-page .referral-card[data-v-6dceb76a]{border-radius:10px}.profile-page .referral-card .referral-header .referral-title[data-v-6dceb76a]{font-size:15px}.profile-page .referral-card .referral-header .referral-title .anticon[data-v-6dceb76a]{font-size:16px}.profile-page .referral-card .referral-body[data-v-6dceb76a]{padding:10px 0}.profile-page .referral-card .referral-body .referral-stats .stat-item .stat-value[data-v-6dceb76a]{font-size:24px}.profile-page .referral-card .referral-body .referral-link-section .link-label[data-v-6dceb76a],.profile-page .referral-card .referral-body .referral-stats .stat-item .stat-label[data-v-6dceb76a]{font-size:11px}.profile-page .referral-card .referral-body .referral-link-section .link-box[data-v-6dceb76a] .ant-input{font-size:12px}.profile-page .referral-card .referral-body .referral-hint[data-v-6dceb76a]{font-size:11px;padding-top:8px}.profile-page .edit-card[data-v-6dceb76a]{border-radius:10px;margin-top:12px!important}.profile-page .edit-card[data-v-6dceb76a] .ant-card-body{padding:12px}.profile-page .edit-card[data-v-6dceb76a] .ant-tabs-nav .ant-tabs-tab{padding:10px 12px;font-size:13px}.profile-page .edit-card[data-v-6dceb76a] .ant-tabs-nav-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}.profile-page .edit-card[data-v-6dceb76a] .ant-tabs-nav-scroll::-webkit-scrollbar{display:none}.profile-page .edit-card .password-form[data-v-6dceb76a],.profile-page .edit-card .profile-form[data-v-6dceb76a]{max-width:100%}.profile-page .edit-card .password-form[data-v-6dceb76a] .ant-form-item-label,.profile-page .edit-card .profile-form[data-v-6dceb76a] .ant-form-item-label{padding-bottom:4px}.profile-page .edit-card .password-form[data-v-6dceb76a] .ant-form-item-label label,.profile-page .edit-card .profile-form[data-v-6dceb76a] .ant-form-item-label label{font-size:13px}.profile-page .edit-card .password-form[data-v-6dceb76a] .ant-input,.profile-page .edit-card .password-form[data-v-6dceb76a] .ant-input-password,.profile-page .edit-card .profile-form[data-v-6dceb76a] .ant-input,.profile-page .edit-card .profile-form[data-v-6dceb76a] .ant-input-password{font-size:14px}.profile-page .edit-card .password-form .email-hint[data-v-6dceb76a],.profile-page .edit-card .profile-form .email-hint[data-v-6dceb76a]{font-size:11px}.profile-page .edit-card .password-form[data-v-6dceb76a] .ant-alert{font-size:12px;padding:8px 12px}.profile-page .edit-card .notification-settings-form[data-v-6dceb76a] .ant-alert{font-size:12px;padding:8px 12px;margin-bottom:16px!important}.profile-page .edit-card .notification-settings-form[data-v-6dceb76a] .ant-form{max-width:100%}.profile-page .edit-card .notification-settings-form[data-v-6dceb76a] .ant-checkbox-group .ant-row{margin-left:0!important;margin-right:0!important}.profile-page .edit-card .notification-settings-form[data-v-6dceb76a] .ant-checkbox-group .ant-row .ant-col{padding-left:0!important;padding-right:8px!important}.profile-page .edit-card .notification-settings-form[data-v-6dceb76a] .ant-checkbox-group .ant-checkbox-wrapper{font-size:13px;margin-bottom:6px}.profile-page .edit-card .notification-settings-form .field-hint[data-v-6dceb76a]{font-size:11px;-ms-flex-wrap:wrap;flex-wrap:wrap}.profile-page .edit-card .notification-settings-form[data-v-6dceb76a] .ant-form-item{margin-bottom:16px}.profile-page .edit-card .notification-settings-form[data-v-6dceb76a] .ant-form-item:last-child .ant-btn{width:100%;margin-bottom:8px}.profile-page .edit-card .notification-settings-form[data-v-6dceb76a] .ant-form-item:last-child .ant-btn+.ant-btn{margin-left:0!important}.profile-page .edit-card[data-v-6dceb76a] .ant-table-wrapper{overflow-x:auto}.profile-page .edit-card[data-v-6dceb76a] .ant-table-wrapper .ant-table{min-width:500px}.profile-page .referral-user-cell[data-v-6dceb76a]{gap:8px}.profile-page .referral-user-cell[data-v-6dceb76a] .ant-avatar{width:28px!important;height:28px!important;line-height:28px!important}.profile-page .referral-user-cell .user-info .nickname[data-v-6dceb76a]{font-size:13px}.profile-page .referral-user-cell .user-info .username[data-v-6dceb76a]{font-size:11px}}@media screen and (max-width:480px){.profile-page[data-v-6dceb76a]{padding:8px}.profile-page .page-header[data-v-6dceb76a]{margin-bottom:12px}.profile-page .page-header .page-title[data-v-6dceb76a]{font-size:18px;gap:8px}.profile-page .page-header .page-title .anticon[data-v-6dceb76a]{font-size:20px}.profile-page .credits-card .credits-body .credits-amount .amount-value[data-v-6dceb76a]{font-size:28px}.profile-page .credits-card .credits-body .credits-amount .amount-label[data-v-6dceb76a]{font-size:13px}.profile-page .credits-card .credits-actions .ant-btn[data-v-6dceb76a]{width:100%}.profile-page .referral-card .referral-body .referral-stats .stat-item .stat-value[data-v-6dceb76a]{font-size:20px}.profile-page .edit-card[data-v-6dceb76a] .ant-tabs-nav .ant-tabs-tab{padding:8px 10px;font-size:12px}.profile-page .edit-card .notification-settings-form[data-v-6dceb76a] .ant-checkbox-group .ant-row .ant-col{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}} \ No newline at end of file diff --git a/frontend/dist/css/159.c13a970c.css b/frontend/dist/css/159.c13a970c.css new file mode 100644 index 0000000..d18d7c6 --- /dev/null +++ b/frontend/dist/css/159.c13a970c.css @@ -0,0 +1 @@ +.quick-trade-drawer[data-v-0d547552] .ant-drawer-body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:100%;overflow-y:auto}.qt-header[data-v-0d547552]{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:16px 20px 12px;border-bottom:1px solid #f0f0f0}.qt-header .qt-header-left[data-v-0d547552],.qt-header[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.qt-header .qt-header-left[data-v-0d547552]{gap:8px}.qt-header .qt-header-left .qt-icon[data-v-0d547552]{font-size:20px;color:#1890ff}.qt-header .qt-header-left .qt-header-title[data-v-0d547552]{font-size:16px;font-weight:600}.qt-header .qt-close[data-v-0d547552]{font-size:16px;cursor:pointer;color:#999}.qt-header .qt-close[data-v-0d547552]:hover{color:#333}.qt-symbol-bar[data-v-0d547552]{padding:12px 20px;background:linear-gradient(135deg,#f6f8fc,#eef2f8);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:8px}.qt-symbol-bar .qt-symbol-selector[data-v-0d547552],.qt-symbol-bar .qt-symbol-selector[data-v-0d547552] .ant-select{width:100%}.qt-symbol-bar .qt-symbol-selector[data-v-0d547552] .ant-select-selection{border-radius:6px;border:1px solid #d9d9d9}.qt-symbol-bar .qt-price-display[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.qt-symbol-bar .qt-price-display .qt-current-price[data-v-0d547552]{font-size:16px;font-weight:600;color:#333}.qt-symbol-option[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.qt-symbol-option .qt-symbol-option-name[data-v-0d547552]{font-weight:600;font-size:14px}.qt-symbol-option .qt-symbol-option-desc[data-v-0d547552]{color:#999;font-size:12px}.qt-section[data-v-0d547552]{padding:8px 20px}.qt-section .qt-label[data-v-0d547552]{font-size:12px;color:#999;margin-bottom:4px;font-weight:500}.qt-section .qt-crypto-hint[data-v-0d547552]{font-size:10px;color:#faad14;background:rgba(250,173,20,.1);padding:1px 6px;border-radius:4px;margin-left:4px}.qt-balance[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;margin-top:6px;font-size:12px}.qt-balance .qt-balance-label[data-v-0d547552]{color:#999}.qt-balance .qt-balance-value[data-v-0d547552]{color:#52c41a;font-weight:600}.qt-direction-toggle[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:8px}.qt-direction-toggle .qt-dir-btn[data-v-0d547552]{-webkit-box-flex:1;-ms-flex:1;flex:1;padding:10px;text-align:center;border-radius:8px;font-weight:600;font-size:14px;cursor:pointer;-webkit-transition:all .2s;transition:all .2s;border:2px solid transparent;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;gap:6px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.qt-direction-toggle .qt-dir-long[data-v-0d547552]{color:#52c41a;background:rgba(82,196,26,.06);border-color:rgba(82,196,26,.2)}.qt-direction-toggle .qt-dir-long.active[data-v-0d547552]{background:#52c41a;color:#fff;border-color:#52c41a;-webkit-box-shadow:0 4px 12px rgba(82,196,26,.3);box-shadow:0 4px 12px rgba(82,196,26,.3)}.qt-direction-toggle .qt-dir-long[data-v-0d547552]:hover:not(.active){border-color:#52c41a}.qt-direction-toggle .qt-dir-short[data-v-0d547552]{color:#f5222d;background:rgba(245,34,45,.06);border-color:rgba(245,34,45,.2)}.qt-direction-toggle .qt-dir-short.active[data-v-0d547552]{background:#f5222d;color:#fff;border-color:#f5222d;-webkit-box-shadow:0 4px 12px rgba(245,34,45,.3);box-shadow:0 4px 12px rgba(245,34,45,.3)}.qt-direction-toggle .qt-dir-short[data-v-0d547552]:hover:not(.active){border-color:#f5222d}.qt-quick-amounts[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:6px;margin-top:6px}.qt-quick-amounts button[data-v-0d547552]{-webkit-box-flex:1;-ms-flex:1;flex:1;font-size:12px}.qt-leverage-row[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.qt-tpsl-row[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px}.qt-tpsl-row .qt-tpsl-item[data-v-0d547552]{-webkit-box-flex:1;-ms-flex:1;flex:1}.qt-submit-section[data-v-0d547552]{padding:12px 20px}.qt-submit-section .qt-submit-btn[data-v-0d547552]{height:48px;font-size:16px;font-weight:700;border-radius:8px;letter-spacing:.5px}.qt-submit-section .qt-btn-long[data-v-0d547552]{background:#52c41a!important;border-color:#52c41a!important}.qt-submit-section .qt-btn-long[data-v-0d547552]:hover{background:#73d13d!important}.qt-submit-section .qt-btn-long[data-v-0d547552]:active{background:#389e0d!important}.qt-submit-section .qt-btn-short[data-v-0d547552]{background:#f5222d!important;border-color:#f5222d!important}.qt-submit-section .qt-btn-short[data-v-0d547552]:hover{background:#ff4d4f!important}.qt-submit-section .qt-btn-short[data-v-0d547552]:active{background:#cf1322!important}.qt-position-section[data-v-0d547552]{padding:8px 20px 12px}.qt-position-section .qt-section-header[data-v-0d547552]{font-size:13px;font-weight:600;color:#666;margin-bottom:8px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}.qt-history-section[data-v-0d547552]{padding:8px 20px 12px}.qt-history-section[data-v-0d547552] .ant-collapse{background:transparent;border:none}.qt-history-section[data-v-0d547552] .ant-collapse-item{border:none}.qt-history-section[data-v-0d547552] .ant-collapse-header{padding:0!important;cursor:pointer}.qt-history-section[data-v-0d547552] .ant-collapse-header:hover{opacity:.8}.qt-history-section[data-v-0d547552] .ant-collapse-content{border:none;background:transparent}.qt-history-section[data-v-0d547552] .ant-collapse-content-box{padding:8px 0 0 0!important}.qt-history-section .qt-section-header[data-v-0d547552]{font-size:13px;font-weight:600;color:#666;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.qt-history-section .qt-history-count[data-v-0d547552]{font-size:12px;color:#999;font-weight:400}.qt-position-card[data-v-0d547552]{background:#fafafa;border-radius:8px;padding:10px 12px;border-left:3px solid #d9d9d9}.qt-position-card.long[data-v-0d547552]{border-left-color:#52c41a}.qt-position-card.short[data-v-0d547552]{border-left-color:#f5222d}.qt-position-card .qt-pos-row[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;font-size:13px;padding:2px 0}.qt-position-card .qt-pos-row span[data-v-0d547552]:first-child{color:#999}.qt-position-empty[data-v-0d547552]{background:#fafafa;border-radius:8px;padding:20px 12px;text-align:center;border:1px dashed #d9d9d9}.qt-green[data-v-0d547552]{color:#52c41a!important}.qt-red[data-v-0d547552]{color:#f5222d!important}.qt-trade-list .qt-trade-item[data-v-0d547552]{padding:6px 0;border-bottom:1px solid #f5f5f5}.qt-trade-list .qt-trade-item[data-v-0d547552]:last-child{border-bottom:none}.qt-trade-list .qt-trade-item .qt-trade-main[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}.qt-trade-list .qt-trade-item .qt-trade-main .qt-trade-symbol[data-v-0d547552]{font-weight:600;font-size:13px}.qt-trade-list .qt-trade-item .qt-trade-main .qt-trade-amount[data-v-0d547552]{margin-left:auto;font-size:13px}.qt-trade-list .qt-trade-item .qt-trade-meta[data-v-0d547552]{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;margin-top:2px}.qt-trade-list .qt-trade-item .qt-trade-meta .qt-trade-time[data-v-0d547552]{font-size:11px;color:#bbb}.theme-dark .qt-header[data-v-0d547552]{border-bottom-color:#303030}.theme-dark .qt-header .qt-header-title[data-v-0d547552]{color:#e0e0e0}.theme-dark .qt-header .qt-close[data-v-0d547552]{color:#666}.theme-dark .qt-header .qt-close[data-v-0d547552]:hover{color:#bbb}.theme-dark .qt-symbol-bar[data-v-0d547552]{background:linear-gradient(135deg,#1a1f2e,#141824)}.theme-dark .qt-symbol-bar .qt-current-price[data-v-0d547552]{color:#e0e0e0}.theme-dark .qt-symbol-bar[data-v-0d547552] .ant-select-selection{background:#1a1f2e;border-color:#303030;color:#e0e0e0}.theme-dark .qt-symbol-bar[data-v-0d547552] .ant-select-selection__placeholder{color:#666}.theme-dark .qt-symbol-option .qt-symbol-option-name[data-v-0d547552]{color:#e0e0e0}.theme-dark .qt-symbol-option .qt-symbol-option-desc[data-v-0d547552]{color:#999}.theme-dark .qt-section .qt-label[data-v-0d547552]{color:#777}.theme-dark .qt-position-card[data-v-0d547552]{background:#1a1f2e}.theme-dark .qt-position-card .qt-pos-row span[data-v-0d547552]:first-child{color:#777}.theme-dark .qt-history-section .qt-section-header[data-v-0d547552],.theme-dark .qt-position-card .qt-pos-row span[data-v-0d547552]:last-child{color:#ccc}.theme-dark .qt-history-section .qt-history-count[data-v-0d547552]{color:#888}.theme-dark .qt-history-section[data-v-0d547552] .ant-collapse{background:transparent!important;color:#ccc}.theme-dark .qt-history-section[data-v-0d547552] .ant-collapse .ant-collapse-header{color:#ccc!important}.theme-dark .qt-history-section[data-v-0d547552] .ant-collapse .ant-collapse-header:hover{opacity:.8}.theme-dark .qt-history-section[data-v-0d547552] .ant-collapse .ant-collapse-content{background:transparent;color:#ccc}.theme-dark .qt-trade-item[data-v-0d547552]{border-bottom-color:#2a2a2a!important}.theme-dark .qt-trade-item .qt-trade-symbol[data-v-0d547552]{color:#e0e0e0}.theme-dark .qt-trade-item .qt-trade-amount[data-v-0d547552]{color:#ccc}.theme-dark[data-v-0d547552] .ant-collapse{background:transparent!important;color:#ccc}.theme-dark[data-v-0d547552] .ant-collapse .ant-collapse-header{color:#ccc!important}.theme-dark[data-v-0d547552] .ant-collapse .ant-collapse-content{background:transparent;color:#ccc}.theme-dark[data-v-0d547552] .ant-drawer-content{background:#141414}.theme-dark[data-v-0d547552] .ant-input-number,.theme-dark[data-v-0d547552] .ant-select-selection{background:#1a1f2e;border-color:#303030;color:#e0e0e0}.theme-dark[data-v-0d547552] .ant-radio-group .ant-radio-button-wrapper{background:#1a1f2e;border-color:#303030;color:#ccc}.theme-dark[data-v-0d547552] .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{background:#1890ff;border-color:#1890ff;color:#fff}.theme-dark[data-v-0d547552] .ant-slider-rail{background:#303030}.theme-dark[data-v-0d547552] .ant-slider-track{background:#1890ff}.polymarket-analysis-modal .input-section .input-actions[data-v-67e891d2]{margin-top:12px}.polymarket-analysis-modal .result-section .market-info[data-v-67e891d2]{margin-bottom:24px}.polymarket-analysis-modal .result-section .market-info h3[data-v-67e891d2]{margin-bottom:12px;font-size:18px;font-weight:600}.polymarket-analysis-modal .result-section .market-info .market-meta[data-v-67e891d2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:16px;-ms-flex-wrap:wrap;flex-wrap:wrap}.polymarket-analysis-modal .result-section .market-info .market-meta .meta-item[data-v-67e891d2]{color:rgba(0,0,0,.65);font-size:14px}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison[data-v-67e891d2]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:16px;margin:24px 0}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item[data-v-67e891d2]{-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center;padding:16px;background:#f5f5f5;border-radius:4px}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-label[data-v-67e891d2]{font-size:12px;color:rgba(0,0,0,.65);margin-bottom:8px}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-value[data-v-67e891d2]{font-size:24px;font-weight:600}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-value.ai-prob[data-v-67e891d2]{color:#1890ff}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-value.divergence-positive[data-v-67e891d2]{color:#52c41a}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-value.divergence-negative[data-v-67e891d2]{color:#ff4d4f}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-value.divergence-neutral[data-v-67e891d2]{color:rgba(0,0,0,.65)}.polymarket-analysis-modal .result-section .analysis-result .recommendation-section[data-v-67e891d2]{margin:24px 0}.polymarket-analysis-modal .result-section .analysis-result .recommendation-section .rec-card[data-v-67e891d2]{text-align:center;padding:16px;background:#f5f5f5;border-radius:4px}.polymarket-analysis-modal .result-section .analysis-result .recommendation-section .rec-card .rec-label[data-v-67e891d2]{font-size:12px;color:rgba(0,0,0,.65);margin-bottom:8px}.polymarket-analysis-modal .result-section .analysis-result .recommendation-section .rec-card .rec-value[data-v-67e891d2]{font-size:24px;font-weight:600;color:#1890ff}.polymarket-analysis-modal .result-section .analysis-result .key-factors-section[data-v-67e891d2],.polymarket-analysis-modal .result-section .analysis-result .reasoning-section[data-v-67e891d2]{margin:24px 0}.polymarket-analysis-modal .result-section .analysis-result .key-factors-section h4[data-v-67e891d2],.polymarket-analysis-modal .result-section .analysis-result .reasoning-section h4[data-v-67e891d2]{margin-bottom:12px;font-size:16px;font-weight:600}.polymarket-analysis-modal .result-section .analysis-result .key-factors-section .reasoning-text[data-v-67e891d2],.polymarket-analysis-modal .result-section .analysis-result .reasoning-section .reasoning-text[data-v-67e891d2]{line-height:1.8;color:rgba(0,0,0,.85);white-space:pre-wrap}.polymarket-analysis-modal .result-section .result-actions[data-v-67e891d2]{margin-top:24px;text-align:right}.polymarket-analysis-modal .loading-section[data-v-67e891d2]{text-align:center;padding:40px 0}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-tabs-bar{border-bottom-color:#2a2a2a}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-tabs-tab{color:#a3a3a3!important}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-tabs-tab-active{color:#d4d4d4!important}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-tabs-ink-bar{background:#58a6ff!important}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-divider{color:#d4d4d4;border-top-color:#2a2a2a}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-divider-inner-text{color:#d4d4d4!important}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-input,.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-input-affix-wrapper,.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-input-number,.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-input-textarea textarea{background:#141414!important;border-color:#2a2a2a!important;color:#d4d4d4!important}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-table{background:#1c1c1c;color:#d4d4d4}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-table-thead>tr>th{background:#252525;color:#d4d4d4;border-bottom-color:#2a2a2a}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-table-tbody>tr>td{background:#1c1c1c;color:#d4d4d4;border-bottom-color:#2a2a2a}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-btn-link{color:#58a6ff!important}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-alert{background:#1c1c1c;border-color:#2a2a2a}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-alert-message{color:#d4d4d4!important}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-alert-description{color:#a3a3a3!important}.polymarket-analysis-modal.theme-dark .market-info h3[data-v-67e891d2]{color:#d4d4d4}.polymarket-analysis-modal.theme-dark .market-info .market-meta .meta-item[data-v-67e891d2]{color:#a3a3a3}.polymarket-analysis-modal.theme-dark .analysis-result .probability-comparison .prob-item[data-v-67e891d2]{background:#252525;border:1px solid #2a2a2a}.polymarket-analysis-modal.theme-dark .analysis-result .probability-comparison .prob-item .prob-label[data-v-67e891d2]{color:#a3a3a3}.polymarket-analysis-modal.theme-dark .analysis-result .probability-comparison .prob-item .prob-value[data-v-67e891d2]{color:#e5e5e5}.polymarket-analysis-modal.theme-dark .analysis-result .probability-comparison .prob-item .prob-value.divergence-neutral[data-v-67e891d2]{color:#b3b3b3}.polymarket-analysis-modal.theme-dark .analysis-result .recommendation-section .rec-card[data-v-67e891d2]{background:#252525;border:1px solid #2a2a2a}.polymarket-analysis-modal.theme-dark .analysis-result .recommendation-section .rec-card .rec-label[data-v-67e891d2]{color:#a3a3a3}.polymarket-analysis-modal.theme-dark .analysis-result .recommendation-section .rec-card .rec-value[data-v-67e891d2]{color:#e5e5e5}.polymarket-analysis-modal.theme-dark .analysis-result .key-factors-section .reasoning-text[data-v-67e891d2],.polymarket-analysis-modal.theme-dark .analysis-result .key-factors-section h4[data-v-67e891d2],.polymarket-analysis-modal.theme-dark .analysis-result .reasoning-section .reasoning-text[data-v-67e891d2],.polymarket-analysis-modal.theme-dark .analysis-result .reasoning-section h4[data-v-67e891d2]{color:#d4d4d4}.ai-asset-analysis-page[data-v-0d0a10d6]{padding:20px;min-height:calc(100vh - 120px);background:#f0f2f5;width:100%;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;overflow-x:hidden}.ai-asset-analysis-page .radar-section[data-v-0d0a10d6]{margin-bottom:20px}.ai-asset-analysis-page .radar-section .radar-header[data-v-0d0a10d6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:14px}.ai-asset-analysis-page .radar-section .radar-header .radar-header-left .radar-title[data-v-0d0a10d6]{margin:0;font-size:16px;font-weight:700;color:#1a1a1a;letter-spacing:-.2px}.ai-asset-analysis-page .radar-section .radar-header .radar-header-left .radar-subtitle[data-v-0d0a10d6]{margin:2px 0 0;font-size:12px;color:#999}.ai-asset-analysis-page .radar-section .radar-header .radar-refresh-btn[data-v-0d0a10d6]{border-radius:8px;border:1px solid #e0e0e0;background:#fff;color:#666;font-size:12px;font-weight:500}.ai-asset-analysis-page .radar-section .radar-header .radar-refresh-btn[data-v-0d0a10d6]:hover{border-color:#6366f1;color:#6366f1}.ai-asset-analysis-page .radar-section .radar-carousel[data-v-0d0a10d6]{overflow:hidden;position:relative;border-radius:12px;padding:2px 0}.ai-asset-analysis-page .radar-section .radar-carousel[data-v-0d0a10d6]:after,.ai-asset-analysis-page .radar-section .radar-carousel[data-v-0d0a10d6]:before{content:"";position:absolute;top:0;bottom:0;width:50px;z-index:2;pointer-events:none}.ai-asset-analysis-page .radar-section .radar-carousel[data-v-0d0a10d6]:before{left:0;background:-webkit-gradient(linear,left top,right top,from(#f0f2f5),to(transparent));background:linear-gradient(90deg,#f0f2f5,transparent)}.ai-asset-analysis-page .radar-section .radar-carousel[data-v-0d0a10d6]:after{right:0;background:-webkit-gradient(linear,right top,left top,from(#f0f2f5),to(transparent));background:linear-gradient(270deg,#f0f2f5,transparent)}.ai-asset-analysis-page .radar-section .radar-track[data-v-0d0a10d6]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px;-webkit-animation:radar-scroll-0d0a10d6 60s linear infinite;animation:radar-scroll-0d0a10d6 60s linear infinite;width:-webkit-max-content;width:-moz-max-content;width:max-content;padding:4px 0}.ai-asset-analysis-page .radar-section .radar-track.paused[data-v-0d0a10d6]{-webkit-animation-play-state:paused;animation-play-state:paused}@-webkit-keyframes radar-scroll-0d0a10d6{0%{-webkit-transform:translateX(0);transform:translateX(0)}to{-webkit-transform:translateX(-50%);transform:translateX(-50%)}}@keyframes radar-scroll-0d0a10d6{0%{-webkit-transform:translateX(0);transform:translateX(0)}to{-webkit-transform:translateX(-50%);transform:translateX(-50%)}}.ai-asset-analysis-page .radar-section .radar-card[data-v-0d0a10d6]{width:250px;background:#fff;border-radius:12px;padding:16px;cursor:pointer;-ms-flex-negative:0;flex-shrink:0;border:1px solid #eaeaea;-webkit-transition:all .25s cubic-bezier(.4,0,.2,1);transition:all .25s cubic-bezier(.4,0,.2,1);position:relative;overflow:hidden}.ai-asset-analysis-page .radar-section .radar-card[data-v-0d0a10d6]:before{content:"";position:absolute;inset:0;border-radius:12px;opacity:0;-webkit-transition:opacity .3s;transition:opacity .3s;background:linear-gradient(135deg,rgba(99,102,241,.04),rgba(139,92,246,.02))}.ai-asset-analysis-page .radar-section .radar-card[data-v-0d0a10d6]:hover{-webkit-transform:translateY(-2px);transform:translateY(-2px);border-color:rgba(99,102,241,.3);-webkit-box-shadow:0 6px 24px rgba(0,0,0,.08),0 0 0 1px rgba(99,102,241,.1);box-shadow:0 6px 24px rgba(0,0,0,.08),0 0 0 1px rgba(99,102,241,.1)}.ai-asset-analysis-page .radar-section .radar-card[data-v-0d0a10d6]:hover:before{opacity:1}.ai-asset-analysis-page .radar-section .radar-card.is-prediction[data-v-0d0a10d6]{width:290px}.ai-asset-analysis-page .radar-section .radar-card .rc-head[data-v-0d0a10d6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:12px;gap:8px}.ai-asset-analysis-page .radar-section .radar-card .rc-symbol[data-v-0d0a10d6]{font-weight:800;font-size:15px;color:#111;letter-spacing:-.2px}.ai-asset-analysis-page .radar-section .radar-card .rc-symbol.rc-prediction-title[data-v-0d0a10d6]{font-size:13px;font-weight:600;line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.ai-asset-analysis-page .radar-section .radar-card .rc-market[data-v-0d0a10d6]{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;padding:2px 7px;border-radius:5px;-ms-flex-negative:0;flex-shrink:0;background:#f5f5f5;color:#888}.ai-asset-analysis-page .radar-section .radar-card .rc-market.rc-market-crypto[data-v-0d0a10d6]{color:#7c3aed;background:rgba(124,58,237,.08)}.ai-asset-analysis-page .radar-section .radar-card .rc-market.rc-market-usstock[data-v-0d0a10d6]{color:#16a34a;background:rgba(22,163,74,.08)}.ai-asset-analysis-page .radar-section .radar-card .rc-market.rc-market-forex[data-v-0d0a10d6]{color:#d97706;background:rgba(217,119,6,.08)}.ai-asset-analysis-page .radar-section .radar-card .rc-market.rc-market-predictionmarket[data-v-0d0a10d6]{color:#0891b2;background:rgba(8,145,178,.08)}.ai-asset-analysis-page .radar-section .radar-card .rc-metrics[data-v-0d0a10d6]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:4px;margin-bottom:12px}.ai-asset-analysis-page .radar-section .radar-card .rc-metric[data-v-0d0a10d6]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:3px;padding:7px;border-radius:8px;background:#fafafa}.ai-asset-analysis-page .radar-section .radar-card .rc-metric .rc-metric-label[data-v-0d0a10d6]{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.4px;color:#999}.ai-asset-analysis-page .radar-section .radar-card .rc-metric .rc-metric-value[data-v-0d0a10d6]{font-size:13px;font-weight:700;color:#222}.ai-asset-analysis-page .radar-section .radar-card .rc-metric .rc-metric-value.rc-up[data-v-0d0a10d6]{color:#16a34a}.ai-asset-analysis-page .radar-section .radar-card .rc-metric .rc-metric-value.rc-down[data-v-0d0a10d6]{color:#dc2626}.ai-asset-analysis-page .radar-section .radar-card .rc-metric .rc-metric-value.rc-signal-val[data-v-0d0a10d6]{font-size:11px;font-weight:600}.ai-asset-analysis-page .radar-section .radar-card .rc-metric .rc-metric-value.rc-signal-bullish_momentum[data-v-0d0a10d6]{color:#0891b2}.ai-asset-analysis-page .radar-section .radar-card .rc-metric .rc-metric-value.rc-signal-overbought[data-v-0d0a10d6]{color:#d97706}.ai-asset-analysis-page .radar-section .radar-card .rc-metric .rc-metric-value.rc-signal-oversold[data-v-0d0a10d6]{color:#16a34a}.ai-asset-analysis-page .radar-section .radar-card .rc-metric .rc-metric-value.rc-signal-bearish_momentum[data-v-0d0a10d6]{color:#dc2626}.ai-asset-analysis-page .radar-section .radar-card .rc-footer[data-v-0d0a10d6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:8px}.ai-asset-analysis-page .radar-section .radar-card .rc-reason[data-v-0d0a10d6]{font-size:11px;color:#999;line-height:1.4;-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}.ai-asset-analysis-page .radar-section .radar-card .rc-cta[data-v-0d0a10d6]{font-size:11px;font-weight:700;color:#fff;background:linear-gradient(135deg,#6366f1,#8b5cf6);padding:4px 12px;border-radius:8px;white-space:nowrap;cursor:pointer;-webkit-transition:all .2s;transition:all .2s;-ms-flex-negative:0;flex-shrink:0}.ai-asset-analysis-page .radar-section .radar-card .rc-cta[data-v-0d0a10d6]:hover{-webkit-transform:scale(1.05);transform:scale(1.05);-webkit-box-shadow:0 2px 12px rgba(99,102,241,.35);box-shadow:0 2px 12px rgba(99,102,241,.35)}.ai-asset-analysis-page .qt-floating-btn[data-v-0d0a10d6]{position:fixed;right:24px;bottom:80px;width:48px;height:48px;border-radius:14px;background:linear-gradient(135deg,#6366f1,#8b5cf6);color:#fff;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;font-size:22px;cursor:pointer;-webkit-box-shadow:0 4px 20px rgba(99,102,241,.35);box-shadow:0 4px 20px rgba(99,102,241,.35);z-index:1000;-webkit-transition:all .3s;transition:all .3s;-webkit-animation:qt-float-pulse-0d0a10d6 2.5s ease-in-out infinite;animation:qt-float-pulse-0d0a10d6 2.5s ease-in-out infinite}.ai-asset-analysis-page .qt-floating-btn[data-v-0d0a10d6]:hover{-webkit-transform:scale(1.08);transform:scale(1.08);-webkit-box-shadow:0 6px 28px rgba(99,102,241,.5);box-shadow:0 6px 28px rgba(99,102,241,.5)}@-webkit-keyframes qt-float-pulse-0d0a10d6{0%,to{-webkit-transform:translateY(0);transform:translateY(0)}50%{-webkit-transform:translateY(-4px);transform:translateY(-4px)}}@keyframes qt-float-pulse-0d0a10d6{0%,to{-webkit-transform:translateY(0);transform:translateY(0)}50%{-webkit-transform:translateY(-4px);transform:translateY(-4px)}}.ai-asset-analysis-page .workspace-card[data-v-0d0a10d6]{border-radius:14px;-webkit-box-shadow:0 1px 4px rgba(0,0,0,.06);box-shadow:0 1px 4px rgba(0,0,0,.06);border:1px solid #e8e8e8}.ai-asset-analysis-page .workspace-card[data-v-0d0a10d6] .ant-card-body{padding:0}.ai-asset-analysis-page .workspace-card .workspace-tabs[data-v-0d0a10d6] .ant-tabs-bar{margin-bottom:0;padding:0 20px;border-bottom:1px solid #f0f0f0}.ai-asset-analysis-page .workspace-card .workspace-tabs[data-v-0d0a10d6] .ant-tabs-tab{font-size:15px;font-weight:600;padding:14px 16px}.ai-asset-analysis-page .workspace-card .tab-body[data-v-0d0a10d6] .ai-analysis-container.embedded,.ai-asset-analysis-page .workspace-card .tab-body[data-v-0d0a10d6] .portfolio-container.embedded{border-radius:0;overflow:hidden}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content[data-v-0d0a10d6]{padding:40px 20px;text-align:center}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content .polymarket-placeholder .placeholder-icon[data-v-0d0a10d6]{font-size:64px;color:#6366f1;margin-bottom:24px}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content .polymarket-placeholder h3[data-v-0d0a10d6]{font-size:20px;font-weight:700;margin-bottom:12px;color:rgba(0,0,0,.85)}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content .polymarket-placeholder p[data-v-0d0a10d6]{font-size:14px;color:rgba(0,0,0,.55);margin-bottom:24px}.ai-asset-analysis-page.theme-dark[data-v-0d0a10d6]{background:#141414}.ai-asset-analysis-page.theme-dark .radar-section .radar-header .radar-title[data-v-0d0a10d6]{color:#e8e8e8}.ai-asset-analysis-page.theme-dark .radar-section .radar-header .radar-subtitle[data-v-0d0a10d6]{color:#666}.ai-asset-analysis-page.theme-dark .radar-section .radar-refresh-btn[data-v-0d0a10d6]{background:#1c1c1c;border-color:#2a2a2a;color:#999}.ai-asset-analysis-page.theme-dark .radar-section .radar-refresh-btn[data-v-0d0a10d6]:hover{border-color:#6366f1;color:#a78bfa}.ai-asset-analysis-page.theme-dark .radar-section .radar-carousel[data-v-0d0a10d6]:before{background:-webkit-gradient(linear,left top,right top,from(#141414),to(transparent));background:linear-gradient(90deg,#141414,transparent)}.ai-asset-analysis-page.theme-dark .radar-section .radar-carousel[data-v-0d0a10d6]:after{background:-webkit-gradient(linear,right top,left top,from(#141414),to(transparent));background:linear-gradient(270deg,#141414,transparent)}.ai-asset-analysis-page.theme-dark .radar-section .radar-card[data-v-0d0a10d6]{background:#1a1a1c;border-color:hsla(0,0%,100%,.06)}.ai-asset-analysis-page.theme-dark .radar-section .radar-card[data-v-0d0a10d6]:before{background:linear-gradient(135deg,rgba(99,102,241,.06),rgba(139,92,246,.03))}.ai-asset-analysis-page.theme-dark .radar-section .radar-card[data-v-0d0a10d6]:hover{border-color:rgba(99,102,241,.25);-webkit-box-shadow:0 8px 32px rgba(0,0,0,.4),0 0 0 1px rgba(99,102,241,.15);box-shadow:0 8px 32px rgba(0,0,0,.4),0 0 0 1px rgba(99,102,241,.15)}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-symbol[data-v-0d0a10d6]{color:#f0f0f0}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-market[data-v-0d0a10d6]{background:hsla(0,0%,100%,.06);color:#888}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-market.rc-market-crypto[data-v-0d0a10d6]{color:#a78bfa;background:rgba(167,139,250,.12)}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-market.rc-market-usstock[data-v-0d0a10d6]{color:#4ade80;background:rgba(74,222,128,.1)}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-market.rc-market-forex[data-v-0d0a10d6]{color:#fbbf24;background:rgba(251,191,36,.1)}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-market.rc-market-predictionmarket[data-v-0d0a10d6]{color:#22d3ee;background:rgba(34,211,238,.1)}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-metric[data-v-0d0a10d6]{background:hsla(0,0%,100%,.03)}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-metric .rc-metric-label[data-v-0d0a10d6]{color:#666}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-metric .rc-metric-value[data-v-0d0a10d6]{color:#ddd}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-metric .rc-metric-value.rc-up[data-v-0d0a10d6]{color:#4ade80}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-metric .rc-metric-value.rc-down[data-v-0d0a10d6]{color:#f87171}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-metric .rc-metric-value.rc-signal-bullish_momentum[data-v-0d0a10d6]{color:#22d3ee}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-metric .rc-metric-value.rc-signal-overbought[data-v-0d0a10d6]{color:#fbbf24}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-metric .rc-metric-value.rc-signal-oversold[data-v-0d0a10d6]{color:#4ade80}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-metric .rc-metric-value.rc-signal-bearish_momentum[data-v-0d0a10d6]{color:#f87171}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-reason[data-v-0d0a10d6]{color:#555}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-cta[data-v-0d0a10d6]{color:#fff}.ai-asset-analysis-page.theme-dark .workspace-card[data-v-0d0a10d6]{background:#1c1c1c;border-color:#2a2a2a}.ai-asset-analysis-page.theme-dark .workspace-card .workspace-tabs[data-v-0d0a10d6] .ant-tabs-bar{border-bottom-color:#2a2a2a}.ai-asset-analysis-page.theme-dark .workspace-card .workspace-tabs[data-v-0d0a10d6] .ant-tabs-tab{color:#8b949e}.ai-asset-analysis-page.theme-dark .workspace-card .workspace-tabs[data-v-0d0a10d6] .ant-tabs-tab:hover{color:#c9d1d9}.ai-asset-analysis-page.theme-dark .workspace-card .workspace-tabs[data-v-0d0a10d6] .ant-tabs-tab-active{color:#a78bfa}.ai-asset-analysis-page.theme-dark .workspace-card .workspace-tabs[data-v-0d0a10d6] .ant-tabs-ink-bar{background-color:#a78bfa}.ai-asset-analysis-page.theme-dark .workspace-card .polymarket-tab-content .polymarket-placeholder h3[data-v-0d0a10d6]{color:#d4d4d4}.ai-asset-analysis-page.theme-dark .workspace-card .polymarket-tab-content .polymarket-placeholder p[data-v-0d0a10d6]{color:#a3a3a3}@media (max-width:768px){.ai-asset-analysis-page[data-v-0d0a10d6]{padding:8px;min-height:auto}.ai-asset-analysis-page .radar-section[data-v-0d0a10d6]{margin-bottom:10px}.ai-asset-analysis-page .radar-section .radar-header[data-v-0d0a10d6]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;gap:8px}.ai-asset-analysis-page .radar-section .radar-header .radar-header-left .radar-title[data-v-0d0a10d6]{font-size:15px}.ai-asset-analysis-page .radar-section .radar-header .radar-header-left .radar-subtitle[data-v-0d0a10d6]{font-size:11px}.ai-asset-analysis-page .radar-section .radar-header .radar-refresh-btn[data-v-0d0a10d6]{-ms-flex-item-align:end;align-self:flex-end}.ai-asset-analysis-page .radar-section .radar-carousel[data-v-0d0a10d6]:after,.ai-asset-analysis-page .radar-section .radar-carousel[data-v-0d0a10d6]:before{width:28px}.ai-asset-analysis-page .radar-section .radar-card[data-v-0d0a10d6]{width:210px;padding:12px}.ai-asset-analysis-page .radar-section .radar-card.is-prediction[data-v-0d0a10d6]{width:248px}.ai-asset-analysis-page .radar-section .radar-card .rc-symbol[data-v-0d0a10d6]{font-size:14px}.ai-asset-analysis-page .radar-section .radar-card .rc-metric[data-v-0d0a10d6]{padding:6px}.ai-asset-analysis-page .qt-floating-btn[data-v-0d0a10d6]{right:max(8px,env(safe-area-inset-right,0px));bottom:max(68px,calc(52px + env(safe-area-inset-bottom, 0px)));width:44px;height:44px;font-size:20px}.ai-asset-analysis-page .workspace-card[data-v-0d0a10d6]{border-radius:10px}.ai-asset-analysis-page .workspace-card .workspace-tabs[data-v-0d0a10d6] .ant-tabs-bar{padding:0 6px}.ai-asset-analysis-page .workspace-card .workspace-tabs[data-v-0d0a10d6] .ant-tabs-nav-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}.ai-asset-analysis-page .workspace-card .workspace-tabs[data-v-0d0a10d6] .ant-tabs-tab{font-size:14px;padding:10px 8px;margin-right:2px;white-space:nowrap}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content[data-v-0d0a10d6]{padding:16px 8px}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content .polymarket-placeholder .placeholder-icon[data-v-0d0a10d6]{font-size:48px;margin-bottom:12px}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content .polymarket-placeholder h3[data-v-0d0a10d6]{font-size:17px}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content .polymarket-placeholder p[data-v-0d0a10d6]{font-size:13px}}@media (max-width:480px){.ai-asset-analysis-page[data-v-0d0a10d6]{padding:4px}.ai-asset-analysis-page .radar-section .radar-card[data-v-0d0a10d6]{width:188px;padding:10px}.ai-asset-analysis-page .radar-section .radar-card.is-prediction[data-v-0d0a10d6]{width:220px}.ai-asset-analysis-page .radar-section .radar-card .rc-metrics[data-v-0d0a10d6]{gap:3px}.ai-asset-analysis-page .radar-section .radar-card .rc-metric .rc-metric-value[data-v-0d0a10d6]{font-size:12px}.ai-asset-analysis-page .workspace-card .workspace-tabs[data-v-0d0a10d6] .ant-tabs-bar{padding:0 4px}.ai-asset-analysis-page .workspace-card .workspace-tabs[data-v-0d0a10d6] .ant-tabs-tab{font-size:13px;padding:8px 6px}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content[data-v-0d0a10d6]{padding:12px 6px}} \ No newline at end of file diff --git a/frontend/dist/css/170.2e8a4a95.css b/frontend/dist/css/170.2e8a4a95.css new file mode 100644 index 0000000..89f9368 --- /dev/null +++ b/frontend/dist/css/170.2e8a4a95.css @@ -0,0 +1 @@ +.profile-page[data-v-4224bd2a]{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)}.profile-page .page-header[data-v-4224bd2a]{margin-bottom:24px}.profile-page .page-header .page-title[data-v-4224bd2a]{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}.profile-page .page-header .page-title .anticon[data-v-4224bd2a]{font-size:28px;color:#1890ff}.profile-page .page-header .page-desc[data-v-4224bd2a]{color:#64748b;font-size:14px;margin:0}.profile-page .profile-cards-row[data-v-4224bd2a]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.profile-page .profile-cards-row .profile-card-col .ant-card[data-v-4224bd2a],.profile-page .profile-cards-row .profile-card-col[data-v-4224bd2a],.profile-page .profile-cards-row .right-cards-col .ant-card[data-v-4224bd2a],.profile-page .profile-cards-row .right-cards-col[data-v-4224bd2a]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.profile-page .profile-cards-row .profile-card-col .ant-card[data-v-4224bd2a],.profile-page .profile-cards-row .right-cards-col .ant-card[data-v-4224bd2a]{height:100%}.profile-page .profile-cards-row .profile-card-col[data-v-4224bd2a] .ant-card-body,.profile-page .profile-cards-row .right-cards-col[data-v-4224bd2a] .ant-card-body{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.profile-page .profile-cards-row .right-cards-row[data-v-4224bd2a]{height:100%;display:-webkit-box;display:-ms-flexbox;display:flex}.profile-page .profile-cards-row .right-cards-row .ant-col .ant-card[data-v-4224bd2a],.profile-page .profile-cards-row .right-cards-row .ant-col[data-v-4224bd2a]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.profile-page .profile-cards-row .right-cards-row .ant-col .ant-card[data-v-4224bd2a]{height:100%}.profile-page .profile-cards-row .right-cards-row .ant-col[data-v-4224bd2a] .ant-card-body{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.profile-page .profile-card[data-v-4224bd2a]{border-radius:12px;-webkit-box-shadow:0 4px 20px rgba(0,0,0,.08);box-shadow:0 4px 20px rgba(0,0,0,.08);text-align:center}.profile-page .profile-card .avatar-section[data-v-4224bd2a]{padding:20px 0}.profile-page .profile-card .avatar-section .ant-avatar[data-v-4224bd2a]{-webkit-box-shadow:0 4px 12px rgba(0,0,0,.15);box-shadow:0 4px 12px rgba(0,0,0,.15)}.profile-page .profile-card .avatar-section .username[data-v-4224bd2a]{margin:16px 0 8px;font-size:20px;font-weight:600;color:#1e3a5f}.profile-page .profile-card .avatar-section .user-role[data-v-4224bd2a]{margin:0}.profile-page .profile-card .profile-info[data-v-4224bd2a]{text-align:left;-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:distribute;justify-content:space-around}.profile-page .profile-card .profile-info .info-item[data-v-4224bd2a]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:12px 0;border-bottom:1px solid #f0f0f0}.profile-page .profile-card .profile-info .info-item[data-v-4224bd2a]:last-child{border-bottom:none}.profile-page .profile-card .profile-info .info-item .anticon[data-v-4224bd2a]{font-size:16px;color:#1890ff;margin-right:12px}.profile-page .profile-card .profile-info .info-item .label[data-v-4224bd2a]{color:#64748b;margin-right:8px}.profile-page .profile-card .profile-info .info-item .value[data-v-4224bd2a]{color:#1e3a5f;font-weight:500}.profile-page .edit-card[data-v-4224bd2a]{border-radius:12px;-webkit-box-shadow:0 4px 20px rgba(0,0,0,.08);box-shadow:0 4px 20px rgba(0,0,0,.08)}.profile-page .edit-card .password-form[data-v-4224bd2a],.profile-page .edit-card .profile-form[data-v-4224bd2a]{max-width:500px}.profile-page .edit-card .password-form[data-v-4224bd2a] .ant-input,.profile-page .edit-card .password-form[data-v-4224bd2a] .ant-input-password,.profile-page .edit-card .profile-form[data-v-4224bd2a] .ant-input,.profile-page .edit-card .profile-form[data-v-4224bd2a] .ant-input-password{border-radius:8px}.profile-page .edit-card .password-form .email-hint[data-v-4224bd2a],.profile-page .edit-card .profile-form .email-hint[data-v-4224bd2a]{margin-top:8px;font-size:12px;color:rgba(0,0,0,.45)}.profile-page .edit-card .password-form .email-hint.email-warning[data-v-4224bd2a],.profile-page .edit-card .profile-form .email-hint.email-warning[data-v-4224bd2a]{color:#faad14}.profile-page .edit-card .amount-positive[data-v-4224bd2a]{color:#52c41a;font-weight:600}.profile-page .edit-card .amount-negative[data-v-4224bd2a]{color:#ff4d4f;font-weight:600}.profile-page .edit-card .notification-settings-form .field-hint[data-v-4224bd2a]{margin-top:6px;font-size:12px;color:rgba(0,0,0,.45);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px}.profile-page .edit-card .notification-settings-form .field-hint .anticon[data-v-4224bd2a]{font-size:12px}.profile-page .edit-card .notification-settings-form[data-v-4224bd2a] .ant-checkbox-group{width:100%}.profile-page .edit-card .notification-settings-form[data-v-4224bd2a] .ant-checkbox-wrapper{margin-bottom:8px}.profile-page .credits-card[data-v-4224bd2a]{border-radius:12px;-webkit-box-shadow:0 4px 20px rgba(0,0,0,.08);box-shadow:0 4px 20px rgba(0,0,0,.08);background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.profile-page .credits-card[data-v-4224bd2a] .ant-card-body{background:transparent;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.profile-page .credits-card[data-v-4224bd2a] .ant-divider{border-color:hsla(0,0%,100%,.2)}.profile-page .credits-card .credits-header .credits-title[data-v-4224bd2a]{font-size:16px;font-weight:600;margin:0;color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.profile-page .credits-card .credits-header .credits-title .anticon[data-v-4224bd2a]{font-size:18px}.profile-page .credits-card .credits-body[data-v-4224bd2a]{padding:20px 0;text-align:center;-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.profile-page .credits-card .credits-body .credits-amount .amount-value[data-v-4224bd2a]{font-size:42px;font-weight:700;color:#fff;text-shadow:0 2px 4px rgba(0,0,0,.2)}.profile-page .credits-card .credits-body .credits-amount .amount-label[data-v-4224bd2a]{font-size:16px;color:hsla(0,0%,100%,.9);margin-left:8px}.profile-page .credits-card .credits-body .vip-status[data-v-4224bd2a]{margin-top: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;gap:6px;font-size:13px}.profile-page .credits-card .credits-body .vip-status .vip-active[data-v-4224bd2a]{color:gold}.profile-page .credits-card .credits-body .vip-status .vip-expired[data-v-4224bd2a]{color:hsla(0,0%,100%,.6)}.profile-page .credits-card .credits-body .vip-status .no-vip[data-v-4224bd2a]{color:hsla(0,0%,100%,.7)}.profile-page .credits-card .credits-actions[data-v-4224bd2a]{text-align:center;margin-top:auto}.profile-page .credits-card .credits-actions .ant-btn[data-v-4224bd2a]{border-radius:20px;padding:0 24px;height:36px;font-weight:500;background:#fff;color:#667eea;border:none}.profile-page .credits-card .credits-actions .ant-btn[data-v-4224bd2a]:hover{background:hsla(0,0%,100%,.9);color:#764ba2}.profile-page .credits-card .credits-hint[data-v-4224bd2a]{margin-top:12px;text-align:center;font-size:12px;color:hsla(0,0%,100%,.7);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;gap:6px}.profile-page .referral-card[data-v-4224bd2a]{border-radius:12px;-webkit-box-shadow:0 4px 20px rgba(0,0,0,.08);box-shadow:0 4px 20px rgba(0,0,0,.08);background:linear-gradient(135deg,#11998e,#38ef7d);color:#fff}.profile-page .referral-card[data-v-4224bd2a] .ant-card-body{background:transparent;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.profile-page .referral-card[data-v-4224bd2a] .ant-divider{border-color:hsla(0,0%,100%,.2)}.profile-page .referral-card .referral-header .referral-title[data-v-4224bd2a]{font-size:16px;font-weight:600;margin:0;color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.profile-page .referral-card .referral-header .referral-title .anticon[data-v-4224bd2a]{font-size:18px}.profile-page .referral-card .referral-body[data-v-4224bd2a]{padding:12px 0;-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.profile-page .referral-card .referral-body .referral-stats[data-v-4224bd2a]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-pack:distribute;justify-content:space-around}.profile-page .referral-card .referral-body .referral-stats .stat-item[data-v-4224bd2a]{text-align:center}.profile-page .referral-card .referral-body .referral-stats .stat-item .stat-value[data-v-4224bd2a]{font-size:28px;font-weight:700;color:#fff;display:block}.profile-page .referral-card .referral-body .referral-stats .stat-item .stat-label[data-v-4224bd2a]{font-size:12px;color:hsla(0,0%,100%,.8)}.profile-page .referral-card .referral-body .referral-link-section .link-label[data-v-4224bd2a]{font-size:12px;color:hsla(0,0%,100%,.9);margin-bottom:6px}.profile-page .referral-card .referral-body .referral-link-section .link-box[data-v-4224bd2a] .ant-input{background:hsla(0,0%,100%,.2);border:1px solid hsla(0,0%,100%,.3);color:#fff}.profile-page .referral-card .referral-body .referral-link-section .link-box[data-v-4224bd2a] .ant-input::-webkit-input-placeholder{color:hsla(0,0%,100%,.6)}.profile-page .referral-card .referral-body .referral-link-section .link-box[data-v-4224bd2a] .ant-input::-moz-placeholder{color:hsla(0,0%,100%,.6)}.profile-page .referral-card .referral-body .referral-link-section .link-box[data-v-4224bd2a] .ant-input:-ms-input-placeholder{color:hsla(0,0%,100%,.6)}.profile-page .referral-card .referral-body .referral-link-section .link-box[data-v-4224bd2a] .ant-input::-ms-input-placeholder{color:hsla(0,0%,100%,.6)}.profile-page .referral-card .referral-body .referral-link-section .link-box[data-v-4224bd2a] .ant-input::placeholder{color:hsla(0,0%,100%,.6)}.profile-page .referral-card .referral-body .referral-link-section .link-box[data-v-4224bd2a] .anticon-copy{color:#fff}.profile-page .referral-card .referral-body .referral-link-section .link-box[data-v-4224bd2a] .anticon-copy:hover{color:gold}.profile-page .referral-card .referral-body .referral-hint[data-v-4224bd2a]{margin-top:auto;text-align:center;font-size:12px;color:hsla(0,0%,100%,.85);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;gap:6px}.profile-page .referral-card .referral-body .referral-hint .anticon-gift[data-v-4224bd2a]{color:gold}.profile-page .referral-user-cell[data-v-4224bd2a]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px}.profile-page .referral-user-cell .user-info[data-v-4224bd2a]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.profile-page .referral-user-cell .user-info .nickname[data-v-4224bd2a]{font-weight:500;color:#333}.profile-page .referral-user-cell .user-info .username[data-v-4224bd2a]{font-size:12px;color:#999}.profile-page .exchange-config-section .credential-hint[data-v-4224bd2a]{font-family:SFMono-Regular,Consolas,monospace;font-size:13px;color:#666}.profile-page .test-result-msg[data-v-4224bd2a]{margin-top:8px;font-size:13px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}.profile-page .test-result-msg.success[data-v-4224bd2a]{color:#52c41a}.profile-page .test-result-msg.error[data-v-4224bd2a]{color:#f5222d}.profile-page.theme-dark[data-v-4224bd2a]{background:-webkit-gradient(linear,left top,left bottom,from(#141414),to(#1c1c1c));background:linear-gradient(180deg,#141414,#1c1c1c)}.profile-page.theme-dark .page-header .page-title[data-v-4224bd2a]{color:#e0e6ed}.profile-page.theme-dark .page-header .page-desc[data-v-4224bd2a]{color:#8b949e}.profile-page.theme-dark .edit-card[data-v-4224bd2a],.profile-page.theme-dark .profile-card[data-v-4224bd2a]{background:#1c1c1c;-webkit-box-shadow:0 4px 24px rgba(0,0,0,.25);box-shadow:0 4px 24px rgba(0,0,0,.25)}.profile-page.theme-dark .edit-card[data-v-4224bd2a] .ant-card-body,.profile-page.theme-dark .profile-card[data-v-4224bd2a] .ant-card-body{background:#1c1c1c}.profile-page.theme-dark .profile-card .avatar-section .username[data-v-4224bd2a]{color:#e0e6ed}.profile-page.theme-dark .profile-card .profile-info .info-item[data-v-4224bd2a]{border-bottom-color:#2a2a2a}.profile-page.theme-dark .profile-card .profile-info .info-item .label[data-v-4224bd2a]{color:#8b949e}.profile-page.theme-dark .profile-card .profile-info .info-item .value[data-v-4224bd2a]{color:#e0e6ed}.profile-page.theme-dark .edit-card[data-v-4224bd2a] .ant-tabs-bar{border-bottom-color:#2a2a2a}.profile-page.theme-dark .edit-card[data-v-4224bd2a] .ant-tabs-tab{color:#8b949e}.profile-page.theme-dark .edit-card[data-v-4224bd2a] .ant-tabs-tab:hover{color:#e0e6ed}.profile-page.theme-dark .edit-card[data-v-4224bd2a] .ant-tabs-tab-active{color:#1890ff}.profile-page.theme-dark .edit-card[data-v-4224bd2a] .ant-form-item-label label{color:#c9d1d9}.profile-page.theme-dark .edit-card[data-v-4224bd2a] .ant-input,.profile-page.theme-dark .edit-card[data-v-4224bd2a] .ant-input-password{background:#141414;border-color:#2a2a2a;color:#c9d1d9}.profile-page.theme-dark .edit-card[data-v-4224bd2a] .ant-input-password:focus,.profile-page.theme-dark .edit-card[data-v-4224bd2a] .ant-input-password:hover,.profile-page.theme-dark .edit-card[data-v-4224bd2a] .ant-input:focus,.profile-page.theme-dark .edit-card[data-v-4224bd2a] .ant-input:hover{border-color:#1890ff}.profile-page.theme-dark .credits-card[data-v-4224bd2a]{background:linear-gradient(135deg,#1c1c1c,#1a1a1a 50%,#141414);-webkit-box-shadow:0 4px 24px rgba(0,0,0,.25);box-shadow:0 4px 24px rgba(0,0,0,.25)}.profile-page.theme-dark .credits-card[data-v-4224bd2a] .ant-divider{border-color:hsla(0,0%,100%,.1)}.profile-page.theme-dark .credits-card .credits-actions .ant-btn[data-v-4224bd2a]{background:hsla(0,0%,100%,.15);color:#fff;border:1px solid hsla(0,0%,100%,.2)}.profile-page.theme-dark .credits-card .credits-actions .ant-btn[data-v-4224bd2a]:hover{background:hsla(0,0%,100%,.25)}.profile-page.theme-dark[data-v-4224bd2a] .ant-table-wrapper .ant-table{background:#1c1c1c;color:#c9d1d9}.profile-page.theme-dark[data-v-4224bd2a] .ant-table-wrapper .ant-table-thead>tr>th{background:#2a2a2a;color:#c9d1d9;border-bottom-color:#2a2a2a}.profile-page.theme-dark[data-v-4224bd2a] .ant-table-wrapper .ant-table-tbody>tr>td{background:#1c1c1c;color:#c9d1d9;border-bottom-color:#2a2a2a}.profile-page.theme-dark[data-v-4224bd2a] .ant-table-wrapper .ant-table-tbody>tr:hover>td{background:#2a2a2a}.profile-page.theme-dark[data-v-4224bd2a] .ant-table-wrapper .ant-table-placeholder{background:#1c1c1c;color:#8b949e}.profile-page.theme-dark[data-v-4224bd2a] .ant-table-wrapper .ant-table-tbody>tr>td,.profile-page.theme-dark[data-v-4224bd2a] .ant-table-wrapper .ant-table-tbody>tr>td :not(.ant-tag):not(.ant-btn),.profile-page.theme-dark[data-v-4224bd2a] .ant-table-wrapper .ant-table-tbody>tr>td div,.profile-page.theme-dark[data-v-4224bd2a] .ant-table-wrapper .ant-table-tbody>tr>td span{color:#c9d1d9}.profile-page.theme-dark[data-v-4224bd2a] .ant-table-wrapper .amount-positive{color:#52c41a}.profile-page.theme-dark[data-v-4224bd2a] .ant-table-wrapper .amount-negative{color:#f5222d}.profile-page.theme-dark[data-v-4224bd2a] .ant-table-wrapper .ant-tag{border-width:1px;font-weight:600}.profile-page.theme-dark[data-v-4224bd2a] .ant-table-wrapper .ant-tag-red{background:rgba(245,34,45,.25);border-color:#f5222d;color:#ff7875}.profile-page.theme-dark[data-v-4224bd2a] .ant-table-wrapper .ant-tag-green{background:rgba(82,196,26,.25);border-color:#52c41a;color:#73d13d}.profile-page.theme-dark[data-v-4224bd2a] .ant-table-wrapper .ant-tag-blue{background:rgba(24,144,255,.25);border-color:#1890ff;color:#69c0ff}.profile-page.theme-dark[data-v-4224bd2a] .ant-table-wrapper .ant-tag-gold,.profile-page.theme-dark[data-v-4224bd2a] .ant-table-wrapper .ant-tag-orange{background:rgba(250,173,20,.25);border-color:#faad14;color:#ffc53d}.profile-page.theme-dark[data-v-4224bd2a] .ant-table-wrapper .ant-tag-cyan{background:rgba(19,194,194,.25);border-color:#13c2c2;color:#5cdbd3}.profile-page.theme-dark[data-v-4224bd2a] .ant-table-wrapper .ant-tag-purple{background:rgba(114,46,209,.25);border-color:#722ed1;color:#b37feb}.profile-page.theme-dark[data-v-4224bd2a] .ant-table-wrapper .ant-tag-volcano{background:rgba(250,84,28,.25);border-color:#fa541c;color:#ff9c6e}.profile-page.theme-dark[data-v-4224bd2a] .ant-table-wrapper .ant-tag-lime{background:hsla(89,56%,62%,.25);border-color:#a0d911;color:#bae637}.profile-page.theme-dark[data-v-4224bd2a] .ant-table-wrapper .ant-tag-default{background:hsla(0,0%,100%,.08);border-color:hsla(0,0%,100%,.2);color:#c9d1d9}.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-form-item-label>label,.profile-page.theme-dark .password-form[data-v-4224bd2a] .ant-form-item-label>label,.profile-page.theme-dark .profile-form[data-v-4224bd2a] .ant-form-item-label>label{color:#c9d1d9}.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-form-item-explain,.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-form-item-extra,.profile-page.theme-dark .password-form[data-v-4224bd2a] .ant-form-item-explain,.profile-page.theme-dark .password-form[data-v-4224bd2a] .ant-form-item-extra,.profile-page.theme-dark .profile-form[data-v-4224bd2a] .ant-form-item-explain,.profile-page.theme-dark .profile-form[data-v-4224bd2a] .ant-form-item-extra{color:#8b949e}.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-input,.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-input-number,.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-input-password,.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-select-selector,.profile-page.theme-dark .password-form[data-v-4224bd2a] .ant-input,.profile-page.theme-dark .password-form[data-v-4224bd2a] .ant-input-number,.profile-page.theme-dark .password-form[data-v-4224bd2a] .ant-input-password,.profile-page.theme-dark .password-form[data-v-4224bd2a] .ant-select-selector,.profile-page.theme-dark .profile-form[data-v-4224bd2a] .ant-input,.profile-page.theme-dark .profile-form[data-v-4224bd2a] .ant-input-number,.profile-page.theme-dark .profile-form[data-v-4224bd2a] .ant-input-password,.profile-page.theme-dark .profile-form[data-v-4224bd2a] .ant-select-selector{background:#141414;border-color:#2a2a2a;color:#c9d1d9}.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-input-number::-webkit-input-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-input-password::-webkit-input-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-input::-webkit-input-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-select-selector::-webkit-input-placeholder,.profile-page.theme-dark .password-form[data-v-4224bd2a] .ant-input-number::-webkit-input-placeholder,.profile-page.theme-dark .password-form[data-v-4224bd2a] .ant-input-password::-webkit-input-placeholder,.profile-page.theme-dark .password-form[data-v-4224bd2a] .ant-input::-webkit-input-placeholder,.profile-page.theme-dark .password-form[data-v-4224bd2a] .ant-select-selector::-webkit-input-placeholder,.profile-page.theme-dark .profile-form[data-v-4224bd2a] .ant-input-number::-webkit-input-placeholder,.profile-page.theme-dark .profile-form[data-v-4224bd2a] .ant-input-password::-webkit-input-placeholder,.profile-page.theme-dark .profile-form[data-v-4224bd2a] .ant-input::-webkit-input-placeholder,.profile-page.theme-dark .profile-form[data-v-4224bd2a] .ant-select-selector::-webkit-input-placeholder{color:#6e7681}.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-input-number::-moz-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-input-password::-moz-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-input::-moz-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-select-selector::-moz-placeholder,.profile-page.theme-dark .password-form[data-v-4224bd2a] .ant-input-number::-moz-placeholder,.profile-page.theme-dark .password-form[data-v-4224bd2a] .ant-input-password::-moz-placeholder,.profile-page.theme-dark .password-form[data-v-4224bd2a] .ant-input::-moz-placeholder,.profile-page.theme-dark .password-form[data-v-4224bd2a] .ant-select-selector::-moz-placeholder,.profile-page.theme-dark .profile-form[data-v-4224bd2a] .ant-input-number::-moz-placeholder,.profile-page.theme-dark .profile-form[data-v-4224bd2a] .ant-input-password::-moz-placeholder,.profile-page.theme-dark .profile-form[data-v-4224bd2a] .ant-input::-moz-placeholder,.profile-page.theme-dark .profile-form[data-v-4224bd2a] .ant-select-selector::-moz-placeholder{color:#6e7681}.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-input-number:-ms-input-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-input-password:-ms-input-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-input:-ms-input-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-select-selector:-ms-input-placeholder,.profile-page.theme-dark .password-form[data-v-4224bd2a] .ant-input-number:-ms-input-placeholder,.profile-page.theme-dark .password-form[data-v-4224bd2a] .ant-input-password:-ms-input-placeholder,.profile-page.theme-dark .password-form[data-v-4224bd2a] .ant-input:-ms-input-placeholder,.profile-page.theme-dark .password-form[data-v-4224bd2a] .ant-select-selector:-ms-input-placeholder,.profile-page.theme-dark .profile-form[data-v-4224bd2a] .ant-input-number:-ms-input-placeholder,.profile-page.theme-dark .profile-form[data-v-4224bd2a] .ant-input-password:-ms-input-placeholder,.profile-page.theme-dark .profile-form[data-v-4224bd2a] .ant-input:-ms-input-placeholder,.profile-page.theme-dark .profile-form[data-v-4224bd2a] .ant-select-selector:-ms-input-placeholder{color:#6e7681}.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-input-number::-ms-input-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-input-password::-ms-input-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-input::-ms-input-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-select-selector::-ms-input-placeholder,.profile-page.theme-dark .password-form[data-v-4224bd2a] .ant-input-number::-ms-input-placeholder,.profile-page.theme-dark .password-form[data-v-4224bd2a] .ant-input-password::-ms-input-placeholder,.profile-page.theme-dark .password-form[data-v-4224bd2a] .ant-input::-ms-input-placeholder,.profile-page.theme-dark .password-form[data-v-4224bd2a] .ant-select-selector::-ms-input-placeholder,.profile-page.theme-dark .profile-form[data-v-4224bd2a] .ant-input-number::-ms-input-placeholder,.profile-page.theme-dark .profile-form[data-v-4224bd2a] .ant-input-password::-ms-input-placeholder,.profile-page.theme-dark .profile-form[data-v-4224bd2a] .ant-input::-ms-input-placeholder,.profile-page.theme-dark .profile-form[data-v-4224bd2a] .ant-select-selector::-ms-input-placeholder{color:#6e7681}.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-input-number::placeholder,.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-input-password::placeholder,.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-input::placeholder,.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-select-selector::placeholder,.profile-page.theme-dark .password-form[data-v-4224bd2a] .ant-input-number::placeholder,.profile-page.theme-dark .password-form[data-v-4224bd2a] .ant-input-password::placeholder,.profile-page.theme-dark .password-form[data-v-4224bd2a] .ant-input::placeholder,.profile-page.theme-dark .password-form[data-v-4224bd2a] .ant-select-selector::placeholder,.profile-page.theme-dark .profile-form[data-v-4224bd2a] .ant-input-number::placeholder,.profile-page.theme-dark .profile-form[data-v-4224bd2a] .ant-input-password::placeholder,.profile-page.theme-dark .profile-form[data-v-4224bd2a] .ant-input::placeholder,.profile-page.theme-dark .profile-form[data-v-4224bd2a] .ant-select-selector::placeholder{color:#6e7681}.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-checkbox-wrapper,.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-checkbox-wrapper span,.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-radio-wrapper,.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-radio-wrapper span,.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-select-selection-item,.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-select-selection-placeholder,.profile-page.theme-dark .password-form[data-v-4224bd2a] .ant-checkbox-wrapper,.profile-page.theme-dark .password-form[data-v-4224bd2a] .ant-checkbox-wrapper span,.profile-page.theme-dark .password-form[data-v-4224bd2a] .ant-radio-wrapper,.profile-page.theme-dark .password-form[data-v-4224bd2a] .ant-radio-wrapper span,.profile-page.theme-dark .password-form[data-v-4224bd2a] .ant-select-selection-item,.profile-page.theme-dark .password-form[data-v-4224bd2a] .ant-select-selection-placeholder,.profile-page.theme-dark .profile-form[data-v-4224bd2a] .ant-checkbox-wrapper,.profile-page.theme-dark .profile-form[data-v-4224bd2a] .ant-checkbox-wrapper span,.profile-page.theme-dark .profile-form[data-v-4224bd2a] .ant-radio-wrapper,.profile-page.theme-dark .profile-form[data-v-4224bd2a] .ant-radio-wrapper span,.profile-page.theme-dark .profile-form[data-v-4224bd2a] .ant-select-selection-item,.profile-page.theme-dark .profile-form[data-v-4224bd2a] .ant-select-selection-placeholder{color:#c9d1d9}.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-checkbox-checked .ant-checkbox-inner,.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-radio-checked .ant-radio-inner,.profile-page.theme-dark .password-form[data-v-4224bd2a] .ant-checkbox-checked .ant-checkbox-inner,.profile-page.theme-dark .password-form[data-v-4224bd2a] .ant-radio-checked .ant-radio-inner,.profile-page.theme-dark .profile-form[data-v-4224bd2a] .ant-checkbox-checked .ant-checkbox-inner,.profile-page.theme-dark .profile-form[data-v-4224bd2a] .ant-radio-checked .ant-radio-inner{background-color:#1890ff;border-color:#1890ff}.profile-page.theme-dark .notification-settings-form .email-hint[data-v-4224bd2a],.profile-page.theme-dark .notification-settings-form .field-hint[data-v-4224bd2a],.profile-page.theme-dark .password-form .email-hint[data-v-4224bd2a],.profile-page.theme-dark .password-form .field-hint[data-v-4224bd2a],.profile-page.theme-dark .profile-form .email-hint[data-v-4224bd2a],.profile-page.theme-dark .profile-form .field-hint[data-v-4224bd2a]{color:#8b949e}.profile-page.theme-dark .notification-settings-form .email-warning[data-v-4224bd2a],.profile-page.theme-dark .password-form .email-warning[data-v-4224bd2a],.profile-page.theme-dark .profile-form .email-warning[data-v-4224bd2a]{color:#f5222d}.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-alert{background:#1c1c1c;border-color:#2a2a2a;color:#c9d1d9}.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-alert .ant-alert-message{color:#c9d1d9}.profile-page.theme-dark .exchange-config-section .credential-hint[data-v-4224bd2a],.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-alert .ant-alert-description{color:#8b949e}.profile-page.theme-dark .test-result-msg.success[data-v-4224bd2a]{color:#52c41a}.profile-page.theme-dark .test-result-msg.error[data-v-4224bd2a]{color:#f5222d}.profile-page.theme-dark .referral-user-cell .user-info .nickname[data-v-4224bd2a]{color:#c9d1d9}.profile-page.theme-dark .referral-user-cell .user-info .username[data-v-4224bd2a]{color:#8b949e}.profile-page.theme-dark[data-v-4224bd2a] .ant-tag{color:#c9d1d9}.profile-page.theme-dark[data-v-4224bd2a] .ant-tag.ant-tag-has-color{color:#fff!important;border-color:transparent!important}.profile-page.theme-dark[data-v-4224bd2a] .ant-input-prefix .anticon,.profile-page.theme-dark[data-v-4224bd2a] .ant-input-suffix .anticon,.profile-page.theme-dark[data-v-4224bd2a] .credits-hint .anticon,.profile-page.theme-dark[data-v-4224bd2a] .email-hint .anticon,.profile-page.theme-dark[data-v-4224bd2a] .field-hint .anticon,.profile-page.theme-dark[data-v-4224bd2a] .notification-settings-form .anticon{color:#c9d1d9!important}.profile-page.theme-dark[data-v-4224bd2a] .ant-pagination .ant-pagination-item{background:#1c1c1c;border-color:#2a2a2a}.profile-page.theme-dark[data-v-4224bd2a] .ant-pagination .ant-pagination-item a{color:#c9d1d9}.profile-page.theme-dark[data-v-4224bd2a] .ant-pagination .ant-pagination-item:hover{border-color:#1890ff}.profile-page.theme-dark[data-v-4224bd2a] .ant-pagination .ant-pagination-item-active{background:#1890ff;border-color:#1890ff}.profile-page.theme-dark[data-v-4224bd2a] .ant-pagination .ant-pagination-item-active a{color:#fff}.profile-page.theme-dark[data-v-4224bd2a] .ant-pagination .ant-pagination-next .ant-pagination-item-link,.profile-page.theme-dark[data-v-4224bd2a] .ant-pagination .ant-pagination-prev .ant-pagination-item-link{background:#1c1c1c;border-color:#2a2a2a;color:#c9d1d9}.profile-page.theme-dark[data-v-4224bd2a] .ant-pagination .ant-pagination-options .ant-select-selector{background:#141414;border-color:#2a2a2a;color:#c9d1d9}.profile-page.theme-dark[data-v-4224bd2a] .ant-btn.ant-btn-default{background:#1c1c1c;border-color:#2a2a2a;color:#c9d1d9}.profile-page.theme-dark[data-v-4224bd2a] .ant-btn.ant-btn-default:hover{border-color:#1890ff;color:#1890ff}@media screen and (max-width:768px){.profile-page[data-v-4224bd2a]{padding:12px}.profile-page .page-header[data-v-4224bd2a]{margin-bottom:16px}.profile-page .page-header .page-title[data-v-4224bd2a]{font-size:20px}.profile-page .page-header .page-title .anticon[data-v-4224bd2a]{font-size:22px}.profile-page .page-header .page-desc[data-v-4224bd2a]{font-size:13px}.profile-page .profile-cards-row[data-v-4224bd2a]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.profile-page .profile-cards-row .profile-card-col[data-v-4224bd2a]{margin-bottom:12px}.profile-page .profile-cards-row .right-cards-col .right-cards-row[data-v-4224bd2a]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.profile-page .profile-cards-row .right-cards-col .right-cards-row .ant-col[data-v-4224bd2a]{margin-bottom:12px}.profile-page .profile-card[data-v-4224bd2a]{border-radius:10px}.profile-page .profile-card .avatar-section[data-v-4224bd2a]{padding:16px 0}.profile-page .profile-card .avatar-section[data-v-4224bd2a] .ant-avatar{width:80px!important;height:80px!important;line-height:80px!important}.profile-page .profile-card .avatar-section .username[data-v-4224bd2a]{font-size:18px;margin:12px 0 6px}.profile-page .profile-card .profile-info .info-item[data-v-4224bd2a]{padding:10px 0;-ms-flex-wrap:wrap;flex-wrap:wrap}.profile-page .profile-card .profile-info .info-item .anticon[data-v-4224bd2a]{font-size:14px;margin-right:8px}.profile-page .profile-card .profile-info .info-item .label[data-v-4224bd2a]{font-size:13px}.profile-page .profile-card .profile-info .info-item .value[data-v-4224bd2a]{font-size:13px;word-break:break-all}.profile-page .credits-card[data-v-4224bd2a]{border-radius:10px}.profile-page .credits-card .credits-header .credits-title[data-v-4224bd2a]{font-size:15px}.profile-page .credits-card .credits-header .credits-title .anticon[data-v-4224bd2a]{font-size:16px}.profile-page .credits-card .credits-body[data-v-4224bd2a]{padding:16px 0}.profile-page .credits-card .credits-body .credits-amount .amount-value[data-v-4224bd2a]{font-size:32px}.profile-page .credits-card .credits-body .credits-amount .amount-label[data-v-4224bd2a]{font-size:14px}.profile-page .credits-card .credits-body .vip-status[data-v-4224bd2a]{font-size:12px;margin-top:10px}.profile-page .credits-card .credits-actions .ant-btn[data-v-4224bd2a]{height:34px;padding:0 20px;font-size:14px}.profile-page .credits-card .credits-hint[data-v-4224bd2a]{font-size:11px;margin-top:10px}.profile-page .referral-card[data-v-4224bd2a]{border-radius:10px}.profile-page .referral-card .referral-header .referral-title[data-v-4224bd2a]{font-size:15px}.profile-page .referral-card .referral-header .referral-title .anticon[data-v-4224bd2a]{font-size:16px}.profile-page .referral-card .referral-body[data-v-4224bd2a]{padding:10px 0}.profile-page .referral-card .referral-body .referral-stats .stat-item .stat-value[data-v-4224bd2a]{font-size:24px}.profile-page .referral-card .referral-body .referral-link-section .link-label[data-v-4224bd2a],.profile-page .referral-card .referral-body .referral-stats .stat-item .stat-label[data-v-4224bd2a]{font-size:11px}.profile-page .referral-card .referral-body .referral-link-section .link-box[data-v-4224bd2a] .ant-input{font-size:12px}.profile-page .referral-card .referral-body .referral-hint[data-v-4224bd2a]{font-size:11px;padding-top:8px}.profile-page .edit-card[data-v-4224bd2a]{border-radius:10px;margin-top:12px!important}.profile-page .edit-card[data-v-4224bd2a] .ant-card-body{padding:12px}.profile-page .edit-card[data-v-4224bd2a] .ant-tabs-nav .ant-tabs-tab{padding:10px 12px;font-size:13px}.profile-page .edit-card[data-v-4224bd2a] .ant-tabs-nav-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}.profile-page .edit-card[data-v-4224bd2a] .ant-tabs-nav-scroll::-webkit-scrollbar{display:none}.profile-page .edit-card .password-form[data-v-4224bd2a],.profile-page .edit-card .profile-form[data-v-4224bd2a]{max-width:100%}.profile-page .edit-card .password-form[data-v-4224bd2a] .ant-form-item-label,.profile-page .edit-card .profile-form[data-v-4224bd2a] .ant-form-item-label{padding-bottom:4px}.profile-page .edit-card .password-form[data-v-4224bd2a] .ant-form-item-label label,.profile-page .edit-card .profile-form[data-v-4224bd2a] .ant-form-item-label label{font-size:13px}.profile-page .edit-card .password-form[data-v-4224bd2a] .ant-input,.profile-page .edit-card .password-form[data-v-4224bd2a] .ant-input-password,.profile-page .edit-card .profile-form[data-v-4224bd2a] .ant-input,.profile-page .edit-card .profile-form[data-v-4224bd2a] .ant-input-password{font-size:14px}.profile-page .edit-card .password-form .email-hint[data-v-4224bd2a],.profile-page .edit-card .profile-form .email-hint[data-v-4224bd2a]{font-size:11px}.profile-page .edit-card .password-form[data-v-4224bd2a] .ant-alert{font-size:12px;padding:8px 12px}.profile-page .edit-card .notification-settings-form[data-v-4224bd2a] .ant-alert{font-size:12px;padding:8px 12px;margin-bottom:16px!important}.profile-page .edit-card .notification-settings-form[data-v-4224bd2a] .ant-form{max-width:100%}.profile-page .edit-card .notification-settings-form[data-v-4224bd2a] .ant-checkbox-group .ant-row{margin-left:0!important;margin-right:0!important}.profile-page .edit-card .notification-settings-form[data-v-4224bd2a] .ant-checkbox-group .ant-row .ant-col{padding-left:0!important;padding-right:8px!important}.profile-page .edit-card .notification-settings-form[data-v-4224bd2a] .ant-checkbox-group .ant-checkbox-wrapper{font-size:13px;margin-bottom:6px}.profile-page .edit-card .notification-settings-form .field-hint[data-v-4224bd2a]{font-size:11px;-ms-flex-wrap:wrap;flex-wrap:wrap}.profile-page .edit-card .notification-settings-form[data-v-4224bd2a] .ant-form-item{margin-bottom:16px}.profile-page .edit-card .notification-settings-form[data-v-4224bd2a] .ant-form-item:last-child .ant-btn{width:100%;margin-bottom:8px}.profile-page .edit-card .notification-settings-form[data-v-4224bd2a] .ant-form-item:last-child .ant-btn+.ant-btn{margin-left:0!important}.profile-page .edit-card[data-v-4224bd2a] .ant-table-wrapper{overflow-x:auto}.profile-page .edit-card[data-v-4224bd2a] .ant-table-wrapper .ant-table{min-width:500px}.profile-page .referral-user-cell[data-v-4224bd2a]{gap:8px}.profile-page .referral-user-cell[data-v-4224bd2a] .ant-avatar{width:28px!important;height:28px!important;line-height:28px!important}.profile-page .referral-user-cell .user-info .nickname[data-v-4224bd2a]{font-size:13px}.profile-page .referral-user-cell .user-info .username[data-v-4224bd2a]{font-size:11px}}@media screen and (max-width:480px){.profile-page[data-v-4224bd2a]{padding:8px}.profile-page .page-header[data-v-4224bd2a]{margin-bottom:12px}.profile-page .page-header .page-title[data-v-4224bd2a]{font-size:18px;gap:8px}.profile-page .page-header .page-title .anticon[data-v-4224bd2a]{font-size:20px}.profile-page .credits-card .credits-body .credits-amount .amount-value[data-v-4224bd2a]{font-size:28px}.profile-page .credits-card .credits-body .credits-amount .amount-label[data-v-4224bd2a]{font-size:13px}.profile-page .credits-card .credits-actions .ant-btn[data-v-4224bd2a]{width:100%}.profile-page .referral-card .referral-body .referral-stats .stat-item .stat-value[data-v-4224bd2a]{font-size:20px}.profile-page .edit-card[data-v-4224bd2a] .ant-tabs-nav .ant-tabs-tab{padding:8px 10px;font-size:12px}.profile-page .edit-card .notification-settings-form[data-v-4224bd2a] .ant-checkbox-group .ant-row .ant-col{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}}.profile-exchange-modal .exchange-account-form .egress-ip-block{width:100%}.profile-exchange-modal .exchange-account-form .egress-ip-row{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:6px}.profile-exchange-modal .exchange-account-form .egress-ip-refresh-row{margin-top:4px}.profile-exchange-modal .exchange-account-form .egress-ip-line{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px;margin-bottom:10px}.profile-exchange-modal .exchange-account-form .egress-ip-kind{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;min-width:42px;font-size:12px;color:rgba(0,0,0,.55)}.profile-exchange-modal .exchange-account-form .egress-ip-value{-webkit-box-flex:1;-ms-flex:1 1 160px;flex:1 1 160px;min-width:0;font-family:Consolas,ui-monospace,monospace;font-size:12px;padding:6px 10px;border-radius:4px;border:1px solid #d9d9d9;background:#fafafa;color:#262626;word-break:break-all}.profile-exchange-modal .exchange-account-form .exchange-demo-checkbox-label{color:rgba(0,0,0,.85)}.profile-exchange-modal .exchange-account-form .exchange-demo-hint{margin-top:6px}.profile-exchange-modal--dark .ant-modal-content{background:#1c1c1c;-webkit-box-shadow:0 8px 32px rgba(0,0,0,.45);box-shadow:0 8px 32px rgba(0,0,0,.45)}.profile-exchange-modal--dark .ant-modal-header{background:#1c1c1c;border-bottom:1px solid #2a2a2a}.profile-exchange-modal--dark .ant-modal-title{color:#e0e6ed}.profile-exchange-modal--dark .ant-modal-close{color:#8b949e}.profile-exchange-modal--dark .ant-modal-body,.profile-exchange-modal--dark .ant-modal-close:hover{color:#c9d1d9}.profile-exchange-modal--dark .ant-modal-footer{background:#1c1c1c;border-top:1px solid #2a2a2a}.profile-exchange-modal--dark .exchange-account-form .ant-form-item-label>label{color:#c9d1d9}.profile-exchange-modal--dark .exchange-account-form .ant-form-item-explain,.profile-exchange-modal--dark .exchange-account-form .ant-form-item-extra{color:#8b949e}.profile-exchange-modal--dark .exchange-account-form .ant-input,.profile-exchange-modal--dark .exchange-account-form .ant-input-number,.profile-exchange-modal--dark .exchange-account-form .ant-input-number-input,.profile-exchange-modal--dark .exchange-account-form .ant-input-password .ant-input{background:#141414!important;border-color:#2a2a2a!important;color:#c9d1d9!important}.profile-exchange-modal--dark .exchange-account-form .ant-input-password-icon{color:#8b949e}.profile-exchange-modal--dark .exchange-account-form .ant-input-number-handler-wrap{background:#141414;border-left-color:#2a2a2a}.profile-exchange-modal--dark .exchange-account-form .ant-input-number-handler-down-inner,.profile-exchange-modal--dark .exchange-account-form .ant-input-number-handler-up-inner{color:#8b949e}.profile-exchange-modal--dark .exchange-account-form .ant-select-selector{background:#141414!important;border-color:#2a2a2a!important;color:#c9d1d9!important}.profile-exchange-modal--dark .exchange-account-form .ant-select-selection-item,.profile-exchange-modal--dark .exchange-account-form .ant-select-selection-placeholder{color:#c9d1d9!important}.profile-exchange-modal--dark .exchange-account-form .ant-select-selection,.profile-exchange-modal--dark .exchange-account-form .ant-select-selection--single{background:#141414!important;border-color:#2a2a2a!important}.profile-exchange-modal--dark .exchange-account-form .ant-select-selection-placeholder,.profile-exchange-modal--dark .exchange-account-form .ant-select-selection-selected-value,.profile-exchange-modal--dark .exchange-account-form .ant-select-selection__rendered{color:#c9d1d9!important}.profile-exchange-modal--dark .exchange-account-form .ant-select-arrow{color:#8b949e}.profile-exchange-modal--dark .exchange-account-form .ant-checkbox-wrapper,.profile-exchange-modal--dark .exchange-account-form .ant-checkbox-wrapper span{color:#c9d1d9}.profile-exchange-modal--dark .exchange-account-form .exchange-demo-checkbox-label{color:#c9d1d9!important}.profile-exchange-modal--dark .exchange-account-form .egress-ip-hint,.profile-exchange-modal--dark .exchange-account-form .exchange-demo-hint{color:#8b949e!important}.profile-exchange-modal--dark .exchange-account-form .egress-ip-value{border-color:#2a2a2a!important;background:#141414!important;color:#e0e6ed!important}.profile-exchange-modal--dark .exchange-account-form a.egress-ip-action{color:#58a6ff}.profile-exchange-modal--dark .exchange-account-form .egress-ip-kind{color:#8b949e!important}.profile-exchange-modal--dark .exchange-account-form .ant-alert{background:rgba(250,173,20,.12);border-color:rgba(250,173,20,.45)}.profile-exchange-modal--dark .exchange-account-form .ant-alert-message{color:#ffc53d}.profile-exchange-modal--dark .exchange-account-form .ant-alert-description{color:#8b949e}.profile-exchange-modal--dark .exchange-account-form .ant-alert-icon{color:#faad14}.profile-exchange-modal--dark .exchange-account-form .field-hint{color:#8b949e;margin-top:6px;font-size:12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:6px}.profile-exchange-modal--dark .exchange-account-form .field-hint .anticon{color:#8b949e;margin-top:2px}.profile-exchange-modal--dark .exchange-account-form .test-result-msg{color:#c9d1d9}.profile-exchange-modal--dark .exchange-account-form .test-result-msg.success{color:#73d13d}.profile-exchange-modal--dark .exchange-account-form .test-result-msg.error{color:#ff7875}.profile-exchange-select-dropdown-dark.ant-select-dropdown{background:#1c1c1c}.profile-exchange-select-dropdown-dark.ant-select-dropdown .ant-select-dropdown-menu-item{color:#c9d1d9}.profile-exchange-select-dropdown-dark.ant-select-dropdown .ant-select-dropdown-menu-item:hover{background:#2a2a2a}.profile-exchange-select-dropdown-dark.ant-select-dropdown .ant-select-dropdown-menu-item-selected{background:#2a2a2a!important;color:#e0e6ed;font-weight:500}.profile-exchange-select-dropdown-dark.ant-select-dropdown .ant-select-dropdown-menu-item-group-title{color:#8b949e!important;font-size:12px}.profile-exchange-select-dropdown-dark.ant-select-dropdown .ant-select-dropdown-menu-item,.profile-exchange-select-dropdown-dark.ant-select-dropdown .ant-select-dropdown-menu-item-selected{color:#c9d1d9!important}.profile-exchange-select-dropdown-dark.ant-select-dropdown .ant-empty-description{color:#8b949e} \ No newline at end of file diff --git a/frontend/dist/css/200.e5d22965.css b/frontend/dist/css/200.e5d22965.css new file mode 100644 index 0000000..9fb1fb7 --- /dev/null +++ b/frontend/dist/css/200.e5d22965.css @@ -0,0 +1 @@ +.fast-analysis-report[data-v-03feb1fa]{height:100%;overflow-y:auto;padding:24px;background:#f7f8fa;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased}.fast-analysis-report[data-v-03feb1fa]::-webkit-scrollbar{width:4px}.fast-analysis-report[data-v-03feb1fa]::-webkit-scrollbar-thumb{background:#d0d4da;border-radius:2px}.fast-analysis-report .loading-container[data-v-03feb1fa]{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;min-height:420px}.fast-analysis-report .loading-container .loading-content-pro[data-v-03feb1fa]{width:100%;max-width:400px;padding:40px}.fast-analysis-report .loading-container .loading-content-pro .loading-header[data-v-03feb1fa]{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;gap:12px;margin-bottom:32px}.fast-analysis-report .loading-container .loading-content-pro .loading-header .loading-icon-pro[data-v-03feb1fa]{font-size:26px;color:var(--primary-color,#1890ff)}.fast-analysis-report .loading-container .loading-content-pro .loading-header .loading-title[data-v-03feb1fa]{font-size:18px;font-weight:700;color:#1a1a2e}.fast-analysis-report .loading-container .loading-content-pro .progress-wrapper[data-v-03feb1fa]{margin-bottom:24px;position:relative}.fast-analysis-report .loading-container .loading-content-pro .progress-wrapper .progress-text[data-v-03feb1fa]{position:absolute;right:0;top:-22px;font-size:13px;font-weight:700;color:var(--primary-color,#1890ff)}.fast-analysis-report .loading-container .loading-content-pro .current-step[data-v-03feb1fa]{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;gap:8px;padding:10px 20px;background:color-mix(in srgb,var(--primary-color,#1890ff) 6%,transparent);border-radius:8px;margin-bottom:20px;color:var(--primary-color,#1890ff);font-size:13px;font-weight:600}.fast-analysis-report .loading-container .loading-content-pro .current-step .anticon[data-v-03feb1fa]{font-size:15px}.fast-analysis-report .loading-container .loading-content-pro .steps-list[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:8px}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px;padding:9px 14px;background:rgba(0,0,0,.02);border-radius:8px;font-size:12px;color:#999;-webkit-transition:all .3s;transition:all .3s}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item .step-dot[data-v-03feb1fa]{width:7px;height:7px;border-radius:50%;background:#ddd;-webkit-transition:all .3s;transition:all .3s}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item .step-text[data-v-03feb1fa]{-webkit-box-flex:1;-ms-flex:1;flex:1}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item .step-check[data-v-03feb1fa]{color:#10b981;font-size:13px}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item.active[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 6%,transparent);color:var(--primary-color,#1890ff);font-weight:600}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item.active .step-dot[data-v-03feb1fa]{background:var(--primary-color,#1890ff);-webkit-box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color,#1890ff) 15%,transparent);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color,#1890ff) 15%,transparent)}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item.done[data-v-03feb1fa]{color:#10b981}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item.done .step-dot[data-v-03feb1fa]{background:#10b981}.fast-analysis-report .loading-container .loading-content-pro .loading-footer[data-v-03feb1fa]{margin-top:20px;text-align:center}.fast-analysis-report .loading-container .loading-content-pro .loading-footer .elapsed-time[data-v-03feb1fa]{font-size:12px;color:#999;font-family:SF Mono,Monaco,monospace}.fast-analysis-report .empty-container[data-v-03feb1fa]{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;min-height:400px}.fast-analysis-report .empty-container .empty-content[data-v-03feb1fa]{text-align:center}.fast-analysis-report .empty-container .empty-content .empty-icon[data-v-03feb1fa]{font-size:56px;color:#ccc}.fast-analysis-report .empty-container .empty-content .empty-title[data-v-03feb1fa]{margin-top:14px;font-size:17px;font-weight:700;color:#1a1a2e}.fast-analysis-report .empty-container .empty-content .empty-hint[data-v-03feb1fa]{margin-top:6px;color:#999;font-size:13px}.fast-analysis-report .result-container .decision-card[data-v-03feb1fa]{padding:28px 24px;margin-bottom:2px;border-radius:16px 16px 0 0;background:#fff;position:relative;overflow:hidden}.fast-analysis-report .result-container .decision-card[data-v-03feb1fa]:after{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:var(--primary-color,#1890ff)}.fast-analysis-report .result-container .decision-card.decision-buy[data-v-03feb1fa]:after{background:-webkit-gradient(linear,left top,right top,from(#10b981),to(#34d399));background:linear-gradient(90deg,#10b981,#34d399)}.fast-analysis-report .result-container .decision-card.decision-sell[data-v-03feb1fa]:after{background:-webkit-gradient(linear,left top,right top,from(#ef4444),to(#f87171));background:linear-gradient(90deg,#ef4444,#f87171)}.fast-analysis-report .result-container .decision-card.decision-hold[data-v-03feb1fa]:after{background:-webkit-gradient(linear,left top,right top,from(#f59e0b),to(#fbbf24));background:linear-gradient(90deg,#f59e0b,#fbbf24)}.fast-analysis-report .result-container .decision-card .decision-main[data-v-03feb1fa]{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;margin-bottom:16px}.fast-analysis-report .result-container .decision-card .decision-main .decision-badge[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px}.fast-analysis-report .result-container .decision-card .decision-main .decision-badge .anticon[data-v-03feb1fa]{font-size:28px}.fast-analysis-report .result-container .decision-card .decision-main .decision-badge .decision-text[data-v-03feb1fa]{font-size:32px;font-weight:800;letter-spacing:1px;color:#1a1a2e;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,sans-serif}.fast-analysis-report .result-container .decision-card .decision-main .confidence-ring[data-v-03feb1fa]{text-align:center}.fast-analysis-report .result-container .decision-card .decision-main .confidence-ring .confidence-value[data-v-03feb1fa]{font-size:17px;font-weight:800;color:#1a1a2e;font-family:SF Mono,Cascadia Code,Consolas,Monaco,monospace}.fast-analysis-report .result-container .decision-card .decision-main .confidence-ring .confidence-label[data-v-03feb1fa]{font-size:11px;color:#999;margin-top:2px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,sans-serif}.fast-analysis-report .result-container .decision-card .decision-summary[data-v-03feb1fa]{font-size:14px;line-height:1.75;color:#555;padding-top:14px;border-top:1px solid #ebeef2}.fast-analysis-report .result-container .decision-card .consensus-strip[data-v-03feb1fa]{margin-top:12px;padding:10px 14px;border-radius:8px;background:color-mix(in srgb,var(--primary-color,#1890ff) 4%,transparent);font-size:12px;color:#555}.fast-analysis-report .result-container .decision-card .consensus-strip .consensus-strip-title[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;font-weight:700;margin-bottom:6px;color:var(--primary-color,#1890ff);font-size:12px}.fast-analysis-report .result-container .decision-card .consensus-strip .consensus-strip-metrics[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px 18px}.fast-analysis-report .result-container .decision-card .consensus-strip .consensus-strip-metrics .cm-item em[data-v-03feb1fa]{font-style:normal;color:#999;margin-right:4px}.fast-analysis-report .result-container .decision-card.decision-buy .decision-badge .anticon[data-v-03feb1fa],.fast-analysis-report .result-container .decision-card.decision-buy .decision-badge .decision-text[data-v-03feb1fa]{color:#10b981}.fast-analysis-report .result-container .decision-card.decision-sell .decision-badge .anticon[data-v-03feb1fa],.fast-analysis-report .result-container .decision-card.decision-sell .decision-badge .decision-text[data-v-03feb1fa]{color:#ef4444}.fast-analysis-report .result-container .decision-card.decision-hold .decision-badge .anticon[data-v-03feb1fa],.fast-analysis-report .result-container .decision-card.decision-hold .decision-badge .decision-text[data-v-03feb1fa]{color:#f59e0b}.fast-analysis-report .result-container .price-info-row[data-v-03feb1fa]{display:grid;grid-template-columns:repeat(4,1fr);gap:0;background:#fff;margin-bottom:2px}.fast-analysis-report .result-container .price-info-row.hold-mode[data-v-03feb1fa]{grid-template-columns:1fr}.fast-analysis-report .result-container .price-info-row .price-card[data-v-03feb1fa]{padding:16px 14px;text-align:center;position:relative;background:transparent;border:none;-webkit-box-shadow:none;box-shadow:none;border-radius:0}.fast-analysis-report .result-container .price-info-row .price-card[data-v-03feb1fa]:not(:last-child):after{content:"";position:absolute;right:0;top:20%;height:60%;width:1px;background:#ebeef2}.fast-analysis-report .result-container .price-info-row .price-card .price-label[data-v-03feb1fa]{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:#999;margin-bottom:6px}.fast-analysis-report .result-container .price-info-row .price-card .price-value[data-v-03feb1fa]{font-size:18px;font-weight:700;color:#1a1a2e;font-family:SF Mono,Cascadia Code,Consolas,Monaco,monospace}.fast-analysis-report .result-container .price-info-row .price-card .price-value.positive[data-v-03feb1fa]{color:#10b981}.fast-analysis-report .result-container .price-info-row .price-card .price-value.negative[data-v-03feb1fa]{color:#ef4444}.fast-analysis-report .result-container .price-info-row .price-card .price-hint[data-v-03feb1fa]{font-size:9px;color:#bbb;margin-top:4px}.fast-analysis-report .result-container .price-info-row .price-card .price-hint .anticon[data-v-03feb1fa]{margin-right:2px}.fast-analysis-report .result-container .price-info-row .price-card .price-change[data-v-03feb1fa]{font-size:13px;margin-top:3px;font-weight:700;font-family:SF Mono,Cascadia Code,Consolas,Monaco,monospace}.fast-analysis-report .result-container .price-info-row .price-card .price-change.positive[data-v-03feb1fa]{color:#10b981}.fast-analysis-report .result-container .price-info-row .price-card .price-change.negative[data-v-03feb1fa]{color:#ef4444}.fast-analysis-report .result-container .price-info-row .price-card.current .price-label[data-v-03feb1fa]{color:#3b82f6}.fast-analysis-report .result-container .price-info-row .price-card.entry .price-label[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report .result-container .price-info-row .price-card.stop .price-label[data-v-03feb1fa]{color:#ef4444}.fast-analysis-report .result-container .price-info-row .price-card.target .price-label[data-v-03feb1fa]{color:#10b981}.fast-analysis-report .result-container .trend-outlook-card[data-v-03feb1fa]{background:#fff;padding:18px 20px;margin-bottom:2px}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-header[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;font-size:13px;font-weight:700;color:#1a1a2e;margin-bottom:10px}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-header .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff);font-size:15px}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-summary[data-v-03feb1fa]{font-size:12px;line-height:1.65;color:#555;margin-bottom:12px;padding:10px 12px;background:rgba(0,0,0,.02);border-radius:8px}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-grid[data-v-03feb1fa]{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-item[data-v-03feb1fa]{background:rgba(0,0,0,.02);border-radius:8px;padding:10px;text-align:center}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-item .to-label[data-v-03feb1fa]{font-size:10px;color:#999;margin-bottom:4px;text-transform:uppercase;letter-spacing:.3px}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-item .to-trend[data-v-03feb1fa]{font-size:13px;font-weight:700;margin-bottom:4px}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-item .to-trend.trend-bull[data-v-03feb1fa]{color:#10b981}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-item .to-trend.trend-bear[data-v-03feb1fa]{color:#ef4444}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-item .to-trend.trend-neutral[data-v-03feb1fa]{color:#f59e0b}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-item .to-meta[data-v-03feb1fa]{font-size:10px;color:#999;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:6px}@media (max-width:992px){.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-grid[data-v-03feb1fa]{grid-template-columns:repeat(2,1fr)}}.fast-analysis-report .result-container .scores-row[data-v-03feb1fa]{display:grid;grid-template-columns:repeat(4,1fr);gap:0;background:#fff;margin-bottom:2px}.fast-analysis-report .result-container .scores-row .score-item[data-v-03feb1fa]{padding:14px 16px;position:relative;background:transparent;border:none;-webkit-box-shadow:none;box-shadow:none;border-radius:0}.fast-analysis-report .result-container .scores-row .score-item[data-v-03feb1fa]:not(:last-child):after{content:"";position:absolute;right:0;top:16%;height:68%;width:1px;background:#ebeef2}.fast-analysis-report .result-container .scores-row .score-item .score-header[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;font-size:12px;font-weight:600;color:#999;margin-bottom:8px}.fast-analysis-report .result-container .scores-row .score-item .score-header .anticon[data-v-03feb1fa]{font-size:14px;color:var(--primary-color,#1890ff)}.fast-analysis-report .result-container .scores-row .score-item .score-value[data-v-03feb1fa]{text-align:right;font-size:22px;font-weight:800;color:#1a1a2e;margin-top:6px;font-family:SF Mono,Cascadia Code,Consolas,Monaco,monospace}.fast-analysis-report .result-container .scores-row .score-item.overall[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 3%,transparent)}.fast-analysis-report .result-container .scores-row .score-item.overall .score-header .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report .result-container .detailed-analysis[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:0;background:#fff;margin-bottom:2px;padding:0}.fast-analysis-report .result-container .detailed-analysis .analysis-card[data-v-03feb1fa]{padding:20px 24px;border:none;-webkit-box-shadow:none;box-shadow:none;border-radius:0;background:transparent;border-bottom:1px solid #ebeef2;position:relative}.fast-analysis-report .result-container .detailed-analysis .analysis-card[data-v-03feb1fa]:last-child{border-bottom:none}.fast-analysis-report .result-container .detailed-analysis .analysis-card[data-v-03feb1fa]:before{content:"";position:absolute;left:0;top:20px;bottom:20px;width:3px;border-radius:2px}.fast-analysis-report .result-container .detailed-analysis .analysis-card.technical[data-v-03feb1fa]:before{background:#3b82f6}.fast-analysis-report .result-container .detailed-analysis .analysis-card.fundamental[data-v-03feb1fa]:before{background:var(--primary-color,#1890ff)}.fast-analysis-report .result-container .detailed-analysis .analysis-card.sentiment[data-v-03feb1fa]:before{background:#ec4899}.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-header[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin-bottom:10px;font-size:14px;font-weight:700;color:#1a1a2e;padding-left:12px}.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-header .anticon[data-v-03feb1fa]{font-size:16px}.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-header.technical .anticon[data-v-03feb1fa]{color:#3b82f6}.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-header.fundamental .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-header.sentiment .anticon[data-v-03feb1fa]{color:#ec4899}.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-content[data-v-03feb1fa]{font-size:13px;line-height:1.85;color:#555;padding-left:12px}.fast-analysis-report .result-container .analysis-details[data-v-03feb1fa]{display:grid;grid-template-columns:1fr 1fr;gap:0;background:#fff;margin-bottom:2px}.fast-analysis-report .result-container .analysis-details .detail-section[data-v-03feb1fa]{padding:20px 24px;border:none;-webkit-box-shadow:none;box-shadow:none;border-radius:0;background:transparent}.fast-analysis-report .result-container .analysis-details .detail-section.reasons[data-v-03feb1fa]{border-right:1px solid #ebeef2}.fast-analysis-report .result-container .analysis-details .detail-section .section-title[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;font-size:13px;font-weight:700;margin-bottom:12px;color:#1a1a2e;text-transform:uppercase;letter-spacing:.3px}.fast-analysis-report .result-container .analysis-details .detail-section .detail-list[data-v-03feb1fa]{list-style:none;padding:0;margin:0}.fast-analysis-report .result-container .analysis-details .detail-section .detail-list li[data-v-03feb1fa]{padding:8px 0;font-size:13px;line-height:1.65;color:#555;border-bottom:1px solid rgba(0,0,0,.04)}.fast-analysis-report .result-container .analysis-details .detail-section .detail-list li[data-v-03feb1fa]:last-child{border-bottom:none}.fast-analysis-report .result-container .analysis-details .detail-section .detail-list li[data-v-03feb1fa]:before{content:"";display:inline-block;width:5px;height:5px;border-radius:50%;margin-right:10px;vertical-align:middle}.fast-analysis-report .result-container .analysis-details .detail-section.reasons .detail-list li[data-v-03feb1fa]:before{background:#10b981}.fast-analysis-report .result-container .analysis-details .detail-section.risks .detail-list li[data-v-03feb1fa]:before{background:#f59e0b}.fast-analysis-report .result-container .indicators-section[data-v-03feb1fa]{background:#fff;padding:20px 24px;margin-bottom:2px;border:none;-webkit-box-shadow:none;box-shadow:none;border-radius:0}.fast-analysis-report .result-container .indicators-section .section-title[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px;font-size:13px;font-weight:700;margin-bottom:8px;color:#1a1a2e;text-transform:uppercase;letter-spacing:.3px}.fast-analysis-report .result-container .indicators-section .section-title .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report .result-container .indicators-section .section-title .indicators-pro-badge[data-v-03feb1fa]{margin:0;font-size:10px;line-height:16px;font-weight:600}.fast-analysis-report .result-container .indicators-section .indicators-methodology[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:8px;font-size:11px;line-height:1.5;color:#999;margin-bottom:14px;padding:8px 12px;background:rgba(0,0,0,.02);border-radius:6px;border:none}.fast-analysis-report .result-container .indicators-section .indicators-methodology .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff);margin-top:1px}.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa]{margin-top:18px;padding-top:14px;border-top:1px solid #ebeef2}.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap .indicators-pro-title[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;font-size:12px;font-weight:700;color:#555;margin-bottom:10px}.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap .indicators-pro-title .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc .ant-descriptions-item-label{font-size:11px;color:#999;font-weight:600;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,sans-serif}.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc .ant-descriptions-item-content{font-size:11px;font-family:SF Mono,Cascadia Code,Consolas,Monaco,monospace}.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc .bullish{color:#10b981;font-weight:700}.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc .bearish{color:#ef4444;font-weight:700}.fast-analysis-report .result-container .indicators-section .indicators-grid[data-v-03feb1fa]{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:8px}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item[data-v-03feb1fa]{background:rgba(0,0,0,.02);border-radius:8px;padding:12px 10px;text-align:center;border:none;-webkit-transition:background .15s;transition:background .15s}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item[data-v-03feb1fa]:hover{background:rgba(0,0,0,.04)}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-name[data-v-03feb1fa]{font-size:10px;color:#999;margin-bottom:6px;font-weight:600;text-transform:uppercase;letter-spacing:.3px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,sans-serif}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value[data-v-03feb1fa]{font-size:15px;font-weight:700;color:#1a1a2e;font-family:SF Mono,Cascadia Code,Consolas,Monaco,monospace}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.bullish[data-v-03feb1fa],.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.oversold[data-v-03feb1fa]{color:#10b981}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.bearish[data-v-03feb1fa],.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.high-volatility[data-v-03feb1fa],.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.overbought[data-v-03feb1fa]{color:#ef4444}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.low-volatility[data-v-03feb1fa]{color:#10b981}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-signal[data-v-03feb1fa]{font-size:10px;color:#999;margin-top:3px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,sans-serif}.fast-analysis-report .result-container .feedback-section[data-v-03feb1fa]{background:#fff;border-radius:0 0 16px 16px;padding:18px 24px;text-align:center;border:none;-webkit-box-shadow:none;box-shadow:none}.fast-analysis-report .result-container .feedback-section .feedback-question[data-v-03feb1fa]{font-size:13px;color:#999;margin-bottom:10px}.fast-analysis-report .result-container .feedback-section .feedback-buttons[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:12px;margin-bottom:12px}.fast-analysis-report .result-container .feedback-section .feedback-buttons .ant-btn[data-v-03feb1fa]{min-width:90px;border-radius:8px}.fast-analysis-report .result-container .feedback-section .analysis-meta[data-v-03feb1fa]{font-size:11px;color:#bbb;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:14px}@media (max-width:992px){.fast-analysis-report .price-info-row[data-v-03feb1fa]:not(.hold-mode),.fast-analysis-report .scores-row[data-v-03feb1fa]{grid-template-columns:repeat(2,1fr)}.fast-analysis-report .analysis-details[data-v-03feb1fa]{grid-template-columns:1fr}.fast-analysis-report .analysis-details .detail-section.reasons[data-v-03feb1fa]{border-right:none;border-bottom:1px solid #ebeef2}}@media (max-width:576px){.fast-analysis-report[data-v-03feb1fa]{padding:8px 6px}.fast-analysis-report .price-info-row[data-v-03feb1fa]:not(.hold-mode),.fast-analysis-report .scores-row[data-v-03feb1fa]{grid-template-columns:1fr}.fast-analysis-report .decision-card[data-v-03feb1fa]{padding:20px 16px}.fast-analysis-report .decision-card .decision-main[data-v-03feb1fa]{gap:14px;text-align:center}.fast-analysis-report .decision-card .decision-main .decision-badge[data-v-03feb1fa],.fast-analysis-report .decision-card .decision-main[data-v-03feb1fa]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.fast-analysis-report .decision-card .decision-main .decision-badge .decision-text[data-v-03feb1fa]{font-size:26px}}.fast-analysis-report.theme-dark[data-v-03feb1fa]{background:#111113}.fast-analysis-report.theme-dark[data-v-03feb1fa]::-webkit-scrollbar-thumb{background:#333}.fast-analysis-report.theme-dark .loading-container .loading-content-pro .loading-title[data-v-03feb1fa]{color:#e8e8ec}.fast-analysis-report.theme-dark .loading-container .loading-content-pro .loading-icon-pro[data-v-03feb1fa],.fast-analysis-report.theme-dark .loading-container .loading-content-pro .progress-wrapper .progress-text[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report.theme-dark .loading-container .loading-content-pro .current-step[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 8%,transparent);color:var(--primary-color,#1890ff)}.fast-analysis-report.theme-dark .loading-container .loading-content-pro .steps-list .step-item[data-v-03feb1fa]{background:#222224;color:#666}.fast-analysis-report.theme-dark .loading-container .loading-content-pro .steps-list .step-item.active[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 8%,transparent);color:var(--primary-color,#1890ff)}.fast-analysis-report.theme-dark .loading-container .loading-content-pro .steps-list .step-item.active .step-dot[data-v-03feb1fa]{background:var(--primary-color,#1890ff);-webkit-box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color,#1890ff) 15%,transparent);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color,#1890ff) 15%,transparent)}.fast-analysis-report.theme-dark .loading-container .loading-content-pro .steps-list .step-item.done[data-v-03feb1fa]{color:#34d399}.fast-analysis-report.theme-dark .loading-container .loading-content-pro .steps-list .step-item.done .step-dot[data-v-03feb1fa]{background:#34d399}.fast-analysis-report.theme-dark .loading-container .loading-content-pro .loading-footer .elapsed-time[data-v-03feb1fa]{color:#666}.fast-analysis-report.theme-dark .empty-content .empty-icon[data-v-03feb1fa]{color:#444}.fast-analysis-report.theme-dark .empty-content .empty-title[data-v-03feb1fa]{color:#e8e8ec}.fast-analysis-report.theme-dark .empty-content .empty-hint[data-v-03feb1fa]{color:#666}.fast-analysis-report.theme-dark .result-container .decision-card[data-v-03feb1fa]{background:#19191b}.fast-analysis-report.theme-dark .result-container .decision-card.decision-buy[data-v-03feb1fa]{background:linear-gradient(135deg,rgba(16,185,129,.06),#19191b)}.fast-analysis-report.theme-dark .result-container .decision-card.decision-buy .decision-badge .anticon[data-v-03feb1fa],.fast-analysis-report.theme-dark .result-container .decision-card.decision-buy .decision-text[data-v-03feb1fa]{color:#34d399}.fast-analysis-report.theme-dark .result-container .decision-card.decision-sell[data-v-03feb1fa]{background:linear-gradient(135deg,rgba(239,68,68,.06),#19191b)}.fast-analysis-report.theme-dark .result-container .decision-card.decision-sell .decision-badge .anticon[data-v-03feb1fa],.fast-analysis-report.theme-dark .result-container .decision-card.decision-sell .decision-text[data-v-03feb1fa]{color:#f87171}.fast-analysis-report.theme-dark .result-container .decision-card.decision-hold[data-v-03feb1fa]{background:linear-gradient(135deg,rgba(245,158,11,.06),#19191b)}.fast-analysis-report.theme-dark .result-container .decision-card.decision-hold .decision-badge .anticon[data-v-03feb1fa],.fast-analysis-report.theme-dark .result-container .decision-card.decision-hold .decision-text[data-v-03feb1fa]{color:#fbbf24}.fast-analysis-report.theme-dark .result-container .decision-card .decision-text[data-v-03feb1fa]{color:#e8e8ec}.fast-analysis-report.theme-dark .result-container .decision-card .confidence-label[data-v-03feb1fa]{color:#a0a0a8}.fast-analysis-report.theme-dark .result-container .decision-card .decision-summary[data-v-03feb1fa]{color:#a0a0a8;border-top-color:hsla(0,0%,100%,.06)}.fast-analysis-report.theme-dark .result-container .decision-card .confidence-value[data-v-03feb1fa],.fast-analysis-report.theme-dark .result-container .decision-card[data-v-03feb1fa] .ant-progress-text{color:#e8e8ec!important}.fast-analysis-report.theme-dark .result-container .decision-card .consensus-strip[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 5%,transparent);color:#a0a0a8}.fast-analysis-report.theme-dark .result-container .decision-card .consensus-strip .consensus-strip-title[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report.theme-dark .result-container .decision-card .consensus-strip .cm-item em[data-v-03feb1fa]{color:#666}.fast-analysis-report.theme-dark .result-container .price-info-row[data-v-03feb1fa]{background:#19191b}.fast-analysis-report.theme-dark .result-container .price-info-row .price-card[data-v-03feb1fa]:not(:last-child):after{background:hsla(0,0%,100%,.06)}.fast-analysis-report.theme-dark .result-container .price-info-row .price-card .price-label[data-v-03feb1fa]{color:#a0a0a8}.fast-analysis-report.theme-dark .result-container .price-info-row .price-card .price-value[data-v-03feb1fa]{color:#f0f0f2}.fast-analysis-report.theme-dark .result-container .price-info-row .price-card .price-value.positive[data-v-03feb1fa]{color:#34d399}.fast-analysis-report.theme-dark .result-container .price-info-row .price-card .price-value.negative[data-v-03feb1fa]{color:#f87171}.fast-analysis-report.theme-dark .result-container .price-info-row .price-card .price-hint[data-v-03feb1fa]{color:#555}.fast-analysis-report.theme-dark .result-container .price-info-row .price-card .price-change.positive[data-v-03feb1fa]{color:#34d399}.fast-analysis-report.theme-dark .result-container .price-info-row .price-card .price-change.negative[data-v-03feb1fa]{color:#f87171}.fast-analysis-report.theme-dark .result-container .price-info-row .price-card.current .price-label[data-v-03feb1fa]{color:#60a5fa}.fast-analysis-report.theme-dark .result-container .price-info-row .price-card.entry .price-label[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report.theme-dark .result-container .price-info-row .price-card.stop .price-label[data-v-03feb1fa]{color:#f87171}.fast-analysis-report.theme-dark .result-container .price-info-row .price-card.target .price-label[data-v-03feb1fa]{color:#34d399}.fast-analysis-report.theme-dark .result-container .trend-outlook-card[data-v-03feb1fa]{background:#19191b}.fast-analysis-report.theme-dark .result-container .trend-outlook-card .trend-outlook-header[data-v-03feb1fa]{color:#e8e8ec}.fast-analysis-report.theme-dark .result-container .trend-outlook-card .trend-outlook-header .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report.theme-dark .result-container .trend-outlook-card .trend-outlook-summary[data-v-03feb1fa]{background:#222224;color:#a0a0a8}.fast-analysis-report.theme-dark .result-container .trend-outlook-card .trend-outlook-item[data-v-03feb1fa]{background:#222224}.fast-analysis-report.theme-dark .result-container .trend-outlook-card .trend-outlook-item .to-label[data-v-03feb1fa],.fast-analysis-report.theme-dark .result-container .trend-outlook-card .trend-outlook-item .to-meta[data-v-03feb1fa]{color:#666}.fast-analysis-report.theme-dark .result-container .trend-outlook-card .trend-outlook-item .to-trend.trend-bull[data-v-03feb1fa]{color:#34d399}.fast-analysis-report.theme-dark .result-container .trend-outlook-card .trend-outlook-item .to-trend.trend-bear[data-v-03feb1fa]{color:#f87171}.fast-analysis-report.theme-dark .result-container .trend-outlook-card .trend-outlook-item .to-trend.trend-neutral[data-v-03feb1fa]{color:#fbbf24}.fast-analysis-report.theme-dark .result-container .scores-row[data-v-03feb1fa]{background:#19191b}.fast-analysis-report.theme-dark .result-container .scores-row .score-item[data-v-03feb1fa]:not(:last-child):after{background:hsla(0,0%,100%,.06)}.fast-analysis-report.theme-dark .result-container .scores-row .score-item .score-header[data-v-03feb1fa]{color:#a0a0a8}.fast-analysis-report.theme-dark .result-container .scores-row .score-item .score-header .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report.theme-dark .result-container .scores-row .score-item .score-value[data-v-03feb1fa]{color:#f0f0f2}.fast-analysis-report.theme-dark .result-container .scores-row .score-item.overall[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 4%,transparent)}.fast-analysis-report.theme-dark .result-container .detailed-analysis[data-v-03feb1fa]{background:#19191b}.fast-analysis-report.theme-dark .result-container .detailed-analysis .analysis-card[data-v-03feb1fa]{border-bottom-color:hsla(0,0%,100%,.06)}.fast-analysis-report.theme-dark .result-container .detailed-analysis .analysis-card .analysis-card-header[data-v-03feb1fa]{color:#e8e8ec}.fast-analysis-report.theme-dark .result-container .detailed-analysis .analysis-card .analysis-card-content[data-v-03feb1fa]{color:#a0a0a8}.fast-analysis-report.theme-dark .result-container .analysis-details[data-v-03feb1fa]{background:#19191b}.fast-analysis-report.theme-dark .result-container .analysis-details .detail-section.reasons[data-v-03feb1fa]{border-right-color:hsla(0,0%,100%,.06)}.fast-analysis-report.theme-dark .result-container .analysis-details .detail-section .section-title[data-v-03feb1fa]{color:#e8e8ec}.fast-analysis-report.theme-dark .result-container .analysis-details .detail-section .detail-list li[data-v-03feb1fa]{color:#a0a0a8;border-bottom-color:hsla(0,0%,100%,.06)}.fast-analysis-report.theme-dark .result-container .indicators-section[data-v-03feb1fa]{background:#19191b}.fast-analysis-report.theme-dark .result-container .indicators-section .section-title[data-v-03feb1fa]{color:#e8e8ec}.fast-analysis-report.theme-dark .result-container .indicators-section .section-title .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-methodology[data-v-03feb1fa]{background:#222224;color:#666}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-methodology .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-grid .indicator-item[data-v-03feb1fa]{background:#222224}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-grid .indicator-item[data-v-03feb1fa]:hover{background:hsla(0,0%,100%,.05)}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-grid .indicator-item .indicator-name[data-v-03feb1fa]{color:#a0a0a8}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-grid .indicator-item .indicator-value[data-v-03feb1fa]{color:#f0f0f2}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.bullish[data-v-03feb1fa],.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.oversold[data-v-03feb1fa]{color:#34d399}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.bearish[data-v-03feb1fa],.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.high-volatility[data-v-03feb1fa],.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.overbought[data-v-03feb1fa]{color:#f87171}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.low-volatility[data-v-03feb1fa]{color:#34d399}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-grid .indicator-item .indicator-signal[data-v-03feb1fa]{color:#666}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa]{border-top-color:hsla(0,0%,100%,.06)}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap .indicators-pro-title[data-v-03feb1fa]{color:#e8e8ec}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap .indicators-pro-title .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc .ant-descriptions-row,.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc .ant-descriptions-view{border-color:hsla(0,0%,100%,.06)}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc th.ant-descriptions-item-label{background:#222224;border-color:hsla(0,0%,100%,.06);color:#666}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc td.ant-descriptions-item-content{background:#19191b;border-color:hsla(0,0%,100%,.06);color:#a0a0a8}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc .ant-descriptions-item-label{background:#222224;border-color:hsla(0,0%,100%,.06);color:#666}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc .ant-descriptions-item-content{background:#19191b;border-color:hsla(0,0%,100%,.06);color:#a0a0a8}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc .ant-descriptions-item-content>span{color:#a0a0a8}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc .bullish{color:#34d399!important}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc .bearish{color:#f87171!important}.fast-analysis-report.theme-dark .result-container .feedback-section[data-v-03feb1fa]{background:#19191b}.fast-analysis-report.theme-dark .result-container .feedback-section .feedback-question[data-v-03feb1fa]{color:#666}.fast-analysis-report.theme-dark .result-container .feedback-section .analysis-meta[data-v-03feb1fa]{color:#555}.fast-analysis-report.theme-dark .result-container .feedback-section .ant-btn[data-v-03feb1fa]{background:#222224;border-color:hsla(0,0%,100%,.06);color:#a0a0a8}.fast-analysis-report.theme-dark .result-container .feedback-section .ant-btn[data-v-03feb1fa]:hover{border-color:color-mix(in srgb,var(--primary-color,#1890ff) 30%,transparent);color:var(--primary-color,#1890ff)}@media (max-width:992px){.fast-analysis-report.theme-dark .result-container .analysis-details .detail-section.reasons[data-v-03feb1fa]{border-right-color:transparent;border-bottom-color:hsla(0,0%,100%,.06)}}.ai-analysis-container[data-v-06c771c0]{display:-webkit-box;display:-ms-flexbox;display:flex;height:calc(100vh - 120px);background:#f0f2f5;overflow:hidden;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.ai-analysis-container.embedded[data-v-06c771c0]{height:auto;min-height:700px;background:transparent}@media (max-width:768px){.ai-analysis-container.embedded[data-v-06c771c0]{min-height:0}}.ai-analysis-container.embedded .main-content-full[data-v-06c771c0]{-webkit-box-shadow:none;box-shadow:none;border-radius:0}.ai-analysis-container.embedded .top-index-bar[data-v-06c771c0]{margin-top:6px}.main-content-full[data-v-06c771c0]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow:hidden;background:#fff;border-radius:12px;height:100%;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.08);box-shadow:0 2px 8px rgba(0,0,0,.08);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.top-index-bar[data-v-06c771c0]{gap:8px;padding:8px 16px;background:#f8fafc;border-bottom:1px solid #e2e8f0;font-family:SF Mono,Monaco,Consolas,monospace}.top-index-bar .indicator-box[data-v-06c771c0],.top-index-bar[data-v-06c771c0]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.top-index-bar .indicator-box[data-v-06c771c0]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:4px 10px;background:#fff;border-radius:6px;border:1px solid #e2e8f0;min-width:50px}.top-index-bar .indicator-box .ind-label[data-v-06c771c0]{font-size:9px;color:#94a3b8;text-transform:uppercase}.top-index-bar .indicator-box .ind-value[data-v-06c771c0]{font-size:13px;font-weight:700;color:#1e293b}.top-index-bar .indicator-box.fear-greed.extreme-fear .ind-value[data-v-06c771c0]{color:#dc2626}.top-index-bar .indicator-box.fear-greed.fear .ind-value[data-v-06c771c0]{color:#ea580c}.top-index-bar .indicator-box.fear-greed.neutral .ind-value[data-v-06c771c0]{color:#ca8a04}.top-index-bar .indicator-box.fear-greed.greed .ind-value[data-v-06c771c0]{color:#65a30d}.top-index-bar .indicator-box.fear-greed.extreme-greed .ind-value[data-v-06c771c0],.top-index-bar .indicator-box.vix.low .ind-value[data-v-06c771c0]{color:#16a34a}.top-index-bar .indicator-box.vix.medium .ind-value[data-v-06c771c0]{color:#ca8a04}.top-index-bar .indicator-box.vix.high .ind-value[data-v-06c771c0]{color:#dc2626}.top-index-bar .indicator-box.dxy .ind-value[data-v-06c771c0]{color:#2563eb}.top-index-bar .indices-marquee[data-v-06c771c0]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:hidden;min-width:0}.top-index-bar .indices-marquee .marquee-track[data-v-06c771c0]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:8px;-webkit-animation:marquee-06c771c0 35s linear infinite;animation:marquee-06c771c0 35s linear infinite;width:-webkit-max-content;width:-moz-max-content;width:max-content}.top-index-bar .indices-marquee .marquee-track[data-v-06c771c0]:hover{-webkit-animation-play-state:paused;animation-play-state:paused}.top-index-bar .indices-marquee .index-item[data-v-06c771c0]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;padding:4px 8px;background:#fff;border-radius:4px;border:1px solid #e2e8f0;font-size:11px;white-space:nowrap}.top-index-bar .indices-marquee .index-item .idx-flag[data-v-06c771c0]{font-size:11px}.top-index-bar .indices-marquee .index-item .idx-symbol[data-v-06c771c0]{color:#64748b;font-weight:500}.top-index-bar .indices-marquee .index-item .idx-price[data-v-06c771c0]{color:#1e293b;font-weight:600}.top-index-bar .indices-marquee .index-item .idx-change[data-v-06c771c0]{font-weight:600;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:1px}.top-index-bar .indices-marquee .index-item .idx-change.up[data-v-06c771c0]{color:#16a34a}.top-index-bar .indices-marquee .index-item .idx-change.down[data-v-06c771c0]{color:#dc2626}@-webkit-keyframes marquee-06c771c0{0%{-webkit-transform:translateX(0);transform:translateX(0)}to{-webkit-transform:translateX(-50%);transform:translateX(-50%)}}@keyframes marquee-06c771c0{0%{-webkit-transform:translateX(0);transform:translateX(0)}to{-webkit-transform:translateX(-50%);transform:translateX(-50%)}}.top-index-bar .refresh-btn[data-v-06c771c0]{color:#94a3b8;-ms-flex-negative:0;flex-shrink:0}.top-index-bar .refresh-btn[data-v-06c771c0]:hover{color:#1e293b}.main-body[data-v-06c771c0]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px;padding:12px;overflow:hidden;min-height:0}.left-panel[data-v-06c771c0]{width:280px;-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:10px;overflow-y:auto}.left-panel .heatmap-box[data-v-06c771c0]{background:#fff;border-radius:10px;padding:14px;border:1px solid #eaeef3;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.04);box-shadow:0 1px 3px rgba(0,0,0,.04)}.left-panel .heatmap-box .box-header[data-v-06c771c0]{margin-bottom:10px}.left-panel .heatmap-box .box-header[data-v-06c771c0] .ant-radio-group{display:-webkit-box;display:-ms-flexbox;display:flex;gap:0;background:#f4f5f7;border-radius:8px;padding:2px}.left-panel .heatmap-box .box-header[data-v-06c771c0] .ant-radio-group .ant-radio-button-wrapper{font-size:10px;font-weight:600;padding:0 8px;height:24px;line-height:22px;border:none;border-radius:6px;background:transparent;color:#8c8c8c;-webkit-box-shadow:none;box-shadow:none;-webkit-transition:all .2s;transition:all .2s}.left-panel .heatmap-box .box-header[data-v-06c771c0] .ant-radio-group .ant-radio-button-wrapper:before{display:none}.left-panel .heatmap-box .box-header[data-v-06c771c0] .ant-radio-group .ant-radio-button-wrapper:hover{color:#555}.left-panel .heatmap-box .box-header[data-v-06c771c0] .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{background:#fff;border-color:transparent;color:#111;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.1);box-shadow:0 1px 3px rgba(0,0,0,.1)}.left-panel .heatmap-box .heatmap-grid[data-v-06c771c0]{display:grid;grid-template-columns:repeat(3,1fr);gap:4px}.left-panel .heatmap-box .heatmap-grid .heat-cell[data-v-06c771c0]{padding:6px 4px;border-radius:6px;text-align:center;font-size:9px;-webkit-transition:-webkit-transform .15s;transition:-webkit-transform .15s;transition:transform .15s;transition:transform .15s,-webkit-transform .15s}.left-panel .heatmap-box .heatmap-grid .heat-cell[data-v-06c771c0]:hover{-webkit-transform:scale(1.03);transform:scale(1.03)}.left-panel .heatmap-box .heatmap-grid .heat-cell .heat-name[data-v-06c771c0]{display:block;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:1px}.left-panel .heatmap-box .heatmap-grid .heat-cell .heat-price[data-v-06c771c0]{display:block;font-size:9px;opacity:.8;margin-bottom:1px}.left-panel .heatmap-box .heatmap-grid .heat-cell .heat-val[data-v-06c771c0]{font-weight:700;font-size:10px}.left-panel .calendar-box[data-v-06c771c0]{-webkit-box-flex:1;-ms-flex:1;flex:1;background:#fff;border-radius:10px;padding:14px;border:1px solid #eaeef3;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.04);box-shadow:0 1px 3px rgba(0,0,0,.04);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-height:0;overflow:hidden}.left-panel .calendar-box .box-header[data-v-06c771c0]{margin-bottom:8px}.left-panel .calendar-box .box-header .box-title[data-v-06c771c0]{font-size:12px;color:#555;font-weight:700;letter-spacing:-.1px}.left-panel .calendar-box .box-header .box-title .anticon[data-v-06c771c0]{margin-right:6px;color:var(--primary-color,#1890ff)}.left-panel .calendar-box .calendar-list[data-v-06c771c0]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto}.left-panel .calendar-box .calendar-list[data-v-06c771c0]::-webkit-scrollbar{width:3px}.left-panel .calendar-box .calendar-list[data-v-06c771c0]::-webkit-scrollbar-thumb{background:#d4d8dd;border-radius:2px}.left-panel .calendar-box .calendar-list .cal-item[data-v-06c771c0]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;padding:6px 0;border-bottom:1px solid #f1f5f9;font-size:10px}.left-panel .calendar-box .calendar-list .cal-item[data-v-06c771c0]:last-child{border-bottom:none}.left-panel .calendar-box .calendar-list .cal-item.high[data-v-06c771c0]{border-left:3px solid #dc2626;padding-left:8px;margin-left:-4px}.left-panel .calendar-box .calendar-list .cal-item.medium[data-v-06c771c0]{border-left:3px solid #ca8a04;padding-left:8px;margin-left:-4px}.left-panel .calendar-box .calendar-list .cal-item.low[data-v-06c771c0]{border-left:3px solid #16a34a;padding-left:8px;margin-left:-4px}.left-panel .calendar-box .calendar-list .cal-item .cal-date[data-v-06c771c0]{font-size:9px;color:#94a3b8;min-width:32px;font-weight:500}.left-panel .calendar-box .calendar-list .cal-item .cal-time[data-v-06c771c0]{color:#64748b;min-width:36px;font-weight:500}.left-panel .calendar-box .calendar-list .cal-item .cal-flag[data-v-06c771c0]{font-size:12px}.left-panel .calendar-box .calendar-list .cal-item .cal-name[data-v-06c771c0]{-webkit-box-flex:1;-ms-flex:1;flex:1;color:#334155;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.left-panel .calendar-box .calendar-list .cal-item .cal-impact[data-v-06c771c0]{font-weight:600;font-size:10px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:2px}.left-panel .calendar-box .calendar-list .cal-item .cal-impact.bullish[data-v-06c771c0]{color:#16a34a}.left-panel .calendar-box .calendar-list .cal-item .cal-impact.bearish[data-v-06c771c0]{color:#dc2626}.left-panel .calendar-box .calendar-list .cal-item .cal-impact.neutral[data-v-06c771c0]{color:#94a3b8}.left-panel .calendar-box .calendar-list .cal-empty[data-v-06c771c0]{text-align:center;color:#94a3b8;padding:20px 0;font-size:12px}.right-panel[data-v-06c771c0]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-width:0;overflow:hidden;background:#fff;border-radius:10px;border:1px solid #eaeef3;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.04);box-shadow:0 1px 3px rgba(0,0,0,.04)}.right-panel .analysis-toolbar[data-v-06c771c0]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;padding:12px 16px;border-bottom:1px solid #f0f2f5;background:#fafbfc;border-radius:10px 10px 0 0}.right-panel .analysis-toolbar .symbol-selector[data-v-06c771c0]{-webkit-box-flex:1;-ms-flex:1;flex:1;max-width:320px}.right-panel .analysis-toolbar .analyze-button[data-v-06c771c0]{background:var(--primary-color,#1890ff);border-color:var(--primary-color,#1890ff);border-radius:8px;font-weight:600}.right-panel .analysis-toolbar .history-button[data-v-06c771c0]{border-color:#d9d9d9;border-radius:8px}.right-panel .analysis-main[data-v-06c771c0]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:auto;padding:16px;min-height:0}.right-panel .analysis-main .analysis-placeholder[data-v-06c771c0]{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;height:100%;min-height:300px}.watchlist-panel[data-v-06c771c0]{width:320px;-ms-flex-negative:0;flex-shrink:0;background:#fff;border-radius:10px;border:1px solid #eaeef3;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.04);box-shadow:0 1px 3px rgba(0,0,0,.04);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow:hidden}.watchlist-panel .panel-header[data-v-06c771c0]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:12px 14px;border-bottom:1px solid #f0f2f5;background:#fafbfc}.watchlist-panel .panel-header .panel-title[data-v-06c771c0]{font-size:13px;font-weight:700;color:#333;letter-spacing:-.1px}.watchlist-panel .panel-header .panel-title .anticon[data-v-06c771c0]{color:#facc15;margin-right:6px}.watchlist-panel .watchlist-list[data-v-06c771c0]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto;padding:6px 8px}.watchlist-panel .watchlist-list[data-v-06c771c0]::-webkit-scrollbar{width:3px}.watchlist-panel .watchlist-list[data-v-06c771c0]::-webkit-scrollbar-thumb{background:#d4d8dd;border-radius:2px}.watchlist-panel .watchlist-list .watchlist-empty[data-v-06c771c0]{text-align:center;padding:24px 12px;color:#94a3b8}.watchlist-panel .watchlist-list .watchlist-empty .anticon[data-v-06c771c0]{font-size:32px;margin-bottom:8px;display:block}.watchlist-panel .watchlist-list .watchlist-empty p[data-v-06c771c0]{font-size:12px;margin-bottom:12px}@-webkit-keyframes pulse-06c771c0{0%,to{opacity:1}50%{opacity:.5}}@keyframes pulse-06c771c0{0%,to{opacity:1}50%{opacity:.5}}@media (max-width:992px){.ai-analysis-container[data-v-06c771c0]{height:auto;min-height:calc(100vh - 64px);overflow-y:auto;overflow-x:hidden;width:100%;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.main-content-full[data-v-06c771c0]{height:auto;min-height:auto}.top-index-bar[data-v-06c771c0]{-ms-flex-wrap:wrap;flex-wrap:wrap;padding:6px 8px}.top-index-bar .indicator-box[data-v-06c771c0]{min-width:45px;padding:3px 6px}.top-index-bar .indices-marquee[data-v-06c771c0]{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10;width:100%;margin-top:6px}.main-body[data-v-06c771c0]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:8px;gap:8px}.left-panel[data-v-06c771c0]{width:100%;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;gap:8px}.left-panel .calendar-box[data-v-06c771c0],.left-panel .heatmap-box[data-v-06c771c0]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.left-panel .calendar-box[data-v-06c771c0]{max-height:200px}.right-panel .analysis-toolbar[data-v-06c771c0]{-ms-flex-wrap:wrap;flex-wrap:wrap}.right-panel .analysis-toolbar .symbol-selector[data-v-06c771c0]{width:100%!important;max-width:none!important}.right-panel .analysis-toolbar .analyze-button[data-v-06c771c0],.right-panel .analysis-toolbar .history-button[data-v-06c771c0]{-webkit-box-flex:1;-ms-flex:1;flex:1}.watchlist-panel[data-v-06c771c0]{width:100%;max-height:250px;-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.hero-stats[data-v-06c771c0]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.hero-stats .hstat[data-v-06c771c0]{width:100%;max-width:300px;-webkit-box-flex:0;-ms-flex:none;flex:none}}@media (max-width:576px){.main-body[data-v-06c771c0]{padding:4px 6px;gap:6px}.top-index-bar[data-v-06c771c0]{padding:5px 6px;gap:6px}.top-index-bar .indicator-box[data-v-06c771c0]{padding:2px 5px}.top-index-bar .indicator-box .ind-value[data-v-06c771c0]{font-size:11px}.top-index-bar .indices-marquee .index-item[data-v-06c771c0]{font-size:10px;padding:2px 5px}.left-panel[data-v-06c771c0]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:6px}.left-panel .calendar-box[data-v-06c771c0],.left-panel .heatmap-box[data-v-06c771c0]{-webkit-box-flex:0;-ms-flex:none;flex:none;width:100%;min-width:0;padding:8px;border-radius:8px}.left-panel .calendar-box[data-v-06c771c0]{max-height:220px}.left-panel .heatmap-box .box-header[data-v-06c771c0]{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:0 -2px;padding:0 2px 6px}.left-panel .heatmap-box .box-header[data-v-06c771c0] .ant-radio-group{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap;white-space:nowrap}.left-panel .heatmap-box .box-header[data-v-06c771c0] .ant-radio-group .ant-radio-button-wrapper{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.right-panel[data-v-06c771c0]{border-radius:8px}.right-panel .analysis-toolbar[data-v-06c771c0]{padding:6px 8px;gap:6px}.right-panel .analysis-toolbar[data-v-06c771c0] .ant-btn-lg{height:36px;padding:0 10px;font-size:13px}.right-panel .analysis-toolbar[data-v-06c771c0] .symbol-selector .ant-select-selection--single{height:36px!important}.right-panel .analysis-toolbar[data-v-06c771c0] .symbol-selector .ant-select-selection__rendered{line-height:34px!important}.right-panel .analysis-main[data-v-06c771c0]{padding:6px 8px}.watchlist-panel[data-v-06c771c0]{max-height:min(42vh,320px);border-radius:8px}.watchlist-panel .panel-header[data-v-06c771c0]{padding:8px 10px}.watchlist-panel .watchlist-list[data-v-06c771c0]{padding:4px 6px}.batch-bar[data-v-06c771c0]{margin:6px 6px 4px;padding:8px 8px;gap:6px}.panel-summary[data-v-06c771c0]{-ms-flex-wrap:wrap;flex-wrap:wrap}.panel-summary .summary-chip[data-v-06c771c0]{-webkit-box-flex:1;-ms-flex:1 1 22%;flex:1 1 22%;min-width:0;padding:5px 2px}.panel-summary .sc-num[data-v-06c771c0]{font-size:12px}.panel-summary .sc-label[data-v-06c771c0]{font-size:8px;letter-spacing:.2px}.placeholder-hero .hero-body[data-v-06c771c0]{padding:16px 10px;max-width:100%}.hero-title[data-v-06c771c0]{font-size:20px}.hero-subtitle[data-v-06c771c0]{font-size:13px;margin-bottom:14px}.hero-stats[data-v-06c771c0]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:nowrap;flex-wrap:nowrap;gap:8px;margin-bottom:14px}.hero-stats .hstat[data-v-06c771c0]{width:100%;max-width:none;-webkit-box-flex:0;-ms-flex:none;flex:none;padding:10px 10px}.hero-cta[data-v-06c771c0]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:100%;gap:8px}.hero-cta .ant-btn[data-v-06c771c0]{width:100%;height:40px}.wl-card[data-v-06c771c0]{padding:8px 10px}}.ai-analysis-container.theme-dark[data-v-06c771c0]{background:#0a0a0a;color:#d4d4d4}.ai-analysis-container.theme-dark .main-content-full[data-v-06c771c0]{background:#141416;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.4);box-shadow:0 2px 8px rgba(0,0,0,.4)}.ai-analysis-container.theme-dark .top-index-bar[data-v-06c771c0]{background:#141416;border-bottom-color:hsla(0,0%,100%,.05)}.ai-analysis-container.theme-dark .top-index-bar .indicator-box[data-v-06c771c0]{background:#1a1a1c;border-color:hsla(0,0%,100%,.06)}.ai-analysis-container.theme-dark .top-index-bar .indicator-box .ind-label[data-v-06c771c0]{color:#666}.ai-analysis-container.theme-dark .top-index-bar .indicator-box .ind-value[data-v-06c771c0]{color:#d4d4d4}.ai-analysis-container.theme-dark .top-index-bar .indices-marquee .index-item[data-v-06c771c0]{background:#1a1a1c;border-color:hsla(0,0%,100%,.06)}.ai-analysis-container.theme-dark .top-index-bar .indices-marquee .index-item .idx-symbol[data-v-06c771c0]{color:#777}.ai-analysis-container.theme-dark .top-index-bar .indices-marquee .index-item .idx-price[data-v-06c771c0]{color:#d4d4d4}.ai-analysis-container.theme-dark .top-index-bar .refresh-btn[data-v-06c771c0]{color:#666}.ai-analysis-container.theme-dark .top-index-bar .refresh-btn[data-v-06c771c0]:hover{color:#d4d4d4}.ai-analysis-container.theme-dark .watchlist-panel[data-v-06c771c0]{background:#1a1a1c;border-color:hsla(0,0%,100%,.06);-webkit-box-shadow:0 1px 3px rgba(0,0,0,.3);box-shadow:0 1px 3px rgba(0,0,0,.3)}.ai-analysis-container.theme-dark .watchlist-panel .panel-header[data-v-06c771c0]{background:#141416;border-bottom-color:hsla(0,0%,100%,.05)}.ai-analysis-container.theme-dark .watchlist-panel .panel-header .panel-title[data-v-06c771c0]{color:#ccc}.ai-analysis-container.theme-dark .watchlist-panel .panel-summary[data-v-06c771c0]{background:#141416;border-bottom-color:hsla(0,0%,100%,.05)}.ai-analysis-container.theme-dark .watchlist-panel .panel-summary .summary-chip[data-v-06c771c0]{border-right-color:hsla(0,0%,100%,.05)}.ai-analysis-container.theme-dark .watchlist-panel .panel-summary .sc-num[data-v-06c771c0]{color:#d4d4d4}.ai-analysis-container.theme-dark .watchlist-panel .panel-summary .sc-label[data-v-06c771c0]{color:#666}.ai-analysis-container.theme-dark .watchlist-panel .batch-bar[data-v-06c771c0]{background:#1c1c1c;border:1px solid #2a2a2a;border-radius:10px;margin:8px 10px;margin-bottom:4px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.2);box-shadow:0 1px 3px rgba(0,0,0,.2)}.ai-analysis-container.theme-dark .watchlist-panel .batch-bar .batch-all-cb[data-v-06c771c0]{color:#a0a0a8}.ai-analysis-container.theme-dark .watchlist-panel .batch-bar .ant-btn[data-v-06c771c0]:not(.ant-btn-primary){background:#2a2a2c;border-color:#3a3a3c;color:#b0b0b8}.ai-analysis-container.theme-dark .watchlist-panel .batch-bar .ant-btn[data-v-06c771c0]:not(.ant-btn-primary):hover{background:#333336;border-color:var(--primary-color,#1890ff);color:var(--primary-color,#1890ff)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list[data-v-06c771c0]::-webkit-scrollbar-thumb{background:#333}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card[data-v-06c771c0]:hover{background:#222224;border-color:hsla(0,0%,100%,.06)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card.active[data-v-06c771c0]{background:color-mix(in srgb,var(--primary-color,#1890ff) 8%,transparent);border-color:color-mix(in srgb,var(--primary-color,#1890ff) 28%,transparent)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card .wl-symbol[data-v-06c771c0]{color:#e0e0e0}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card .wl-market[data-v-06c771c0]{color:#666;background:hsla(0,0%,100%,.06)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card .wl-price[data-v-06c771c0]{color:#d4d4d4}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card .wl-pnl-qty[data-v-06c771c0]{color:#666}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card .wl-task-badge.paused[data-v-06c771c0]{background:hsla(0,0%,100%,.05);color:#666}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card .wl-task-next[data-v-06c771c0]{color:#555}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card-hover-actions[data-v-06c771c0]{background:-webkit-gradient(linear,left top,right top,from(transparent),color-stop(30%,#222224));background:linear-gradient(90deg,transparent,#222224 30%)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card-hover-actions .wl-hover-btn[data-v-06c771c0]{background:#1a1a1c;color:#888;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.4);box-shadow:0 1px 3px rgba(0,0,0,.4)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card-hover-actions .wl-hover-btn[data-v-06c771c0]:hover{color:var(--primary-color,#1890ff);background:color-mix(in srgb,var(--primary-color,#1890ff) 12%,transparent)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card-hover-actions .wl-hover-btn.danger[data-v-06c771c0]:hover{color:#f87171;background:hsla(0,91%,71%,.1)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card.active .wl-card-hover-actions[data-v-06c771c0]{background:linear-gradient(90deg,transparent 0,color-mix(in srgb,var(--primary-color,#1890ff) 6%,transparent) 30%)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .watchlist-empty[data-v-06c771c0]{color:#555}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .we-icon[data-v-06c771c0]{color:#333}.ai-analysis-container.theme-dark .placeholder-hero .hero-bg-grid[data-v-06c771c0]{background-image:linear-gradient(hsla(0,0%,100%,.02) 1px,transparent 0),linear-gradient(90deg,hsla(0,0%,100%,.02) 1px,transparent 0)}.ai-analysis-container.theme-dark .placeholder-hero .hero-badge[data-v-06c771c0]{background:color-mix(in srgb,var(--primary-color,#1890ff) 10%,transparent);border-color:color-mix(in srgb,var(--primary-color,#1890ff) 25%,transparent);color:var(--primary-color,#1890ff)}.ai-analysis-container.theme-dark .placeholder-hero .hero-title[data-v-06c771c0]{color:#e0e0e0}.ai-analysis-container.theme-dark .placeholder-hero .hero-hint[data-v-06c771c0],.ai-analysis-container.theme-dark .placeholder-hero .hero-subtitle[data-v-06c771c0]{color:#777}.ai-analysis-container.theme-dark .placeholder-hero .hstat[data-v-06c771c0]{background:#1a1a1c;border-color:hsla(0,0%,100%,.06);-webkit-box-shadow:none;box-shadow:none}.ai-analysis-container.theme-dark .placeholder-hero .hstat[data-v-06c771c0]:hover{border-color:color-mix(in srgb,var(--primary-color,#1890ff) 35%,transparent);-webkit-box-shadow:0 4px 16px color-mix(in srgb,var(--primary-color,#1890ff) 12%,transparent);box-shadow:0 4px 16px color-mix(in srgb,var(--primary-color,#1890ff) 12%,transparent)}.ai-analysis-container.theme-dark .placeholder-hero .hstat-icon[data-v-06c771c0]{background:color-mix(in srgb,var(--primary-color,#1890ff) 12%,transparent);color:var(--primary-color,#1890ff)}.ai-analysis-container.theme-dark .placeholder-hero .hstat-val[data-v-06c771c0]{color:#ddd}.ai-analysis-container.theme-dark .placeholder-hero .hstat-label[data-v-06c771c0]{color:#666}.ai-analysis-container.theme-dark .placeholder-hero .hero-cta .ant-btn-primary[data-v-06c771c0]{-webkit-box-shadow:0 4px 14px color-mix(in srgb,var(--primary-color,#1890ff) 35%,transparent);box-shadow:0 4px 14px color-mix(in srgb,var(--primary-color,#1890ff) 35%,transparent)}.ai-analysis-container.theme-dark .watchlist-bar-legacy[data-v-06c771c0]{background:#141414;border-bottom-color:#2a2a2a}.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip[data-v-06c771c0]{background:#1c1c1c;border-color:#2a2a2a}.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip.active[data-v-06c771c0],.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip[data-v-06c771c0]:hover{border-color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08)}.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip .chip-symbol[data-v-06c771c0]{color:#d4d4d4}.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip .chip-price[data-v-06c771c0]{color:#888}.ai-analysis-container.theme-dark .left-panel .heatmap-box[data-v-06c771c0]{background:#1a1a1c;border-color:hsla(0,0%,100%,.06);-webkit-box-shadow:0 1px 3px rgba(0,0,0,.3);box-shadow:0 1px 3px rgba(0,0,0,.3)}.ai-analysis-container.theme-dark .left-panel .heatmap-box[data-v-06c771c0] .ant-radio-group{background:#111113}.ai-analysis-container.theme-dark .left-panel .heatmap-box[data-v-06c771c0] .ant-radio-group .ant-radio-button-wrapper{background:transparent;border-color:transparent;color:#666}.ai-analysis-container.theme-dark .left-panel .heatmap-box[data-v-06c771c0] .ant-radio-group .ant-radio-button-wrapper:hover{color:#aaa}.ai-analysis-container.theme-dark .left-panel .heatmap-box[data-v-06c771c0] .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{background:#2a2a2c;color:#e8e8e8;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.3);box-shadow:0 1px 3px rgba(0,0,0,.3)}.ai-analysis-container.theme-dark .left-panel .calendar-box[data-v-06c771c0]{background:#1a1a1c;border-color:hsla(0,0%,100%,.06);-webkit-box-shadow:0 1px 3px rgba(0,0,0,.3);box-shadow:0 1px 3px rgba(0,0,0,.3)}.ai-analysis-container.theme-dark .left-panel .calendar-box .box-title[data-v-06c771c0]{color:#888}.ai-analysis-container.theme-dark .left-panel .calendar-box .cal-item[data-v-06c771c0]{border-bottom-color:hsla(0,0%,100%,.05)}.ai-analysis-container.theme-dark .left-panel .calendar-box .cal-item .cal-date[data-v-06c771c0]{color:#555}.ai-analysis-container.theme-dark .left-panel .calendar-box .cal-item .cal-time[data-v-06c771c0]{color:#777}.ai-analysis-container.theme-dark .left-panel .calendar-box .cal-item .cal-name[data-v-06c771c0]{color:#ccc}.ai-analysis-container.theme-dark .left-panel .calendar-box .cal-empty[data-v-06c771c0]{color:#555}.ai-analysis-container.theme-dark .left-panel .calendar-box .calendar-list[data-v-06c771c0]::-webkit-scrollbar-thumb{background:#333}.ai-analysis-container.theme-dark .right-panel[data-v-06c771c0]{background:#1a1a1c;border-color:hsla(0,0%,100%,.06);-webkit-box-shadow:0 1px 3px rgba(0,0,0,.3);box-shadow:0 1px 3px rgba(0,0,0,.3)}.ai-analysis-container.theme-dark .right-panel .analysis-toolbar[data-v-06c771c0]{background:#141416;border-bottom-color:hsla(0,0%,100%,.05)}.ai-analysis-container.theme-dark .right-panel .analysis-toolbar .history-button[data-v-06c771c0]{background:#222224;border-color:hsla(0,0%,100%,.08);color:#ccc}.ai-analysis-container.theme-dark .right-panel .analysis-toolbar .history-button[data-v-06c771c0]:hover{border-color:color-mix(in srgb,var(--primary-color,#1890ff) 45%,transparent);color:var(--primary-color,#1890ff)}.ai-analysis-container.theme-dark .hero-cta .ant-btn[data-v-06c771c0]:not(.ant-btn-primary){background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark .hero-cta .ant-btn[data-v-06c771c0]:not(.ant-btn-primary):hover{border-color:#1890ff;color:#1890ff}.ai-analysis-container.theme-dark .wl-change.up[data-v-06c771c0]{background:rgba(74,222,128,.1)}.ai-analysis-container.theme-dark .wl-change.down[data-v-06c771c0]{background:hsla(0,91%,71%,.1)}.ai-analysis-container.theme-dark .panel-header-icon[data-v-06c771c0]{color:#666}.ai-analysis-container.theme-dark .panel-header-icon[data-v-06c771c0]:hover{color:var(--primary-color,#1890ff);background:color-mix(in srgb,var(--primary-color,#1890ff) 10%,transparent)}.ai-analysis-container.theme-dark .panel-summary[data-v-06c771c0]{background:#141416}.ai-analysis-container.theme-dark .batch-bar[data-v-06c771c0]{background:#1c1c1c!important;border:1px solid #2a2a2a!important;border-radius:10px;margin:8px 10px;margin-bottom:4px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.2);box-shadow:0 1px 3px rgba(0,0,0,.2)}.ai-analysis-container.theme-dark .batch-bar .batch-all-cb[data-v-06c771c0]{color:#a0a0a8}.ai-analysis-container.theme-dark .batch-bar .ant-btn[data-v-06c771c0]:not(.ant-btn-primary){background:#2a2a2c!important;border-color:#3a3a3c!important;color:#b0b0b8!important}.ai-analysis-container.theme-dark .batch-bar .ant-btn[data-v-06c771c0]:not(.ant-btn-primary):hover{background:#333336!important;border-color:var(--primary-color,#1890ff)!important;color:var(--primary-color,#1890ff)!important}.ai-analysis-container.theme-dark .watchlist-bar-compat[data-v-06c771c0]{background:#141414;border-top-color:#2a2a2a}.ai-analysis-container.theme-dark .watchlist-bar-compat .bar-label[data-v-06c771c0]{color:#888}.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip[data-v-06c771c0]{background:#1c1c1c;border-color:#2a2a2a}.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip.active[data-v-06c771c0],.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip[data-v-06c771c0]:hover{border-color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08)}.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip .chip-symbol[data-v-06c771c0]{color:#d4d4d4}.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip .chip-price[data-v-06c771c0]{color:#888}.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip .chip-remove[data-v-06c771c0]{color:#666}.ai-analysis-container.theme-dark[data-v-06c771c0] .symbol-selector .ant-select-selection{background-color:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-06c771c0] .ant-tabs-bar{border-bottom-color:#2a2a2a}.ai-analysis-container.theme-dark[data-v-06c771c0] .ant-tabs-tab{color:#888}.ai-analysis-container.theme-dark[data-v-06c771c0] .ant-tabs-tab:hover{color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-06c771c0] .ant-tabs-tab-active{color:#1890ff!important}.ai-analysis-container.theme-dark[data-v-06c771c0] .ant-tabs-ink-bar{background-color:#1890ff}.ai-analysis-container.theme-dark[data-v-06c771c0] .ant-input{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-06c771c0] .ant-input::-webkit-input-placeholder{color:#555}.ai-analysis-container.theme-dark[data-v-06c771c0] .ant-input::-moz-placeholder{color:#555}.ai-analysis-container.theme-dark[data-v-06c771c0] .ant-input:-ms-input-placeholder{color:#555}.ai-analysis-container.theme-dark[data-v-06c771c0] .ant-input::-ms-input-placeholder{color:#555}.ai-analysis-container.theme-dark[data-v-06c771c0] .ant-input::placeholder{color:#555}.ai-analysis-container.theme-dark[data-v-06c771c0] .ant-input-number{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-06c771c0] .ant-input-number .ant-input-number-handler-wrap{background:#1c1c1c}.ai-analysis-container.theme-dark[data-v-06c771c0] .ant-select-selection{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-06c771c0] .ant-select-arrow{color:#666}.ai-analysis-container.theme-dark[data-v-06c771c0] .ant-checkbox-wrapper,.ai-analysis-container.theme-dark[data-v-06c771c0] .ant-form-item-label>label,.ai-analysis-container.theme-dark[data-v-06c771c0] .ant-radio-wrapper{color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-06c771c0] .ant-btn-default{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-06c771c0] .ant-btn-default:hover{border-color:#1890ff;color:#1890ff}.ai-analysis-container.theme-dark[data-v-06c771c0] .ant-alert{background:rgba(24,144,255,.06);border-color:#2a2a2a}.ai-analysis-container.theme-dark[data-v-06c771c0] .ant-alert-message{color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-06c771c0] .ant-tag{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-06c771c0] .ant-list-item{border-bottom-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-06c771c0] .ant-list-item-meta-title{color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-06c771c0] .ant-list-item-meta-description{color:#888}.ai-analysis-container.theme-dark[data-v-06c771c0] .ant-empty-description{color:#666}.ai-analysis-container.theme-dark[data-v-06c771c0] .ant-tooltip-inner{background:#1c1c1c}.ai-analysis-container.theme-dark[data-v-06c771c0] .ant-badge-count{-webkit-box-shadow:0 0 0 1px #141414;box-shadow:0 0 0 1px #141414}.ai-analysis-container.theme-dark[data-v-06c771c0] .ant-popover-inner{background:#1c1c1c}.ai-analysis-container.theme-dark[data-v-06c771c0] .ant-popover-message{color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-06c771c0] .ant-popover-arrow{border-color:#1c1c1c}.placeholder-hero[data-v-06c771c0]{position:relative;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;width:100%;height:100%;overflow:hidden}.hero-bg[data-v-06c771c0]{position:absolute;inset:0;pointer-events:none}.hero-bg-circle[data-v-06c771c0]{position:absolute;border-radius:50%;opacity:.5}.hero-bg-circle.c1[data-v-06c771c0]{width:320px;height:320px;top:-80px;right:-60px;background:radial-gradient(circle,rgba(24,144,255,.1) 0,transparent 70%);-webkit-animation:hero-float-06c771c0 6s ease-in-out infinite;animation:hero-float-06c771c0 6s ease-in-out infinite}.hero-bg-circle.c2[data-v-06c771c0]{width:240px;height:240px;bottom:-40px;left:-40px;background:radial-gradient(circle,rgba(114,46,209,.08) 0,transparent 70%);animation:hero-float-06c771c0 8s ease-in-out infinite reverse}.hero-bg-grid[data-v-06c771c0]{position:absolute;inset:0;background-image:linear-gradient(rgba(24,144,255,.03) 1px,transparent 0),linear-gradient(90deg,rgba(24,144,255,.03) 1px,transparent 0);background-size:32px 32px}@-webkit-keyframes hero-float-06c771c0{0%,to{-webkit-transform:translateY(0);transform:translateY(0)}50%{-webkit-transform:translateY(-12px);transform:translateY(-12px)}}@keyframes hero-float-06c771c0{0%,to{-webkit-transform:translateY(0);transform:translateY(0)}50%{-webkit-transform:translateY(-12px);transform:translateY(-12px)}}.hero-body[data-v-06c771c0]{position:relative;text-align:center;padding:40px 32px;max-width:560px}.hero-badge[data-v-06c771c0]{display:inline-block;padding:3px 12px;border-radius:20px;font-size:10px;font-weight:700;letter-spacing:1.5px;color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08);border:1px solid rgba(24,144,255,.2);margin-bottom:16px}.hero-title[data-v-06c771c0]{font-size:26px;font-weight:800;color:#0f172a;margin-bottom:8px;letter-spacing:-.3px;line-height:1.3}.hero-subtitle[data-v-06c771c0]{font-size:14px;color:#64748b;margin-bottom:32px;line-height:1.5}.hero-stats[data-v-06c771c0]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-bottom:32px;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.hstat[data-v-06c771c0]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px;padding:12px 14px;background:#fff;border:1px solid #e2e8f0;border-radius:12px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.04);box-shadow:0 1px 3px rgba(0,0,0,.04);-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0;text-align:left;-webkit-transition:all .25s;transition:all .25s}.hstat[data-v-06c771c0]:hover{border-color:var(--primary-color,#1890ff);-webkit-box-shadow:0 4px 16px rgba(24,144,255,.1);box-shadow:0 4px 16px rgba(24,144,255,.1);-webkit-transform:translateY(-2px);transform:translateY(-2px)}.hstat-icon[data-v-06c771c0]{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;width:36px;height:36px;border-radius:8px;background:linear-gradient(135deg,rgba(24,144,255,.1),rgba(114,46,209,.08));font-size:16px;color:var(--primary-color,#1890ff);-ms-flex-negative:0;flex-shrink:0}.hstat-body[data-v-06c771c0]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-width:0}.hstat-val[data-v-06c771c0]{font-size:12px;font-weight:700;color:#0f172a}.hstat-label[data-v-06c771c0],.hstat-val[data-v-06c771c0]{line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.hstat-label[data-v-06c771c0]{font-size:10px;color:#94a3b8;margin-top:1px}.hero-cta[data-v-06c771c0]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-bottom:16px}.hero-cta .ant-btn[data-v-06c771c0]{border-radius:10px;font-weight:600;height:42px;padding:0 24px;font-size:14px}.hero-cta .ant-btn-primary[data-v-06c771c0]{-webkit-box-shadow:0 4px 14px rgba(24,144,255,.3);box-shadow:0 4px 14px rgba(24,144,255,.3)}.hero-hint[data-v-06c771c0]{font-size:12px;color:#94a3b8}.panel-header-actions[data-v-06c771c0]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px}.panel-header-icon[data-v-06c771c0]{font-size:15px;color:#94a3b8;cursor:pointer;padding:4px;border-radius:6px;-webkit-transition:color .2s,background .2s;transition:color .2s,background .2s}.panel-header-icon[data-v-06c771c0]:hover{color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08)}.panel-summary[data-v-06c771c0]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:0;padding:0;border-bottom:1px solid #f1f5f9}.summary-chip[data-v-06c771c0]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:8px 4px;border-right:1px solid #f1f5f9}.summary-chip[data-v-06c771c0]:last-child{border-right:none}.sc-num[data-v-06c771c0]{font-size:14px;font-weight:700;color:#0f172a;line-height:1.2;font-family:SF Mono,Monaco,monospace}.sc-num.up[data-v-06c771c0]{color:#16a34a}.sc-num.down[data-v-06c771c0]{color:#dc2626}.sc-label[data-v-06c771c0]{font-size:9px;color:#94a3b8;text-transform:uppercase;letter-spacing:.5px;margin-top:2px}.batch-bar[data-v-06c771c0]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;padding:10px 12px;margin:8px 10px;margin-bottom:4px;background:#fff;border:1px solid #e2e8f0;border-radius:10px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.04);box-shadow:0 1px 3px rgba(0,0,0,.04);-ms-flex-wrap:wrap;flex-wrap:wrap}.batch-all-cb[data-v-06c771c0]{font-size:12px;font-weight:500;color:#475569;margin-right:4px}.batch-bar .ant-btn[data-v-06c771c0]{border-radius:6px;font-size:12px;font-weight:500;height:28px;padding:0 10px;-ms-flex-negative:0;flex-shrink:0;-webkit-transition:all .2s;transition:all .2s}.batch-bar .ant-btn-primary[data-v-06c771c0]{-webkit-box-shadow:0 1px 2px color-mix(in srgb,var(--primary-color,#1890ff) 20%,transparent);box-shadow:0 1px 2px color-mix(in srgb,var(--primary-color,#1890ff) 20%,transparent)}.batch-bar .ant-btn-primary[data-v-06c771c0]:hover{-webkit-filter:brightness(1.05);filter:brightness(1.05)}.batch-bar .ant-btn[data-v-06c771c0]:not(.ant-btn-primary){background:#f8fafc;border-color:#e2e8f0;color:#64748b}.batch-bar .ant-btn[data-v-06c771c0]:not(.ant-btn-primary):hover{background:#f1f5f9;border-color:#cbd5e1;color:#475569}.wl-card[data-v-06c771c0]{position:relative;padding:10px 12px;border-radius:8px;cursor:pointer;-webkit-transition:all .2s cubic-bezier(.4,0,.2,1);transition:all .2s cubic-bezier(.4,0,.2,1);margin-bottom:3px;border:1px solid transparent}.wl-card[data-v-06c771c0]:hover{background:#f5f7fa;border-color:#e8ecf1}.wl-card.active[data-v-06c771c0]{background:linear-gradient(135deg,color-mix(in srgb,var(--primary-color,#1890ff) 6%,#fff) 0,color-mix(in srgb,var(--primary-color,#1890ff) 4%,#fff) 100%);border-color:color-mix(in srgb,var(--primary-color,#1890ff) 28%,transparent);-webkit-box-shadow:0 1px 4px color-mix(in srgb,var(--primary-color,#1890ff) 10%,transparent);box-shadow:0 1px 4px color-mix(in srgb,var(--primary-color,#1890ff) 10%,transparent)}.wl-card-cb[data-v-06c771c0]{position:absolute;top:12px;left:4px;z-index:1}.wl-card-body[data-v-06c771c0]{-webkit-transition:padding-left .2s;transition:padding-left .2s}.wl-card-body.with-cb[data-v-06c771c0]{padding-left:24px}.wl-row-main[data-v-06c771c0]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;gap:5px}.wl-symbol[data-v-06c771c0]{font-size:13px;font-weight:700;color:#0f172a}.wl-market[data-v-06c771c0]{font-size:9px;color:#94a3b8;letter-spacing:.3px;padding:1px 4px;background:#f1f5f9;border-radius:3px}.wl-spacer[data-v-06c771c0]{-webkit-box-flex:1;-ms-flex:1;flex:1}.wl-price[data-v-06c771c0]{font-size:12px;font-weight:600;color:#0f172a;font-family:SF Mono,Monaco,monospace}.wl-change[data-v-06c771c0]{font-size:10px;font-weight:700;font-family:SF Mono,Monaco,monospace;padding:1px 5px;border-radius:4px;margin-left:4px}.wl-change.up[data-v-06c771c0]{color:#16a34a;background:rgba(22,163,74,.08)}.wl-change.down[data-v-06c771c0]{color:#dc2626;background:rgba(220,38,38,.06)}.wl-row-pnl[data-v-06c771c0]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin-top:4px;font-family:SF Mono,Monaco,monospace}.wl-pnl-qty[data-v-06c771c0]{font-size:10px;color:#94a3b8}.wl-pnl-val[data-v-06c771c0]{font-size:10px;font-weight:600;margin-left:auto}.wl-pnl-val.up[data-v-06c771c0]{color:#16a34a}.wl-pnl-val.down[data-v-06c771c0]{color:#dc2626}.wl-row-task[data-v-06c771c0]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:6px;margin-top:4px}.wl-row-task[data-v-06c771c0],.wl-task-badge[data-v-06c771c0]{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.wl-task-badge[data-v-06c771c0]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;gap:3px;font-size:10px;padding:1px 8px;border-radius:10px;cursor:pointer;-webkit-transition:all .2s;transition:all .2s}.wl-task-badge.active[data-v-06c771c0]{color:#16a34a;background:rgba(22,163,74,.08)}.wl-task-badge.paused[data-v-06c771c0]{color:#94a3b8;background:#f1f5f9}.wl-task-badge[data-v-06c771c0]:hover{opacity:.75}.wl-task-next[data-v-06c771c0]{font-size:10px;color:#94a3b8;margin-left:auto}.wl-card-hover-actions[data-v-06c771c0]{position:absolute;top:0;right:0;bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:2px;padding-right:8px;opacity:0;-webkit-transition:opacity .15s;transition:opacity .15s;background:-webkit-gradient(linear,left top,right top,from(transparent),color-stop(30%,#f8fafc));background:linear-gradient(90deg,transparent,#f8fafc 30%);border-radius:0 8px 8px 0;pointer-events:none}.wl-card:hover .wl-card-hover-actions[data-v-06c771c0]{opacity:1;pointer-events:auto}.wl-card.active .wl-card-hover-actions[data-v-06c771c0]{background:-webkit-gradient(linear,left top,right top,from(transparent),color-stop(30%,#e6f7ff));background:linear-gradient(90deg,transparent,#e6f7ff 30%)}.wl-hover-btn[data-v-06c771c0]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:26px;height:26px;border-radius:6px;font-size:13px;color:#64748b;cursor:pointer;-webkit-transition:all .15s;transition:all .15s;background:#fff;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.06);box-shadow:0 1px 3px rgba(0,0,0,.06)}.wl-hover-btn[data-v-06c771c0]:hover{color:var(--primary-color,#1890ff);background:#e6f7ff}.wl-hover-btn.danger[data-v-06c771c0]:hover{color:#dc2626;background:#fef2f2}.watchlist-empty[data-v-06c771c0]{text-align:center;padding:32px 16px}.we-icon[data-v-06c771c0]{font-size:36px;color:#e2e8f0;margin-bottom:12px}.watchlist-empty p[data-v-06c771c0]{font-size:12px;color:#94a3b8;margin-bottom:12px}.batch-modal-summary[data-v-06c771c0]{margin-bottom:16px}.batch-modal-summary p[data-v-06c771c0]{font-size:13px;color:#475569;margin-bottom:8px}.batch-symbols-preview[data-v-06c771c0]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:4px;max-height:80px;overflow-y:auto}.task-drawer-empty[data-v-06c771c0]{text-align:center;padding:48px 16px;color:#94a3b8}.task-drawer-empty p[data-v-06c771c0]{margin-top:12px;font-size:13px}.task-drawer-list[data-v-06c771c0]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:12px}.task-item[data-v-06c771c0]{padding:14px 16px;border:1px solid #e2e8f0;border-radius:10px;background:#fafafa;-webkit-transition:-webkit-box-shadow .2s;transition:-webkit-box-shadow .2s;transition:box-shadow .2s;transition:box-shadow .2s,-webkit-box-shadow .2s}.task-item[data-v-06c771c0]:hover{-webkit-box-shadow:0 2px 8px rgba(0,0,0,.06);box-shadow:0 2px 8px rgba(0,0,0,.06)}.task-item-header[data-v-06c771c0]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:8px}.task-item-name[data-v-06c771c0]{font-size:13px;font-weight:600;color:#0f172a}.task-item-meta[data-v-06c771c0]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:16px;font-size:12px;color:#64748b;margin-bottom:10px}.task-item-meta .anticon[data-v-06c771c0]{margin-right:4px}.task-item-actions[data-v-06c771c0]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:6px;margin-top:4px}.task-item-actions .ant-btn[data-v-06c771c0]{border-radius:6px;font-size:12px;font-weight:500;height:28px;padding:0 10px;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;-webkit-transition:all .2s;transition:all .2s;border-width:1px}.task-item-actions .ant-btn.ant-btn-primary[data-v-06c771c0]{background:var(--primary-color,#1890ff);border-color:var(--primary-color,#1890ff);-webkit-box-shadow:0 1px 2px rgba(0,0,0,.04);box-shadow:0 1px 2px rgba(0,0,0,.04)}.task-item-actions .ant-btn.ant-btn-primary[data-v-06c771c0]:hover{-webkit-filter:brightness(1.05);filter:brightness(1.05);-webkit-box-shadow:0 2px 6px color-mix(in srgb,var(--primary-color,#1890ff) 25%,transparent);box-shadow:0 2px 6px color-mix(in srgb,var(--primary-color,#1890ff) 25%,transparent)}.task-item-actions .ant-btn.ant-btn-default[data-v-06c771c0]{background:#f8fafc;border-color:#e2e8f0;color:#475569}.task-item-actions .ant-btn.ant-btn-default[data-v-06c771c0]:hover{background:#f1f5f9;border-color:#cbd5e1;color:#334155}.task-item-actions .ant-btn.ant-btn-danger[data-v-06c771c0]{background:#fef2f2;border-color:#fecaca;color:#dc2626}.task-item-actions .ant-btn.ant-btn-danger[data-v-06c771c0]:hover{background:#fee2e2;border-color:#fca5a5;color:#b91c1c}.add-stock-modal-content .market-tabs[data-v-06c771c0]{margin-bottom:16px}.add-stock-modal-content .hot-symbols-section[data-v-06c771c0],.add-stock-modal-content .search-results-section[data-v-06c771c0],.add-stock-modal-content .symbol-search-section[data-v-06c771c0]{margin-bottom:24px}.add-stock-modal-content .hot-symbols-section .section-title[data-v-06c771c0],.add-stock-modal-content .search-results-section .section-title[data-v-06c771c0]{font-size:14px;font-weight:600;color:#262626;margin-bottom:12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.add-stock-modal-content .symbol-list[data-v-06c771c0]{max-height:200px;overflow-y:auto;border:1px solid #e8e8e8;border-radius:4px}.add-stock-modal-content .symbol-list .symbol-list-item[data-v-06c771c0]{cursor:pointer;padding:8px 12px;-webkit-transition:background-color .3s;transition:background-color .3s}.add-stock-modal-content .symbol-list .symbol-list-item[data-v-06c771c0]:hover{background-color:#f5f5f5}.add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content[data-v-06c771c0]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content .symbol-code[data-v-06c771c0]{font-weight:600;color:#262626;min-width:80px}.add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content .symbol-name[data-v-06c771c0]{color:#595959;-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.add-stock-modal-content .selected-symbol-section[data-v-06c771c0]{margin-top:16px}.add-stock-modal-content .selected-symbol-section .selected-symbol-info[data-v-06c771c0]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.skeleton-box .skeleton-text[data-v-06c771c0]{display:block;height:12px;background:-webkit-gradient(linear,left top,right top,color-stop(25%,#e2e8f0),color-stop(50%,#f1f5f9),color-stop(75%,#e2e8f0));background:linear-gradient(90deg,#e2e8f0 25%,#f1f5f9 50%,#e2e8f0 75%);background-size:200% 100%;-webkit-animation:skeleton-pulse-06c771c0 1.5s ease-in-out infinite;animation:skeleton-pulse-06c771c0 1.5s ease-in-out infinite;border-radius:4px;margin:3px 0}.skeleton-box .skeleton-text.short[data-v-06c771c0]{width:40px;height:9px}.skeleton-cell[data-v-06c771c0]{background:#f8fafc!important;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:8px 4px}.skeleton-cell .skeleton-text[data-v-06c771c0]{width:80%;height:10px;background:-webkit-gradient(linear,left top,right top,color-stop(25%,#e2e8f0),color-stop(50%,#f1f5f9),color-stop(75%,#e2e8f0));background:linear-gradient(90deg,#e2e8f0 25%,#f1f5f9 50%,#e2e8f0 75%);background-size:200% 100%;-webkit-animation:skeleton-pulse-06c771c0 1.5s ease-in-out infinite;animation:skeleton-pulse-06c771c0 1.5s ease-in-out infinite;border-radius:3px;margin:2px 0}.skeleton-cell .skeleton-text.short[data-v-06c771c0]{width:50%;height:8px}.skeleton-item[data-v-06c771c0]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;padding:6px 0}.skeleton-item .skeleton-text[data-v-06c771c0]{height:12px;background:-webkit-gradient(linear,left top,right top,color-stop(25%,#e2e8f0),color-stop(50%,#f1f5f9),color-stop(75%,#e2e8f0));background:linear-gradient(90deg,#e2e8f0 25%,#f1f5f9 50%,#e2e8f0 75%);background-size:200% 100%;-webkit-animation:skeleton-pulse-06c771c0 1.5s ease-in-out infinite;animation:skeleton-pulse-06c771c0 1.5s ease-in-out infinite;border-radius:4px;-webkit-box-flex:1;-ms-flex:1;flex:1}.skeleton-item .skeleton-text.short[data-v-06c771c0]{-webkit-box-flex:0;-ms-flex:none;flex:none;width:40px}.indices-empty[data-v-06c771c0],.indices-loading[data-v-06c771c0]{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;height:100%;font-size:11px;color:#94a3b8;padding:4px 16px}.indices-loading .anticon[data-v-06c771c0]{margin-right:6px}.heatmap-empty[data-v-06c771c0]{grid-column:-1;text-align:center;padding:20px;color:#94a3b8;font-size:12px}@-webkit-keyframes skeleton-pulse-06c771c0{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes skeleton-pulse-06c771c0{0%{background-position:200% 0}to{background-position:-200% 0}}.theme-dark .skeleton-box .skeleton-text[data-v-06c771c0],.theme-dark .skeleton-cell .skeleton-text[data-v-06c771c0],.theme-dark .skeleton-item .skeleton-text[data-v-06c771c0]{background:-webkit-gradient(linear,left top,right top,color-stop(25%,#2a2a2a),color-stop(50%,#333),color-stop(75%,#2a2a2a));background:linear-gradient(90deg,#2a2a2a 25%,#333 50%,#2a2a2a 75%);background-size:200% 100%}.theme-dark .skeleton-cell[data-v-06c771c0]{background:#1c1c1c!important}.theme-dark .heatmap-empty[data-v-06c771c0],.theme-dark .indices-empty[data-v-06c771c0],.theme-dark .indices-loading[data-v-06c771c0]{color:#666}.qd-dark-modal .ant-modal-content{background:#141414}.qd-dark-modal .ant-modal-header{background:#141414;border-bottom-color:#2a2a2a}.qd-dark-modal .ant-modal-header .ant-modal-title{color:#d4d4d4}.qd-dark-modal .ant-modal-close-x{color:#888}.qd-dark-modal .ant-modal-body{background:#141414;color:#d4d4d4}.qd-dark-modal .ant-modal-footer{background:#141414;border-top-color:#2a2a2a}.qd-dark-modal .ant-modal-footer .ant-btn-default{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.qd-dark-modal .ant-modal-footer .ant-btn-default:hover{border-color:#1890ff;color:#1890ff}.qd-dark-modal .ant-form-item-label>label{color:#d4d4d4}.qd-dark-modal .ant-input{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.qd-dark-modal .ant-input::-webkit-input-placeholder{color:#555}.qd-dark-modal .ant-input::-moz-placeholder{color:#555}.qd-dark-modal .ant-input:-ms-input-placeholder{color:#555}.qd-dark-modal .ant-input::-ms-input-placeholder{color:#555}.qd-dark-modal .ant-input::placeholder{color:#555}.qd-dark-modal .ant-input-number,.qd-dark-modal .ant-select-selection{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.qd-dark-modal .ant-select-arrow{color:#666}.qd-dark-modal .ant-checkbox-wrapper,.qd-dark-modal .ant-radio-wrapper{color:#d4d4d4}.qd-dark-modal .ant-tabs-bar{border-bottom-color:#2a2a2a}.qd-dark-modal .ant-tabs-tab{color:#888}.qd-dark-modal .ant-tabs-tab:hover{color:#d4d4d4}.qd-dark-modal .ant-tabs-tab-active{color:#1890ff!important}.qd-dark-modal .ant-tag{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.qd-dark-modal .ant-tag-blue{background:rgba(24,144,255,.1);border-color:rgba(24,144,255,.3);color:#1890ff}.qd-dark-modal .ant-alert{background:rgba(24,144,255,.06);border-color:#2a2a2a}.qd-dark-modal .ant-alert-message{color:#d4d4d4}.qd-dark-modal .ant-alert-info .ant-alert-icon{color:#1890ff}.qd-dark-modal .ant-list-item{border-bottom-color:#2a2a2a;color:#d4d4d4}.qd-dark-modal .ant-list-item-meta-title{color:#d4d4d4}.qd-dark-modal .ant-list-item-meta-description{color:#888}.qd-dark-modal .ant-empty-description{color:#666}.qd-dark-modal .add-stock-modal-content,.qd-dark-modal p{color:#d4d4d4}.qd-dark-modal .add-stock-modal-content .section-title{color:#d4d4d4!important}.qd-dark-modal .add-stock-modal-content .symbol-list{border-color:#2a2a2a;background:#1c1c1c}.qd-dark-modal .add-stock-modal-content .symbol-list .symbol-list-item:hover{background:#252525!important}.qd-dark-modal .add-stock-modal-content .symbol-list .symbol-list-item .symbol-code{color:#d4d4d4!important}.qd-dark-modal .add-stock-modal-content .symbol-list .symbol-list-item .symbol-name{color:#888!important}.qd-dark-modal .add-stock-modal-content .selected-symbol-info strong{color:#d4d4d4}.qd-dark-modal .add-stock-modal-content .selected-symbol-info span{color:#888!important}.qd-dark-modal .batch-modal-summary p{color:#d4d4d4}.qd-dark-modal .batch-symbols-preview .ant-tag{background:rgba(24,144,255,.1);border-color:rgba(24,144,255,.3);color:#1890ff}.qd-dark-modal .task-item{background:#1c1c1c;border-color:#2a2a2a}.qd-dark-modal .task-item:hover{-webkit-box-shadow:0 2px 8px rgba(0,0,0,.3);box-shadow:0 2px 8px rgba(0,0,0,.3)}.qd-dark-modal .task-item-name{color:#d4d4d4}.qd-dark-modal .task-item-meta{color:#888}.qd-dark-modal .task-drawer-empty{color:#666}.qd-dark-modal .history-item{background:#1c1c1c;border-color:#2a2a2a}.qd-dark-modal .search-result-item{color:#d4d4d4}.qd-dark-modal .search-result-item:hover{background:#1c1c1c}.qd-dark-modal .search-result-name{color:#d4d4d4}.qd-dark-modal .search-result-market{color:#888}.qd-dark-drawer .ant-drawer-content{background:#141414}.qd-dark-drawer .ant-drawer-header{background:#141414;border-bottom-color:#2a2a2a}.qd-dark-drawer .ant-drawer-header .ant-drawer-title{color:#d4d4d4}.qd-dark-drawer .ant-drawer-header .ant-drawer-close{color:#888}.qd-dark-drawer .ant-drawer-body{background:#141414;color:#d4d4d4}.qd-dark-drawer .task-item{background:#1c1c1c;border-color:#2a2a2a}.qd-dark-drawer .task-item:hover{-webkit-box-shadow:0 2px 8px rgba(0,0,0,.3);box-shadow:0 2px 8px rgba(0,0,0,.3)}.qd-dark-drawer .task-item-name{color:#d4d4d4}.qd-dark-drawer .task-item-meta{color:#888}.qd-dark-drawer .task-drawer-empty{color:#666}.qd-dark-drawer .task-item-actions .ant-btn.ant-btn-primary{background:var(--primary-color,#1890ff);border-color:var(--primary-color,#1890ff)}.qd-dark-drawer .task-item-actions .ant-btn.ant-btn-primary:hover{-webkit-filter:brightness(1.1);filter:brightness(1.1)}.qd-dark-drawer .task-item-actions .ant-btn.ant-btn-default{background:#2a2a2c;border-color:#3a3a3c;color:#b0b0b8}.qd-dark-drawer .task-item-actions .ant-btn.ant-btn-default:hover{background:#333336;border-color:var(--primary-color,#1890ff);color:var(--primary-color,#1890ff)}.qd-dark-drawer .task-item-actions .ant-btn.ant-btn-danger{background:rgba(239,68,68,.1);border-color:rgba(239,68,68,.25);color:#f87171}.qd-dark-drawer .task-item-actions .ant-btn.ant-btn-danger:hover{background:rgba(239,68,68,.18);border-color:rgba(239,68,68,.4);color:#fca5a5}.qd-dark-drawer .ant-btn-default{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.qd-dark-drawer .ant-btn-default:hover{border-color:#1890ff;color:#1890ff}.qd-dark-drawer .ant-btn-danger{background:transparent}.qd-dark-drawer .ant-popover-inner{background:#1c1c1c}.qd-dark-drawer .ant-popover-message,.qd-dark-drawer .ant-popover-message-title{color:#d4d4d4}.qd-dark-drawer .ant-popover-buttons .ant-btn-default{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.qd-dark-modal .ant-select-dropdown,body.colorWeak .ant-select-dropdown{background:#1c1c1c}.qd-dark-modal .ant-select-dropdown .ant-select-dropdown-menu-item,body.colorWeak .ant-select-dropdown .ant-select-dropdown-menu-item{color:#d4d4d4}.qd-dark-modal .ant-select-dropdown .ant-select-dropdown-menu-item-active,.qd-dark-modal .ant-select-dropdown .ant-select-dropdown-menu-item:hover,body.colorWeak .ant-select-dropdown .ant-select-dropdown-menu-item-active,body.colorWeak .ant-select-dropdown .ant-select-dropdown-menu-item:hover{background:#252525}.qd-dark-modal .ant-select-dropdown .ant-select-dropdown-menu-item-selected,body.colorWeak .ant-select-dropdown .ant-select-dropdown-menu-item-selected{background:rgba(24,144,255,.1);color:#1890ff} \ No newline at end of file diff --git a/frontend/dist/css/221.340147b1.css b/frontend/dist/css/221.340147b1.css deleted file mode 100644 index bb88163..0000000 --- a/frontend/dist/css/221.340147b1.css +++ /dev/null @@ -1 +0,0 @@ -.profile-page[data-v-6dceb76a]{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)}.profile-page .page-header[data-v-6dceb76a]{margin-bottom:24px}.profile-page .page-header .page-title[data-v-6dceb76a]{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}.profile-page .page-header .page-title .anticon[data-v-6dceb76a]{font-size:28px;color:#1890ff}.profile-page .page-header .page-desc[data-v-6dceb76a]{color:#64748b;font-size:14px;margin:0}.profile-page .profile-cards-row[data-v-6dceb76a]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.profile-page .profile-cards-row .profile-card-col .ant-card[data-v-6dceb76a],.profile-page .profile-cards-row .profile-card-col[data-v-6dceb76a],.profile-page .profile-cards-row .right-cards-col .ant-card[data-v-6dceb76a],.profile-page .profile-cards-row .right-cards-col[data-v-6dceb76a]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.profile-page .profile-cards-row .profile-card-col .ant-card[data-v-6dceb76a],.profile-page .profile-cards-row .right-cards-col .ant-card[data-v-6dceb76a]{height:100%}.profile-page .profile-cards-row .profile-card-col[data-v-6dceb76a] .ant-card-body,.profile-page .profile-cards-row .right-cards-col[data-v-6dceb76a] .ant-card-body{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.profile-page .profile-cards-row .right-cards-row[data-v-6dceb76a]{height:100%;display:-webkit-box;display:-ms-flexbox;display:flex}.profile-page .profile-cards-row .right-cards-row .ant-col .ant-card[data-v-6dceb76a],.profile-page .profile-cards-row .right-cards-row .ant-col[data-v-6dceb76a]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.profile-page .profile-cards-row .right-cards-row .ant-col .ant-card[data-v-6dceb76a]{height:100%}.profile-page .profile-cards-row .right-cards-row .ant-col[data-v-6dceb76a] .ant-card-body{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.profile-page .profile-card[data-v-6dceb76a]{border-radius:12px;-webkit-box-shadow:0 4px 20px rgba(0,0,0,.08);box-shadow:0 4px 20px rgba(0,0,0,.08);text-align:center}.profile-page .profile-card .avatar-section[data-v-6dceb76a]{padding:20px 0}.profile-page .profile-card .avatar-section .ant-avatar[data-v-6dceb76a]{-webkit-box-shadow:0 4px 12px rgba(0,0,0,.15);box-shadow:0 4px 12px rgba(0,0,0,.15)}.profile-page .profile-card .avatar-section .username[data-v-6dceb76a]{margin:16px 0 8px;font-size:20px;font-weight:600;color:#1e3a5f}.profile-page .profile-card .avatar-section .user-role[data-v-6dceb76a]{margin:0}.profile-page .profile-card .profile-info[data-v-6dceb76a]{text-align:left;-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:distribute;justify-content:space-around}.profile-page .profile-card .profile-info .info-item[data-v-6dceb76a]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:12px 0;border-bottom:1px solid #f0f0f0}.profile-page .profile-card .profile-info .info-item[data-v-6dceb76a]:last-child{border-bottom:none}.profile-page .profile-card .profile-info .info-item .anticon[data-v-6dceb76a]{font-size:16px;color:#1890ff;margin-right:12px}.profile-page .profile-card .profile-info .info-item .label[data-v-6dceb76a]{color:#64748b;margin-right:8px}.profile-page .profile-card .profile-info .info-item .value[data-v-6dceb76a]{color:#1e3a5f;font-weight:500}.profile-page .edit-card[data-v-6dceb76a]{border-radius:12px;-webkit-box-shadow:0 4px 20px rgba(0,0,0,.08);box-shadow:0 4px 20px rgba(0,0,0,.08)}.profile-page .edit-card .password-form[data-v-6dceb76a],.profile-page .edit-card .profile-form[data-v-6dceb76a]{max-width:500px}.profile-page .edit-card .password-form[data-v-6dceb76a] .ant-input,.profile-page .edit-card .password-form[data-v-6dceb76a] .ant-input-password,.profile-page .edit-card .profile-form[data-v-6dceb76a] .ant-input,.profile-page .edit-card .profile-form[data-v-6dceb76a] .ant-input-password{border-radius:8px}.profile-page .edit-card .password-form .email-hint[data-v-6dceb76a],.profile-page .edit-card .profile-form .email-hint[data-v-6dceb76a]{margin-top:8px;font-size:12px;color:rgba(0,0,0,.45)}.profile-page .edit-card .password-form .email-hint.email-warning[data-v-6dceb76a],.profile-page .edit-card .profile-form .email-hint.email-warning[data-v-6dceb76a]{color:#faad14}.profile-page .edit-card .amount-positive[data-v-6dceb76a]{color:#52c41a;font-weight:600}.profile-page .edit-card .amount-negative[data-v-6dceb76a]{color:#ff4d4f;font-weight:600}.profile-page .edit-card .notification-settings-form .field-hint[data-v-6dceb76a]{margin-top:6px;font-size:12px;color:rgba(0,0,0,.45);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px}.profile-page .edit-card .notification-settings-form .field-hint .anticon[data-v-6dceb76a]{font-size:12px}.profile-page .edit-card .notification-settings-form[data-v-6dceb76a] .ant-checkbox-group{width:100%}.profile-page .edit-card .notification-settings-form[data-v-6dceb76a] .ant-checkbox-wrapper{margin-bottom:8px}.profile-page .credits-card[data-v-6dceb76a]{border-radius:12px;-webkit-box-shadow:0 4px 20px rgba(0,0,0,.08);box-shadow:0 4px 20px rgba(0,0,0,.08);background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.profile-page .credits-card[data-v-6dceb76a] .ant-card-body{background:transparent;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.profile-page .credits-card[data-v-6dceb76a] .ant-divider{border-color:hsla(0,0%,100%,.2)}.profile-page .credits-card .credits-header .credits-title[data-v-6dceb76a]{font-size:16px;font-weight:600;margin:0;color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.profile-page .credits-card .credits-header .credits-title .anticon[data-v-6dceb76a]{font-size:18px}.profile-page .credits-card .credits-body[data-v-6dceb76a]{padding:20px 0;text-align:center;-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.profile-page .credits-card .credits-body .credits-amount .amount-value[data-v-6dceb76a]{font-size:42px;font-weight:700;color:#fff;text-shadow:0 2px 4px rgba(0,0,0,.2)}.profile-page .credits-card .credits-body .credits-amount .amount-label[data-v-6dceb76a]{font-size:16px;color:hsla(0,0%,100%,.9);margin-left:8px}.profile-page .credits-card .credits-body .vip-status[data-v-6dceb76a]{margin-top: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;gap:6px;font-size:13px}.profile-page .credits-card .credits-body .vip-status .vip-active[data-v-6dceb76a]{color:gold}.profile-page .credits-card .credits-body .vip-status .vip-expired[data-v-6dceb76a]{color:hsla(0,0%,100%,.6)}.profile-page .credits-card .credits-body .vip-status .no-vip[data-v-6dceb76a]{color:hsla(0,0%,100%,.7)}.profile-page .credits-card .credits-actions[data-v-6dceb76a]{text-align:center;margin-top:auto}.profile-page .credits-card .credits-actions .ant-btn[data-v-6dceb76a]{border-radius:20px;padding:0 24px;height:36px;font-weight:500;background:#fff;color:#667eea;border:none}.profile-page .credits-card .credits-actions .ant-btn[data-v-6dceb76a]:hover{background:hsla(0,0%,100%,.9);color:#764ba2}.profile-page .credits-card .credits-hint[data-v-6dceb76a]{margin-top:12px;text-align:center;font-size:12px;color:hsla(0,0%,100%,.7);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;gap:6px}.profile-page .referral-card[data-v-6dceb76a]{border-radius:12px;-webkit-box-shadow:0 4px 20px rgba(0,0,0,.08);box-shadow:0 4px 20px rgba(0,0,0,.08);background:linear-gradient(135deg,#11998e,#38ef7d);color:#fff}.profile-page .referral-card[data-v-6dceb76a] .ant-card-body{background:transparent;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.profile-page .referral-card[data-v-6dceb76a] .ant-divider{border-color:hsla(0,0%,100%,.2)}.profile-page .referral-card .referral-header .referral-title[data-v-6dceb76a]{font-size:16px;font-weight:600;margin:0;color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.profile-page .referral-card .referral-header .referral-title .anticon[data-v-6dceb76a]{font-size:18px}.profile-page .referral-card .referral-body[data-v-6dceb76a]{padding:12px 0;-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.profile-page .referral-card .referral-body .referral-stats[data-v-6dceb76a]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-pack:distribute;justify-content:space-around}.profile-page .referral-card .referral-body .referral-stats .stat-item[data-v-6dceb76a]{text-align:center}.profile-page .referral-card .referral-body .referral-stats .stat-item .stat-value[data-v-6dceb76a]{font-size:28px;font-weight:700;color:#fff;display:block}.profile-page .referral-card .referral-body .referral-stats .stat-item .stat-label[data-v-6dceb76a]{font-size:12px;color:hsla(0,0%,100%,.8)}.profile-page .referral-card .referral-body .referral-link-section .link-label[data-v-6dceb76a]{font-size:12px;color:hsla(0,0%,100%,.9);margin-bottom:6px}.profile-page .referral-card .referral-body .referral-link-section .link-box[data-v-6dceb76a] .ant-input{background:hsla(0,0%,100%,.2);border:1px solid hsla(0,0%,100%,.3);color:#fff}.profile-page .referral-card .referral-body .referral-link-section .link-box[data-v-6dceb76a] .ant-input::-webkit-input-placeholder{color:hsla(0,0%,100%,.6)}.profile-page .referral-card .referral-body .referral-link-section .link-box[data-v-6dceb76a] .ant-input::-moz-placeholder{color:hsla(0,0%,100%,.6)}.profile-page .referral-card .referral-body .referral-link-section .link-box[data-v-6dceb76a] .ant-input:-ms-input-placeholder{color:hsla(0,0%,100%,.6)}.profile-page .referral-card .referral-body .referral-link-section .link-box[data-v-6dceb76a] .ant-input::-ms-input-placeholder{color:hsla(0,0%,100%,.6)}.profile-page .referral-card .referral-body .referral-link-section .link-box[data-v-6dceb76a] .ant-input::placeholder{color:hsla(0,0%,100%,.6)}.profile-page .referral-card .referral-body .referral-link-section .link-box[data-v-6dceb76a] .anticon-copy{color:#fff}.profile-page .referral-card .referral-body .referral-link-section .link-box[data-v-6dceb76a] .anticon-copy:hover{color:gold}.profile-page .referral-card .referral-body .referral-hint[data-v-6dceb76a]{margin-top:auto;text-align:center;font-size:12px;color:hsla(0,0%,100%,.85);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;gap:6px}.profile-page .referral-card .referral-body .referral-hint .anticon-gift[data-v-6dceb76a]{color:gold}.profile-page .referral-user-cell[data-v-6dceb76a]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px}.profile-page .referral-user-cell .user-info[data-v-6dceb76a]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.profile-page .referral-user-cell .user-info .nickname[data-v-6dceb76a]{font-weight:500;color:#333}.profile-page .referral-user-cell .user-info .username[data-v-6dceb76a]{font-size:12px;color:#999}.profile-page .exchange-config-section .credential-hint[data-v-6dceb76a]{font-family:SFMono-Regular,Consolas,monospace;font-size:13px;color:#666}.profile-page .test-result-msg[data-v-6dceb76a]{margin-top:8px;font-size:13px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}.profile-page .test-result-msg.success[data-v-6dceb76a]{color:#52c41a}.profile-page .test-result-msg.error[data-v-6dceb76a]{color:#f5222d}.profile-page.theme-dark[data-v-6dceb76a]{background:-webkit-gradient(linear,left top,left bottom,from(#141414),to(#1c1c1c));background:linear-gradient(180deg,#141414,#1c1c1c)}.profile-page.theme-dark .page-header .page-title[data-v-6dceb76a]{color:#e0e6ed}.profile-page.theme-dark .page-header .page-desc[data-v-6dceb76a]{color:#8b949e}.profile-page.theme-dark .edit-card[data-v-6dceb76a],.profile-page.theme-dark .profile-card[data-v-6dceb76a]{background:#1c1c1c;-webkit-box-shadow:0 4px 24px rgba(0,0,0,.25);box-shadow:0 4px 24px rgba(0,0,0,.25)}.profile-page.theme-dark .edit-card[data-v-6dceb76a] .ant-card-body,.profile-page.theme-dark .profile-card[data-v-6dceb76a] .ant-card-body{background:#1c1c1c}.profile-page.theme-dark .profile-card .avatar-section .username[data-v-6dceb76a]{color:#e0e6ed}.profile-page.theme-dark .profile-card .profile-info .info-item[data-v-6dceb76a]{border-bottom-color:#2a2a2a}.profile-page.theme-dark .profile-card .profile-info .info-item .label[data-v-6dceb76a]{color:#8b949e}.profile-page.theme-dark .profile-card .profile-info .info-item .value[data-v-6dceb76a]{color:#e0e6ed}.profile-page.theme-dark .edit-card[data-v-6dceb76a] .ant-tabs-bar{border-bottom-color:#2a2a2a}.profile-page.theme-dark .edit-card[data-v-6dceb76a] .ant-tabs-tab{color:#8b949e}.profile-page.theme-dark .edit-card[data-v-6dceb76a] .ant-tabs-tab:hover{color:#e0e6ed}.profile-page.theme-dark .edit-card[data-v-6dceb76a] .ant-tabs-tab-active{color:#1890ff}.profile-page.theme-dark .edit-card[data-v-6dceb76a] .ant-form-item-label label{color:#c9d1d9}.profile-page.theme-dark .edit-card[data-v-6dceb76a] .ant-input,.profile-page.theme-dark .edit-card[data-v-6dceb76a] .ant-input-password{background:#141414;border-color:#2a2a2a;color:#c9d1d9}.profile-page.theme-dark .edit-card[data-v-6dceb76a] .ant-input-password:focus,.profile-page.theme-dark .edit-card[data-v-6dceb76a] .ant-input-password:hover,.profile-page.theme-dark .edit-card[data-v-6dceb76a] .ant-input:focus,.profile-page.theme-dark .edit-card[data-v-6dceb76a] .ant-input:hover{border-color:#1890ff}.profile-page.theme-dark .credits-card[data-v-6dceb76a]{background:linear-gradient(135deg,#1c1c1c,#1a1a1a 50%,#141414);-webkit-box-shadow:0 4px 24px rgba(0,0,0,.25);box-shadow:0 4px 24px rgba(0,0,0,.25)}.profile-page.theme-dark .credits-card[data-v-6dceb76a] .ant-divider{border-color:hsla(0,0%,100%,.1)}.profile-page.theme-dark .credits-card .credits-actions .ant-btn[data-v-6dceb76a]{background:hsla(0,0%,100%,.15);color:#fff;border:1px solid hsla(0,0%,100%,.2)}.profile-page.theme-dark .credits-card .credits-actions .ant-btn[data-v-6dceb76a]:hover{background:hsla(0,0%,100%,.25)}.profile-page.theme-dark[data-v-6dceb76a] .ant-table-wrapper .ant-table{background:#1c1c1c;color:#c9d1d9}.profile-page.theme-dark[data-v-6dceb76a] .ant-table-wrapper .ant-table-thead>tr>th{background:#2a2a2a;color:#c9d1d9;border-bottom-color:#2a2a2a}.profile-page.theme-dark[data-v-6dceb76a] .ant-table-wrapper .ant-table-tbody>tr>td{background:#1c1c1c;color:#c9d1d9;border-bottom-color:#2a2a2a}.profile-page.theme-dark[data-v-6dceb76a] .ant-table-wrapper .ant-table-tbody>tr:hover>td{background:#2a2a2a}.profile-page.theme-dark[data-v-6dceb76a] .ant-table-wrapper .ant-table-placeholder{background:#1c1c1c;color:#8b949e}.profile-page.theme-dark[data-v-6dceb76a] .ant-table-wrapper .ant-table-tbody>tr>td,.profile-page.theme-dark[data-v-6dceb76a] .ant-table-wrapper .ant-table-tbody>tr>td :not(.ant-tag):not(.ant-btn),.profile-page.theme-dark[data-v-6dceb76a] .ant-table-wrapper .ant-table-tbody>tr>td div,.profile-page.theme-dark[data-v-6dceb76a] .ant-table-wrapper .ant-table-tbody>tr>td span{color:#c9d1d9}.profile-page.theme-dark[data-v-6dceb76a] .ant-table-wrapper .amount-positive{color:#52c41a}.profile-page.theme-dark[data-v-6dceb76a] .ant-table-wrapper .amount-negative{color:#f5222d}.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-form-item-label>label,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-form-item-label>label,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-form-item-label>label{color:#c9d1d9}.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-form-item-explain,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-form-item-extra,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-form-item-explain,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-form-item-extra,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-form-item-explain,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-form-item-extra{color:#8b949e}.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-input,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-input-number,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-input-password,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-select-selector,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-input,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-input-number,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-input-password,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-select-selector,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-input,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-input-number,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-input-password,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-select-selector{background:#141414;border-color:#2a2a2a;color:#c9d1d9}.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-input-number::-webkit-input-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-input-password::-webkit-input-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-input::-webkit-input-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-select-selector::-webkit-input-placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-input-number::-webkit-input-placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-input-password::-webkit-input-placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-input::-webkit-input-placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-select-selector::-webkit-input-placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-input-number::-webkit-input-placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-input-password::-webkit-input-placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-input::-webkit-input-placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-select-selector::-webkit-input-placeholder{color:#6e7681}.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-input-number::-moz-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-input-password::-moz-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-input::-moz-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-select-selector::-moz-placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-input-number::-moz-placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-input-password::-moz-placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-input::-moz-placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-select-selector::-moz-placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-input-number::-moz-placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-input-password::-moz-placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-input::-moz-placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-select-selector::-moz-placeholder{color:#6e7681}.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-input-number:-ms-input-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-input-password:-ms-input-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-input:-ms-input-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-select-selector:-ms-input-placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-input-number:-ms-input-placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-input-password:-ms-input-placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-input:-ms-input-placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-select-selector:-ms-input-placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-input-number:-ms-input-placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-input-password:-ms-input-placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-input:-ms-input-placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-select-selector:-ms-input-placeholder{color:#6e7681}.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-input-number::-ms-input-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-input-password::-ms-input-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-input::-ms-input-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-select-selector::-ms-input-placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-input-number::-ms-input-placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-input-password::-ms-input-placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-input::-ms-input-placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-select-selector::-ms-input-placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-input-number::-ms-input-placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-input-password::-ms-input-placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-input::-ms-input-placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-select-selector::-ms-input-placeholder{color:#6e7681}.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-input-number::placeholder,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-input-password::placeholder,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-input::placeholder,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-select-selector::placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-input-number::placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-input-password::placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-input::placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-select-selector::placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-input-number::placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-input-password::placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-input::placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-select-selector::placeholder{color:#6e7681}.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-checkbox-wrapper,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-checkbox-wrapper span,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-radio-wrapper,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-radio-wrapper span,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-select-selection-item,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-select-selection-placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-checkbox-wrapper,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-checkbox-wrapper span,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-radio-wrapper,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-radio-wrapper span,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-select-selection-item,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-select-selection-placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-checkbox-wrapper,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-checkbox-wrapper span,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-radio-wrapper,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-radio-wrapper span,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-select-selection-item,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-select-selection-placeholder{color:#c9d1d9}.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-checkbox-checked .ant-checkbox-inner,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-radio-checked .ant-radio-inner,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-checkbox-checked .ant-checkbox-inner,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-radio-checked .ant-radio-inner,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-checkbox-checked .ant-checkbox-inner,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-radio-checked .ant-radio-inner{background-color:#1890ff;border-color:#1890ff}.profile-page.theme-dark .notification-settings-form .email-hint[data-v-6dceb76a],.profile-page.theme-dark .notification-settings-form .field-hint[data-v-6dceb76a],.profile-page.theme-dark .password-form .email-hint[data-v-6dceb76a],.profile-page.theme-dark .password-form .field-hint[data-v-6dceb76a],.profile-page.theme-dark .profile-form .email-hint[data-v-6dceb76a],.profile-page.theme-dark .profile-form .field-hint[data-v-6dceb76a]{color:#8b949e}.profile-page.theme-dark .notification-settings-form .email-warning[data-v-6dceb76a],.profile-page.theme-dark .password-form .email-warning[data-v-6dceb76a],.profile-page.theme-dark .profile-form .email-warning[data-v-6dceb76a]{color:#f5222d}.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-alert{background:#1c1c1c;border-color:#2a2a2a;color:#c9d1d9}.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-alert .ant-alert-message{color:#c9d1d9}.profile-page.theme-dark .exchange-config-section .credential-hint[data-v-6dceb76a],.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-alert .ant-alert-description{color:#8b949e}.profile-page.theme-dark .test-result-msg.success[data-v-6dceb76a]{color:#52c41a}.profile-page.theme-dark .test-result-msg.error[data-v-6dceb76a]{color:#f5222d}.profile-page.theme-dark .referral-user-cell .user-info .nickname[data-v-6dceb76a]{color:#c9d1d9}.profile-page.theme-dark .referral-user-cell .user-info .username[data-v-6dceb76a]{color:#8b949e}.profile-page.theme-dark[data-v-6dceb76a] .ant-tag{color:#c9d1d9}.profile-page.theme-dark[data-v-6dceb76a] .ant-tag.ant-tag-has-color{color:#fff!important;border-color:transparent!important}.profile-page.theme-dark[data-v-6dceb76a] .ant-input-prefix .anticon,.profile-page.theme-dark[data-v-6dceb76a] .ant-input-suffix .anticon,.profile-page.theme-dark[data-v-6dceb76a] .credits-hint .anticon,.profile-page.theme-dark[data-v-6dceb76a] .email-hint .anticon,.profile-page.theme-dark[data-v-6dceb76a] .field-hint .anticon,.profile-page.theme-dark[data-v-6dceb76a] .notification-settings-form .anticon{color:#c9d1d9!important}.profile-page.theme-dark[data-v-6dceb76a] .ant-pagination .ant-pagination-item{background:#1c1c1c;border-color:#2a2a2a}.profile-page.theme-dark[data-v-6dceb76a] .ant-pagination .ant-pagination-item a{color:#c9d1d9}.profile-page.theme-dark[data-v-6dceb76a] .ant-pagination .ant-pagination-item:hover{border-color:#1890ff}.profile-page.theme-dark[data-v-6dceb76a] .ant-pagination .ant-pagination-item-active{background:#1890ff;border-color:#1890ff}.profile-page.theme-dark[data-v-6dceb76a] .ant-pagination .ant-pagination-item-active a{color:#fff}.profile-page.theme-dark[data-v-6dceb76a] .ant-pagination .ant-pagination-next .ant-pagination-item-link,.profile-page.theme-dark[data-v-6dceb76a] .ant-pagination .ant-pagination-prev .ant-pagination-item-link{background:#1c1c1c;border-color:#2a2a2a;color:#c9d1d9}.profile-page.theme-dark[data-v-6dceb76a] .ant-pagination .ant-pagination-options .ant-select-selector{background:#141414;border-color:#2a2a2a;color:#c9d1d9}.profile-page.theme-dark[data-v-6dceb76a] .ant-btn.ant-btn-default{background:#1c1c1c;border-color:#2a2a2a;color:#c9d1d9}.profile-page.theme-dark[data-v-6dceb76a] .ant-btn.ant-btn-default:hover{border-color:#1890ff;color:#1890ff}@media screen and (max-width:768px){.profile-page[data-v-6dceb76a]{padding:12px}.profile-page .page-header[data-v-6dceb76a]{margin-bottom:16px}.profile-page .page-header .page-title[data-v-6dceb76a]{font-size:20px}.profile-page .page-header .page-title .anticon[data-v-6dceb76a]{font-size:22px}.profile-page .page-header .page-desc[data-v-6dceb76a]{font-size:13px}.profile-page .profile-cards-row[data-v-6dceb76a]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.profile-page .profile-cards-row .profile-card-col[data-v-6dceb76a]{margin-bottom:12px}.profile-page .profile-cards-row .right-cards-col .right-cards-row[data-v-6dceb76a]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.profile-page .profile-cards-row .right-cards-col .right-cards-row .ant-col[data-v-6dceb76a]{margin-bottom:12px}.profile-page .profile-card[data-v-6dceb76a]{border-radius:10px}.profile-page .profile-card .avatar-section[data-v-6dceb76a]{padding:16px 0}.profile-page .profile-card .avatar-section[data-v-6dceb76a] .ant-avatar{width:80px!important;height:80px!important;line-height:80px!important}.profile-page .profile-card .avatar-section .username[data-v-6dceb76a]{font-size:18px;margin:12px 0 6px}.profile-page .profile-card .profile-info .info-item[data-v-6dceb76a]{padding:10px 0;-ms-flex-wrap:wrap;flex-wrap:wrap}.profile-page .profile-card .profile-info .info-item .anticon[data-v-6dceb76a]{font-size:14px;margin-right:8px}.profile-page .profile-card .profile-info .info-item .label[data-v-6dceb76a]{font-size:13px}.profile-page .profile-card .profile-info .info-item .value[data-v-6dceb76a]{font-size:13px;word-break:break-all}.profile-page .credits-card[data-v-6dceb76a]{border-radius:10px}.profile-page .credits-card .credits-header .credits-title[data-v-6dceb76a]{font-size:15px}.profile-page .credits-card .credits-header .credits-title .anticon[data-v-6dceb76a]{font-size:16px}.profile-page .credits-card .credits-body[data-v-6dceb76a]{padding:16px 0}.profile-page .credits-card .credits-body .credits-amount .amount-value[data-v-6dceb76a]{font-size:32px}.profile-page .credits-card .credits-body .credits-amount .amount-label[data-v-6dceb76a]{font-size:14px}.profile-page .credits-card .credits-body .vip-status[data-v-6dceb76a]{font-size:12px;margin-top:10px}.profile-page .credits-card .credits-actions .ant-btn[data-v-6dceb76a]{height:34px;padding:0 20px;font-size:14px}.profile-page .credits-card .credits-hint[data-v-6dceb76a]{font-size:11px;margin-top:10px}.profile-page .referral-card[data-v-6dceb76a]{border-radius:10px}.profile-page .referral-card .referral-header .referral-title[data-v-6dceb76a]{font-size:15px}.profile-page .referral-card .referral-header .referral-title .anticon[data-v-6dceb76a]{font-size:16px}.profile-page .referral-card .referral-body[data-v-6dceb76a]{padding:10px 0}.profile-page .referral-card .referral-body .referral-stats .stat-item .stat-value[data-v-6dceb76a]{font-size:24px}.profile-page .referral-card .referral-body .referral-link-section .link-label[data-v-6dceb76a],.profile-page .referral-card .referral-body .referral-stats .stat-item .stat-label[data-v-6dceb76a]{font-size:11px}.profile-page .referral-card .referral-body .referral-link-section .link-box[data-v-6dceb76a] .ant-input{font-size:12px}.profile-page .referral-card .referral-body .referral-hint[data-v-6dceb76a]{font-size:11px;padding-top:8px}.profile-page .edit-card[data-v-6dceb76a]{border-radius:10px;margin-top:12px!important}.profile-page .edit-card[data-v-6dceb76a] .ant-card-body{padding:12px}.profile-page .edit-card[data-v-6dceb76a] .ant-tabs-nav .ant-tabs-tab{padding:10px 12px;font-size:13px}.profile-page .edit-card[data-v-6dceb76a] .ant-tabs-nav-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}.profile-page .edit-card[data-v-6dceb76a] .ant-tabs-nav-scroll::-webkit-scrollbar{display:none}.profile-page .edit-card .password-form[data-v-6dceb76a],.profile-page .edit-card .profile-form[data-v-6dceb76a]{max-width:100%}.profile-page .edit-card .password-form[data-v-6dceb76a] .ant-form-item-label,.profile-page .edit-card .profile-form[data-v-6dceb76a] .ant-form-item-label{padding-bottom:4px}.profile-page .edit-card .password-form[data-v-6dceb76a] .ant-form-item-label label,.profile-page .edit-card .profile-form[data-v-6dceb76a] .ant-form-item-label label{font-size:13px}.profile-page .edit-card .password-form[data-v-6dceb76a] .ant-input,.profile-page .edit-card .password-form[data-v-6dceb76a] .ant-input-password,.profile-page .edit-card .profile-form[data-v-6dceb76a] .ant-input,.profile-page .edit-card .profile-form[data-v-6dceb76a] .ant-input-password{font-size:14px}.profile-page .edit-card .password-form .email-hint[data-v-6dceb76a],.profile-page .edit-card .profile-form .email-hint[data-v-6dceb76a]{font-size:11px}.profile-page .edit-card .password-form[data-v-6dceb76a] .ant-alert{font-size:12px;padding:8px 12px}.profile-page .edit-card .notification-settings-form[data-v-6dceb76a] .ant-alert{font-size:12px;padding:8px 12px;margin-bottom:16px!important}.profile-page .edit-card .notification-settings-form[data-v-6dceb76a] .ant-form{max-width:100%}.profile-page .edit-card .notification-settings-form[data-v-6dceb76a] .ant-checkbox-group .ant-row{margin-left:0!important;margin-right:0!important}.profile-page .edit-card .notification-settings-form[data-v-6dceb76a] .ant-checkbox-group .ant-row .ant-col{padding-left:0!important;padding-right:8px!important}.profile-page .edit-card .notification-settings-form[data-v-6dceb76a] .ant-checkbox-group .ant-checkbox-wrapper{font-size:13px;margin-bottom:6px}.profile-page .edit-card .notification-settings-form .field-hint[data-v-6dceb76a]{font-size:11px;-ms-flex-wrap:wrap;flex-wrap:wrap}.profile-page .edit-card .notification-settings-form[data-v-6dceb76a] .ant-form-item{margin-bottom:16px}.profile-page .edit-card .notification-settings-form[data-v-6dceb76a] .ant-form-item:last-child .ant-btn{width:100%;margin-bottom:8px}.profile-page .edit-card .notification-settings-form[data-v-6dceb76a] .ant-form-item:last-child .ant-btn+.ant-btn{margin-left:0!important}.profile-page .edit-card[data-v-6dceb76a] .ant-table-wrapper{overflow-x:auto}.profile-page .edit-card[data-v-6dceb76a] .ant-table-wrapper .ant-table{min-width:500px}.profile-page .referral-user-cell[data-v-6dceb76a]{gap:8px}.profile-page .referral-user-cell[data-v-6dceb76a] .ant-avatar{width:28px!important;height:28px!important;line-height:28px!important}.profile-page .referral-user-cell .user-info .nickname[data-v-6dceb76a]{font-size:13px}.profile-page .referral-user-cell .user-info .username[data-v-6dceb76a]{font-size:11px}}@media screen and (max-width:480px){.profile-page[data-v-6dceb76a]{padding:8px}.profile-page .page-header[data-v-6dceb76a]{margin-bottom:12px}.profile-page .page-header .page-title[data-v-6dceb76a]{font-size:18px;gap:8px}.profile-page .page-header .page-title .anticon[data-v-6dceb76a]{font-size:20px}.profile-page .credits-card .credits-body .credits-amount .amount-value[data-v-6dceb76a]{font-size:28px}.profile-page .credits-card .credits-body .credits-amount .amount-label[data-v-6dceb76a]{font-size:13px}.profile-page .credits-card .credits-actions .ant-btn[data-v-6dceb76a]{width:100%}.profile-page .referral-card .referral-body .referral-stats .stat-item .stat-value[data-v-6dceb76a]{font-size:20px}.profile-page .edit-card[data-v-6dceb76a] .ant-tabs-nav .ant-tabs-tab{padding:8px 10px;font-size:12px}.profile-page .edit-card .notification-settings-form[data-v-6dceb76a] .ant-checkbox-group .ant-row .ant-col{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}} \ No newline at end of file diff --git a/frontend/dist/css/275.1ff28001.css b/frontend/dist/css/275.1ff28001.css new file mode 100644 index 0000000..a868fa5 --- /dev/null +++ b/frontend/dist/css/275.1ff28001.css @@ -0,0 +1 @@ +.user-manage-page[data-v-0b8bb4d8]{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-0b8bb4d8]{margin-bottom:24px}.user-manage-page .page-header .page-title[data-v-0b8bb4d8]{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-0b8bb4d8]{font-size:28px;color:#1890ff}.user-manage-page .page-header .page-desc[data-v-0b8bb4d8]{color:#64748b;font-size:14px;margin:0}.user-manage-page .manage-tabs[data-v-0b8bb4d8] .ant-tabs-bar{margin-bottom:20px}.user-manage-page .summary-cards[data-v-0b8bb4d8]{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:20px}.user-manage-page .summary-cards .summary-card[data-v-0b8bb4d8]{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-0b8bb4d8]: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-0b8bb4d8]{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-0b8bb4d8]{font-size:22px;color:#fff}.user-manage-page .summary-cards .summary-card .summary-info[data-v-0b8bb4d8]{-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-0b8bb4d8]{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-0b8bb4d8]{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-0b8bb4d8]{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-0b8bb4d8]{font-size:13px;color:#94a3b8;margin-top:2px}.user-manage-page .toolbar[data-v-0b8bb4d8]{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;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:12px}.user-manage-page .toolbar .toolbar-left[data-v-0b8bb4d8],.user-manage-page .toolbar .toolbar-right[data-v-0b8bb4d8]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.user-manage-page .toolbar .toolbar-right[data-v-0b8bb4d8]{min-width:0}.user-manage-page .toolbar-search[data-v-0b8bb4d8]{width:280px;max-width:100%}.user-manage-page .toolbar-select[data-v-0b8bb4d8]{width:140px;max-width:100%}.user-manage-page .section-card-title[data-v-0b8bb4d8]{margin-bottom:12px;color:#1e3a5f;font-weight:600;font-size:15px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;-ms-flex-wrap:wrap;flex-wrap:wrap;line-height:1.4}.user-manage-page .section-card-title-icon[data-v-0b8bb4d8]{-ms-flex-negative:0;flex-shrink:0}.user-manage-page .user-table-card[data-v-0b8bb4d8]{border-radius:12px;-webkit-box-shadow:0 4px 20px rgba(0,0,0,.08);box-shadow:0 4px 20px rgba(0,0,0,.08);min-width:0;overflow:hidden}.user-manage-page .user-table-card[data-v-0b8bb4d8] .ant-card-body{padding:20px 24px}.user-manage-page .user-table-card .text-muted[data-v-0b8bb4d8]{color:#94a3b8}.user-manage-page .text-profit[data-v-0b8bb4d8]{color:#52c41a;font-weight:600}.user-manage-page .text-loss[data-v-0b8bb4d8]{color:#ff4d4f;font-weight:600}.user-manage-page .pnl-value[data-v-0b8bb4d8]{font-size:14px}.user-manage-page .roi-text[data-v-0b8bb4d8]{font-size:12px;margin-left:4px}.user-manage-page .pnl-detail[data-v-0b8bb4d8]{font-size:11px;margin-top:2px}.user-manage-page .symbol-text[data-v-0b8bb4d8]{font-weight:500}.user-manage-page .symbol-count[data-v-0b8bb4d8]{font-size:11px;margin-top:2px}.user-manage-page .status-cell[data-v-0b8bb4d8]{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-0b8bb4d8]{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-0b8bb4d8]{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-0b8bb4d8 2s infinite;animation:pulse-green-0b8bb4d8 2s infinite}.user-manage-page .status-cell .status-dot.dot-stopped[data-v-0b8bb4d8]{background:#d9d9d9}.user-manage-page .status-cell .status-running[data-v-0b8bb4d8]{color:#52c41a;font-weight:500;font-size:13px}.user-manage-page .status-cell .status-stopped[data-v-0b8bb4d8]{color:#999;font-size:13px}@-webkit-keyframes pulse-green-0b8bb4d8{0%,to{opacity:1}50%{opacity:.5}}@keyframes pulse-green-0b8bb4d8{0%,to{opacity:1}50%{opacity:.5}}.user-manage-page .user-cell[data-v-0b8bb4d8]{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-0b8bb4d8]{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:80px}.user-manage-page .indicator-name[data-v-0b8bb4d8]{color:#722ed1;font-size:12px}.user-manage-page .exchange-name[data-v-0b8bb4d8]{font-size:12px;text-transform:capitalize}.user-manage-page .address-text[data-v-0b8bb4d8],.user-manage-page .hash-text[data-v-0b8bb4d8]{font-family:Roboto Mono,Courier New,monospace;font-size:12px;color:#1890ff;cursor:pointer}.user-manage-page .address-text[data-v-0b8bb4d8]:hover,.user-manage-page .hash-text[data-v-0b8bb4d8]:hover{text-decoration:underline}.user-manage-page[data-v-0b8bb4d8] .ant-tag.ant-tag-grey{background-color:#f5f5f5;border-color:#d9d9d9;color:#595959}.user-manage-page.theme-dark[data-v-0b8bb4d8]{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-0b8bb4d8]{color:#e0e6ed}.user-manage-page.theme-dark .page-header .page-desc[data-v-0b8bb4d8]{color:#8b949e}.user-manage-page.theme-dark .manage-tabs[data-v-0b8bb4d8] .ant-tabs-bar{border-bottom-color:#2a2a2a}.user-manage-page.theme-dark .manage-tabs[data-v-0b8bb4d8] .ant-tabs-tab{color:#8b949e}.user-manage-page.theme-dark .manage-tabs[data-v-0b8bb4d8] .ant-tabs-tab:hover{color:#c9d1d9}.user-manage-page.theme-dark .manage-tabs[data-v-0b8bb4d8] .ant-tabs-tab-active{color:#1890ff}.user-manage-page.theme-dark .summary-cards .summary-card[data-v-0b8bb4d8]{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-0b8bb4d8]{color:#e0e6ed}.user-manage-page.theme-dark .summary-cards .summary-card .summary-info .summary-value .roi-badge[data-v-0b8bb4d8]{background:hsla(0,0%,100%,.08)}.user-manage-page.theme-dark .summary-cards .summary-card .summary-info .summary-sub[data-v-0b8bb4d8]{color:#8b949e}.user-manage-page.theme-dark .summary-cards .summary-card .summary-info .summary-label[data-v-0b8bb4d8]{color:#6e7681}.user-manage-page.theme-dark .user-table-card[data-v-0b8bb4d8]{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-0b8bb4d8] .ant-card-body{background:#1c1c1c}.user-manage-page.theme-dark .user-table-card[data-v-0b8bb4d8] .ant-table{background:#1c1c1c;color:#c9d1d9}.user-manage-page.theme-dark .user-table-card[data-v-0b8bb4d8] .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-0b8bb4d8] .ant-table .ant-table-tbody>tr>td{border-bottom-color:#2a2a2a}.user-manage-page.theme-dark .user-table-card[data-v-0b8bb4d8] .ant-table .ant-table-tbody>tr:hover>td{background:#252525}.user-manage-page.theme-dark .user-table-card .text-muted[data-v-0b8bb4d8]{color:#6e7681}.user-manage-page.theme-dark .user-table-card h4[data-v-0b8bb4d8]{color:#e0e6ed!important}.user-manage-page.theme-dark .section-card-title[data-v-0b8bb4d8]{color:#e0e6ed}.user-manage-page .credits-value[data-v-0b8bb4d8]{font-weight:600;color:#722ed1}.user-manage-page .current-credits-info[data-v-0b8bb4d8],.user-manage-page .current-vip-info[data-v-0b8bb4d8]{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-0b8bb4d8],.user-manage-page .current-vip-info .label[data-v-0b8bb4d8]{color:#666}.user-manage-page .current-credits-info .value[data-v-0b8bb4d8],.user-manage-page .current-vip-info .value[data-v-0b8bb4d8]{font-weight:600;color:#1890ff;font-size:18px}.user-manage-page .current-credits-info .value.active[data-v-0b8bb4d8],.user-manage-page .current-vip-info .value.active[data-v-0b8bb4d8]{color:#52c41a}.user-manage-page .current-credits-info .value.expired[data-v-0b8bb4d8],.user-manage-page .current-vip-info .value.expired[data-v-0b8bb4d8]{color:#999}@media (max-width:1200px){.user-manage-page .summary-cards[data-v-0b8bb4d8]{grid-template-columns:repeat(2,1fr)}}@media (max-width:768px){.user-manage-page[data-v-0b8bb4d8]{padding:16px 12px;min-height:calc(100vh - 100px)}.user-manage-page .page-header[data-v-0b8bb4d8]{margin-bottom:16px}.user-manage-page .page-header .page-title[data-v-0b8bb4d8]{font-size:20px}.user-manage-page .page-header .page-title .anticon[data-v-0b8bb4d8]{font-size:22px}.user-manage-page .page-header .page-desc[data-v-0b8bb4d8]{font-size:13px}.user-manage-page .summary-cards[data-v-0b8bb4d8]{grid-template-columns:1fr;gap:12px;margin-bottom:16px}.user-manage-page .summary-cards .summary-card[data-v-0b8bb4d8]{padding:14px 16px;gap:12px}.user-manage-page .summary-cards .summary-card .summary-icon[data-v-0b8bb4d8]{width:44px;height:44px}.user-manage-page .summary-cards .summary-card .summary-icon .anticon[data-v-0b8bb4d8]{font-size:20px}.user-manage-page .summary-cards .summary-card .summary-info .summary-value[data-v-0b8bb4d8]{font-size:18px}.user-manage-page .toolbar[data-v-0b8bb4d8]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.user-manage-page .toolbar .toolbar-left[data-v-0b8bb4d8],.user-manage-page .toolbar .toolbar-right[data-v-0b8bb4d8]{width:100%}.user-manage-page .toolbar-search[data-v-0b8bb4d8],.user-manage-page .toolbar-select[data-v-0b8bb4d8]{width:100%!important}.user-manage-page .manage-tabs[data-v-0b8bb4d8] .ant-tabs-bar{margin-bottom:12px}.user-manage-page .manage-tabs[data-v-0b8bb4d8] .ant-tabs-nav-container{overflow-x:auto;overflow-y:hidden}.user-manage-page .manage-tabs[data-v-0b8bb4d8] .ant-tabs-nav-wrap{margin-bottom:0}.user-manage-page .manage-tabs[data-v-0b8bb4d8] .ant-tabs-tab{padding:10px 12px;margin-right:4px;font-size:13px;white-space:nowrap}.user-manage-page .user-table-card[data-v-0b8bb4d8] .ant-card-body{padding:12px 10px}.user-manage-page[data-v-0b8bb4d8] .ant-table{font-size:12px}.user-manage-page[data-v-0b8bb4d8] .ant-table-tbody>tr>td,.user-manage-page[data-v-0b8bb4d8] .ant-table-thead>tr>th{padding:8px 6px}.user-manage-page[data-v-0b8bb4d8] .ant-pagination{margin:12px 0 0}}@media (max-width:480px){.user-manage-page[data-v-0b8bb4d8]{padding:12px 8px}.user-manage-page .page-header .page-title[data-v-0b8bb4d8]{font-size:18px}.user-manage-page .toolbar .toolbar-left[data-v-0b8bb4d8]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.user-manage-page .toolbar .toolbar-left .ant-btn[data-v-0b8bb4d8]{width:100%}.user-manage-page .summary-cards .summary-card .summary-sub[data-v-0b8bb4d8]{white-space:normal;line-height:1.35}.user-manage-page[data-v-0b8bb4d8] .ant-pagination-options{display:none}}@media (max-width:576px){.user-manage-modal .ant-modal{max-width:calc(100vw - 16px)!important;margin:8px auto;padding-bottom:0;top:8px}.user-manage-modal .ant-modal-content{border-radius:10px}.user-manage-modal .ant-modal-body{max-height:calc(100vh - 180px);overflow-y:auto;padding:16px}.user-manage-modal .ant-modal-header{padding:12px 16px}.user-manage-modal .ant-modal-footer{padding:10px 16px}} \ No newline at end of file diff --git a/frontend/dist/css/313.c13a970c.css b/frontend/dist/css/313.c13a970c.css new file mode 100644 index 0000000..d18d7c6 --- /dev/null +++ b/frontend/dist/css/313.c13a970c.css @@ -0,0 +1 @@ +.quick-trade-drawer[data-v-0d547552] .ant-drawer-body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:100%;overflow-y:auto}.qt-header[data-v-0d547552]{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:16px 20px 12px;border-bottom:1px solid #f0f0f0}.qt-header .qt-header-left[data-v-0d547552],.qt-header[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.qt-header .qt-header-left[data-v-0d547552]{gap:8px}.qt-header .qt-header-left .qt-icon[data-v-0d547552]{font-size:20px;color:#1890ff}.qt-header .qt-header-left .qt-header-title[data-v-0d547552]{font-size:16px;font-weight:600}.qt-header .qt-close[data-v-0d547552]{font-size:16px;cursor:pointer;color:#999}.qt-header .qt-close[data-v-0d547552]:hover{color:#333}.qt-symbol-bar[data-v-0d547552]{padding:12px 20px;background:linear-gradient(135deg,#f6f8fc,#eef2f8);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:8px}.qt-symbol-bar .qt-symbol-selector[data-v-0d547552],.qt-symbol-bar .qt-symbol-selector[data-v-0d547552] .ant-select{width:100%}.qt-symbol-bar .qt-symbol-selector[data-v-0d547552] .ant-select-selection{border-radius:6px;border:1px solid #d9d9d9}.qt-symbol-bar .qt-price-display[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.qt-symbol-bar .qt-price-display .qt-current-price[data-v-0d547552]{font-size:16px;font-weight:600;color:#333}.qt-symbol-option[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.qt-symbol-option .qt-symbol-option-name[data-v-0d547552]{font-weight:600;font-size:14px}.qt-symbol-option .qt-symbol-option-desc[data-v-0d547552]{color:#999;font-size:12px}.qt-section[data-v-0d547552]{padding:8px 20px}.qt-section .qt-label[data-v-0d547552]{font-size:12px;color:#999;margin-bottom:4px;font-weight:500}.qt-section .qt-crypto-hint[data-v-0d547552]{font-size:10px;color:#faad14;background:rgba(250,173,20,.1);padding:1px 6px;border-radius:4px;margin-left:4px}.qt-balance[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;margin-top:6px;font-size:12px}.qt-balance .qt-balance-label[data-v-0d547552]{color:#999}.qt-balance .qt-balance-value[data-v-0d547552]{color:#52c41a;font-weight:600}.qt-direction-toggle[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:8px}.qt-direction-toggle .qt-dir-btn[data-v-0d547552]{-webkit-box-flex:1;-ms-flex:1;flex:1;padding:10px;text-align:center;border-radius:8px;font-weight:600;font-size:14px;cursor:pointer;-webkit-transition:all .2s;transition:all .2s;border:2px solid transparent;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;gap:6px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.qt-direction-toggle .qt-dir-long[data-v-0d547552]{color:#52c41a;background:rgba(82,196,26,.06);border-color:rgba(82,196,26,.2)}.qt-direction-toggle .qt-dir-long.active[data-v-0d547552]{background:#52c41a;color:#fff;border-color:#52c41a;-webkit-box-shadow:0 4px 12px rgba(82,196,26,.3);box-shadow:0 4px 12px rgba(82,196,26,.3)}.qt-direction-toggle .qt-dir-long[data-v-0d547552]:hover:not(.active){border-color:#52c41a}.qt-direction-toggle .qt-dir-short[data-v-0d547552]{color:#f5222d;background:rgba(245,34,45,.06);border-color:rgba(245,34,45,.2)}.qt-direction-toggle .qt-dir-short.active[data-v-0d547552]{background:#f5222d;color:#fff;border-color:#f5222d;-webkit-box-shadow:0 4px 12px rgba(245,34,45,.3);box-shadow:0 4px 12px rgba(245,34,45,.3)}.qt-direction-toggle .qt-dir-short[data-v-0d547552]:hover:not(.active){border-color:#f5222d}.qt-quick-amounts[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:6px;margin-top:6px}.qt-quick-amounts button[data-v-0d547552]{-webkit-box-flex:1;-ms-flex:1;flex:1;font-size:12px}.qt-leverage-row[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.qt-tpsl-row[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px}.qt-tpsl-row .qt-tpsl-item[data-v-0d547552]{-webkit-box-flex:1;-ms-flex:1;flex:1}.qt-submit-section[data-v-0d547552]{padding:12px 20px}.qt-submit-section .qt-submit-btn[data-v-0d547552]{height:48px;font-size:16px;font-weight:700;border-radius:8px;letter-spacing:.5px}.qt-submit-section .qt-btn-long[data-v-0d547552]{background:#52c41a!important;border-color:#52c41a!important}.qt-submit-section .qt-btn-long[data-v-0d547552]:hover{background:#73d13d!important}.qt-submit-section .qt-btn-long[data-v-0d547552]:active{background:#389e0d!important}.qt-submit-section .qt-btn-short[data-v-0d547552]{background:#f5222d!important;border-color:#f5222d!important}.qt-submit-section .qt-btn-short[data-v-0d547552]:hover{background:#ff4d4f!important}.qt-submit-section .qt-btn-short[data-v-0d547552]:active{background:#cf1322!important}.qt-position-section[data-v-0d547552]{padding:8px 20px 12px}.qt-position-section .qt-section-header[data-v-0d547552]{font-size:13px;font-weight:600;color:#666;margin-bottom:8px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}.qt-history-section[data-v-0d547552]{padding:8px 20px 12px}.qt-history-section[data-v-0d547552] .ant-collapse{background:transparent;border:none}.qt-history-section[data-v-0d547552] .ant-collapse-item{border:none}.qt-history-section[data-v-0d547552] .ant-collapse-header{padding:0!important;cursor:pointer}.qt-history-section[data-v-0d547552] .ant-collapse-header:hover{opacity:.8}.qt-history-section[data-v-0d547552] .ant-collapse-content{border:none;background:transparent}.qt-history-section[data-v-0d547552] .ant-collapse-content-box{padding:8px 0 0 0!important}.qt-history-section .qt-section-header[data-v-0d547552]{font-size:13px;font-weight:600;color:#666;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.qt-history-section .qt-history-count[data-v-0d547552]{font-size:12px;color:#999;font-weight:400}.qt-position-card[data-v-0d547552]{background:#fafafa;border-radius:8px;padding:10px 12px;border-left:3px solid #d9d9d9}.qt-position-card.long[data-v-0d547552]{border-left-color:#52c41a}.qt-position-card.short[data-v-0d547552]{border-left-color:#f5222d}.qt-position-card .qt-pos-row[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;font-size:13px;padding:2px 0}.qt-position-card .qt-pos-row span[data-v-0d547552]:first-child{color:#999}.qt-position-empty[data-v-0d547552]{background:#fafafa;border-radius:8px;padding:20px 12px;text-align:center;border:1px dashed #d9d9d9}.qt-green[data-v-0d547552]{color:#52c41a!important}.qt-red[data-v-0d547552]{color:#f5222d!important}.qt-trade-list .qt-trade-item[data-v-0d547552]{padding:6px 0;border-bottom:1px solid #f5f5f5}.qt-trade-list .qt-trade-item[data-v-0d547552]:last-child{border-bottom:none}.qt-trade-list .qt-trade-item .qt-trade-main[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}.qt-trade-list .qt-trade-item .qt-trade-main .qt-trade-symbol[data-v-0d547552]{font-weight:600;font-size:13px}.qt-trade-list .qt-trade-item .qt-trade-main .qt-trade-amount[data-v-0d547552]{margin-left:auto;font-size:13px}.qt-trade-list .qt-trade-item .qt-trade-meta[data-v-0d547552]{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;margin-top:2px}.qt-trade-list .qt-trade-item .qt-trade-meta .qt-trade-time[data-v-0d547552]{font-size:11px;color:#bbb}.theme-dark .qt-header[data-v-0d547552]{border-bottom-color:#303030}.theme-dark .qt-header .qt-header-title[data-v-0d547552]{color:#e0e0e0}.theme-dark .qt-header .qt-close[data-v-0d547552]{color:#666}.theme-dark .qt-header .qt-close[data-v-0d547552]:hover{color:#bbb}.theme-dark .qt-symbol-bar[data-v-0d547552]{background:linear-gradient(135deg,#1a1f2e,#141824)}.theme-dark .qt-symbol-bar .qt-current-price[data-v-0d547552]{color:#e0e0e0}.theme-dark .qt-symbol-bar[data-v-0d547552] .ant-select-selection{background:#1a1f2e;border-color:#303030;color:#e0e0e0}.theme-dark .qt-symbol-bar[data-v-0d547552] .ant-select-selection__placeholder{color:#666}.theme-dark .qt-symbol-option .qt-symbol-option-name[data-v-0d547552]{color:#e0e0e0}.theme-dark .qt-symbol-option .qt-symbol-option-desc[data-v-0d547552]{color:#999}.theme-dark .qt-section .qt-label[data-v-0d547552]{color:#777}.theme-dark .qt-position-card[data-v-0d547552]{background:#1a1f2e}.theme-dark .qt-position-card .qt-pos-row span[data-v-0d547552]:first-child{color:#777}.theme-dark .qt-history-section .qt-section-header[data-v-0d547552],.theme-dark .qt-position-card .qt-pos-row span[data-v-0d547552]:last-child{color:#ccc}.theme-dark .qt-history-section .qt-history-count[data-v-0d547552]{color:#888}.theme-dark .qt-history-section[data-v-0d547552] .ant-collapse{background:transparent!important;color:#ccc}.theme-dark .qt-history-section[data-v-0d547552] .ant-collapse .ant-collapse-header{color:#ccc!important}.theme-dark .qt-history-section[data-v-0d547552] .ant-collapse .ant-collapse-header:hover{opacity:.8}.theme-dark .qt-history-section[data-v-0d547552] .ant-collapse .ant-collapse-content{background:transparent;color:#ccc}.theme-dark .qt-trade-item[data-v-0d547552]{border-bottom-color:#2a2a2a!important}.theme-dark .qt-trade-item .qt-trade-symbol[data-v-0d547552]{color:#e0e0e0}.theme-dark .qt-trade-item .qt-trade-amount[data-v-0d547552]{color:#ccc}.theme-dark[data-v-0d547552] .ant-collapse{background:transparent!important;color:#ccc}.theme-dark[data-v-0d547552] .ant-collapse .ant-collapse-header{color:#ccc!important}.theme-dark[data-v-0d547552] .ant-collapse .ant-collapse-content{background:transparent;color:#ccc}.theme-dark[data-v-0d547552] .ant-drawer-content{background:#141414}.theme-dark[data-v-0d547552] .ant-input-number,.theme-dark[data-v-0d547552] .ant-select-selection{background:#1a1f2e;border-color:#303030;color:#e0e0e0}.theme-dark[data-v-0d547552] .ant-radio-group .ant-radio-button-wrapper{background:#1a1f2e;border-color:#303030;color:#ccc}.theme-dark[data-v-0d547552] .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{background:#1890ff;border-color:#1890ff;color:#fff}.theme-dark[data-v-0d547552] .ant-slider-rail{background:#303030}.theme-dark[data-v-0d547552] .ant-slider-track{background:#1890ff}.polymarket-analysis-modal .input-section .input-actions[data-v-67e891d2]{margin-top:12px}.polymarket-analysis-modal .result-section .market-info[data-v-67e891d2]{margin-bottom:24px}.polymarket-analysis-modal .result-section .market-info h3[data-v-67e891d2]{margin-bottom:12px;font-size:18px;font-weight:600}.polymarket-analysis-modal .result-section .market-info .market-meta[data-v-67e891d2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:16px;-ms-flex-wrap:wrap;flex-wrap:wrap}.polymarket-analysis-modal .result-section .market-info .market-meta .meta-item[data-v-67e891d2]{color:rgba(0,0,0,.65);font-size:14px}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison[data-v-67e891d2]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:16px;margin:24px 0}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item[data-v-67e891d2]{-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center;padding:16px;background:#f5f5f5;border-radius:4px}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-label[data-v-67e891d2]{font-size:12px;color:rgba(0,0,0,.65);margin-bottom:8px}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-value[data-v-67e891d2]{font-size:24px;font-weight:600}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-value.ai-prob[data-v-67e891d2]{color:#1890ff}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-value.divergence-positive[data-v-67e891d2]{color:#52c41a}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-value.divergence-negative[data-v-67e891d2]{color:#ff4d4f}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-value.divergence-neutral[data-v-67e891d2]{color:rgba(0,0,0,.65)}.polymarket-analysis-modal .result-section .analysis-result .recommendation-section[data-v-67e891d2]{margin:24px 0}.polymarket-analysis-modal .result-section .analysis-result .recommendation-section .rec-card[data-v-67e891d2]{text-align:center;padding:16px;background:#f5f5f5;border-radius:4px}.polymarket-analysis-modal .result-section .analysis-result .recommendation-section .rec-card .rec-label[data-v-67e891d2]{font-size:12px;color:rgba(0,0,0,.65);margin-bottom:8px}.polymarket-analysis-modal .result-section .analysis-result .recommendation-section .rec-card .rec-value[data-v-67e891d2]{font-size:24px;font-weight:600;color:#1890ff}.polymarket-analysis-modal .result-section .analysis-result .key-factors-section[data-v-67e891d2],.polymarket-analysis-modal .result-section .analysis-result .reasoning-section[data-v-67e891d2]{margin:24px 0}.polymarket-analysis-modal .result-section .analysis-result .key-factors-section h4[data-v-67e891d2],.polymarket-analysis-modal .result-section .analysis-result .reasoning-section h4[data-v-67e891d2]{margin-bottom:12px;font-size:16px;font-weight:600}.polymarket-analysis-modal .result-section .analysis-result .key-factors-section .reasoning-text[data-v-67e891d2],.polymarket-analysis-modal .result-section .analysis-result .reasoning-section .reasoning-text[data-v-67e891d2]{line-height:1.8;color:rgba(0,0,0,.85);white-space:pre-wrap}.polymarket-analysis-modal .result-section .result-actions[data-v-67e891d2]{margin-top:24px;text-align:right}.polymarket-analysis-modal .loading-section[data-v-67e891d2]{text-align:center;padding:40px 0}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-tabs-bar{border-bottom-color:#2a2a2a}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-tabs-tab{color:#a3a3a3!important}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-tabs-tab-active{color:#d4d4d4!important}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-tabs-ink-bar{background:#58a6ff!important}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-divider{color:#d4d4d4;border-top-color:#2a2a2a}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-divider-inner-text{color:#d4d4d4!important}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-input,.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-input-affix-wrapper,.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-input-number,.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-input-textarea textarea{background:#141414!important;border-color:#2a2a2a!important;color:#d4d4d4!important}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-table{background:#1c1c1c;color:#d4d4d4}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-table-thead>tr>th{background:#252525;color:#d4d4d4;border-bottom-color:#2a2a2a}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-table-tbody>tr>td{background:#1c1c1c;color:#d4d4d4;border-bottom-color:#2a2a2a}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-btn-link{color:#58a6ff!important}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-alert{background:#1c1c1c;border-color:#2a2a2a}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-alert-message{color:#d4d4d4!important}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-alert-description{color:#a3a3a3!important}.polymarket-analysis-modal.theme-dark .market-info h3[data-v-67e891d2]{color:#d4d4d4}.polymarket-analysis-modal.theme-dark .market-info .market-meta .meta-item[data-v-67e891d2]{color:#a3a3a3}.polymarket-analysis-modal.theme-dark .analysis-result .probability-comparison .prob-item[data-v-67e891d2]{background:#252525;border:1px solid #2a2a2a}.polymarket-analysis-modal.theme-dark .analysis-result .probability-comparison .prob-item .prob-label[data-v-67e891d2]{color:#a3a3a3}.polymarket-analysis-modal.theme-dark .analysis-result .probability-comparison .prob-item .prob-value[data-v-67e891d2]{color:#e5e5e5}.polymarket-analysis-modal.theme-dark .analysis-result .probability-comparison .prob-item .prob-value.divergence-neutral[data-v-67e891d2]{color:#b3b3b3}.polymarket-analysis-modal.theme-dark .analysis-result .recommendation-section .rec-card[data-v-67e891d2]{background:#252525;border:1px solid #2a2a2a}.polymarket-analysis-modal.theme-dark .analysis-result .recommendation-section .rec-card .rec-label[data-v-67e891d2]{color:#a3a3a3}.polymarket-analysis-modal.theme-dark .analysis-result .recommendation-section .rec-card .rec-value[data-v-67e891d2]{color:#e5e5e5}.polymarket-analysis-modal.theme-dark .analysis-result .key-factors-section .reasoning-text[data-v-67e891d2],.polymarket-analysis-modal.theme-dark .analysis-result .key-factors-section h4[data-v-67e891d2],.polymarket-analysis-modal.theme-dark .analysis-result .reasoning-section .reasoning-text[data-v-67e891d2],.polymarket-analysis-modal.theme-dark .analysis-result .reasoning-section h4[data-v-67e891d2]{color:#d4d4d4}.ai-asset-analysis-page[data-v-0d0a10d6]{padding:20px;min-height:calc(100vh - 120px);background:#f0f2f5;width:100%;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;overflow-x:hidden}.ai-asset-analysis-page .radar-section[data-v-0d0a10d6]{margin-bottom:20px}.ai-asset-analysis-page .radar-section .radar-header[data-v-0d0a10d6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:14px}.ai-asset-analysis-page .radar-section .radar-header .radar-header-left .radar-title[data-v-0d0a10d6]{margin:0;font-size:16px;font-weight:700;color:#1a1a1a;letter-spacing:-.2px}.ai-asset-analysis-page .radar-section .radar-header .radar-header-left .radar-subtitle[data-v-0d0a10d6]{margin:2px 0 0;font-size:12px;color:#999}.ai-asset-analysis-page .radar-section .radar-header .radar-refresh-btn[data-v-0d0a10d6]{border-radius:8px;border:1px solid #e0e0e0;background:#fff;color:#666;font-size:12px;font-weight:500}.ai-asset-analysis-page .radar-section .radar-header .radar-refresh-btn[data-v-0d0a10d6]:hover{border-color:#6366f1;color:#6366f1}.ai-asset-analysis-page .radar-section .radar-carousel[data-v-0d0a10d6]{overflow:hidden;position:relative;border-radius:12px;padding:2px 0}.ai-asset-analysis-page .radar-section .radar-carousel[data-v-0d0a10d6]:after,.ai-asset-analysis-page .radar-section .radar-carousel[data-v-0d0a10d6]:before{content:"";position:absolute;top:0;bottom:0;width:50px;z-index:2;pointer-events:none}.ai-asset-analysis-page .radar-section .radar-carousel[data-v-0d0a10d6]:before{left:0;background:-webkit-gradient(linear,left top,right top,from(#f0f2f5),to(transparent));background:linear-gradient(90deg,#f0f2f5,transparent)}.ai-asset-analysis-page .radar-section .radar-carousel[data-v-0d0a10d6]:after{right:0;background:-webkit-gradient(linear,right top,left top,from(#f0f2f5),to(transparent));background:linear-gradient(270deg,#f0f2f5,transparent)}.ai-asset-analysis-page .radar-section .radar-track[data-v-0d0a10d6]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px;-webkit-animation:radar-scroll-0d0a10d6 60s linear infinite;animation:radar-scroll-0d0a10d6 60s linear infinite;width:-webkit-max-content;width:-moz-max-content;width:max-content;padding:4px 0}.ai-asset-analysis-page .radar-section .radar-track.paused[data-v-0d0a10d6]{-webkit-animation-play-state:paused;animation-play-state:paused}@-webkit-keyframes radar-scroll-0d0a10d6{0%{-webkit-transform:translateX(0);transform:translateX(0)}to{-webkit-transform:translateX(-50%);transform:translateX(-50%)}}@keyframes radar-scroll-0d0a10d6{0%{-webkit-transform:translateX(0);transform:translateX(0)}to{-webkit-transform:translateX(-50%);transform:translateX(-50%)}}.ai-asset-analysis-page .radar-section .radar-card[data-v-0d0a10d6]{width:250px;background:#fff;border-radius:12px;padding:16px;cursor:pointer;-ms-flex-negative:0;flex-shrink:0;border:1px solid #eaeaea;-webkit-transition:all .25s cubic-bezier(.4,0,.2,1);transition:all .25s cubic-bezier(.4,0,.2,1);position:relative;overflow:hidden}.ai-asset-analysis-page .radar-section .radar-card[data-v-0d0a10d6]:before{content:"";position:absolute;inset:0;border-radius:12px;opacity:0;-webkit-transition:opacity .3s;transition:opacity .3s;background:linear-gradient(135deg,rgba(99,102,241,.04),rgba(139,92,246,.02))}.ai-asset-analysis-page .radar-section .radar-card[data-v-0d0a10d6]:hover{-webkit-transform:translateY(-2px);transform:translateY(-2px);border-color:rgba(99,102,241,.3);-webkit-box-shadow:0 6px 24px rgba(0,0,0,.08),0 0 0 1px rgba(99,102,241,.1);box-shadow:0 6px 24px rgba(0,0,0,.08),0 0 0 1px rgba(99,102,241,.1)}.ai-asset-analysis-page .radar-section .radar-card[data-v-0d0a10d6]:hover:before{opacity:1}.ai-asset-analysis-page .radar-section .radar-card.is-prediction[data-v-0d0a10d6]{width:290px}.ai-asset-analysis-page .radar-section .radar-card .rc-head[data-v-0d0a10d6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:12px;gap:8px}.ai-asset-analysis-page .radar-section .radar-card .rc-symbol[data-v-0d0a10d6]{font-weight:800;font-size:15px;color:#111;letter-spacing:-.2px}.ai-asset-analysis-page .radar-section .radar-card .rc-symbol.rc-prediction-title[data-v-0d0a10d6]{font-size:13px;font-weight:600;line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.ai-asset-analysis-page .radar-section .radar-card .rc-market[data-v-0d0a10d6]{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;padding:2px 7px;border-radius:5px;-ms-flex-negative:0;flex-shrink:0;background:#f5f5f5;color:#888}.ai-asset-analysis-page .radar-section .radar-card .rc-market.rc-market-crypto[data-v-0d0a10d6]{color:#7c3aed;background:rgba(124,58,237,.08)}.ai-asset-analysis-page .radar-section .radar-card .rc-market.rc-market-usstock[data-v-0d0a10d6]{color:#16a34a;background:rgba(22,163,74,.08)}.ai-asset-analysis-page .radar-section .radar-card .rc-market.rc-market-forex[data-v-0d0a10d6]{color:#d97706;background:rgba(217,119,6,.08)}.ai-asset-analysis-page .radar-section .radar-card .rc-market.rc-market-predictionmarket[data-v-0d0a10d6]{color:#0891b2;background:rgba(8,145,178,.08)}.ai-asset-analysis-page .radar-section .radar-card .rc-metrics[data-v-0d0a10d6]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:4px;margin-bottom:12px}.ai-asset-analysis-page .radar-section .radar-card .rc-metric[data-v-0d0a10d6]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:3px;padding:7px;border-radius:8px;background:#fafafa}.ai-asset-analysis-page .radar-section .radar-card .rc-metric .rc-metric-label[data-v-0d0a10d6]{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.4px;color:#999}.ai-asset-analysis-page .radar-section .radar-card .rc-metric .rc-metric-value[data-v-0d0a10d6]{font-size:13px;font-weight:700;color:#222}.ai-asset-analysis-page .radar-section .radar-card .rc-metric .rc-metric-value.rc-up[data-v-0d0a10d6]{color:#16a34a}.ai-asset-analysis-page .radar-section .radar-card .rc-metric .rc-metric-value.rc-down[data-v-0d0a10d6]{color:#dc2626}.ai-asset-analysis-page .radar-section .radar-card .rc-metric .rc-metric-value.rc-signal-val[data-v-0d0a10d6]{font-size:11px;font-weight:600}.ai-asset-analysis-page .radar-section .radar-card .rc-metric .rc-metric-value.rc-signal-bullish_momentum[data-v-0d0a10d6]{color:#0891b2}.ai-asset-analysis-page .radar-section .radar-card .rc-metric .rc-metric-value.rc-signal-overbought[data-v-0d0a10d6]{color:#d97706}.ai-asset-analysis-page .radar-section .radar-card .rc-metric .rc-metric-value.rc-signal-oversold[data-v-0d0a10d6]{color:#16a34a}.ai-asset-analysis-page .radar-section .radar-card .rc-metric .rc-metric-value.rc-signal-bearish_momentum[data-v-0d0a10d6]{color:#dc2626}.ai-asset-analysis-page .radar-section .radar-card .rc-footer[data-v-0d0a10d6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:8px}.ai-asset-analysis-page .radar-section .radar-card .rc-reason[data-v-0d0a10d6]{font-size:11px;color:#999;line-height:1.4;-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}.ai-asset-analysis-page .radar-section .radar-card .rc-cta[data-v-0d0a10d6]{font-size:11px;font-weight:700;color:#fff;background:linear-gradient(135deg,#6366f1,#8b5cf6);padding:4px 12px;border-radius:8px;white-space:nowrap;cursor:pointer;-webkit-transition:all .2s;transition:all .2s;-ms-flex-negative:0;flex-shrink:0}.ai-asset-analysis-page .radar-section .radar-card .rc-cta[data-v-0d0a10d6]:hover{-webkit-transform:scale(1.05);transform:scale(1.05);-webkit-box-shadow:0 2px 12px rgba(99,102,241,.35);box-shadow:0 2px 12px rgba(99,102,241,.35)}.ai-asset-analysis-page .qt-floating-btn[data-v-0d0a10d6]{position:fixed;right:24px;bottom:80px;width:48px;height:48px;border-radius:14px;background:linear-gradient(135deg,#6366f1,#8b5cf6);color:#fff;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;font-size:22px;cursor:pointer;-webkit-box-shadow:0 4px 20px rgba(99,102,241,.35);box-shadow:0 4px 20px rgba(99,102,241,.35);z-index:1000;-webkit-transition:all .3s;transition:all .3s;-webkit-animation:qt-float-pulse-0d0a10d6 2.5s ease-in-out infinite;animation:qt-float-pulse-0d0a10d6 2.5s ease-in-out infinite}.ai-asset-analysis-page .qt-floating-btn[data-v-0d0a10d6]:hover{-webkit-transform:scale(1.08);transform:scale(1.08);-webkit-box-shadow:0 6px 28px rgba(99,102,241,.5);box-shadow:0 6px 28px rgba(99,102,241,.5)}@-webkit-keyframes qt-float-pulse-0d0a10d6{0%,to{-webkit-transform:translateY(0);transform:translateY(0)}50%{-webkit-transform:translateY(-4px);transform:translateY(-4px)}}@keyframes qt-float-pulse-0d0a10d6{0%,to{-webkit-transform:translateY(0);transform:translateY(0)}50%{-webkit-transform:translateY(-4px);transform:translateY(-4px)}}.ai-asset-analysis-page .workspace-card[data-v-0d0a10d6]{border-radius:14px;-webkit-box-shadow:0 1px 4px rgba(0,0,0,.06);box-shadow:0 1px 4px rgba(0,0,0,.06);border:1px solid #e8e8e8}.ai-asset-analysis-page .workspace-card[data-v-0d0a10d6] .ant-card-body{padding:0}.ai-asset-analysis-page .workspace-card .workspace-tabs[data-v-0d0a10d6] .ant-tabs-bar{margin-bottom:0;padding:0 20px;border-bottom:1px solid #f0f0f0}.ai-asset-analysis-page .workspace-card .workspace-tabs[data-v-0d0a10d6] .ant-tabs-tab{font-size:15px;font-weight:600;padding:14px 16px}.ai-asset-analysis-page .workspace-card .tab-body[data-v-0d0a10d6] .ai-analysis-container.embedded,.ai-asset-analysis-page .workspace-card .tab-body[data-v-0d0a10d6] .portfolio-container.embedded{border-radius:0;overflow:hidden}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content[data-v-0d0a10d6]{padding:40px 20px;text-align:center}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content .polymarket-placeholder .placeholder-icon[data-v-0d0a10d6]{font-size:64px;color:#6366f1;margin-bottom:24px}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content .polymarket-placeholder h3[data-v-0d0a10d6]{font-size:20px;font-weight:700;margin-bottom:12px;color:rgba(0,0,0,.85)}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content .polymarket-placeholder p[data-v-0d0a10d6]{font-size:14px;color:rgba(0,0,0,.55);margin-bottom:24px}.ai-asset-analysis-page.theme-dark[data-v-0d0a10d6]{background:#141414}.ai-asset-analysis-page.theme-dark .radar-section .radar-header .radar-title[data-v-0d0a10d6]{color:#e8e8e8}.ai-asset-analysis-page.theme-dark .radar-section .radar-header .radar-subtitle[data-v-0d0a10d6]{color:#666}.ai-asset-analysis-page.theme-dark .radar-section .radar-refresh-btn[data-v-0d0a10d6]{background:#1c1c1c;border-color:#2a2a2a;color:#999}.ai-asset-analysis-page.theme-dark .radar-section .radar-refresh-btn[data-v-0d0a10d6]:hover{border-color:#6366f1;color:#a78bfa}.ai-asset-analysis-page.theme-dark .radar-section .radar-carousel[data-v-0d0a10d6]:before{background:-webkit-gradient(linear,left top,right top,from(#141414),to(transparent));background:linear-gradient(90deg,#141414,transparent)}.ai-asset-analysis-page.theme-dark .radar-section .radar-carousel[data-v-0d0a10d6]:after{background:-webkit-gradient(linear,right top,left top,from(#141414),to(transparent));background:linear-gradient(270deg,#141414,transparent)}.ai-asset-analysis-page.theme-dark .radar-section .radar-card[data-v-0d0a10d6]{background:#1a1a1c;border-color:hsla(0,0%,100%,.06)}.ai-asset-analysis-page.theme-dark .radar-section .radar-card[data-v-0d0a10d6]:before{background:linear-gradient(135deg,rgba(99,102,241,.06),rgba(139,92,246,.03))}.ai-asset-analysis-page.theme-dark .radar-section .radar-card[data-v-0d0a10d6]:hover{border-color:rgba(99,102,241,.25);-webkit-box-shadow:0 8px 32px rgba(0,0,0,.4),0 0 0 1px rgba(99,102,241,.15);box-shadow:0 8px 32px rgba(0,0,0,.4),0 0 0 1px rgba(99,102,241,.15)}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-symbol[data-v-0d0a10d6]{color:#f0f0f0}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-market[data-v-0d0a10d6]{background:hsla(0,0%,100%,.06);color:#888}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-market.rc-market-crypto[data-v-0d0a10d6]{color:#a78bfa;background:rgba(167,139,250,.12)}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-market.rc-market-usstock[data-v-0d0a10d6]{color:#4ade80;background:rgba(74,222,128,.1)}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-market.rc-market-forex[data-v-0d0a10d6]{color:#fbbf24;background:rgba(251,191,36,.1)}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-market.rc-market-predictionmarket[data-v-0d0a10d6]{color:#22d3ee;background:rgba(34,211,238,.1)}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-metric[data-v-0d0a10d6]{background:hsla(0,0%,100%,.03)}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-metric .rc-metric-label[data-v-0d0a10d6]{color:#666}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-metric .rc-metric-value[data-v-0d0a10d6]{color:#ddd}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-metric .rc-metric-value.rc-up[data-v-0d0a10d6]{color:#4ade80}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-metric .rc-metric-value.rc-down[data-v-0d0a10d6]{color:#f87171}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-metric .rc-metric-value.rc-signal-bullish_momentum[data-v-0d0a10d6]{color:#22d3ee}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-metric .rc-metric-value.rc-signal-overbought[data-v-0d0a10d6]{color:#fbbf24}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-metric .rc-metric-value.rc-signal-oversold[data-v-0d0a10d6]{color:#4ade80}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-metric .rc-metric-value.rc-signal-bearish_momentum[data-v-0d0a10d6]{color:#f87171}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-reason[data-v-0d0a10d6]{color:#555}.ai-asset-analysis-page.theme-dark .radar-section .radar-card .rc-cta[data-v-0d0a10d6]{color:#fff}.ai-asset-analysis-page.theme-dark .workspace-card[data-v-0d0a10d6]{background:#1c1c1c;border-color:#2a2a2a}.ai-asset-analysis-page.theme-dark .workspace-card .workspace-tabs[data-v-0d0a10d6] .ant-tabs-bar{border-bottom-color:#2a2a2a}.ai-asset-analysis-page.theme-dark .workspace-card .workspace-tabs[data-v-0d0a10d6] .ant-tabs-tab{color:#8b949e}.ai-asset-analysis-page.theme-dark .workspace-card .workspace-tabs[data-v-0d0a10d6] .ant-tabs-tab:hover{color:#c9d1d9}.ai-asset-analysis-page.theme-dark .workspace-card .workspace-tabs[data-v-0d0a10d6] .ant-tabs-tab-active{color:#a78bfa}.ai-asset-analysis-page.theme-dark .workspace-card .workspace-tabs[data-v-0d0a10d6] .ant-tabs-ink-bar{background-color:#a78bfa}.ai-asset-analysis-page.theme-dark .workspace-card .polymarket-tab-content .polymarket-placeholder h3[data-v-0d0a10d6]{color:#d4d4d4}.ai-asset-analysis-page.theme-dark .workspace-card .polymarket-tab-content .polymarket-placeholder p[data-v-0d0a10d6]{color:#a3a3a3}@media (max-width:768px){.ai-asset-analysis-page[data-v-0d0a10d6]{padding:8px;min-height:auto}.ai-asset-analysis-page .radar-section[data-v-0d0a10d6]{margin-bottom:10px}.ai-asset-analysis-page .radar-section .radar-header[data-v-0d0a10d6]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;gap:8px}.ai-asset-analysis-page .radar-section .radar-header .radar-header-left .radar-title[data-v-0d0a10d6]{font-size:15px}.ai-asset-analysis-page .radar-section .radar-header .radar-header-left .radar-subtitle[data-v-0d0a10d6]{font-size:11px}.ai-asset-analysis-page .radar-section .radar-header .radar-refresh-btn[data-v-0d0a10d6]{-ms-flex-item-align:end;align-self:flex-end}.ai-asset-analysis-page .radar-section .radar-carousel[data-v-0d0a10d6]:after,.ai-asset-analysis-page .radar-section .radar-carousel[data-v-0d0a10d6]:before{width:28px}.ai-asset-analysis-page .radar-section .radar-card[data-v-0d0a10d6]{width:210px;padding:12px}.ai-asset-analysis-page .radar-section .radar-card.is-prediction[data-v-0d0a10d6]{width:248px}.ai-asset-analysis-page .radar-section .radar-card .rc-symbol[data-v-0d0a10d6]{font-size:14px}.ai-asset-analysis-page .radar-section .radar-card .rc-metric[data-v-0d0a10d6]{padding:6px}.ai-asset-analysis-page .qt-floating-btn[data-v-0d0a10d6]{right:max(8px,env(safe-area-inset-right,0px));bottom:max(68px,calc(52px + env(safe-area-inset-bottom, 0px)));width:44px;height:44px;font-size:20px}.ai-asset-analysis-page .workspace-card[data-v-0d0a10d6]{border-radius:10px}.ai-asset-analysis-page .workspace-card .workspace-tabs[data-v-0d0a10d6] .ant-tabs-bar{padding:0 6px}.ai-asset-analysis-page .workspace-card .workspace-tabs[data-v-0d0a10d6] .ant-tabs-nav-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}.ai-asset-analysis-page .workspace-card .workspace-tabs[data-v-0d0a10d6] .ant-tabs-tab{font-size:14px;padding:10px 8px;margin-right:2px;white-space:nowrap}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content[data-v-0d0a10d6]{padding:16px 8px}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content .polymarket-placeholder .placeholder-icon[data-v-0d0a10d6]{font-size:48px;margin-bottom:12px}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content .polymarket-placeholder h3[data-v-0d0a10d6]{font-size:17px}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content .polymarket-placeholder p[data-v-0d0a10d6]{font-size:13px}}@media (max-width:480px){.ai-asset-analysis-page[data-v-0d0a10d6]{padding:4px}.ai-asset-analysis-page .radar-section .radar-card[data-v-0d0a10d6]{width:188px;padding:10px}.ai-asset-analysis-page .radar-section .radar-card.is-prediction[data-v-0d0a10d6]{width:220px}.ai-asset-analysis-page .radar-section .radar-card .rc-metrics[data-v-0d0a10d6]{gap:3px}.ai-asset-analysis-page .radar-section .radar-card .rc-metric .rc-metric-value[data-v-0d0a10d6]{font-size:12px}.ai-asset-analysis-page .workspace-card .workspace-tabs[data-v-0d0a10d6] .ant-tabs-bar{padding:0 4px}.ai-asset-analysis-page .workspace-card .workspace-tabs[data-v-0d0a10d6] .ant-tabs-tab{font-size:13px;padding:8px 6px}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content[data-v-0d0a10d6]{padding:12px 6px}} \ No newline at end of file diff --git a/frontend/dist/css/420.2e8a4a95.css b/frontend/dist/css/420.2e8a4a95.css new file mode 100644 index 0000000..89f9368 --- /dev/null +++ b/frontend/dist/css/420.2e8a4a95.css @@ -0,0 +1 @@ +.profile-page[data-v-4224bd2a]{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)}.profile-page .page-header[data-v-4224bd2a]{margin-bottom:24px}.profile-page .page-header .page-title[data-v-4224bd2a]{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}.profile-page .page-header .page-title .anticon[data-v-4224bd2a]{font-size:28px;color:#1890ff}.profile-page .page-header .page-desc[data-v-4224bd2a]{color:#64748b;font-size:14px;margin:0}.profile-page .profile-cards-row[data-v-4224bd2a]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.profile-page .profile-cards-row .profile-card-col .ant-card[data-v-4224bd2a],.profile-page .profile-cards-row .profile-card-col[data-v-4224bd2a],.profile-page .profile-cards-row .right-cards-col .ant-card[data-v-4224bd2a],.profile-page .profile-cards-row .right-cards-col[data-v-4224bd2a]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.profile-page .profile-cards-row .profile-card-col .ant-card[data-v-4224bd2a],.profile-page .profile-cards-row .right-cards-col .ant-card[data-v-4224bd2a]{height:100%}.profile-page .profile-cards-row .profile-card-col[data-v-4224bd2a] .ant-card-body,.profile-page .profile-cards-row .right-cards-col[data-v-4224bd2a] .ant-card-body{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.profile-page .profile-cards-row .right-cards-row[data-v-4224bd2a]{height:100%;display:-webkit-box;display:-ms-flexbox;display:flex}.profile-page .profile-cards-row .right-cards-row .ant-col .ant-card[data-v-4224bd2a],.profile-page .profile-cards-row .right-cards-row .ant-col[data-v-4224bd2a]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.profile-page .profile-cards-row .right-cards-row .ant-col .ant-card[data-v-4224bd2a]{height:100%}.profile-page .profile-cards-row .right-cards-row .ant-col[data-v-4224bd2a] .ant-card-body{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.profile-page .profile-card[data-v-4224bd2a]{border-radius:12px;-webkit-box-shadow:0 4px 20px rgba(0,0,0,.08);box-shadow:0 4px 20px rgba(0,0,0,.08);text-align:center}.profile-page .profile-card .avatar-section[data-v-4224bd2a]{padding:20px 0}.profile-page .profile-card .avatar-section .ant-avatar[data-v-4224bd2a]{-webkit-box-shadow:0 4px 12px rgba(0,0,0,.15);box-shadow:0 4px 12px rgba(0,0,0,.15)}.profile-page .profile-card .avatar-section .username[data-v-4224bd2a]{margin:16px 0 8px;font-size:20px;font-weight:600;color:#1e3a5f}.profile-page .profile-card .avatar-section .user-role[data-v-4224bd2a]{margin:0}.profile-page .profile-card .profile-info[data-v-4224bd2a]{text-align:left;-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:distribute;justify-content:space-around}.profile-page .profile-card .profile-info .info-item[data-v-4224bd2a]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:12px 0;border-bottom:1px solid #f0f0f0}.profile-page .profile-card .profile-info .info-item[data-v-4224bd2a]:last-child{border-bottom:none}.profile-page .profile-card .profile-info .info-item .anticon[data-v-4224bd2a]{font-size:16px;color:#1890ff;margin-right:12px}.profile-page .profile-card .profile-info .info-item .label[data-v-4224bd2a]{color:#64748b;margin-right:8px}.profile-page .profile-card .profile-info .info-item .value[data-v-4224bd2a]{color:#1e3a5f;font-weight:500}.profile-page .edit-card[data-v-4224bd2a]{border-radius:12px;-webkit-box-shadow:0 4px 20px rgba(0,0,0,.08);box-shadow:0 4px 20px rgba(0,0,0,.08)}.profile-page .edit-card .password-form[data-v-4224bd2a],.profile-page .edit-card .profile-form[data-v-4224bd2a]{max-width:500px}.profile-page .edit-card .password-form[data-v-4224bd2a] .ant-input,.profile-page .edit-card .password-form[data-v-4224bd2a] .ant-input-password,.profile-page .edit-card .profile-form[data-v-4224bd2a] .ant-input,.profile-page .edit-card .profile-form[data-v-4224bd2a] .ant-input-password{border-radius:8px}.profile-page .edit-card .password-form .email-hint[data-v-4224bd2a],.profile-page .edit-card .profile-form .email-hint[data-v-4224bd2a]{margin-top:8px;font-size:12px;color:rgba(0,0,0,.45)}.profile-page .edit-card .password-form .email-hint.email-warning[data-v-4224bd2a],.profile-page .edit-card .profile-form .email-hint.email-warning[data-v-4224bd2a]{color:#faad14}.profile-page .edit-card .amount-positive[data-v-4224bd2a]{color:#52c41a;font-weight:600}.profile-page .edit-card .amount-negative[data-v-4224bd2a]{color:#ff4d4f;font-weight:600}.profile-page .edit-card .notification-settings-form .field-hint[data-v-4224bd2a]{margin-top:6px;font-size:12px;color:rgba(0,0,0,.45);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px}.profile-page .edit-card .notification-settings-form .field-hint .anticon[data-v-4224bd2a]{font-size:12px}.profile-page .edit-card .notification-settings-form[data-v-4224bd2a] .ant-checkbox-group{width:100%}.profile-page .edit-card .notification-settings-form[data-v-4224bd2a] .ant-checkbox-wrapper{margin-bottom:8px}.profile-page .credits-card[data-v-4224bd2a]{border-radius:12px;-webkit-box-shadow:0 4px 20px rgba(0,0,0,.08);box-shadow:0 4px 20px rgba(0,0,0,.08);background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.profile-page .credits-card[data-v-4224bd2a] .ant-card-body{background:transparent;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.profile-page .credits-card[data-v-4224bd2a] .ant-divider{border-color:hsla(0,0%,100%,.2)}.profile-page .credits-card .credits-header .credits-title[data-v-4224bd2a]{font-size:16px;font-weight:600;margin:0;color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.profile-page .credits-card .credits-header .credits-title .anticon[data-v-4224bd2a]{font-size:18px}.profile-page .credits-card .credits-body[data-v-4224bd2a]{padding:20px 0;text-align:center;-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.profile-page .credits-card .credits-body .credits-amount .amount-value[data-v-4224bd2a]{font-size:42px;font-weight:700;color:#fff;text-shadow:0 2px 4px rgba(0,0,0,.2)}.profile-page .credits-card .credits-body .credits-amount .amount-label[data-v-4224bd2a]{font-size:16px;color:hsla(0,0%,100%,.9);margin-left:8px}.profile-page .credits-card .credits-body .vip-status[data-v-4224bd2a]{margin-top: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;gap:6px;font-size:13px}.profile-page .credits-card .credits-body .vip-status .vip-active[data-v-4224bd2a]{color:gold}.profile-page .credits-card .credits-body .vip-status .vip-expired[data-v-4224bd2a]{color:hsla(0,0%,100%,.6)}.profile-page .credits-card .credits-body .vip-status .no-vip[data-v-4224bd2a]{color:hsla(0,0%,100%,.7)}.profile-page .credits-card .credits-actions[data-v-4224bd2a]{text-align:center;margin-top:auto}.profile-page .credits-card .credits-actions .ant-btn[data-v-4224bd2a]{border-radius:20px;padding:0 24px;height:36px;font-weight:500;background:#fff;color:#667eea;border:none}.profile-page .credits-card .credits-actions .ant-btn[data-v-4224bd2a]:hover{background:hsla(0,0%,100%,.9);color:#764ba2}.profile-page .credits-card .credits-hint[data-v-4224bd2a]{margin-top:12px;text-align:center;font-size:12px;color:hsla(0,0%,100%,.7);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;gap:6px}.profile-page .referral-card[data-v-4224bd2a]{border-radius:12px;-webkit-box-shadow:0 4px 20px rgba(0,0,0,.08);box-shadow:0 4px 20px rgba(0,0,0,.08);background:linear-gradient(135deg,#11998e,#38ef7d);color:#fff}.profile-page .referral-card[data-v-4224bd2a] .ant-card-body{background:transparent;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.profile-page .referral-card[data-v-4224bd2a] .ant-divider{border-color:hsla(0,0%,100%,.2)}.profile-page .referral-card .referral-header .referral-title[data-v-4224bd2a]{font-size:16px;font-weight:600;margin:0;color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.profile-page .referral-card .referral-header .referral-title .anticon[data-v-4224bd2a]{font-size:18px}.profile-page .referral-card .referral-body[data-v-4224bd2a]{padding:12px 0;-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.profile-page .referral-card .referral-body .referral-stats[data-v-4224bd2a]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-pack:distribute;justify-content:space-around}.profile-page .referral-card .referral-body .referral-stats .stat-item[data-v-4224bd2a]{text-align:center}.profile-page .referral-card .referral-body .referral-stats .stat-item .stat-value[data-v-4224bd2a]{font-size:28px;font-weight:700;color:#fff;display:block}.profile-page .referral-card .referral-body .referral-stats .stat-item .stat-label[data-v-4224bd2a]{font-size:12px;color:hsla(0,0%,100%,.8)}.profile-page .referral-card .referral-body .referral-link-section .link-label[data-v-4224bd2a]{font-size:12px;color:hsla(0,0%,100%,.9);margin-bottom:6px}.profile-page .referral-card .referral-body .referral-link-section .link-box[data-v-4224bd2a] .ant-input{background:hsla(0,0%,100%,.2);border:1px solid hsla(0,0%,100%,.3);color:#fff}.profile-page .referral-card .referral-body .referral-link-section .link-box[data-v-4224bd2a] .ant-input::-webkit-input-placeholder{color:hsla(0,0%,100%,.6)}.profile-page .referral-card .referral-body .referral-link-section .link-box[data-v-4224bd2a] .ant-input::-moz-placeholder{color:hsla(0,0%,100%,.6)}.profile-page .referral-card .referral-body .referral-link-section .link-box[data-v-4224bd2a] .ant-input:-ms-input-placeholder{color:hsla(0,0%,100%,.6)}.profile-page .referral-card .referral-body .referral-link-section .link-box[data-v-4224bd2a] .ant-input::-ms-input-placeholder{color:hsla(0,0%,100%,.6)}.profile-page .referral-card .referral-body .referral-link-section .link-box[data-v-4224bd2a] .ant-input::placeholder{color:hsla(0,0%,100%,.6)}.profile-page .referral-card .referral-body .referral-link-section .link-box[data-v-4224bd2a] .anticon-copy{color:#fff}.profile-page .referral-card .referral-body .referral-link-section .link-box[data-v-4224bd2a] .anticon-copy:hover{color:gold}.profile-page .referral-card .referral-body .referral-hint[data-v-4224bd2a]{margin-top:auto;text-align:center;font-size:12px;color:hsla(0,0%,100%,.85);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;gap:6px}.profile-page .referral-card .referral-body .referral-hint .anticon-gift[data-v-4224bd2a]{color:gold}.profile-page .referral-user-cell[data-v-4224bd2a]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px}.profile-page .referral-user-cell .user-info[data-v-4224bd2a]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.profile-page .referral-user-cell .user-info .nickname[data-v-4224bd2a]{font-weight:500;color:#333}.profile-page .referral-user-cell .user-info .username[data-v-4224bd2a]{font-size:12px;color:#999}.profile-page .exchange-config-section .credential-hint[data-v-4224bd2a]{font-family:SFMono-Regular,Consolas,monospace;font-size:13px;color:#666}.profile-page .test-result-msg[data-v-4224bd2a]{margin-top:8px;font-size:13px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}.profile-page .test-result-msg.success[data-v-4224bd2a]{color:#52c41a}.profile-page .test-result-msg.error[data-v-4224bd2a]{color:#f5222d}.profile-page.theme-dark[data-v-4224bd2a]{background:-webkit-gradient(linear,left top,left bottom,from(#141414),to(#1c1c1c));background:linear-gradient(180deg,#141414,#1c1c1c)}.profile-page.theme-dark .page-header .page-title[data-v-4224bd2a]{color:#e0e6ed}.profile-page.theme-dark .page-header .page-desc[data-v-4224bd2a]{color:#8b949e}.profile-page.theme-dark .edit-card[data-v-4224bd2a],.profile-page.theme-dark .profile-card[data-v-4224bd2a]{background:#1c1c1c;-webkit-box-shadow:0 4px 24px rgba(0,0,0,.25);box-shadow:0 4px 24px rgba(0,0,0,.25)}.profile-page.theme-dark .edit-card[data-v-4224bd2a] .ant-card-body,.profile-page.theme-dark .profile-card[data-v-4224bd2a] .ant-card-body{background:#1c1c1c}.profile-page.theme-dark .profile-card .avatar-section .username[data-v-4224bd2a]{color:#e0e6ed}.profile-page.theme-dark .profile-card .profile-info .info-item[data-v-4224bd2a]{border-bottom-color:#2a2a2a}.profile-page.theme-dark .profile-card .profile-info .info-item .label[data-v-4224bd2a]{color:#8b949e}.profile-page.theme-dark .profile-card .profile-info .info-item .value[data-v-4224bd2a]{color:#e0e6ed}.profile-page.theme-dark .edit-card[data-v-4224bd2a] .ant-tabs-bar{border-bottom-color:#2a2a2a}.profile-page.theme-dark .edit-card[data-v-4224bd2a] .ant-tabs-tab{color:#8b949e}.profile-page.theme-dark .edit-card[data-v-4224bd2a] .ant-tabs-tab:hover{color:#e0e6ed}.profile-page.theme-dark .edit-card[data-v-4224bd2a] .ant-tabs-tab-active{color:#1890ff}.profile-page.theme-dark .edit-card[data-v-4224bd2a] .ant-form-item-label label{color:#c9d1d9}.profile-page.theme-dark .edit-card[data-v-4224bd2a] .ant-input,.profile-page.theme-dark .edit-card[data-v-4224bd2a] .ant-input-password{background:#141414;border-color:#2a2a2a;color:#c9d1d9}.profile-page.theme-dark .edit-card[data-v-4224bd2a] .ant-input-password:focus,.profile-page.theme-dark .edit-card[data-v-4224bd2a] .ant-input-password:hover,.profile-page.theme-dark .edit-card[data-v-4224bd2a] .ant-input:focus,.profile-page.theme-dark .edit-card[data-v-4224bd2a] .ant-input:hover{border-color:#1890ff}.profile-page.theme-dark .credits-card[data-v-4224bd2a]{background:linear-gradient(135deg,#1c1c1c,#1a1a1a 50%,#141414);-webkit-box-shadow:0 4px 24px rgba(0,0,0,.25);box-shadow:0 4px 24px rgba(0,0,0,.25)}.profile-page.theme-dark .credits-card[data-v-4224bd2a] .ant-divider{border-color:hsla(0,0%,100%,.1)}.profile-page.theme-dark .credits-card .credits-actions .ant-btn[data-v-4224bd2a]{background:hsla(0,0%,100%,.15);color:#fff;border:1px solid hsla(0,0%,100%,.2)}.profile-page.theme-dark .credits-card .credits-actions .ant-btn[data-v-4224bd2a]:hover{background:hsla(0,0%,100%,.25)}.profile-page.theme-dark[data-v-4224bd2a] .ant-table-wrapper .ant-table{background:#1c1c1c;color:#c9d1d9}.profile-page.theme-dark[data-v-4224bd2a] .ant-table-wrapper .ant-table-thead>tr>th{background:#2a2a2a;color:#c9d1d9;border-bottom-color:#2a2a2a}.profile-page.theme-dark[data-v-4224bd2a] .ant-table-wrapper .ant-table-tbody>tr>td{background:#1c1c1c;color:#c9d1d9;border-bottom-color:#2a2a2a}.profile-page.theme-dark[data-v-4224bd2a] .ant-table-wrapper .ant-table-tbody>tr:hover>td{background:#2a2a2a}.profile-page.theme-dark[data-v-4224bd2a] .ant-table-wrapper .ant-table-placeholder{background:#1c1c1c;color:#8b949e}.profile-page.theme-dark[data-v-4224bd2a] .ant-table-wrapper .ant-table-tbody>tr>td,.profile-page.theme-dark[data-v-4224bd2a] .ant-table-wrapper .ant-table-tbody>tr>td :not(.ant-tag):not(.ant-btn),.profile-page.theme-dark[data-v-4224bd2a] .ant-table-wrapper .ant-table-tbody>tr>td div,.profile-page.theme-dark[data-v-4224bd2a] .ant-table-wrapper .ant-table-tbody>tr>td span{color:#c9d1d9}.profile-page.theme-dark[data-v-4224bd2a] .ant-table-wrapper .amount-positive{color:#52c41a}.profile-page.theme-dark[data-v-4224bd2a] .ant-table-wrapper .amount-negative{color:#f5222d}.profile-page.theme-dark[data-v-4224bd2a] .ant-table-wrapper .ant-tag{border-width:1px;font-weight:600}.profile-page.theme-dark[data-v-4224bd2a] .ant-table-wrapper .ant-tag-red{background:rgba(245,34,45,.25);border-color:#f5222d;color:#ff7875}.profile-page.theme-dark[data-v-4224bd2a] .ant-table-wrapper .ant-tag-green{background:rgba(82,196,26,.25);border-color:#52c41a;color:#73d13d}.profile-page.theme-dark[data-v-4224bd2a] .ant-table-wrapper .ant-tag-blue{background:rgba(24,144,255,.25);border-color:#1890ff;color:#69c0ff}.profile-page.theme-dark[data-v-4224bd2a] .ant-table-wrapper .ant-tag-gold,.profile-page.theme-dark[data-v-4224bd2a] .ant-table-wrapper .ant-tag-orange{background:rgba(250,173,20,.25);border-color:#faad14;color:#ffc53d}.profile-page.theme-dark[data-v-4224bd2a] .ant-table-wrapper .ant-tag-cyan{background:rgba(19,194,194,.25);border-color:#13c2c2;color:#5cdbd3}.profile-page.theme-dark[data-v-4224bd2a] .ant-table-wrapper .ant-tag-purple{background:rgba(114,46,209,.25);border-color:#722ed1;color:#b37feb}.profile-page.theme-dark[data-v-4224bd2a] .ant-table-wrapper .ant-tag-volcano{background:rgba(250,84,28,.25);border-color:#fa541c;color:#ff9c6e}.profile-page.theme-dark[data-v-4224bd2a] .ant-table-wrapper .ant-tag-lime{background:hsla(89,56%,62%,.25);border-color:#a0d911;color:#bae637}.profile-page.theme-dark[data-v-4224bd2a] .ant-table-wrapper .ant-tag-default{background:hsla(0,0%,100%,.08);border-color:hsla(0,0%,100%,.2);color:#c9d1d9}.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-form-item-label>label,.profile-page.theme-dark .password-form[data-v-4224bd2a] .ant-form-item-label>label,.profile-page.theme-dark .profile-form[data-v-4224bd2a] .ant-form-item-label>label{color:#c9d1d9}.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-form-item-explain,.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-form-item-extra,.profile-page.theme-dark .password-form[data-v-4224bd2a] .ant-form-item-explain,.profile-page.theme-dark .password-form[data-v-4224bd2a] .ant-form-item-extra,.profile-page.theme-dark .profile-form[data-v-4224bd2a] .ant-form-item-explain,.profile-page.theme-dark .profile-form[data-v-4224bd2a] .ant-form-item-extra{color:#8b949e}.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-input,.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-input-number,.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-input-password,.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-select-selector,.profile-page.theme-dark .password-form[data-v-4224bd2a] .ant-input,.profile-page.theme-dark .password-form[data-v-4224bd2a] .ant-input-number,.profile-page.theme-dark .password-form[data-v-4224bd2a] .ant-input-password,.profile-page.theme-dark .password-form[data-v-4224bd2a] .ant-select-selector,.profile-page.theme-dark .profile-form[data-v-4224bd2a] .ant-input,.profile-page.theme-dark .profile-form[data-v-4224bd2a] .ant-input-number,.profile-page.theme-dark .profile-form[data-v-4224bd2a] .ant-input-password,.profile-page.theme-dark .profile-form[data-v-4224bd2a] .ant-select-selector{background:#141414;border-color:#2a2a2a;color:#c9d1d9}.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-input-number::-webkit-input-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-input-password::-webkit-input-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-input::-webkit-input-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-select-selector::-webkit-input-placeholder,.profile-page.theme-dark .password-form[data-v-4224bd2a] .ant-input-number::-webkit-input-placeholder,.profile-page.theme-dark .password-form[data-v-4224bd2a] .ant-input-password::-webkit-input-placeholder,.profile-page.theme-dark .password-form[data-v-4224bd2a] .ant-input::-webkit-input-placeholder,.profile-page.theme-dark .password-form[data-v-4224bd2a] .ant-select-selector::-webkit-input-placeholder,.profile-page.theme-dark .profile-form[data-v-4224bd2a] .ant-input-number::-webkit-input-placeholder,.profile-page.theme-dark .profile-form[data-v-4224bd2a] .ant-input-password::-webkit-input-placeholder,.profile-page.theme-dark .profile-form[data-v-4224bd2a] .ant-input::-webkit-input-placeholder,.profile-page.theme-dark .profile-form[data-v-4224bd2a] .ant-select-selector::-webkit-input-placeholder{color:#6e7681}.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-input-number::-moz-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-input-password::-moz-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-input::-moz-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-select-selector::-moz-placeholder,.profile-page.theme-dark .password-form[data-v-4224bd2a] .ant-input-number::-moz-placeholder,.profile-page.theme-dark .password-form[data-v-4224bd2a] .ant-input-password::-moz-placeholder,.profile-page.theme-dark .password-form[data-v-4224bd2a] .ant-input::-moz-placeholder,.profile-page.theme-dark .password-form[data-v-4224bd2a] .ant-select-selector::-moz-placeholder,.profile-page.theme-dark .profile-form[data-v-4224bd2a] .ant-input-number::-moz-placeholder,.profile-page.theme-dark .profile-form[data-v-4224bd2a] .ant-input-password::-moz-placeholder,.profile-page.theme-dark .profile-form[data-v-4224bd2a] .ant-input::-moz-placeholder,.profile-page.theme-dark .profile-form[data-v-4224bd2a] .ant-select-selector::-moz-placeholder{color:#6e7681}.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-input-number:-ms-input-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-input-password:-ms-input-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-input:-ms-input-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-select-selector:-ms-input-placeholder,.profile-page.theme-dark .password-form[data-v-4224bd2a] .ant-input-number:-ms-input-placeholder,.profile-page.theme-dark .password-form[data-v-4224bd2a] .ant-input-password:-ms-input-placeholder,.profile-page.theme-dark .password-form[data-v-4224bd2a] .ant-input:-ms-input-placeholder,.profile-page.theme-dark .password-form[data-v-4224bd2a] .ant-select-selector:-ms-input-placeholder,.profile-page.theme-dark .profile-form[data-v-4224bd2a] .ant-input-number:-ms-input-placeholder,.profile-page.theme-dark .profile-form[data-v-4224bd2a] .ant-input-password:-ms-input-placeholder,.profile-page.theme-dark .profile-form[data-v-4224bd2a] .ant-input:-ms-input-placeholder,.profile-page.theme-dark .profile-form[data-v-4224bd2a] .ant-select-selector:-ms-input-placeholder{color:#6e7681}.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-input-number::-ms-input-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-input-password::-ms-input-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-input::-ms-input-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-select-selector::-ms-input-placeholder,.profile-page.theme-dark .password-form[data-v-4224bd2a] .ant-input-number::-ms-input-placeholder,.profile-page.theme-dark .password-form[data-v-4224bd2a] .ant-input-password::-ms-input-placeholder,.profile-page.theme-dark .password-form[data-v-4224bd2a] .ant-input::-ms-input-placeholder,.profile-page.theme-dark .password-form[data-v-4224bd2a] .ant-select-selector::-ms-input-placeholder,.profile-page.theme-dark .profile-form[data-v-4224bd2a] .ant-input-number::-ms-input-placeholder,.profile-page.theme-dark .profile-form[data-v-4224bd2a] .ant-input-password::-ms-input-placeholder,.profile-page.theme-dark .profile-form[data-v-4224bd2a] .ant-input::-ms-input-placeholder,.profile-page.theme-dark .profile-form[data-v-4224bd2a] .ant-select-selector::-ms-input-placeholder{color:#6e7681}.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-input-number::placeholder,.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-input-password::placeholder,.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-input::placeholder,.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-select-selector::placeholder,.profile-page.theme-dark .password-form[data-v-4224bd2a] .ant-input-number::placeholder,.profile-page.theme-dark .password-form[data-v-4224bd2a] .ant-input-password::placeholder,.profile-page.theme-dark .password-form[data-v-4224bd2a] .ant-input::placeholder,.profile-page.theme-dark .password-form[data-v-4224bd2a] .ant-select-selector::placeholder,.profile-page.theme-dark .profile-form[data-v-4224bd2a] .ant-input-number::placeholder,.profile-page.theme-dark .profile-form[data-v-4224bd2a] .ant-input-password::placeholder,.profile-page.theme-dark .profile-form[data-v-4224bd2a] .ant-input::placeholder,.profile-page.theme-dark .profile-form[data-v-4224bd2a] .ant-select-selector::placeholder{color:#6e7681}.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-checkbox-wrapper,.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-checkbox-wrapper span,.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-radio-wrapper,.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-radio-wrapper span,.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-select-selection-item,.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-select-selection-placeholder,.profile-page.theme-dark .password-form[data-v-4224bd2a] .ant-checkbox-wrapper,.profile-page.theme-dark .password-form[data-v-4224bd2a] .ant-checkbox-wrapper span,.profile-page.theme-dark .password-form[data-v-4224bd2a] .ant-radio-wrapper,.profile-page.theme-dark .password-form[data-v-4224bd2a] .ant-radio-wrapper span,.profile-page.theme-dark .password-form[data-v-4224bd2a] .ant-select-selection-item,.profile-page.theme-dark .password-form[data-v-4224bd2a] .ant-select-selection-placeholder,.profile-page.theme-dark .profile-form[data-v-4224bd2a] .ant-checkbox-wrapper,.profile-page.theme-dark .profile-form[data-v-4224bd2a] .ant-checkbox-wrapper span,.profile-page.theme-dark .profile-form[data-v-4224bd2a] .ant-radio-wrapper,.profile-page.theme-dark .profile-form[data-v-4224bd2a] .ant-radio-wrapper span,.profile-page.theme-dark .profile-form[data-v-4224bd2a] .ant-select-selection-item,.profile-page.theme-dark .profile-form[data-v-4224bd2a] .ant-select-selection-placeholder{color:#c9d1d9}.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-checkbox-checked .ant-checkbox-inner,.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-radio-checked .ant-radio-inner,.profile-page.theme-dark .password-form[data-v-4224bd2a] .ant-checkbox-checked .ant-checkbox-inner,.profile-page.theme-dark .password-form[data-v-4224bd2a] .ant-radio-checked .ant-radio-inner,.profile-page.theme-dark .profile-form[data-v-4224bd2a] .ant-checkbox-checked .ant-checkbox-inner,.profile-page.theme-dark .profile-form[data-v-4224bd2a] .ant-radio-checked .ant-radio-inner{background-color:#1890ff;border-color:#1890ff}.profile-page.theme-dark .notification-settings-form .email-hint[data-v-4224bd2a],.profile-page.theme-dark .notification-settings-form .field-hint[data-v-4224bd2a],.profile-page.theme-dark .password-form .email-hint[data-v-4224bd2a],.profile-page.theme-dark .password-form .field-hint[data-v-4224bd2a],.profile-page.theme-dark .profile-form .email-hint[data-v-4224bd2a],.profile-page.theme-dark .profile-form .field-hint[data-v-4224bd2a]{color:#8b949e}.profile-page.theme-dark .notification-settings-form .email-warning[data-v-4224bd2a],.profile-page.theme-dark .password-form .email-warning[data-v-4224bd2a],.profile-page.theme-dark .profile-form .email-warning[data-v-4224bd2a]{color:#f5222d}.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-alert{background:#1c1c1c;border-color:#2a2a2a;color:#c9d1d9}.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-alert .ant-alert-message{color:#c9d1d9}.profile-page.theme-dark .exchange-config-section .credential-hint[data-v-4224bd2a],.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-alert .ant-alert-description{color:#8b949e}.profile-page.theme-dark .test-result-msg.success[data-v-4224bd2a]{color:#52c41a}.profile-page.theme-dark .test-result-msg.error[data-v-4224bd2a]{color:#f5222d}.profile-page.theme-dark .referral-user-cell .user-info .nickname[data-v-4224bd2a]{color:#c9d1d9}.profile-page.theme-dark .referral-user-cell .user-info .username[data-v-4224bd2a]{color:#8b949e}.profile-page.theme-dark[data-v-4224bd2a] .ant-tag{color:#c9d1d9}.profile-page.theme-dark[data-v-4224bd2a] .ant-tag.ant-tag-has-color{color:#fff!important;border-color:transparent!important}.profile-page.theme-dark[data-v-4224bd2a] .ant-input-prefix .anticon,.profile-page.theme-dark[data-v-4224bd2a] .ant-input-suffix .anticon,.profile-page.theme-dark[data-v-4224bd2a] .credits-hint .anticon,.profile-page.theme-dark[data-v-4224bd2a] .email-hint .anticon,.profile-page.theme-dark[data-v-4224bd2a] .field-hint .anticon,.profile-page.theme-dark[data-v-4224bd2a] .notification-settings-form .anticon{color:#c9d1d9!important}.profile-page.theme-dark[data-v-4224bd2a] .ant-pagination .ant-pagination-item{background:#1c1c1c;border-color:#2a2a2a}.profile-page.theme-dark[data-v-4224bd2a] .ant-pagination .ant-pagination-item a{color:#c9d1d9}.profile-page.theme-dark[data-v-4224bd2a] .ant-pagination .ant-pagination-item:hover{border-color:#1890ff}.profile-page.theme-dark[data-v-4224bd2a] .ant-pagination .ant-pagination-item-active{background:#1890ff;border-color:#1890ff}.profile-page.theme-dark[data-v-4224bd2a] .ant-pagination .ant-pagination-item-active a{color:#fff}.profile-page.theme-dark[data-v-4224bd2a] .ant-pagination .ant-pagination-next .ant-pagination-item-link,.profile-page.theme-dark[data-v-4224bd2a] .ant-pagination .ant-pagination-prev .ant-pagination-item-link{background:#1c1c1c;border-color:#2a2a2a;color:#c9d1d9}.profile-page.theme-dark[data-v-4224bd2a] .ant-pagination .ant-pagination-options .ant-select-selector{background:#141414;border-color:#2a2a2a;color:#c9d1d9}.profile-page.theme-dark[data-v-4224bd2a] .ant-btn.ant-btn-default{background:#1c1c1c;border-color:#2a2a2a;color:#c9d1d9}.profile-page.theme-dark[data-v-4224bd2a] .ant-btn.ant-btn-default:hover{border-color:#1890ff;color:#1890ff}@media screen and (max-width:768px){.profile-page[data-v-4224bd2a]{padding:12px}.profile-page .page-header[data-v-4224bd2a]{margin-bottom:16px}.profile-page .page-header .page-title[data-v-4224bd2a]{font-size:20px}.profile-page .page-header .page-title .anticon[data-v-4224bd2a]{font-size:22px}.profile-page .page-header .page-desc[data-v-4224bd2a]{font-size:13px}.profile-page .profile-cards-row[data-v-4224bd2a]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.profile-page .profile-cards-row .profile-card-col[data-v-4224bd2a]{margin-bottom:12px}.profile-page .profile-cards-row .right-cards-col .right-cards-row[data-v-4224bd2a]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.profile-page .profile-cards-row .right-cards-col .right-cards-row .ant-col[data-v-4224bd2a]{margin-bottom:12px}.profile-page .profile-card[data-v-4224bd2a]{border-radius:10px}.profile-page .profile-card .avatar-section[data-v-4224bd2a]{padding:16px 0}.profile-page .profile-card .avatar-section[data-v-4224bd2a] .ant-avatar{width:80px!important;height:80px!important;line-height:80px!important}.profile-page .profile-card .avatar-section .username[data-v-4224bd2a]{font-size:18px;margin:12px 0 6px}.profile-page .profile-card .profile-info .info-item[data-v-4224bd2a]{padding:10px 0;-ms-flex-wrap:wrap;flex-wrap:wrap}.profile-page .profile-card .profile-info .info-item .anticon[data-v-4224bd2a]{font-size:14px;margin-right:8px}.profile-page .profile-card .profile-info .info-item .label[data-v-4224bd2a]{font-size:13px}.profile-page .profile-card .profile-info .info-item .value[data-v-4224bd2a]{font-size:13px;word-break:break-all}.profile-page .credits-card[data-v-4224bd2a]{border-radius:10px}.profile-page .credits-card .credits-header .credits-title[data-v-4224bd2a]{font-size:15px}.profile-page .credits-card .credits-header .credits-title .anticon[data-v-4224bd2a]{font-size:16px}.profile-page .credits-card .credits-body[data-v-4224bd2a]{padding:16px 0}.profile-page .credits-card .credits-body .credits-amount .amount-value[data-v-4224bd2a]{font-size:32px}.profile-page .credits-card .credits-body .credits-amount .amount-label[data-v-4224bd2a]{font-size:14px}.profile-page .credits-card .credits-body .vip-status[data-v-4224bd2a]{font-size:12px;margin-top:10px}.profile-page .credits-card .credits-actions .ant-btn[data-v-4224bd2a]{height:34px;padding:0 20px;font-size:14px}.profile-page .credits-card .credits-hint[data-v-4224bd2a]{font-size:11px;margin-top:10px}.profile-page .referral-card[data-v-4224bd2a]{border-radius:10px}.profile-page .referral-card .referral-header .referral-title[data-v-4224bd2a]{font-size:15px}.profile-page .referral-card .referral-header .referral-title .anticon[data-v-4224bd2a]{font-size:16px}.profile-page .referral-card .referral-body[data-v-4224bd2a]{padding:10px 0}.profile-page .referral-card .referral-body .referral-stats .stat-item .stat-value[data-v-4224bd2a]{font-size:24px}.profile-page .referral-card .referral-body .referral-link-section .link-label[data-v-4224bd2a],.profile-page .referral-card .referral-body .referral-stats .stat-item .stat-label[data-v-4224bd2a]{font-size:11px}.profile-page .referral-card .referral-body .referral-link-section .link-box[data-v-4224bd2a] .ant-input{font-size:12px}.profile-page .referral-card .referral-body .referral-hint[data-v-4224bd2a]{font-size:11px;padding-top:8px}.profile-page .edit-card[data-v-4224bd2a]{border-radius:10px;margin-top:12px!important}.profile-page .edit-card[data-v-4224bd2a] .ant-card-body{padding:12px}.profile-page .edit-card[data-v-4224bd2a] .ant-tabs-nav .ant-tabs-tab{padding:10px 12px;font-size:13px}.profile-page .edit-card[data-v-4224bd2a] .ant-tabs-nav-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}.profile-page .edit-card[data-v-4224bd2a] .ant-tabs-nav-scroll::-webkit-scrollbar{display:none}.profile-page .edit-card .password-form[data-v-4224bd2a],.profile-page .edit-card .profile-form[data-v-4224bd2a]{max-width:100%}.profile-page .edit-card .password-form[data-v-4224bd2a] .ant-form-item-label,.profile-page .edit-card .profile-form[data-v-4224bd2a] .ant-form-item-label{padding-bottom:4px}.profile-page .edit-card .password-form[data-v-4224bd2a] .ant-form-item-label label,.profile-page .edit-card .profile-form[data-v-4224bd2a] .ant-form-item-label label{font-size:13px}.profile-page .edit-card .password-form[data-v-4224bd2a] .ant-input,.profile-page .edit-card .password-form[data-v-4224bd2a] .ant-input-password,.profile-page .edit-card .profile-form[data-v-4224bd2a] .ant-input,.profile-page .edit-card .profile-form[data-v-4224bd2a] .ant-input-password{font-size:14px}.profile-page .edit-card .password-form .email-hint[data-v-4224bd2a],.profile-page .edit-card .profile-form .email-hint[data-v-4224bd2a]{font-size:11px}.profile-page .edit-card .password-form[data-v-4224bd2a] .ant-alert{font-size:12px;padding:8px 12px}.profile-page .edit-card .notification-settings-form[data-v-4224bd2a] .ant-alert{font-size:12px;padding:8px 12px;margin-bottom:16px!important}.profile-page .edit-card .notification-settings-form[data-v-4224bd2a] .ant-form{max-width:100%}.profile-page .edit-card .notification-settings-form[data-v-4224bd2a] .ant-checkbox-group .ant-row{margin-left:0!important;margin-right:0!important}.profile-page .edit-card .notification-settings-form[data-v-4224bd2a] .ant-checkbox-group .ant-row .ant-col{padding-left:0!important;padding-right:8px!important}.profile-page .edit-card .notification-settings-form[data-v-4224bd2a] .ant-checkbox-group .ant-checkbox-wrapper{font-size:13px;margin-bottom:6px}.profile-page .edit-card .notification-settings-form .field-hint[data-v-4224bd2a]{font-size:11px;-ms-flex-wrap:wrap;flex-wrap:wrap}.profile-page .edit-card .notification-settings-form[data-v-4224bd2a] .ant-form-item{margin-bottom:16px}.profile-page .edit-card .notification-settings-form[data-v-4224bd2a] .ant-form-item:last-child .ant-btn{width:100%;margin-bottom:8px}.profile-page .edit-card .notification-settings-form[data-v-4224bd2a] .ant-form-item:last-child .ant-btn+.ant-btn{margin-left:0!important}.profile-page .edit-card[data-v-4224bd2a] .ant-table-wrapper{overflow-x:auto}.profile-page .edit-card[data-v-4224bd2a] .ant-table-wrapper .ant-table{min-width:500px}.profile-page .referral-user-cell[data-v-4224bd2a]{gap:8px}.profile-page .referral-user-cell[data-v-4224bd2a] .ant-avatar{width:28px!important;height:28px!important;line-height:28px!important}.profile-page .referral-user-cell .user-info .nickname[data-v-4224bd2a]{font-size:13px}.profile-page .referral-user-cell .user-info .username[data-v-4224bd2a]{font-size:11px}}@media screen and (max-width:480px){.profile-page[data-v-4224bd2a]{padding:8px}.profile-page .page-header[data-v-4224bd2a]{margin-bottom:12px}.profile-page .page-header .page-title[data-v-4224bd2a]{font-size:18px;gap:8px}.profile-page .page-header .page-title .anticon[data-v-4224bd2a]{font-size:20px}.profile-page .credits-card .credits-body .credits-amount .amount-value[data-v-4224bd2a]{font-size:28px}.profile-page .credits-card .credits-body .credits-amount .amount-label[data-v-4224bd2a]{font-size:13px}.profile-page .credits-card .credits-actions .ant-btn[data-v-4224bd2a]{width:100%}.profile-page .referral-card .referral-body .referral-stats .stat-item .stat-value[data-v-4224bd2a]{font-size:20px}.profile-page .edit-card[data-v-4224bd2a] .ant-tabs-nav .ant-tabs-tab{padding:8px 10px;font-size:12px}.profile-page .edit-card .notification-settings-form[data-v-4224bd2a] .ant-checkbox-group .ant-row .ant-col{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}}.profile-exchange-modal .exchange-account-form .egress-ip-block{width:100%}.profile-exchange-modal .exchange-account-form .egress-ip-row{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:6px}.profile-exchange-modal .exchange-account-form .egress-ip-refresh-row{margin-top:4px}.profile-exchange-modal .exchange-account-form .egress-ip-line{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px;margin-bottom:10px}.profile-exchange-modal .exchange-account-form .egress-ip-kind{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;min-width:42px;font-size:12px;color:rgba(0,0,0,.55)}.profile-exchange-modal .exchange-account-form .egress-ip-value{-webkit-box-flex:1;-ms-flex:1 1 160px;flex:1 1 160px;min-width:0;font-family:Consolas,ui-monospace,monospace;font-size:12px;padding:6px 10px;border-radius:4px;border:1px solid #d9d9d9;background:#fafafa;color:#262626;word-break:break-all}.profile-exchange-modal .exchange-account-form .exchange-demo-checkbox-label{color:rgba(0,0,0,.85)}.profile-exchange-modal .exchange-account-form .exchange-demo-hint{margin-top:6px}.profile-exchange-modal--dark .ant-modal-content{background:#1c1c1c;-webkit-box-shadow:0 8px 32px rgba(0,0,0,.45);box-shadow:0 8px 32px rgba(0,0,0,.45)}.profile-exchange-modal--dark .ant-modal-header{background:#1c1c1c;border-bottom:1px solid #2a2a2a}.profile-exchange-modal--dark .ant-modal-title{color:#e0e6ed}.profile-exchange-modal--dark .ant-modal-close{color:#8b949e}.profile-exchange-modal--dark .ant-modal-body,.profile-exchange-modal--dark .ant-modal-close:hover{color:#c9d1d9}.profile-exchange-modal--dark .ant-modal-footer{background:#1c1c1c;border-top:1px solid #2a2a2a}.profile-exchange-modal--dark .exchange-account-form .ant-form-item-label>label{color:#c9d1d9}.profile-exchange-modal--dark .exchange-account-form .ant-form-item-explain,.profile-exchange-modal--dark .exchange-account-form .ant-form-item-extra{color:#8b949e}.profile-exchange-modal--dark .exchange-account-form .ant-input,.profile-exchange-modal--dark .exchange-account-form .ant-input-number,.profile-exchange-modal--dark .exchange-account-form .ant-input-number-input,.profile-exchange-modal--dark .exchange-account-form .ant-input-password .ant-input{background:#141414!important;border-color:#2a2a2a!important;color:#c9d1d9!important}.profile-exchange-modal--dark .exchange-account-form .ant-input-password-icon{color:#8b949e}.profile-exchange-modal--dark .exchange-account-form .ant-input-number-handler-wrap{background:#141414;border-left-color:#2a2a2a}.profile-exchange-modal--dark .exchange-account-form .ant-input-number-handler-down-inner,.profile-exchange-modal--dark .exchange-account-form .ant-input-number-handler-up-inner{color:#8b949e}.profile-exchange-modal--dark .exchange-account-form .ant-select-selector{background:#141414!important;border-color:#2a2a2a!important;color:#c9d1d9!important}.profile-exchange-modal--dark .exchange-account-form .ant-select-selection-item,.profile-exchange-modal--dark .exchange-account-form .ant-select-selection-placeholder{color:#c9d1d9!important}.profile-exchange-modal--dark .exchange-account-form .ant-select-selection,.profile-exchange-modal--dark .exchange-account-form .ant-select-selection--single{background:#141414!important;border-color:#2a2a2a!important}.profile-exchange-modal--dark .exchange-account-form .ant-select-selection-placeholder,.profile-exchange-modal--dark .exchange-account-form .ant-select-selection-selected-value,.profile-exchange-modal--dark .exchange-account-form .ant-select-selection__rendered{color:#c9d1d9!important}.profile-exchange-modal--dark .exchange-account-form .ant-select-arrow{color:#8b949e}.profile-exchange-modal--dark .exchange-account-form .ant-checkbox-wrapper,.profile-exchange-modal--dark .exchange-account-form .ant-checkbox-wrapper span{color:#c9d1d9}.profile-exchange-modal--dark .exchange-account-form .exchange-demo-checkbox-label{color:#c9d1d9!important}.profile-exchange-modal--dark .exchange-account-form .egress-ip-hint,.profile-exchange-modal--dark .exchange-account-form .exchange-demo-hint{color:#8b949e!important}.profile-exchange-modal--dark .exchange-account-form .egress-ip-value{border-color:#2a2a2a!important;background:#141414!important;color:#e0e6ed!important}.profile-exchange-modal--dark .exchange-account-form a.egress-ip-action{color:#58a6ff}.profile-exchange-modal--dark .exchange-account-form .egress-ip-kind{color:#8b949e!important}.profile-exchange-modal--dark .exchange-account-form .ant-alert{background:rgba(250,173,20,.12);border-color:rgba(250,173,20,.45)}.profile-exchange-modal--dark .exchange-account-form .ant-alert-message{color:#ffc53d}.profile-exchange-modal--dark .exchange-account-form .ant-alert-description{color:#8b949e}.profile-exchange-modal--dark .exchange-account-form .ant-alert-icon{color:#faad14}.profile-exchange-modal--dark .exchange-account-form .field-hint{color:#8b949e;margin-top:6px;font-size:12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:6px}.profile-exchange-modal--dark .exchange-account-form .field-hint .anticon{color:#8b949e;margin-top:2px}.profile-exchange-modal--dark .exchange-account-form .test-result-msg{color:#c9d1d9}.profile-exchange-modal--dark .exchange-account-form .test-result-msg.success{color:#73d13d}.profile-exchange-modal--dark .exchange-account-form .test-result-msg.error{color:#ff7875}.profile-exchange-select-dropdown-dark.ant-select-dropdown{background:#1c1c1c}.profile-exchange-select-dropdown-dark.ant-select-dropdown .ant-select-dropdown-menu-item{color:#c9d1d9}.profile-exchange-select-dropdown-dark.ant-select-dropdown .ant-select-dropdown-menu-item:hover{background:#2a2a2a}.profile-exchange-select-dropdown-dark.ant-select-dropdown .ant-select-dropdown-menu-item-selected{background:#2a2a2a!important;color:#e0e6ed;font-weight:500}.profile-exchange-select-dropdown-dark.ant-select-dropdown .ant-select-dropdown-menu-item-group-title{color:#8b949e!important;font-size:12px}.profile-exchange-select-dropdown-dark.ant-select-dropdown .ant-select-dropdown-menu-item,.profile-exchange-select-dropdown-dark.ant-select-dropdown .ant-select-dropdown-menu-item-selected{color:#c9d1d9!important}.profile-exchange-select-dropdown-dark.ant-select-dropdown .ant-empty-description{color:#8b949e} \ No newline at end of file diff --git a/frontend/dist/css/472.e7ead240.css b/frontend/dist/css/472.e7ead240.css deleted file mode 100644 index 2b4c6f3..0000000 --- a/frontend/dist/css/472.e7ead240.css +++ /dev/null @@ -1 +0,0 @@ -.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}} \ No newline at end of file diff --git a/frontend/dist/css/488.c66b70a6.css b/frontend/dist/css/488.c66b70a6.css deleted file mode 100644 index 07a455f..0000000 --- a/frontend/dist/css/488.c66b70a6.css +++ /dev/null @@ -1 +0,0 @@ -.quick-trade-drawer[data-v-0d547552] .ant-drawer-body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:100%;overflow-y:auto}.qt-header[data-v-0d547552]{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:16px 20px 12px;border-bottom:1px solid #f0f0f0}.qt-header .qt-header-left[data-v-0d547552],.qt-header[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.qt-header .qt-header-left[data-v-0d547552]{gap:8px}.qt-header .qt-header-left .qt-icon[data-v-0d547552]{font-size:20px;color:#1890ff}.qt-header .qt-header-left .qt-header-title[data-v-0d547552]{font-size:16px;font-weight:600}.qt-header .qt-close[data-v-0d547552]{font-size:16px;cursor:pointer;color:#999}.qt-header .qt-close[data-v-0d547552]:hover{color:#333}.qt-symbol-bar[data-v-0d547552]{padding:12px 20px;background:linear-gradient(135deg,#f6f8fc,#eef2f8);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:8px}.qt-symbol-bar .qt-symbol-selector[data-v-0d547552],.qt-symbol-bar .qt-symbol-selector[data-v-0d547552] .ant-select{width:100%}.qt-symbol-bar .qt-symbol-selector[data-v-0d547552] .ant-select-selection{border-radius:6px;border:1px solid #d9d9d9}.qt-symbol-bar .qt-price-display[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.qt-symbol-bar .qt-price-display .qt-current-price[data-v-0d547552]{font-size:16px;font-weight:600;color:#333}.qt-symbol-option[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.qt-symbol-option .qt-symbol-option-name[data-v-0d547552]{font-weight:600;font-size:14px}.qt-symbol-option .qt-symbol-option-desc[data-v-0d547552]{color:#999;font-size:12px}.qt-section[data-v-0d547552]{padding:8px 20px}.qt-section .qt-label[data-v-0d547552]{font-size:12px;color:#999;margin-bottom:4px;font-weight:500}.qt-section .qt-crypto-hint[data-v-0d547552]{font-size:10px;color:#faad14;background:rgba(250,173,20,.1);padding:1px 6px;border-radius:4px;margin-left:4px}.qt-balance[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;margin-top:6px;font-size:12px}.qt-balance .qt-balance-label[data-v-0d547552]{color:#999}.qt-balance .qt-balance-value[data-v-0d547552]{color:#52c41a;font-weight:600}.qt-direction-toggle[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:8px}.qt-direction-toggle .qt-dir-btn[data-v-0d547552]{-webkit-box-flex:1;-ms-flex:1;flex:1;padding:10px;text-align:center;border-radius:8px;font-weight:600;font-size:14px;cursor:pointer;-webkit-transition:all .2s;transition:all .2s;border:2px solid transparent;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;gap:6px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.qt-direction-toggle .qt-dir-long[data-v-0d547552]{color:#52c41a;background:rgba(82,196,26,.06);border-color:rgba(82,196,26,.2)}.qt-direction-toggle .qt-dir-long.active[data-v-0d547552]{background:#52c41a;color:#fff;border-color:#52c41a;-webkit-box-shadow:0 4px 12px rgba(82,196,26,.3);box-shadow:0 4px 12px rgba(82,196,26,.3)}.qt-direction-toggle .qt-dir-long[data-v-0d547552]:hover:not(.active){border-color:#52c41a}.qt-direction-toggle .qt-dir-short[data-v-0d547552]{color:#f5222d;background:rgba(245,34,45,.06);border-color:rgba(245,34,45,.2)}.qt-direction-toggle .qt-dir-short.active[data-v-0d547552]{background:#f5222d;color:#fff;border-color:#f5222d;-webkit-box-shadow:0 4px 12px rgba(245,34,45,.3);box-shadow:0 4px 12px rgba(245,34,45,.3)}.qt-direction-toggle .qt-dir-short[data-v-0d547552]:hover:not(.active){border-color:#f5222d}.qt-quick-amounts[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:6px;margin-top:6px}.qt-quick-amounts button[data-v-0d547552]{-webkit-box-flex:1;-ms-flex:1;flex:1;font-size:12px}.qt-leverage-row[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.qt-tpsl-row[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px}.qt-tpsl-row .qt-tpsl-item[data-v-0d547552]{-webkit-box-flex:1;-ms-flex:1;flex:1}.qt-submit-section[data-v-0d547552]{padding:12px 20px}.qt-submit-section .qt-submit-btn[data-v-0d547552]{height:48px;font-size:16px;font-weight:700;border-radius:8px;letter-spacing:.5px}.qt-submit-section .qt-btn-long[data-v-0d547552]{background:#52c41a!important;border-color:#52c41a!important}.qt-submit-section .qt-btn-long[data-v-0d547552]:hover{background:#73d13d!important}.qt-submit-section .qt-btn-long[data-v-0d547552]:active{background:#389e0d!important}.qt-submit-section .qt-btn-short[data-v-0d547552]{background:#f5222d!important;border-color:#f5222d!important}.qt-submit-section .qt-btn-short[data-v-0d547552]:hover{background:#ff4d4f!important}.qt-submit-section .qt-btn-short[data-v-0d547552]:active{background:#cf1322!important}.qt-position-section[data-v-0d547552]{padding:8px 20px 12px}.qt-position-section .qt-section-header[data-v-0d547552]{font-size:13px;font-weight:600;color:#666;margin-bottom:8px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}.qt-history-section[data-v-0d547552]{padding:8px 20px 12px}.qt-history-section[data-v-0d547552] .ant-collapse{background:transparent;border:none}.qt-history-section[data-v-0d547552] .ant-collapse-item{border:none}.qt-history-section[data-v-0d547552] .ant-collapse-header{padding:0!important;cursor:pointer}.qt-history-section[data-v-0d547552] .ant-collapse-header:hover{opacity:.8}.qt-history-section[data-v-0d547552] .ant-collapse-content{border:none;background:transparent}.qt-history-section[data-v-0d547552] .ant-collapse-content-box{padding:8px 0 0 0!important}.qt-history-section .qt-section-header[data-v-0d547552]{font-size:13px;font-weight:600;color:#666;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.qt-history-section .qt-history-count[data-v-0d547552]{font-size:12px;color:#999;font-weight:400}.qt-position-card[data-v-0d547552]{background:#fafafa;border-radius:8px;padding:10px 12px;border-left:3px solid #d9d9d9}.qt-position-card.long[data-v-0d547552]{border-left-color:#52c41a}.qt-position-card.short[data-v-0d547552]{border-left-color:#f5222d}.qt-position-card .qt-pos-row[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;font-size:13px;padding:2px 0}.qt-position-card .qt-pos-row span[data-v-0d547552]:first-child{color:#999}.qt-position-empty[data-v-0d547552]{background:#fafafa;border-radius:8px;padding:20px 12px;text-align:center;border:1px dashed #d9d9d9}.qt-green[data-v-0d547552]{color:#52c41a!important}.qt-red[data-v-0d547552]{color:#f5222d!important}.qt-trade-list .qt-trade-item[data-v-0d547552]{padding:6px 0;border-bottom:1px solid #f5f5f5}.qt-trade-list .qt-trade-item[data-v-0d547552]:last-child{border-bottom:none}.qt-trade-list .qt-trade-item .qt-trade-main[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}.qt-trade-list .qt-trade-item .qt-trade-main .qt-trade-symbol[data-v-0d547552]{font-weight:600;font-size:13px}.qt-trade-list .qt-trade-item .qt-trade-main .qt-trade-amount[data-v-0d547552]{margin-left:auto;font-size:13px}.qt-trade-list .qt-trade-item .qt-trade-meta[data-v-0d547552]{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;margin-top:2px}.qt-trade-list .qt-trade-item .qt-trade-meta .qt-trade-time[data-v-0d547552]{font-size:11px;color:#bbb}.theme-dark .qt-header[data-v-0d547552]{border-bottom-color:#303030}.theme-dark .qt-header .qt-header-title[data-v-0d547552]{color:#e0e0e0}.theme-dark .qt-header .qt-close[data-v-0d547552]{color:#666}.theme-dark .qt-header .qt-close[data-v-0d547552]:hover{color:#bbb}.theme-dark .qt-symbol-bar[data-v-0d547552]{background:linear-gradient(135deg,#1a1f2e,#141824)}.theme-dark .qt-symbol-bar .qt-current-price[data-v-0d547552]{color:#e0e0e0}.theme-dark .qt-symbol-bar[data-v-0d547552] .ant-select-selection{background:#1a1f2e;border-color:#303030;color:#e0e0e0}.theme-dark .qt-symbol-bar[data-v-0d547552] .ant-select-selection__placeholder{color:#666}.theme-dark .qt-symbol-option .qt-symbol-option-name[data-v-0d547552]{color:#e0e0e0}.theme-dark .qt-symbol-option .qt-symbol-option-desc[data-v-0d547552]{color:#999}.theme-dark .qt-section .qt-label[data-v-0d547552]{color:#777}.theme-dark .qt-position-card[data-v-0d547552]{background:#1a1f2e}.theme-dark .qt-position-card .qt-pos-row span[data-v-0d547552]:first-child{color:#777}.theme-dark .qt-history-section .qt-section-header[data-v-0d547552],.theme-dark .qt-position-card .qt-pos-row span[data-v-0d547552]:last-child{color:#ccc}.theme-dark .qt-history-section .qt-history-count[data-v-0d547552]{color:#888}.theme-dark .qt-history-section[data-v-0d547552] .ant-collapse{background:transparent!important;color:#ccc}.theme-dark .qt-history-section[data-v-0d547552] .ant-collapse .ant-collapse-header{color:#ccc!important}.theme-dark .qt-history-section[data-v-0d547552] .ant-collapse .ant-collapse-header:hover{opacity:.8}.theme-dark .qt-history-section[data-v-0d547552] .ant-collapse .ant-collapse-content{background:transparent;color:#ccc}.theme-dark .qt-trade-item[data-v-0d547552]{border-bottom-color:#2a2a2a!important}.theme-dark .qt-trade-item .qt-trade-symbol[data-v-0d547552]{color:#e0e0e0}.theme-dark .qt-trade-item .qt-trade-amount[data-v-0d547552]{color:#ccc}.theme-dark[data-v-0d547552] .ant-collapse{background:transparent!important;color:#ccc}.theme-dark[data-v-0d547552] .ant-collapse .ant-collapse-header{color:#ccc!important}.theme-dark[data-v-0d547552] .ant-collapse .ant-collapse-content{background:transparent;color:#ccc}.theme-dark[data-v-0d547552] .ant-drawer-content{background:#141414}.theme-dark[data-v-0d547552] .ant-input-number,.theme-dark[data-v-0d547552] .ant-select-selection{background:#1a1f2e;border-color:#303030;color:#e0e0e0}.theme-dark[data-v-0d547552] .ant-radio-group .ant-radio-button-wrapper{background:#1a1f2e;border-color:#303030;color:#ccc}.theme-dark[data-v-0d547552] .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{background:#1890ff;border-color:#1890ff;color:#fff}.theme-dark[data-v-0d547552] .ant-slider-rail{background:#303030}.theme-dark[data-v-0d547552] .ant-slider-track{background:#1890ff}.polymarket-analysis-modal .input-section .input-actions[data-v-67e891d2]{margin-top:12px}.polymarket-analysis-modal .result-section .market-info[data-v-67e891d2]{margin-bottom:24px}.polymarket-analysis-modal .result-section .market-info h3[data-v-67e891d2]{margin-bottom:12px;font-size:18px;font-weight:600}.polymarket-analysis-modal .result-section .market-info .market-meta[data-v-67e891d2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:16px;-ms-flex-wrap:wrap;flex-wrap:wrap}.polymarket-analysis-modal .result-section .market-info .market-meta .meta-item[data-v-67e891d2]{color:rgba(0,0,0,.65);font-size:14px}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison[data-v-67e891d2]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:16px;margin:24px 0}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item[data-v-67e891d2]{-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center;padding:16px;background:#f5f5f5;border-radius:4px}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-label[data-v-67e891d2]{font-size:12px;color:rgba(0,0,0,.65);margin-bottom:8px}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-value[data-v-67e891d2]{font-size:24px;font-weight:600}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-value.ai-prob[data-v-67e891d2]{color:#1890ff}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-value.divergence-positive[data-v-67e891d2]{color:#52c41a}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-value.divergence-negative[data-v-67e891d2]{color:#ff4d4f}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-value.divergence-neutral[data-v-67e891d2]{color:rgba(0,0,0,.65)}.polymarket-analysis-modal .result-section .analysis-result .recommendation-section[data-v-67e891d2]{margin:24px 0}.polymarket-analysis-modal .result-section .analysis-result .recommendation-section .rec-card[data-v-67e891d2]{text-align:center;padding:16px;background:#f5f5f5;border-radius:4px}.polymarket-analysis-modal .result-section .analysis-result .recommendation-section .rec-card .rec-label[data-v-67e891d2]{font-size:12px;color:rgba(0,0,0,.65);margin-bottom:8px}.polymarket-analysis-modal .result-section .analysis-result .recommendation-section .rec-card .rec-value[data-v-67e891d2]{font-size:24px;font-weight:600;color:#1890ff}.polymarket-analysis-modal .result-section .analysis-result .key-factors-section[data-v-67e891d2],.polymarket-analysis-modal .result-section .analysis-result .reasoning-section[data-v-67e891d2]{margin:24px 0}.polymarket-analysis-modal .result-section .analysis-result .key-factors-section h4[data-v-67e891d2],.polymarket-analysis-modal .result-section .analysis-result .reasoning-section h4[data-v-67e891d2]{margin-bottom:12px;font-size:16px;font-weight:600}.polymarket-analysis-modal .result-section .analysis-result .key-factors-section .reasoning-text[data-v-67e891d2],.polymarket-analysis-modal .result-section .analysis-result .reasoning-section .reasoning-text[data-v-67e891d2]{line-height:1.8;color:rgba(0,0,0,.85);white-space:pre-wrap}.polymarket-analysis-modal .result-section .result-actions[data-v-67e891d2]{margin-top:24px;text-align:right}.polymarket-analysis-modal .loading-section[data-v-67e891d2]{text-align:center;padding:40px 0}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-tabs-bar{border-bottom-color:#2a2a2a}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-tabs-tab{color:#a3a3a3!important}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-tabs-tab-active{color:#d4d4d4!important}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-tabs-ink-bar{background:#58a6ff!important}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-divider{color:#d4d4d4;border-top-color:#2a2a2a}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-divider-inner-text{color:#d4d4d4!important}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-input,.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-input-affix-wrapper,.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-input-number,.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-input-textarea textarea{background:#141414!important;border-color:#2a2a2a!important;color:#d4d4d4!important}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-table{background:#1c1c1c;color:#d4d4d4}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-table-thead>tr>th{background:#252525;color:#d4d4d4;border-bottom-color:#2a2a2a}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-table-tbody>tr>td{background:#1c1c1c;color:#d4d4d4;border-bottom-color:#2a2a2a}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-btn-link{color:#58a6ff!important}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-alert{background:#1c1c1c;border-color:#2a2a2a}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-alert-message{color:#d4d4d4!important}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-alert-description{color:#a3a3a3!important}.polymarket-analysis-modal.theme-dark .market-info h3[data-v-67e891d2]{color:#d4d4d4}.polymarket-analysis-modal.theme-dark .market-info .market-meta .meta-item[data-v-67e891d2]{color:#a3a3a3}.polymarket-analysis-modal.theme-dark .analysis-result .probability-comparison .prob-item[data-v-67e891d2]{background:#252525;border:1px solid #2a2a2a}.polymarket-analysis-modal.theme-dark .analysis-result .probability-comparison .prob-item .prob-label[data-v-67e891d2]{color:#a3a3a3}.polymarket-analysis-modal.theme-dark .analysis-result .probability-comparison .prob-item .prob-value[data-v-67e891d2]{color:#e5e5e5}.polymarket-analysis-modal.theme-dark .analysis-result .probability-comparison .prob-item .prob-value.divergence-neutral[data-v-67e891d2]{color:#b3b3b3}.polymarket-analysis-modal.theme-dark .analysis-result .recommendation-section .rec-card[data-v-67e891d2]{background:#252525;border:1px solid #2a2a2a}.polymarket-analysis-modal.theme-dark .analysis-result .recommendation-section .rec-card .rec-label[data-v-67e891d2]{color:#a3a3a3}.polymarket-analysis-modal.theme-dark .analysis-result .recommendation-section .rec-card .rec-value[data-v-67e891d2]{color:#e5e5e5}.polymarket-analysis-modal.theme-dark .analysis-result .key-factors-section .reasoning-text[data-v-67e891d2],.polymarket-analysis-modal.theme-dark .analysis-result .key-factors-section h4[data-v-67e891d2],.polymarket-analysis-modal.theme-dark .analysis-result .reasoning-section .reasoning-text[data-v-67e891d2],.polymarket-analysis-modal.theme-dark .analysis-result .reasoning-section h4[data-v-67e891d2]{color:#d4d4d4}.ai-asset-analysis-page[data-v-443699fa]{padding:16px;min-height:calc(100vh - 120px);background:#f0f2f5}.ai-asset-analysis-page .opp-section[data-v-443699fa]{margin-bottom:12px}.ai-asset-analysis-page .opp-section .opp-header[data-v-443699fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:8px;padding:0 4px}.ai-asset-analysis-page .opp-section .opp-header .opp-title[data-v-443699fa]{font-size:14px;font-weight:600;color:#1a1a2e}.ai-asset-analysis-page .opp-section .opp-header .opp-header-right[data-v-443699fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.ai-asset-analysis-page .opp-section .opp-header .opp-update-hint[data-v-443699fa]{font-size:12px;color:#8c8c8c}.ai-asset-analysis-page .opp-section .opp-carousel-wrapper[data-v-443699fa]{overflow:hidden;position:relative;border-radius:10px}.ai-asset-analysis-page .opp-section .opp-carousel-wrapper[data-v-443699fa]:after,.ai-asset-analysis-page .opp-section .opp-carousel-wrapper[data-v-443699fa]:before{content:"";position:absolute;top:0;bottom:0;width:40px;z-index:2;pointer-events:none}.ai-asset-analysis-page .opp-section .opp-carousel-wrapper[data-v-443699fa]:before{left:0;background:-webkit-gradient(linear,left top,right top,from(#f0f2f5),to(transparent));background:linear-gradient(90deg,#f0f2f5,transparent)}.ai-asset-analysis-page .opp-section .opp-carousel-wrapper[data-v-443699fa]:after{right:0;background:-webkit-gradient(linear,right top,left top,from(#f0f2f5),to(transparent));background:linear-gradient(270deg,#f0f2f5,transparent)}.ai-asset-analysis-page .opp-section .opp-track[data-v-443699fa]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:10px;-webkit-animation:opp-scroll-left-443699fa 60s linear infinite;animation:opp-scroll-left-443699fa 60s linear infinite;width:-webkit-max-content;width:-moz-max-content;width:max-content;padding:4px 0}.ai-asset-analysis-page .opp-section .opp-track.paused[data-v-443699fa]{-webkit-animation-play-state:paused;animation-play-state:paused}@-webkit-keyframes opp-scroll-left-443699fa{0%{-webkit-transform:translateX(0);transform:translateX(0)}to{-webkit-transform:translateX(-50%);transform:translateX(-50%)}}@keyframes opp-scroll-left-443699fa{0%{-webkit-transform:translateX(0);transform:translateX(0)}to{-webkit-transform:translateX(-50%);transform:translateX(-50%)}}.ai-asset-analysis-page .opp-section .opp-card[data-v-443699fa]{width:190px;background:#fff;border-radius:10px;padding:12px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.06);box-shadow:0 1px 3px rgba(0,0,0,.06);cursor:pointer;-webkit-transition:all .2s;transition:all .2s;border-left:3px solid #d9d9d9;-ms-flex-negative:0;flex-shrink:0}.ai-asset-analysis-page .opp-section .opp-card.is-prediction-market[data-v-443699fa]{width:280px;min-height:160px}.ai-asset-analysis-page .opp-section .opp-card.bullish[data-v-443699fa]{border-left-color:#52c41a}.ai-asset-analysis-page .opp-section .opp-card.bearish[data-v-443699fa]{border-left-color:#ff4d4f}.ai-asset-analysis-page .opp-section .opp-card.market-predictionmarket[data-v-443699fa]{border-left-color:#13c2c2;background:linear-gradient(135deg,#fff,#f0f9ff)}.ai-asset-analysis-page .opp-section .opp-card[data-v-443699fa]:hover{-webkit-transform:translateY(-2px);transform:translateY(-2px);-webkit-box-shadow:0 4px 12px rgba(0,0,0,.1);box-shadow:0 4px 12px rgba(0,0,0,.1)}.ai-asset-analysis-page .opp-section .opp-card .opp-top[data-v-443699fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:6px;gap:8px}.ai-asset-analysis-page .opp-section .opp-card .opp-symbol[data-v-443699fa]{font-weight:700;font-size:14px;color:#1a1a2e;-webkit-box-flex:1;-ms-flex:1;flex:1;word-break:break-word;line-height:1.4}.ai-asset-analysis-page .opp-section .opp-card .opp-symbol.prediction-title[data-v-443699fa]{font-size:13px;font-weight:600;line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}.ai-asset-analysis-page .opp-section .opp-card .opp-market-tag[data-v-443699fa]{font-size:11px;-ms-flex-negative:0;flex-shrink:0;margin-left:auto}.ai-asset-analysis-page .opp-section .opp-card .opp-price[data-v-443699fa]{font-size:13px;color:#595959}.ai-asset-analysis-page .opp-section .opp-card .opp-change[data-v-443699fa]{font-size:15px;font-weight:600}.ai-asset-analysis-page .opp-section .opp-card .opp-change.up[data-v-443699fa]{color:#52c41a}.ai-asset-analysis-page .opp-section .opp-card .opp-change.down[data-v-443699fa]{color:#ff4d4f}.ai-asset-analysis-page .opp-section .opp-card .opp-signal[data-v-443699fa]{margin-top:4px}.ai-asset-analysis-page .opp-section .opp-card .opp-reason[data-v-443699fa]{font-size:11px;color:#8c8c8c;margin-top:4px;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.ai-asset-analysis-page .opp-section .opp-card .opp-actions[data-v-443699fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-top:6px;gap:6px}.ai-asset-analysis-page .opp-section .opp-card .opp-action[data-v-443699fa]{font-size:12px;color:#1890ff;font-weight:500;cursor:pointer}.ai-asset-analysis-page .opp-section .opp-card .opp-action[data-v-443699fa]:hover{text-decoration:underline}.ai-asset-analysis-page .opp-section .opp-card .opp-trade-btn[data-v-443699fa]{font-size:11px;color:#fff;background:linear-gradient(135deg,#1890ff,#722ed1);padding:2px 8px;border-radius:10px;font-weight:600;cursor:pointer;white-space:nowrap;-webkit-transition:all .2s;transition:all .2s}.ai-asset-analysis-page .opp-section .opp-card .opp-trade-btn[data-v-443699fa]:hover{-webkit-transform:scale(1.05);transform:scale(1.05);-webkit-box-shadow:0 2px 8px rgba(114,46,209,.3);box-shadow:0 2px 8px rgba(114,46,209,.3)}.ai-asset-analysis-page .qt-floating-btn[data-v-443699fa]{position:fixed;right:24px;bottom:80px;width:52px;height:52px;border-radius:50%;background:linear-gradient(135deg,#1890ff,#722ed1);color:#fff;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;font-size:24px;cursor:pointer;-webkit-box-shadow:0 4px 16px rgba(24,144,255,.4);box-shadow:0 4px 16px rgba(24,144,255,.4);z-index:1000;-webkit-transition:all .3s;transition:all .3s;-webkit-animation:qt-float-pulse-443699fa 2s ease-in-out infinite;animation:qt-float-pulse-443699fa 2s ease-in-out infinite}.ai-asset-analysis-page .qt-floating-btn[data-v-443699fa]:hover{-webkit-transform:scale(1.1);transform:scale(1.1);-webkit-box-shadow:0 6px 24px rgba(114,46,209,.5);box-shadow:0 6px 24px rgba(114,46,209,.5)}@-webkit-keyframes qt-float-pulse-443699fa{0%,to{-webkit-transform:translateY(0);transform:translateY(0)}50%{-webkit-transform:translateY(-4px);transform:translateY(-4px)}}@keyframes qt-float-pulse-443699fa{0%,to{-webkit-transform:translateY(0);transform:translateY(0)}50%{-webkit-transform:translateY(-4px);transform:translateY(-4px)}}.ai-asset-analysis-page .workspace-card[data-v-443699fa]{border-radius:12px;-webkit-box-shadow:0 1px 4px rgba(0,0,0,.06);box-shadow:0 1px 4px rgba(0,0,0,.06)}.ai-asset-analysis-page .workspace-card[data-v-443699fa] .ant-card-body{padding:0}.ai-asset-analysis-page .workspace-card .workspace-tabs[data-v-443699fa] .ant-tabs-bar{margin-bottom:0;padding:0 16px;border-bottom:1px solid #f0f0f0}.ai-asset-analysis-page .workspace-card .workspace-tabs[data-v-443699fa] .ant-tabs-tab{font-size:15px;padding:14px 16px}.ai-asset-analysis-page .workspace-card .tab-body[data-v-443699fa] .ai-analysis-container.embedded,.ai-asset-analysis-page .workspace-card .tab-body[data-v-443699fa] .portfolio-container.embedded{border-radius:0;overflow:hidden}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content[data-v-443699fa]{padding:40px 20px;text-align:center}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content .polymarket-placeholder .placeholder-icon[data-v-443699fa]{font-size:64px;color:#1890ff;margin-bottom:24px}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content .polymarket-placeholder h3[data-v-443699fa]{font-size:20px;font-weight:600;margin-bottom:12px;color:rgba(0,0,0,.85)}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content .polymarket-placeholder p[data-v-443699fa]{font-size:14px;color:rgba(0,0,0,.65);margin-bottom:24px}.ai-asset-analysis-page.theme-dark[data-v-443699fa]{background:#141414}.ai-asset-analysis-page.theme-dark .opp-section .opp-header .opp-title[data-v-443699fa]{color:#e6edf3}.ai-asset-analysis-page.theme-dark .opp-section .opp-header .opp-update-hint[data-v-443699fa]{color:#8b949e}.ai-asset-analysis-page.theme-dark .opp-section .opp-carousel-wrapper[data-v-443699fa]:before{background:-webkit-gradient(linear,left top,right top,from(#141414),to(transparent));background:linear-gradient(90deg,#141414,transparent)}.ai-asset-analysis-page.theme-dark .opp-section .opp-carousel-wrapper[data-v-443699fa]:after{background:-webkit-gradient(linear,right top,left top,from(#141414),to(transparent));background:linear-gradient(270deg,#141414,transparent)}.ai-asset-analysis-page.theme-dark .opp-section .opp-card[data-v-443699fa]{background:#1c1c1c;border-color:#2a2a2a;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.3);box-shadow:0 1px 3px rgba(0,0,0,.3)}.ai-asset-analysis-page.theme-dark .opp-section .opp-card.market-predictionmarket[data-v-443699fa]{background:linear-gradient(135deg,#1c1c1c,#141414);border-left-color:#13c2c2}.ai-asset-analysis-page.theme-dark .opp-section .opp-card .opp-symbol[data-v-443699fa]{color:#e6edf3}.ai-asset-analysis-page.theme-dark .opp-section .opp-card .opp-price[data-v-443699fa],.ai-asset-analysis-page.theme-dark .opp-section .opp-card .opp-reason[data-v-443699fa]{color:#8b949e}.ai-asset-analysis-page.theme-dark .opp-section .opp-card .opp-action[data-v-443699fa]{color:#58a6ff}.ai-asset-analysis-page.theme-dark .opp-section .opp-card .opp-trade-btn[data-v-443699fa]{background:linear-gradient(135deg,#58a6ff,#8957e5)}.ai-asset-analysis-page.theme-dark .opp-section .opp-card[data-v-443699fa]:hover{-webkit-box-shadow:0 4px 12px rgba(0,0,0,.4);box-shadow:0 4px 12px rgba(0,0,0,.4)}.ai-asset-analysis-page.theme-dark .workspace-card[data-v-443699fa]{background:#1c1c1c;border-color:#2a2a2a}.ai-asset-analysis-page.theme-dark .workspace-card .workspace-tabs[data-v-443699fa] .ant-tabs-bar{border-bottom-color:#2a2a2a}.ai-asset-analysis-page.theme-dark .workspace-card .workspace-tabs[data-v-443699fa] .ant-tabs-tab{color:#8b949e}.ai-asset-analysis-page.theme-dark .workspace-card .workspace-tabs[data-v-443699fa] .ant-tabs-tab:hover{color:#c9d1d9}.ai-asset-analysis-page.theme-dark .workspace-card .workspace-tabs[data-v-443699fa] .ant-tabs-tab-active{color:#58a6ff}.ai-asset-analysis-page.theme-dark .workspace-card .workspace-tabs[data-v-443699fa] .ant-tabs-ink-bar{background-color:#58a6ff}.ai-asset-analysis-page.theme-dark .workspace-card .polymarket-tab-content .polymarket-placeholder h3[data-v-443699fa]{color:#d4d4d4}.ai-asset-analysis-page.theme-dark .workspace-card .polymarket-tab-content .polymarket-placeholder p[data-v-443699fa]{color:#a3a3a3} \ No newline at end of file diff --git a/frontend/dist/css/662.ff086137.css b/frontend/dist/css/662.ff086137.css deleted file mode 100644 index cd4ae9d..0000000 --- a/frontend/dist/css/662.ff086137.css +++ /dev/null @@ -1 +0,0 @@ -.fast-analysis-report[data-v-75da11ec]{height:100%;overflow-y:auto;padding:20px;background:linear-gradient(135deg,#f5f7fa,#e4e8ec);border-radius:12px}.fast-analysis-report .loading-container[data-v-75da11ec]{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;min-height:400px;background:#fff;border-radius:12px}.fast-analysis-report .loading-container .loading-content-pro[data-v-75da11ec]{width:100%;max-width:400px;padding:40px}.fast-analysis-report .loading-container .loading-content-pro .loading-header[data-v-75da11ec]{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;gap:12px;margin-bottom:32px}.fast-analysis-report .loading-container .loading-content-pro .loading-header .loading-icon-pro[data-v-75da11ec]{font-size:28px;color:#1890ff}.fast-analysis-report .loading-container .loading-content-pro .loading-header .loading-title[data-v-75da11ec]{font-size:20px;font-weight:600;color:#1e293b}.fast-analysis-report .loading-container .loading-content-pro .progress-wrapper[data-v-75da11ec]{margin-bottom:24px;position:relative}.fast-analysis-report .loading-container .loading-content-pro .progress-wrapper .progress-text[data-v-75da11ec]{position:absolute;right:0;top:-24px;font-size:14px;font-weight:600;color:#1890ff}.fast-analysis-report .loading-container .loading-content-pro .current-step[data-v-75da11ec]{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;gap:8px;padding:12px 20px;background:#f0f5ff;border-radius:8px;margin-bottom:24px;color:#1890ff;font-size:14px;font-weight:500}.fast-analysis-report .loading-container .loading-content-pro .current-step .anticon[data-v-75da11ec]{font-size:16px}.fast-analysis-report .loading-container .loading-content-pro .steps-list[data-v-75da11ec]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:12px}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item[data-v-75da11ec]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;padding:10px 16px;background:#f8fafc;border-radius:8px;font-size:13px;color:#94a3b8;-webkit-transition:all .3s;transition:all .3s}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item .step-dot[data-v-75da11ec]{width:8px;height:8px;border-radius:50%;background:#e2e8f0;-webkit-transition:all .3s;transition:all .3s}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item .step-text[data-v-75da11ec]{-webkit-box-flex:1;-ms-flex:1;flex:1}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item .step-check[data-v-75da11ec]{color:#52c41a;font-size:14px}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item.active[data-v-75da11ec]{background:#e6f7ff;color:#1890ff;font-weight:500}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item.active .step-dot[data-v-75da11ec]{background:#1890ff;-webkit-box-shadow:0 0 0 3px rgba(24,144,255,.2);box-shadow:0 0 0 3px rgba(24,144,255,.2)}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item.done[data-v-75da11ec]{background:#f6ffed;color:#52c41a}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item.done .step-dot[data-v-75da11ec]{background:#52c41a}.fast-analysis-report .loading-container .loading-content-pro .loading-footer[data-v-75da11ec]{margin-top:24px;text-align:center}.fast-analysis-report .loading-container .loading-content-pro .loading-footer .elapsed-time[data-v-75da11ec]{font-size:13px;color:#94a3b8;font-family:SF Mono,Monaco,monospace}.fast-analysis-report .empty-container[data-v-75da11ec]{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;min-height:400px}.fast-analysis-report .empty-container .empty-content[data-v-75da11ec]{text-align:center}.fast-analysis-report .empty-container .empty-content .empty-icon[data-v-75da11ec]{font-size:64px;color:#d9d9d9}.fast-analysis-report .empty-container .empty-content .empty-title[data-v-75da11ec]{margin-top:16px;font-size:18px;font-weight:600;color:#262626}.fast-analysis-report .empty-container .empty-content .empty-hint[data-v-75da11ec]{margin-top:8px;color:#8c8c8c}.fast-analysis-report .result-container .decision-card[data-v-75da11ec]{background:#fff;border-radius:16px;padding:24px;margin-bottom:20px;-webkit-box-shadow:0 4px 12px rgba(0,0,0,.08);box-shadow:0 4px 12px rgba(0,0,0,.08);border-left:6px solid #1890ff}.fast-analysis-report .result-container .decision-card.decision-buy[data-v-75da11ec]{border-left-color:#52c41a;background:linear-gradient(135deg,#f6ffed,#fff)}.fast-analysis-report .result-container .decision-card.decision-sell[data-v-75da11ec]{border-left-color:#ff4d4f;background:linear-gradient(135deg,#fff2f0,#fff)}.fast-analysis-report .result-container .decision-card.decision-hold[data-v-75da11ec]{border-left-color:#faad14;background:linear-gradient(135deg,#fffbe6,#fff)}.fast-analysis-report .result-container .decision-card .decision-main[data-v-75da11ec]{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;margin-bottom:16px}.fast-analysis-report .result-container .decision-card .decision-main .decision-badge[data-v-75da11ec]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px}.fast-analysis-report .result-container .decision-card .decision-main .decision-badge .anticon[data-v-75da11ec]{font-size:32px}.fast-analysis-report .result-container .decision-card .decision-main .decision-badge .decision-text[data-v-75da11ec]{font-size:36px;font-weight:800;letter-spacing:2px}.fast-analysis-report .result-container .decision-card .decision-main .confidence-ring[data-v-75da11ec]{text-align:center}.fast-analysis-report .result-container .decision-card .decision-main .confidence-ring .confidence-value[data-v-75da11ec]{font-size:18px;font-weight:700}.fast-analysis-report .result-container .decision-card .decision-main .confidence-ring .confidence-label[data-v-75da11ec]{font-size:12px;color:#8c8c8c;margin-top:4px}.fast-analysis-report .result-container .decision-card .decision-summary[data-v-75da11ec]{font-size:16px;line-height:1.6;color:#595959;padding-top:16px;border-top:1px dashed #e8e8e8}.fast-analysis-report .result-container .decision-card .consensus-strip[data-v-75da11ec]{margin-top:14px;padding:12px 14px;border-radius:8px;background:rgba(24,144,255,.06);border:1px solid rgba(24,144,255,.2);font-size:13px;color:#434343}.fast-analysis-report .result-container .decision-card .consensus-strip .consensus-strip-title[data-v-75da11ec]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;font-weight:600;margin-bottom:8px;color:#1890ff}.fast-analysis-report .result-container .decision-card .consensus-strip .consensus-strip-metrics[data-v-75da11ec]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:12px 20px}.fast-analysis-report .result-container .decision-card .consensus-strip .consensus-strip-metrics .cm-item em[data-v-75da11ec]{font-style:normal;color:#8c8c8c;margin-right:6px}.fast-analysis-report .result-container .price-info-row[data-v-75da11ec]{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:20px}.fast-analysis-report .result-container .price-info-row .price-card[data-v-75da11ec]{background:#fff;border-radius:12px;padding:16px;text-align:center;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.06);box-shadow:0 2px 8px rgba(0,0,0,.06)}.fast-analysis-report .result-container .price-info-row .price-card .price-label[data-v-75da11ec]{font-size:12px;color:#8c8c8c;margin-bottom:8px}.fast-analysis-report .result-container .price-info-row .price-card .price-value[data-v-75da11ec]{font-size:18px;font-weight:700;color:#262626}.fast-analysis-report .result-container .price-info-row .price-card .price-value.positive[data-v-75da11ec]{color:#52c41a}.fast-analysis-report .result-container .price-info-row .price-card .price-value.negative[data-v-75da11ec]{color:#ff4d4f}.fast-analysis-report .result-container .price-info-row .price-card .price-hint[data-v-75da11ec]{font-size:10px;color:#bfbfbf;margin-top:6px;cursor:help}.fast-analysis-report .result-container .price-info-row .price-card .price-hint .anticon[data-v-75da11ec]{margin-right:2px}.fast-analysis-report .result-container .price-info-row .price-card .price-change[data-v-75da11ec]{font-size:14px;margin-top:4px;font-weight:600}.fast-analysis-report .result-container .price-info-row .price-card .price-change.positive[data-v-75da11ec]{color:#52c41a}.fast-analysis-report .result-container .price-info-row .price-card .price-change.negative[data-v-75da11ec]{color:#ff4d4f}.fast-analysis-report .result-container .price-info-row .price-card.current[data-v-75da11ec]{border-top:3px solid #1890ff}.fast-analysis-report .result-container .price-info-row .price-card.entry[data-v-75da11ec]{border-top:3px solid #722ed1}.fast-analysis-report .result-container .price-info-row .price-card.stop[data-v-75da11ec]{border-top:3px solid #ff4d4f}.fast-analysis-report .result-container .price-info-row .price-card.target[data-v-75da11ec]{border-top:3px solid #52c41a}.fast-analysis-report .result-container .trend-outlook-card[data-v-75da11ec]{background:#fff;border-radius:12px;padding:16px 20px;margin-bottom:20px;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.06);box-shadow:0 2px 8px rgba(0,0,0,.06);border-left:4px solid #722ed1}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-header[data-v-75da11ec]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;font-size:15px;font-weight:600;color:#262626;margin-bottom:10px}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-header .anticon[data-v-75da11ec]{color:#722ed1}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-summary[data-v-75da11ec]{font-size:13px;line-height:1.65;color:#595959;margin-bottom:14px;padding:10px 12px;background:#fafafa;border-radius:8px}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-grid[data-v-75da11ec]{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-item[data-v-75da11ec]{background:#fafafa;border-radius:8px;padding:10px 12px;text-align:center}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-item .to-label[data-v-75da11ec]{font-size:11px;color:#8c8c8c;margin-bottom:6px}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-item .to-trend[data-v-75da11ec]{font-size:14px;font-weight:700;margin-bottom:6px}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-item .to-trend.trend-bull[data-v-75da11ec]{color:#52c41a}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-item .to-trend.trend-bear[data-v-75da11ec]{color:#ff4d4f}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-item .to-trend.trend-neutral[data-v-75da11ec]{color:#faad14}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-item .to-meta[data-v-75da11ec]{font-size:11px;color:#8c8c8c;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:8px}@media (max-width:992px){.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-grid[data-v-75da11ec]{grid-template-columns:repeat(2,1fr)}}@media (max-width:576px){.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-grid[data-v-75da11ec]{grid-template-columns:1fr}}.fast-analysis-report .result-container .scores-row[data-v-75da11ec]{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:20px}.fast-analysis-report .result-container .scores-row .score-item[data-v-75da11ec]{background:#fff;border-radius:12px;padding:16px;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.06);box-shadow:0 2px 8px rgba(0,0,0,.06)}.fast-analysis-report .result-container .scores-row .score-item .score-header[data-v-75da11ec]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;font-size:14px;color:#595959;margin-bottom:12px}.fast-analysis-report .result-container .scores-row .score-item .score-header .anticon[data-v-75da11ec]{color:#1890ff}.fast-analysis-report .result-container .scores-row .score-item .score-value[data-v-75da11ec]{text-align:right;font-size:20px;font-weight:700;color:#262626;margin-top:8px}.fast-analysis-report .result-container .scores-row .score-item.overall[data-v-75da11ec]{background:linear-gradient(135deg,#e6f7ff,#fff);border:1px solid #91d5ff}.fast-analysis-report .result-container .detailed-analysis[data-v-75da11ec]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:16px;margin-bottom:20px}.fast-analysis-report .result-container .detailed-analysis .analysis-card[data-v-75da11ec]{background:linear-gradient(135deg,#fff,#fafafa);border-radius:12px;padding:20px;-webkit-box-shadow:0 2px 12px rgba(0,0,0,.06);box-shadow:0 2px 12px rgba(0,0,0,.06);border-left:4px solid #1890ff}.fast-analysis-report .result-container .detailed-analysis .analysis-card.technical[data-v-75da11ec]{border-left-color:#1890ff}.fast-analysis-report .result-container .detailed-analysis .analysis-card.fundamental[data-v-75da11ec]{border-left-color:#722ed1}.fast-analysis-report .result-container .detailed-analysis .analysis-card.sentiment[data-v-75da11ec]{border-left-color:#eb2f96}.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-header[data-v-75da11ec]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px;margin-bottom:14px;font-size:16px;font-weight:600;color:#262626}.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-header .anticon[data-v-75da11ec]{font-size:20px}.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-header.technical .anticon[data-v-75da11ec]{color:#1890ff}.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-header.fundamental .anticon[data-v-75da11ec]{color:#722ed1}.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-header.sentiment .anticon[data-v-75da11ec]{color:#eb2f96}.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-content[data-v-75da11ec]{font-size:14px;line-height:1.8;color:#595959;text-align:justify}.fast-analysis-report .result-container .analysis-details[data-v-75da11ec]{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-bottom:20px}.fast-analysis-report .result-container .analysis-details .detail-section[data-v-75da11ec]{background:#fff;border-radius:12px;padding:20px;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.06);box-shadow:0 2px 8px rgba(0,0,0,.06)}.fast-analysis-report .result-container .analysis-details .detail-section .section-title[data-v-75da11ec]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;font-size:16px;font-weight:600;margin-bottom:16px;color:#262626}.fast-analysis-report .result-container .analysis-details .detail-section .detail-list[data-v-75da11ec]{list-style:none;padding:0;margin:0}.fast-analysis-report .result-container .analysis-details .detail-section .detail-list li[data-v-75da11ec]{padding:10px 0;border-bottom:1px solid #f0f0f0;font-size:14px;line-height:1.6;color:#595959}.fast-analysis-report .result-container .analysis-details .detail-section .detail-list li[data-v-75da11ec]:last-child{border-bottom:none}.fast-analysis-report .result-container .analysis-details .detail-section .detail-list li[data-v-75da11ec]:before{content:"•";margin-right:8px;color:#1890ff}.fast-analysis-report .result-container .analysis-details .detail-section.reasons[data-v-75da11ec]{border-left:4px solid #52c41a}.fast-analysis-report .result-container .analysis-details .detail-section.risks[data-v-75da11ec]{border-left:4px solid #faad14}.fast-analysis-report .result-container .indicators-section[data-v-75da11ec]{background:#fff;border-radius:12px;padding:20px;margin-bottom:20px;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.06);box-shadow:0 2px 8px rgba(0,0,0,.06)}.fast-analysis-report .result-container .indicators-section .section-title[data-v-75da11ec]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px;font-size:16px;font-weight:600;margin-bottom:10px;color:#262626}.fast-analysis-report .result-container .indicators-section .section-title .anticon[data-v-75da11ec]{color:#1890ff}.fast-analysis-report .result-container .indicators-section .section-title .indicators-pro-badge[data-v-75da11ec]{margin:0;font-size:11px;line-height:18px;font-weight:500}.fast-analysis-report .result-container .indicators-section .indicators-methodology[data-v-75da11ec]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:8px;font-size:12px;line-height:1.55;color:#595959;margin-bottom:16px;padding:10px 12px;background:-webkit-gradient(linear,left top,right top,from(#f0f5ff),to(#fafafa));background:linear-gradient(90deg,#f0f5ff,#fafafa);border-radius:8px;border:1px solid #e6f0ff}.fast-analysis-report .result-container .indicators-section .indicators-methodology .anticon[data-v-75da11ec]{color:#2f54eb;margin-top:2px}.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap[data-v-75da11ec]{margin-top:20px;padding-top:16px;border-top:1px dashed #e8e8e8}.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap .indicators-pro-title[data-v-75da11ec]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;font-size:13px;font-weight:600;color:#434343;margin-bottom:12px}.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap .indicators-pro-title .anticon[data-v-75da11ec]{color:#722ed1}.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-item-label[data-v-75da11ec]{font-size:12px;color:#8c8c8c;width:38%;font-weight:500}.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-item-content[data-v-75da11ec]{font-size:12px;font-family:SF Mono,Consolas,monospace}.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap .indicators-pro-desc .bullish[data-v-75da11ec]{color:#52c41a;font-weight:600}.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap .indicators-pro-desc .bearish[data-v-75da11ec]{color:#ff4d4f;font-weight:600}.fast-analysis-report .result-container .indicators-section .indicators-grid[data-v-75da11ec]{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:16px}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item[data-v-75da11ec]{background:#fafafa;border-radius:8px;padding:12px;text-align:center}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-name[data-v-75da11ec]{font-size:12px;color:#8c8c8c;margin-bottom:8px}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value[data-v-75da11ec]{font-size:16px;font-weight:600;color:#262626}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.bullish[data-v-75da11ec],.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.oversold[data-v-75da11ec]{color:#52c41a}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.bearish[data-v-75da11ec],.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.high-volatility[data-v-75da11ec],.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.overbought[data-v-75da11ec]{color:#ff4d4f}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.low-volatility[data-v-75da11ec]{color:#52c41a}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-signal[data-v-75da11ec]{font-size:11px;color:#8c8c8c;margin-top:4px;text-transform:capitalize}.fast-analysis-report .result-container .feedback-section[data-v-75da11ec]{background:#fff;border-radius:12px;padding:20px;text-align:center;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.06);box-shadow:0 2px 8px rgba(0,0,0,.06)}.fast-analysis-report .result-container .feedback-section .feedback-question[data-v-75da11ec]{font-size:14px;color:#595959;margin-bottom:12px}.fast-analysis-report .result-container .feedback-section .feedback-buttons[data-v-75da11ec]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:16px;margin-bottom:16px}.fast-analysis-report .result-container .feedback-section .feedback-buttons .ant-btn[data-v-75da11ec]{min-width:100px}.fast-analysis-report .result-container .feedback-section .analysis-meta[data-v-75da11ec]{font-size:12px;color:#8c8c8c;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:16px}@media (max-width:992px){.fast-analysis-report .price-info-row[data-v-75da11ec],.fast-analysis-report .scores-row[data-v-75da11ec]{grid-template-columns:repeat(2,1fr)}.fast-analysis-report .analysis-details[data-v-75da11ec]{grid-template-columns:1fr}}@media (max-width:576px){.fast-analysis-report[data-v-75da11ec]{padding:12px}.fast-analysis-report .price-info-row[data-v-75da11ec],.fast-analysis-report .scores-row[data-v-75da11ec]{grid-template-columns:1fr}.fast-analysis-report .decision-card[data-v-75da11ec]{padding:16px}.fast-analysis-report .decision-card .decision-main[data-v-75da11ec]{gap:16px;text-align:center}.fast-analysis-report .decision-card .decision-main .decision-badge[data-v-75da11ec],.fast-analysis-report .decision-card .decision-main[data-v-75da11ec]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.fast-analysis-report .decision-card .decision-main .decision-badge .decision-text[data-v-75da11ec]{font-size:28px}}.fast-analysis-report.theme-dark[data-v-75da11ec]{background:linear-gradient(135deg,#141414,#1c1c1c)}.fast-analysis-report.theme-dark .loading-content .loading-text[data-v-75da11ec]{color:#00e5ff}.fast-analysis-report.theme-dark .empty-content .empty-title[data-v-75da11ec]{color:#d1d4dc}.fast-analysis-report.theme-dark .decision-card[data-v-75da11ec]{background:#1c1c1c;border-left-color:#1890ff}.fast-analysis-report.theme-dark .decision-card.decision-buy[data-v-75da11ec]{background:linear-gradient(135deg,rgba(82,196,26,.1),#1c1c1c)}.fast-analysis-report.theme-dark .decision-card.decision-sell[data-v-75da11ec]{background:linear-gradient(135deg,rgba(255,77,79,.1),#1c1c1c)}.fast-analysis-report.theme-dark .decision-card.decision-hold[data-v-75da11ec]{background:linear-gradient(135deg,rgba(250,173,20,.1),#1c1c1c)}.fast-analysis-report.theme-dark .decision-card .confidence-ring .confidence-value[data-v-75da11ec]{color:#e5e5e5}.fast-analysis-report.theme-dark .decision-card .confidence-ring .confidence-label[data-v-75da11ec]{color:#a3a3a3}.fast-analysis-report.theme-dark .decision-card .decision-summary[data-v-75da11ec]{color:#868993;border-top-color:#363c4e}.fast-analysis-report.theme-dark .decision-card .consensus-strip[data-v-75da11ec]{background:rgba(24,144,255,.12);border-color:rgba(24,144,255,.35);color:#d1d4dc}.fast-analysis-report.theme-dark .decision-card .consensus-strip .consensus-strip-title[data-v-75da11ec]{color:#69c0ff}.fast-analysis-report.theme-dark .decision-card .consensus-strip .consensus-strip-metrics .cm-item em[data-v-75da11ec]{color:#868993}.fast-analysis-report.theme-dark .detailed-analysis .analysis-card[data-v-75da11ec]{background:linear-gradient(135deg,#1c1c1c,#141414)}.fast-analysis-report.theme-dark .detailed-analysis .analysis-card.technical[data-v-75da11ec]{border-left-color:#1890ff}.fast-analysis-report.theme-dark .detailed-analysis .analysis-card.fundamental[data-v-75da11ec]{border-left-color:#722ed1}.fast-analysis-report.theme-dark .detailed-analysis .analysis-card.sentiment[data-v-75da11ec]{border-left-color:#eb2f96}.fast-analysis-report.theme-dark .detailed-analysis .analysis-card .analysis-card-header[data-v-75da11ec]{color:#d1d4dc}.fast-analysis-report.theme-dark .detailed-analysis .analysis-card .analysis-card-content[data-v-75da11ec]{color:#868993}.fast-analysis-report.theme-dark .trend-outlook-card[data-v-75da11ec]{background:#1c1c1c;border-left-color:#b37feb}.fast-analysis-report.theme-dark .trend-outlook-card .trend-outlook-header[data-v-75da11ec]{color:#d1d4dc}.fast-analysis-report.theme-dark .trend-outlook-card .trend-outlook-header .anticon[data-v-75da11ec]{color:#b37feb}.fast-analysis-report.theme-dark .trend-outlook-card .trend-outlook-summary[data-v-75da11ec]{background:#252525;color:#868993}.fast-analysis-report.theme-dark .trend-outlook-card .trend-outlook-item[data-v-75da11ec]{background:#252525}.fast-analysis-report.theme-dark .trend-outlook-card .trend-outlook-item .to-label[data-v-75da11ec],.fast-analysis-report.theme-dark .trend-outlook-card .trend-outlook-item .to-meta[data-v-75da11ec]{color:#868993}.fast-analysis-report.theme-dark .detail-section[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item[data-v-75da11ec]{background:#1c1c1c;color:#d1d4dc}.fast-analysis-report.theme-dark .detail-section .indicators-methodology[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .indicators-methodology[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .indicators-methodology[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .indicators-methodology[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .indicators-methodology[data-v-75da11ec]{background:-webkit-gradient(linear,left top,right top,from(hsla(0,0%,47%,.12)),to(#252525));background:linear-gradient(90deg,hsla(0,0%,47%,.12),#252525);border-color:hsla(0,0%,71%,.2);color:#868993}.fast-analysis-report.theme-dark .detail-section .indicators-methodology .anticon[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .indicators-methodology .anticon[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .indicators-methodology .anticon[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .indicators-methodology .anticon[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .indicators-methodology .anticon[data-v-75da11ec]{color:#69c0ff}.fast-analysis-report.theme-dark .detail-section .indicators-pro-wrap[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .indicators-pro-wrap[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .indicators-pro-wrap[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .indicators-pro-wrap[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .indicators-pro-wrap[data-v-75da11ec]{border-top-color:#2a2a2a}.fast-analysis-report.theme-dark .detail-section .indicators-pro-wrap .indicators-pro-title[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .indicators-pro-wrap .indicators-pro-title[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .indicators-pro-wrap .indicators-pro-title[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .indicators-pro-wrap .indicators-pro-title[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .indicators-pro-wrap .indicators-pro-title[data-v-75da11ec]{color:#d1d4dc}.fast-analysis-report.theme-dark .detail-section .indicators-pro-wrap .indicators-pro-title .anticon[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .indicators-pro-wrap .indicators-pro-title .anticon[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .indicators-pro-wrap .indicators-pro-title .anticon[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .indicators-pro-wrap .indicators-pro-title .anticon[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .indicators-pro-wrap .indicators-pro-title .anticon[data-v-75da11ec]{color:#b37feb}.fast-analysis-report.theme-dark .detail-section .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-bordered .ant-descriptions-item-content[data-v-75da11ec],.fast-analysis-report.theme-dark .detail-section .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-bordered .ant-descriptions-item-label[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-bordered .ant-descriptions-item-content[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-bordered .ant-descriptions-item-label[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-bordered .ant-descriptions-item-content[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-bordered .ant-descriptions-item-label[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-bordered .ant-descriptions-item-content[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-bordered .ant-descriptions-item-label[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-bordered .ant-descriptions-item-content[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-bordered .ant-descriptions-item-label[data-v-75da11ec]{background:#1c1c1c;border-color:#2a2a2a!important;color:#d1d4dc}.fast-analysis-report.theme-dark .detail-section .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-bordered .ant-descriptions-item-label[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-bordered .ant-descriptions-item-label[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-bordered .ant-descriptions-item-label[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-bordered .ant-descriptions-item-label[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-bordered .ant-descriptions-item-label[data-v-75da11ec]{color:#868993}.fast-analysis-report.theme-dark .detail-section .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-item-content>span[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-item-content>span[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-item-content>span[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-item-content>span[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-item-content>span[data-v-75da11ec]{color:#d1d4dc!important}.fast-analysis-report.theme-dark .detail-section .indicators-pro-wrap .indicators-pro-desc .bullish[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .indicators-pro-wrap .indicators-pro-desc .bullish[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .indicators-pro-wrap .indicators-pro-desc .bullish[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .indicators-pro-wrap .indicators-pro-desc .bullish[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .indicators-pro-wrap .indicators-pro-desc .bullish[data-v-75da11ec]{color:#73d13d}.fast-analysis-report.theme-dark .detail-section .indicators-pro-wrap .indicators-pro-desc .bearish[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .indicators-pro-wrap .indicators-pro-desc .bearish[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .indicators-pro-wrap .indicators-pro-desc .bearish[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .indicators-pro-wrap .indicators-pro-desc .bearish[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .indicators-pro-wrap .indicators-pro-desc .bearish[data-v-75da11ec]{color:#ff7875}.fast-analysis-report.theme-dark .detail-section .analysis-meta[data-v-75da11ec],.fast-analysis-report.theme-dark .detail-section .feedback-question[data-v-75da11ec],.fast-analysis-report.theme-dark .detail-section .indicator-name[data-v-75da11ec],.fast-analysis-report.theme-dark .detail-section .indicator-signal[data-v-75da11ec],.fast-analysis-report.theme-dark .detail-section .price-label[data-v-75da11ec],.fast-analysis-report.theme-dark .detail-section .score-header[data-v-75da11ec],.fast-analysis-report.theme-dark .detail-section .section-title[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .analysis-meta[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .feedback-question[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .indicator-name[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .indicator-signal[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .price-label[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .score-header[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .section-title[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .analysis-meta[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .feedback-question[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .indicator-name[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .indicator-signal[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .price-label[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .score-header[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .section-title[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .analysis-meta[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .feedback-question[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .indicator-name[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .indicator-signal[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .price-label[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .score-header[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .section-title[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .analysis-meta[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .feedback-question[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .indicator-name[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .indicator-signal[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .price-label[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .score-header[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .section-title[data-v-75da11ec]{color:#868993}.fast-analysis-report.theme-dark .detail-section .indicator-value[data-v-75da11ec],.fast-analysis-report.theme-dark .detail-section .price-value[data-v-75da11ec],.fast-analysis-report.theme-dark .detail-section .score-value[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .indicator-value[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .price-value[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .score-value[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .indicator-value[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .price-value[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .score-value[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .indicator-value[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .price-value[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .score-value[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .indicator-value[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .price-value[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .score-value[data-v-75da11ec]{color:#d1d4dc}.fast-analysis-report.theme-dark .score-item.overall[data-v-75da11ec]{background:linear-gradient(135deg,hsla(0,0%,47%,.12),#1c1c1c);border-color:#3a3a3a}.fast-analysis-report.theme-dark .detail-list li[data-v-75da11ec]{color:#868993;border-bottom-color:#2a2a2a}.fast-analysis-report.theme-dark .indicators-grid .indicator-item[data-v-75da11ec]{background:#252525}.ai-analysis-container[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;height:calc(100vh - 120px);background:#f0f2f5;overflow:hidden;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.ai-analysis-container.embedded[data-v-5cbe52d9]{height:auto;min-height:700px;background:transparent}.ai-analysis-container.embedded .main-content-full[data-v-5cbe52d9]{-webkit-box-shadow:none;box-shadow:none;border-radius:0}.main-content-full[data-v-5cbe52d9]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow:hidden;background:#fff;border-radius:12px;height:100%;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.08);box-shadow:0 2px 8px rgba(0,0,0,.08);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.top-index-bar[data-v-5cbe52d9]{gap:8px;padding:8px 16px;background:#f8fafc;border-bottom:1px solid #e2e8f0;font-family:SF Mono,Monaco,Consolas,monospace}.top-index-bar .indicator-box[data-v-5cbe52d9],.top-index-bar[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.top-index-bar .indicator-box[data-v-5cbe52d9]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:4px 10px;background:#fff;border-radius:6px;border:1px solid #e2e8f0;min-width:50px}.top-index-bar .indicator-box .ind-label[data-v-5cbe52d9]{font-size:9px;color:#94a3b8;text-transform:uppercase}.top-index-bar .indicator-box .ind-value[data-v-5cbe52d9]{font-size:13px;font-weight:700;color:#1e293b}.top-index-bar .indicator-box.fear-greed.extreme-fear .ind-value[data-v-5cbe52d9]{color:#dc2626}.top-index-bar .indicator-box.fear-greed.fear .ind-value[data-v-5cbe52d9]{color:#ea580c}.top-index-bar .indicator-box.fear-greed.neutral .ind-value[data-v-5cbe52d9]{color:#ca8a04}.top-index-bar .indicator-box.fear-greed.greed .ind-value[data-v-5cbe52d9]{color:#65a30d}.top-index-bar .indicator-box.fear-greed.extreme-greed .ind-value[data-v-5cbe52d9],.top-index-bar .indicator-box.vix.low .ind-value[data-v-5cbe52d9]{color:#16a34a}.top-index-bar .indicator-box.vix.medium .ind-value[data-v-5cbe52d9]{color:#ca8a04}.top-index-bar .indicator-box.vix.high .ind-value[data-v-5cbe52d9]{color:#dc2626}.top-index-bar .indicator-box.dxy .ind-value[data-v-5cbe52d9]{color:#2563eb}.top-index-bar .indices-marquee[data-v-5cbe52d9]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:hidden;min-width:0}.top-index-bar .indices-marquee .marquee-track[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:8px;-webkit-animation:marquee-5cbe52d9 35s linear infinite;animation:marquee-5cbe52d9 35s linear infinite;width:-webkit-max-content;width:-moz-max-content;width:max-content}.top-index-bar .indices-marquee .marquee-track[data-v-5cbe52d9]:hover{-webkit-animation-play-state:paused;animation-play-state:paused}.top-index-bar .indices-marquee .index-item[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;padding:4px 8px;background:#fff;border-radius:4px;border:1px solid #e2e8f0;font-size:11px;white-space:nowrap}.top-index-bar .indices-marquee .index-item .idx-flag[data-v-5cbe52d9]{font-size:11px}.top-index-bar .indices-marquee .index-item .idx-symbol[data-v-5cbe52d9]{color:#64748b;font-weight:500}.top-index-bar .indices-marquee .index-item .idx-price[data-v-5cbe52d9]{color:#1e293b;font-weight:600}.top-index-bar .indices-marquee .index-item .idx-change[data-v-5cbe52d9]{font-weight:600;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:1px}.top-index-bar .indices-marquee .index-item .idx-change.up[data-v-5cbe52d9]{color:#16a34a}.top-index-bar .indices-marquee .index-item .idx-change.down[data-v-5cbe52d9]{color:#dc2626}@-webkit-keyframes marquee-5cbe52d9{0%{-webkit-transform:translateX(0);transform:translateX(0)}to{-webkit-transform:translateX(-50%);transform:translateX(-50%)}}@keyframes marquee-5cbe52d9{0%{-webkit-transform:translateX(0);transform:translateX(0)}to{-webkit-transform:translateX(-50%);transform:translateX(-50%)}}.top-index-bar .refresh-btn[data-v-5cbe52d9]{color:#94a3b8;-ms-flex-negative:0;flex-shrink:0}.top-index-bar .refresh-btn[data-v-5cbe52d9]:hover{color:#1e293b}.main-body[data-v-5cbe52d9]{-webkit-box-flex:1;-ms-flex:1;flex:1;padding:12px;overflow:hidden;min-height:0}.left-panel[data-v-5cbe52d9],.main-body[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px}.left-panel[data-v-5cbe52d9]{width:280px;-ms-flex-negative:0;flex-shrink:0;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow-y:auto}.left-panel .heatmap-box[data-v-5cbe52d9]{background:#fff;border-radius:8px;padding:12px;border:1px solid #e2e8f0}.left-panel .heatmap-box .box-header[data-v-5cbe52d9]{margin-bottom:10px}.left-panel .heatmap-box .box-header[data-v-5cbe52d9] .ant-radio-group .ant-radio-button-wrapper{font-size:10px;padding:0 6px;height:22px;line-height:20px}.left-panel .heatmap-box .box-header[data-v-5cbe52d9] .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{background:var(--primary-color,#1890ff);border-color:var(--primary-color,#1890ff);color:#fff}.left-panel .heatmap-box .heatmap-grid[data-v-5cbe52d9]{display:grid;grid-template-columns:repeat(3,1fr);gap:4px}.left-panel .heatmap-box .heatmap-grid .heat-cell[data-v-5cbe52d9]{padding:6px 4px;border-radius:4px;text-align:center;font-size:9px}.left-panel .heatmap-box .heatmap-grid .heat-cell .heat-name[data-v-5cbe52d9]{display:block;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:1px}.left-panel .heatmap-box .heatmap-grid .heat-cell .heat-price[data-v-5cbe52d9]{display:block;font-size:9px;opacity:.8;margin-bottom:1px}.left-panel .heatmap-box .heatmap-grid .heat-cell .heat-val[data-v-5cbe52d9]{font-weight:700;font-size:10px}.left-panel .calendar-box[data-v-5cbe52d9]{-webkit-box-flex:1;-ms-flex:1;flex:1;background:#fff;border-radius:8px;padding:12px;border:1px solid #e2e8f0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-height:0;overflow:hidden}.left-panel .calendar-box .box-header[data-v-5cbe52d9]{margin-bottom:8px}.left-panel .calendar-box .box-header .box-title[data-v-5cbe52d9]{font-size:12px;color:#64748b;font-weight:600}.left-panel .calendar-box .box-header .box-title .anticon[data-v-5cbe52d9]{margin-right:6px;color:var(--primary-color,#1890ff)}.left-panel .calendar-box .calendar-list[data-v-5cbe52d9]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto}.left-panel .calendar-box .calendar-list[data-v-5cbe52d9]::-webkit-scrollbar{width:4px}.left-panel .calendar-box .calendar-list[data-v-5cbe52d9]::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:2px}.left-panel .calendar-box .calendar-list .cal-item[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;padding:6px 0;border-bottom:1px solid #f1f5f9;font-size:10px}.left-panel .calendar-box .calendar-list .cal-item[data-v-5cbe52d9]:last-child{border-bottom:none}.left-panel .calendar-box .calendar-list .cal-item.high[data-v-5cbe52d9]{border-left:3px solid #dc2626;padding-left:8px;margin-left:-4px}.left-panel .calendar-box .calendar-list .cal-item.medium[data-v-5cbe52d9]{border-left:3px solid #ca8a04;padding-left:8px;margin-left:-4px}.left-panel .calendar-box .calendar-list .cal-item.low[data-v-5cbe52d9]{border-left:3px solid #16a34a;padding-left:8px;margin-left:-4px}.left-panel .calendar-box .calendar-list .cal-item .cal-date[data-v-5cbe52d9]{font-size:9px;color:#94a3b8;min-width:32px;font-weight:500}.left-panel .calendar-box .calendar-list .cal-item .cal-time[data-v-5cbe52d9]{color:#64748b;min-width:36px;font-weight:500}.left-panel .calendar-box .calendar-list .cal-item .cal-flag[data-v-5cbe52d9]{font-size:12px}.left-panel .calendar-box .calendar-list .cal-item .cal-name[data-v-5cbe52d9]{-webkit-box-flex:1;-ms-flex:1;flex:1;color:#334155;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.left-panel .calendar-box .calendar-list .cal-item .cal-impact[data-v-5cbe52d9]{font-weight:600;font-size:10px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:2px}.left-panel .calendar-box .calendar-list .cal-item .cal-impact.bullish[data-v-5cbe52d9]{color:#16a34a}.left-panel .calendar-box .calendar-list .cal-item .cal-impact.bearish[data-v-5cbe52d9]{color:#dc2626}.left-panel .calendar-box .calendar-list .cal-item .cal-impact.neutral[data-v-5cbe52d9]{color:#94a3b8}.left-panel .calendar-box .calendar-list .cal-empty[data-v-5cbe52d9]{text-align:center;color:#94a3b8;padding:20px 0;font-size:12px}.right-panel[data-v-5cbe52d9]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-width:0;overflow:hidden;background:#fff;border-radius:8px;border:1px solid #e2e8f0}.right-panel .analysis-toolbar[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;padding:12px 16px;border-bottom:1px solid #f1f5f9;background:#fafafa;border-radius:8px 8px 0 0}.right-panel .analysis-toolbar .symbol-selector[data-v-5cbe52d9]{-webkit-box-flex:1;-ms-flex:1;flex:1;max-width:320px}.right-panel .analysis-toolbar .analyze-button[data-v-5cbe52d9]{background:var(--primary-color,#1890ff);border-color:var(--primary-color,#1890ff)}.right-panel .analysis-toolbar .history-button[data-v-5cbe52d9]{border-color:#d9d9d9}.right-panel .analysis-main[data-v-5cbe52d9]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:auto;padding:16px;min-height:0}.right-panel .analysis-main .analysis-placeholder[data-v-5cbe52d9]{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;height:100%;min-height:300px}.watchlist-panel[data-v-5cbe52d9]{width:320px;-ms-flex-negative:0;flex-shrink:0;background:#fff;border-radius:8px;border:1px solid #e2e8f0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow:hidden}.watchlist-panel .panel-header[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:10px 12px;border-bottom:1px solid #f1f5f9;background:#fafafa}.watchlist-panel .panel-header .panel-title[data-v-5cbe52d9]{font-size:12px;font-weight:600;color:#64748b}.watchlist-panel .panel-header .panel-title .anticon[data-v-5cbe52d9]{color:#facc15;margin-right:6px}.watchlist-panel .watchlist-list[data-v-5cbe52d9]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto;padding:8px}.watchlist-panel .watchlist-list[data-v-5cbe52d9]::-webkit-scrollbar{width:4px}.watchlist-panel .watchlist-list[data-v-5cbe52d9]::-webkit-scrollbar-thumb{background:#e2e8f0;border-radius:2px}.watchlist-panel .watchlist-list .watchlist-empty[data-v-5cbe52d9]{text-align:center;padding:24px 12px;color:#94a3b8}.watchlist-panel .watchlist-list .watchlist-empty .anticon[data-v-5cbe52d9]{font-size:32px;margin-bottom:8px;display:block}.watchlist-panel .watchlist-list .watchlist-empty p[data-v-5cbe52d9]{font-size:12px;margin-bottom:12px}@-webkit-keyframes pulse-5cbe52d9{0%,to{opacity:1}50%{opacity:.5}}@keyframes pulse-5cbe52d9{0%,to{opacity:1}50%{opacity:.5}}@media (max-width:992px){.ai-analysis-container[data-v-5cbe52d9]{height:auto;min-height:calc(100vh - 64px);overflow-y:auto}.main-content-full[data-v-5cbe52d9]{height:auto;min-height:auto}.top-index-bar[data-v-5cbe52d9]{-ms-flex-wrap:wrap;flex-wrap:wrap;padding:8px}.top-index-bar .indicator-box[data-v-5cbe52d9]{min-width:45px;padding:3px 6px}.top-index-bar .indices-marquee[data-v-5cbe52d9]{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10;width:100%;margin-top:8px}.main-body[data-v-5cbe52d9]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:12px}.left-panel[data-v-5cbe52d9]{width:100%;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;gap:12px}.left-panel .calendar-box[data-v-5cbe52d9],.left-panel .heatmap-box[data-v-5cbe52d9]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.left-panel .calendar-box[data-v-5cbe52d9]{max-height:200px}.right-panel .analysis-toolbar[data-v-5cbe52d9]{-ms-flex-wrap:wrap;flex-wrap:wrap}.right-panel .analysis-toolbar .symbol-selector[data-v-5cbe52d9]{width:100%!important;max-width:none!important}.right-panel .analysis-toolbar .analyze-button[data-v-5cbe52d9],.right-panel .analysis-toolbar .history-button[data-v-5cbe52d9]{-webkit-box-flex:1;-ms-flex:1;flex:1}.watchlist-panel[data-v-5cbe52d9]{width:100%;max-height:250px;-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.hero-stats[data-v-5cbe52d9]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.hero-stats .hstat[data-v-5cbe52d9]{width:100%;max-width:300px;-webkit-box-flex:0;-ms-flex:none;flex:none}}.ai-analysis-container.theme-dark[data-v-5cbe52d9]{background:#0a0a0a;color:#d4d4d4}.ai-analysis-container.theme-dark .main-content-full[data-v-5cbe52d9]{background:#141414;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.5);box-shadow:0 2px 8px rgba(0,0,0,.5)}.ai-analysis-container.theme-dark .top-index-bar[data-v-5cbe52d9]{background:#141414;border-bottom-color:#2a2a2a}.ai-analysis-container.theme-dark .top-index-bar .indicator-box[data-v-5cbe52d9]{background:#1c1c1c;border-color:#2a2a2a}.ai-analysis-container.theme-dark .top-index-bar .indicator-box .ind-label[data-v-5cbe52d9]{color:#888}.ai-analysis-container.theme-dark .top-index-bar .indicator-box .ind-value[data-v-5cbe52d9]{color:#d4d4d4}.ai-analysis-container.theme-dark .top-index-bar .indices-marquee .index-item[data-v-5cbe52d9]{background:#1c1c1c;border-color:#2a2a2a}.ai-analysis-container.theme-dark .top-index-bar .indices-marquee .index-item .idx-symbol[data-v-5cbe52d9]{color:#888}.ai-analysis-container.theme-dark .top-index-bar .indices-marquee .index-item .idx-price[data-v-5cbe52d9]{color:#d4d4d4}.ai-analysis-container.theme-dark .top-index-bar .refresh-btn[data-v-5cbe52d9]{color:#888}.ai-analysis-container.theme-dark .top-index-bar .refresh-btn[data-v-5cbe52d9]:hover{color:#d4d4d4}.ai-analysis-container.theme-dark .watchlist-panel[data-v-5cbe52d9]{background:#1c1c1c;border-color:#2a2a2a}.ai-analysis-container.theme-dark .watchlist-panel .panel-header[data-v-5cbe52d9]{background:#141414;border-bottom-color:#2a2a2a}.ai-analysis-container.theme-dark .watchlist-panel .panel-header .panel-title[data-v-5cbe52d9]{color:#888}.ai-analysis-container.theme-dark .watchlist-panel .panel-summary[data-v-5cbe52d9]{background:#141414;border-bottom-color:#2a2a2a}.ai-analysis-container.theme-dark .watchlist-panel .panel-summary .summary-chip[data-v-5cbe52d9]{border-right-color:#2a2a2a}.ai-analysis-container.theme-dark .watchlist-panel .panel-summary .sc-num[data-v-5cbe52d9]{color:#d4d4d4}.ai-analysis-container.theme-dark .watchlist-panel .panel-summary .sc-label[data-v-5cbe52d9]{color:#666}.ai-analysis-container.theme-dark .watchlist-panel .batch-bar[data-v-5cbe52d9]{background:hsla(0,0%,100%,.04);border-bottom-color:#2a2a2a}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card[data-v-5cbe52d9]:hover{background:#252525}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card.active[data-v-5cbe52d9]{background:rgba(24,144,255,.08);border-color:#1890ff}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card .wl-symbol[data-v-5cbe52d9]{color:#d4d4d4}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card .wl-market[data-v-5cbe52d9]{color:#666;background:#2a2a2a}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card .wl-price[data-v-5cbe52d9]{color:#d4d4d4}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card .wl-pnl-qty[data-v-5cbe52d9]{color:#666}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card .wl-task-badge.paused[data-v-5cbe52d9]{background:#2a2a2a;color:#666}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card .wl-task-next[data-v-5cbe52d9]{color:#666}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card-hover-actions[data-v-5cbe52d9]{background:-webkit-gradient(linear,left top,right top,from(transparent),color-stop(30%,#252525));background:linear-gradient(90deg,transparent,#252525 30%)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card-hover-actions .wl-hover-btn[data-v-5cbe52d9]{background:#1c1c1c;color:#888;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.3);box-shadow:0 1px 3px rgba(0,0,0,.3)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card-hover-actions .wl-hover-btn[data-v-5cbe52d9]:hover{color:#1890ff;background:rgba(24,144,255,.1)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card-hover-actions .wl-hover-btn.danger[data-v-5cbe52d9]:hover{color:#dc2626;background:rgba(220,38,38,.1)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card.active .wl-card-hover-actions[data-v-5cbe52d9]{background:-webkit-gradient(linear,left top,right top,from(transparent),color-stop(30%,rgba(24,144,255,.06)));background:linear-gradient(90deg,transparent,rgba(24,144,255,.06) 30%)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .watchlist-empty[data-v-5cbe52d9]{color:#666}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .we-icon[data-v-5cbe52d9]{color:#2a2a2a}.ai-analysis-container.theme-dark .placeholder-hero .hero-bg-grid[data-v-5cbe52d9]{background-image:linear-gradient(hsla(0,0%,100%,.02) 1px,transparent 0),linear-gradient(90deg,hsla(0,0%,100%,.02) 1px,transparent 0)}.ai-analysis-container.theme-dark .placeholder-hero .hero-badge[data-v-5cbe52d9]{background:rgba(24,144,255,.1);border-color:rgba(24,144,255,.2)}.ai-analysis-container.theme-dark .placeholder-hero .hero-title[data-v-5cbe52d9]{color:#d4d4d4}.ai-analysis-container.theme-dark .placeholder-hero .hero-hint[data-v-5cbe52d9],.ai-analysis-container.theme-dark .placeholder-hero .hero-subtitle[data-v-5cbe52d9]{color:#888}.ai-analysis-container.theme-dark .placeholder-hero .hstat[data-v-5cbe52d9]{background:#1c1c1c;border-color:#2a2a2a;-webkit-box-shadow:none;box-shadow:none}.ai-analysis-container.theme-dark .placeholder-hero .hstat[data-v-5cbe52d9]:hover{border-color:#1890ff;-webkit-box-shadow:0 4px 16px rgba(24,144,255,.12);box-shadow:0 4px 16px rgba(24,144,255,.12)}.ai-analysis-container.theme-dark .placeholder-hero .hstat-icon[data-v-5cbe52d9]{background:linear-gradient(135deg,rgba(24,144,255,.12),rgba(114,46,209,.08))}.ai-analysis-container.theme-dark .placeholder-hero .hstat-val[data-v-5cbe52d9]{color:#d4d4d4}.ai-analysis-container.theme-dark .placeholder-hero .hstat-label[data-v-5cbe52d9]{color:#666}.ai-analysis-container.theme-dark .placeholder-hero .hero-cta .ant-btn-primary[data-v-5cbe52d9]{-webkit-box-shadow:0 4px 14px rgba(24,144,255,.35);box-shadow:0 4px 14px rgba(24,144,255,.35)}.ai-analysis-container.theme-dark .watchlist-bar-legacy[data-v-5cbe52d9]{background:#141414;border-bottom-color:#2a2a2a}.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip[data-v-5cbe52d9]{background:#1c1c1c;border-color:#2a2a2a}.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip.active[data-v-5cbe52d9],.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip[data-v-5cbe52d9]:hover{border-color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08)}.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip .chip-symbol[data-v-5cbe52d9]{color:#d4d4d4}.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip .chip-price[data-v-5cbe52d9]{color:#888}.ai-analysis-container.theme-dark .left-panel .heatmap-box[data-v-5cbe52d9]{background:#1c1c1c;border-color:#2a2a2a}.ai-analysis-container.theme-dark .left-panel .heatmap-box[data-v-5cbe52d9] .ant-radio-group .ant-radio-button-wrapper{background:#141414;border-color:#2a2a2a;color:#888}.ai-analysis-container.theme-dark .left-panel .heatmap-box[data-v-5cbe52d9] .ant-radio-group .ant-radio-button-wrapper:hover{color:#d4d4d4}.ai-analysis-container.theme-dark .left-panel .calendar-box[data-v-5cbe52d9]{background:#1c1c1c;border-color:#2a2a2a}.ai-analysis-container.theme-dark .left-panel .calendar-box .box-title[data-v-5cbe52d9]{color:#888}.ai-analysis-container.theme-dark .left-panel .calendar-box .cal-item[data-v-5cbe52d9]{border-bottom-color:#2a2a2a}.ai-analysis-container.theme-dark .left-panel .calendar-box .cal-item .cal-date[data-v-5cbe52d9]{color:#666}.ai-analysis-container.theme-dark .left-panel .calendar-box .cal-item .cal-time[data-v-5cbe52d9]{color:#888}.ai-analysis-container.theme-dark .left-panel .calendar-box .cal-item .cal-name[data-v-5cbe52d9]{color:#d4d4d4}.ai-analysis-container.theme-dark .left-panel .calendar-box .cal-empty[data-v-5cbe52d9]{color:#666}.ai-analysis-container.theme-dark .right-panel[data-v-5cbe52d9]{background:#1c1c1c;border-color:#2a2a2a}.ai-analysis-container.theme-dark .right-panel .analysis-toolbar[data-v-5cbe52d9]{background:#141414;border-bottom-color:#2a2a2a}.ai-analysis-container.theme-dark .hero-cta .ant-btn[data-v-5cbe52d9]:not(.ant-btn-primary),.ai-analysis-container.theme-dark .right-panel .analysis-toolbar .history-button[data-v-5cbe52d9]{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark .hero-cta .ant-btn[data-v-5cbe52d9]:not(.ant-btn-primary):hover{border-color:#1890ff;color:#1890ff}.ai-analysis-container.theme-dark .wl-change.up[data-v-5cbe52d9]{background:rgba(22,163,74,.15)}.ai-analysis-container.theme-dark .wl-change.down[data-v-5cbe52d9]{background:rgba(220,38,38,.12)}.ai-analysis-container.theme-dark .panel-header-icon[data-v-5cbe52d9]{color:#666}.ai-analysis-container.theme-dark .panel-header-icon[data-v-5cbe52d9]:hover{color:#1890ff;background:rgba(24,144,255,.08)}.ai-analysis-container.theme-dark .panel-summary[data-v-5cbe52d9]{background:#141414}.ai-analysis-container.theme-dark .batch-bar[data-v-5cbe52d9]{background:hsla(0,0%,100%,.03)!important;border-bottom-color:#2a2a2a!important}.ai-analysis-container.theme-dark .watchlist-bar-compat[data-v-5cbe52d9]{background:#141414;border-top-color:#2a2a2a}.ai-analysis-container.theme-dark .watchlist-bar-compat .bar-label[data-v-5cbe52d9]{color:#888}.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip[data-v-5cbe52d9]{background:#1c1c1c;border-color:#2a2a2a}.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip.active[data-v-5cbe52d9],.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip[data-v-5cbe52d9]:hover{border-color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08)}.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip .chip-symbol[data-v-5cbe52d9]{color:#d4d4d4}.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip .chip-price[data-v-5cbe52d9]{color:#888}.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip .chip-remove[data-v-5cbe52d9]{color:#666}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .symbol-selector .ant-select-selection{background-color:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-tabs-bar{border-bottom-color:#2a2a2a}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-tabs-tab{color:#888}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-tabs-tab:hover{color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-tabs-tab-active{color:#1890ff!important}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-tabs-ink-bar{background-color:#1890ff}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-input{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-input::-webkit-input-placeholder{color:#555}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-input::-moz-placeholder{color:#555}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-input:-ms-input-placeholder{color:#555}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-input::-ms-input-placeholder{color:#555}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-input::placeholder{color:#555}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-input-number{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-input-number .ant-input-number-handler-wrap{background:#1c1c1c}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-select-selection{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-select-arrow{color:#666}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-checkbox-wrapper,.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-form-item-label>label,.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-radio-wrapper{color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-btn-default{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-btn-default:hover{border-color:#1890ff;color:#1890ff}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-alert{background:rgba(24,144,255,.06);border-color:#2a2a2a}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-alert-message{color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-tag{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-list-item{border-bottom-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-list-item-meta-title{color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-list-item-meta-description{color:#888}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-empty-description{color:#666}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-tooltip-inner{background:#1c1c1c}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-badge-count{-webkit-box-shadow:0 0 0 1px #141414;box-shadow:0 0 0 1px #141414}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-popover-inner{background:#1c1c1c}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-popover-message{color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-popover-arrow{border-color:#1c1c1c}.placeholder-hero[data-v-5cbe52d9]{position:relative;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;width:100%;height:100%;overflow:hidden}.hero-bg[data-v-5cbe52d9]{position:absolute;inset:0;pointer-events:none}.hero-bg-circle[data-v-5cbe52d9]{position:absolute;border-radius:50%;opacity:.5}.hero-bg-circle.c1[data-v-5cbe52d9]{width:320px;height:320px;top:-80px;right:-60px;background:radial-gradient(circle,rgba(24,144,255,.1) 0,transparent 70%);-webkit-animation:hero-float-5cbe52d9 6s ease-in-out infinite;animation:hero-float-5cbe52d9 6s ease-in-out infinite}.hero-bg-circle.c2[data-v-5cbe52d9]{width:240px;height:240px;bottom:-40px;left:-40px;background:radial-gradient(circle,rgba(114,46,209,.08) 0,transparent 70%);animation:hero-float-5cbe52d9 8s ease-in-out infinite reverse}.hero-bg-grid[data-v-5cbe52d9]{position:absolute;inset:0;background-image:linear-gradient(rgba(24,144,255,.03) 1px,transparent 0),linear-gradient(90deg,rgba(24,144,255,.03) 1px,transparent 0);background-size:32px 32px}@-webkit-keyframes hero-float-5cbe52d9{0%,to{-webkit-transform:translateY(0);transform:translateY(0)}50%{-webkit-transform:translateY(-12px);transform:translateY(-12px)}}@keyframes hero-float-5cbe52d9{0%,to{-webkit-transform:translateY(0);transform:translateY(0)}50%{-webkit-transform:translateY(-12px);transform:translateY(-12px)}}.hero-body[data-v-5cbe52d9]{position:relative;text-align:center;padding:40px 32px;max-width:560px}.hero-badge[data-v-5cbe52d9]{display:inline-block;padding:3px 12px;border-radius:20px;font-size:10px;font-weight:700;letter-spacing:1.5px;color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08);border:1px solid rgba(24,144,255,.2);margin-bottom:16px}.hero-title[data-v-5cbe52d9]{font-size:26px;font-weight:800;color:#0f172a;margin-bottom:8px;letter-spacing:-.3px;line-height:1.3}.hero-subtitle[data-v-5cbe52d9]{font-size:14px;color:#64748b;margin-bottom:32px;line-height:1.5}.hero-stats[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-bottom:32px;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.hstat[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px;padding:12px 14px;background:#fff;border:1px solid #e2e8f0;border-radius:12px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.04);box-shadow:0 1px 3px rgba(0,0,0,.04);-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0;text-align:left;-webkit-transition:all .25s;transition:all .25s}.hstat[data-v-5cbe52d9]:hover{border-color:var(--primary-color,#1890ff);-webkit-box-shadow:0 4px 16px rgba(24,144,255,.1);box-shadow:0 4px 16px rgba(24,144,255,.1);-webkit-transform:translateY(-2px);transform:translateY(-2px)}.hstat-icon[data-v-5cbe52d9]{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;width:36px;height:36px;border-radius:8px;background:linear-gradient(135deg,rgba(24,144,255,.1),rgba(114,46,209,.08));font-size:16px;color:var(--primary-color,#1890ff);-ms-flex-negative:0;flex-shrink:0}.hstat-body[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-width:0}.hstat-val[data-v-5cbe52d9]{font-size:12px;font-weight:700;color:#0f172a}.hstat-label[data-v-5cbe52d9],.hstat-val[data-v-5cbe52d9]{line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.hstat-label[data-v-5cbe52d9]{font-size:10px;color:#94a3b8;margin-top:1px}.hero-cta[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-bottom:16px}.hero-cta .ant-btn[data-v-5cbe52d9]{border-radius:10px;font-weight:600;height:42px;padding:0 24px;font-size:14px}.hero-cta .ant-btn-primary[data-v-5cbe52d9]{-webkit-box-shadow:0 4px 14px rgba(24,144,255,.3);box-shadow:0 4px 14px rgba(24,144,255,.3)}.hero-hint[data-v-5cbe52d9]{font-size:12px;color:#94a3b8}.panel-header-actions[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px}.panel-header-icon[data-v-5cbe52d9]{font-size:15px;color:#94a3b8;cursor:pointer;padding:4px;border-radius:6px;-webkit-transition:color .2s,background .2s;transition:color .2s,background .2s}.panel-header-icon[data-v-5cbe52d9]:hover{color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08)}.panel-summary[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:0;padding:0;border-bottom:1px solid #f1f5f9}.summary-chip[data-v-5cbe52d9]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:8px 4px;border-right:1px solid #f1f5f9}.summary-chip[data-v-5cbe52d9]:last-child{border-right:none}.sc-num[data-v-5cbe52d9]{font-size:14px;font-weight:700;color:#0f172a;line-height:1.2;font-family:SF Mono,Monaco,monospace}.sc-num.up[data-v-5cbe52d9]{color:#16a34a}.sc-num.down[data-v-5cbe52d9]{color:#dc2626}.sc-label[data-v-5cbe52d9]{font-size:9px;color:#94a3b8;text-transform:uppercase;letter-spacing:.5px;margin-top:2px}.batch-bar[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;padding:8px 12px;background:-webkit-gradient(linear,left top,right top,from(#eff6ff),to(#f0f5ff));background:linear-gradient(90deg,#eff6ff,#f0f5ff);border-bottom:1px solid #dbeafe}.batch-all-cb[data-v-5cbe52d9]{font-size:12px}.wl-card[data-v-5cbe52d9]{position:relative;padding:10px 12px;border-radius:8px;cursor:pointer;-webkit-transition:all .15s;transition:all .15s;margin-bottom:2px;border:1px solid transparent}.wl-card[data-v-5cbe52d9]:hover{background:#f8fafc}.wl-card.active[data-v-5cbe52d9]{background:linear-gradient(135deg,#e6f7ff,#f0f5ff);border-color:#91d5ff}.wl-card-cb[data-v-5cbe52d9]{position:absolute;top:12px;left:4px;z-index:1}.wl-card-body[data-v-5cbe52d9]{-webkit-transition:padding-left .2s;transition:padding-left .2s}.wl-card-body.with-cb[data-v-5cbe52d9]{padding-left:24px}.wl-row-main[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;gap:5px}.wl-symbol[data-v-5cbe52d9]{font-size:13px;font-weight:700;color:#0f172a}.wl-market[data-v-5cbe52d9]{font-size:9px;color:#94a3b8;letter-spacing:.3px;padding:1px 4px;background:#f1f5f9;border-radius:3px}.wl-spacer[data-v-5cbe52d9]{-webkit-box-flex:1;-ms-flex:1;flex:1}.wl-price[data-v-5cbe52d9]{font-size:12px;font-weight:600;color:#0f172a;font-family:SF Mono,Monaco,monospace}.wl-change[data-v-5cbe52d9]{font-size:10px;font-weight:700;font-family:SF Mono,Monaco,monospace;padding:1px 5px;border-radius:4px;margin-left:4px}.wl-change.up[data-v-5cbe52d9]{color:#16a34a;background:rgba(22,163,74,.08)}.wl-change.down[data-v-5cbe52d9]{color:#dc2626;background:rgba(220,38,38,.06)}.wl-row-pnl[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin-top:4px;font-family:SF Mono,Monaco,monospace}.wl-pnl-qty[data-v-5cbe52d9]{font-size:10px;color:#94a3b8}.wl-pnl-val[data-v-5cbe52d9]{font-size:10px;font-weight:600;margin-left:auto}.wl-pnl-val.up[data-v-5cbe52d9]{color:#16a34a}.wl-pnl-val.down[data-v-5cbe52d9]{color:#dc2626}.wl-row-task[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:6px;margin-top:4px}.wl-row-task[data-v-5cbe52d9],.wl-task-badge[data-v-5cbe52d9]{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.wl-task-badge[data-v-5cbe52d9]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;gap:3px;font-size:10px;padding:1px 8px;border-radius:10px;cursor:pointer;-webkit-transition:all .2s;transition:all .2s}.wl-task-badge.active[data-v-5cbe52d9]{color:#16a34a;background:rgba(22,163,74,.08)}.wl-task-badge.paused[data-v-5cbe52d9]{color:#94a3b8;background:#f1f5f9}.wl-task-badge[data-v-5cbe52d9]:hover{opacity:.75}.wl-task-next[data-v-5cbe52d9]{font-size:10px;color:#94a3b8;margin-left:auto}.wl-card-hover-actions[data-v-5cbe52d9]{position:absolute;top:0;right:0;bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:2px;padding-right:8px;opacity:0;-webkit-transition:opacity .15s;transition:opacity .15s;background:-webkit-gradient(linear,left top,right top,from(transparent),color-stop(30%,#f8fafc));background:linear-gradient(90deg,transparent,#f8fafc 30%);border-radius:0 8px 8px 0;pointer-events:none}.wl-card:hover .wl-card-hover-actions[data-v-5cbe52d9]{opacity:1;pointer-events:auto}.wl-card.active .wl-card-hover-actions[data-v-5cbe52d9]{background:-webkit-gradient(linear,left top,right top,from(transparent),color-stop(30%,#e6f7ff));background:linear-gradient(90deg,transparent,#e6f7ff 30%)}.wl-hover-btn[data-v-5cbe52d9]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:26px;height:26px;border-radius:6px;font-size:13px;color:#64748b;cursor:pointer;-webkit-transition:all .15s;transition:all .15s;background:#fff;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.06);box-shadow:0 1px 3px rgba(0,0,0,.06)}.wl-hover-btn[data-v-5cbe52d9]:hover{color:var(--primary-color,#1890ff);background:#e6f7ff}.wl-hover-btn.danger[data-v-5cbe52d9]:hover{color:#dc2626;background:#fef2f2}.watchlist-empty[data-v-5cbe52d9]{text-align:center;padding:32px 16px}.we-icon[data-v-5cbe52d9]{font-size:36px;color:#e2e8f0;margin-bottom:12px}.watchlist-empty p[data-v-5cbe52d9]{font-size:12px;color:#94a3b8;margin-bottom:12px}.batch-modal-summary[data-v-5cbe52d9]{margin-bottom:16px}.batch-modal-summary p[data-v-5cbe52d9]{font-size:13px;color:#475569;margin-bottom:8px}.batch-symbols-preview[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:4px;max-height:80px;overflow-y:auto}.task-drawer-empty[data-v-5cbe52d9]{text-align:center;padding:48px 16px;color:#94a3b8}.task-drawer-empty p[data-v-5cbe52d9]{margin-top:12px;font-size:13px}.task-drawer-list[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:12px}.task-item[data-v-5cbe52d9]{padding:14px 16px;border:1px solid #e2e8f0;border-radius:10px;background:#fafafa;-webkit-transition:-webkit-box-shadow .2s;transition:-webkit-box-shadow .2s;transition:box-shadow .2s;transition:box-shadow .2s,-webkit-box-shadow .2s}.task-item[data-v-5cbe52d9]:hover{-webkit-box-shadow:0 2px 8px rgba(0,0,0,.06);box-shadow:0 2px 8px rgba(0,0,0,.06)}.task-item-header[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:8px}.task-item-name[data-v-5cbe52d9]{font-size:13px;font-weight:600;color:#0f172a}.task-item-meta[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:16px;font-size:12px;color:#64748b;margin-bottom:10px}.task-item-meta .anticon[data-v-5cbe52d9]{margin-right:4px}.task-item-actions[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:8px}.add-stock-modal-content .market-tabs[data-v-5cbe52d9]{margin-bottom:16px}.add-stock-modal-content .hot-symbols-section[data-v-5cbe52d9],.add-stock-modal-content .search-results-section[data-v-5cbe52d9],.add-stock-modal-content .symbol-search-section[data-v-5cbe52d9]{margin-bottom:24px}.add-stock-modal-content .hot-symbols-section .section-title[data-v-5cbe52d9],.add-stock-modal-content .search-results-section .section-title[data-v-5cbe52d9]{font-size:14px;font-weight:600;color:#262626;margin-bottom:12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.add-stock-modal-content .symbol-list[data-v-5cbe52d9]{max-height:200px;overflow-y:auto;border:1px solid #e8e8e8;border-radius:4px}.add-stock-modal-content .symbol-list .symbol-list-item[data-v-5cbe52d9]{cursor:pointer;padding:8px 12px;-webkit-transition:background-color .3s;transition:background-color .3s}.add-stock-modal-content .symbol-list .symbol-list-item[data-v-5cbe52d9]:hover{background-color:#f5f5f5}.add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content .symbol-code[data-v-5cbe52d9]{font-weight:600;color:#262626;min-width:80px}.add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content .symbol-name[data-v-5cbe52d9]{color:#595959;-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.add-stock-modal-content .selected-symbol-section[data-v-5cbe52d9]{margin-top:16px}.add-stock-modal-content .selected-symbol-section .selected-symbol-info[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.skeleton-box .skeleton-text[data-v-5cbe52d9]{display:block;height:12px;background:-webkit-gradient(linear,left top,right top,color-stop(25%,#e2e8f0),color-stop(50%,#f1f5f9),color-stop(75%,#e2e8f0));background:linear-gradient(90deg,#e2e8f0 25%,#f1f5f9 50%,#e2e8f0 75%);background-size:200% 100%;-webkit-animation:skeleton-pulse-5cbe52d9 1.5s ease-in-out infinite;animation:skeleton-pulse-5cbe52d9 1.5s ease-in-out infinite;border-radius:4px;margin:3px 0}.skeleton-box .skeleton-text.short[data-v-5cbe52d9]{width:40px;height:9px}.skeleton-cell[data-v-5cbe52d9]{background:#f8fafc!important;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:8px 4px}.skeleton-cell .skeleton-text[data-v-5cbe52d9]{width:80%;height:10px;background:-webkit-gradient(linear,left top,right top,color-stop(25%,#e2e8f0),color-stop(50%,#f1f5f9),color-stop(75%,#e2e8f0));background:linear-gradient(90deg,#e2e8f0 25%,#f1f5f9 50%,#e2e8f0 75%);background-size:200% 100%;-webkit-animation:skeleton-pulse-5cbe52d9 1.5s ease-in-out infinite;animation:skeleton-pulse-5cbe52d9 1.5s ease-in-out infinite;border-radius:3px;margin:2px 0}.skeleton-cell .skeleton-text.short[data-v-5cbe52d9]{width:50%;height:8px}.skeleton-item[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;padding:6px 0}.skeleton-item .skeleton-text[data-v-5cbe52d9]{height:12px;background:-webkit-gradient(linear,left top,right top,color-stop(25%,#e2e8f0),color-stop(50%,#f1f5f9),color-stop(75%,#e2e8f0));background:linear-gradient(90deg,#e2e8f0 25%,#f1f5f9 50%,#e2e8f0 75%);background-size:200% 100%;-webkit-animation:skeleton-pulse-5cbe52d9 1.5s ease-in-out infinite;animation:skeleton-pulse-5cbe52d9 1.5s ease-in-out infinite;border-radius:4px;-webkit-box-flex:1;-ms-flex:1;flex:1}.skeleton-item .skeleton-text.short[data-v-5cbe52d9]{-webkit-box-flex:0;-ms-flex:none;flex:none;width:40px}.indices-empty[data-v-5cbe52d9],.indices-loading[data-v-5cbe52d9]{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;height:100%;font-size:11px;color:#94a3b8;padding:4px 16px}.indices-loading .anticon[data-v-5cbe52d9]{margin-right:6px}.heatmap-empty[data-v-5cbe52d9]{grid-column:-1;text-align:center;padding:20px;color:#94a3b8;font-size:12px}@-webkit-keyframes skeleton-pulse-5cbe52d9{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes skeleton-pulse-5cbe52d9{0%{background-position:200% 0}to{background-position:-200% 0}}.theme-dark .skeleton-box .skeleton-text[data-v-5cbe52d9],.theme-dark .skeleton-cell .skeleton-text[data-v-5cbe52d9],.theme-dark .skeleton-item .skeleton-text[data-v-5cbe52d9]{background:-webkit-gradient(linear,left top,right top,color-stop(25%,#2a2a2a),color-stop(50%,#333),color-stop(75%,#2a2a2a));background:linear-gradient(90deg,#2a2a2a 25%,#333 50%,#2a2a2a 75%);background-size:200% 100%}.theme-dark .skeleton-cell[data-v-5cbe52d9]{background:#1c1c1c!important}.theme-dark .heatmap-empty[data-v-5cbe52d9],.theme-dark .indices-empty[data-v-5cbe52d9],.theme-dark .indices-loading[data-v-5cbe52d9]{color:#666}.qd-dark-modal .ant-modal-content{background:#141414}.qd-dark-modal .ant-modal-header{background:#141414;border-bottom-color:#2a2a2a}.qd-dark-modal .ant-modal-header .ant-modal-title{color:#d4d4d4}.qd-dark-modal .ant-modal-close-x{color:#888}.qd-dark-modal .ant-modal-body{background:#141414;color:#d4d4d4}.qd-dark-modal .ant-modal-footer{background:#141414;border-top-color:#2a2a2a}.qd-dark-modal .ant-modal-footer .ant-btn-default{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.qd-dark-modal .ant-modal-footer .ant-btn-default:hover{border-color:#1890ff;color:#1890ff}.qd-dark-modal .ant-form-item-label>label{color:#d4d4d4}.qd-dark-modal .ant-input{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.qd-dark-modal .ant-input::-webkit-input-placeholder{color:#555}.qd-dark-modal .ant-input::-moz-placeholder{color:#555}.qd-dark-modal .ant-input:-ms-input-placeholder{color:#555}.qd-dark-modal .ant-input::-ms-input-placeholder{color:#555}.qd-dark-modal .ant-input::placeholder{color:#555}.qd-dark-modal .ant-input-number,.qd-dark-modal .ant-select-selection{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.qd-dark-modal .ant-select-arrow{color:#666}.qd-dark-modal .ant-checkbox-wrapper,.qd-dark-modal .ant-radio-wrapper{color:#d4d4d4}.qd-dark-modal .ant-tabs-bar{border-bottom-color:#2a2a2a}.qd-dark-modal .ant-tabs-tab{color:#888}.qd-dark-modal .ant-tabs-tab:hover{color:#d4d4d4}.qd-dark-modal .ant-tabs-tab-active{color:#1890ff!important}.qd-dark-modal .ant-tag{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.qd-dark-modal .ant-tag-blue{background:rgba(24,144,255,.1);border-color:rgba(24,144,255,.3);color:#1890ff}.qd-dark-modal .ant-alert{background:rgba(24,144,255,.06);border-color:#2a2a2a}.qd-dark-modal .ant-alert-message{color:#d4d4d4}.qd-dark-modal .ant-alert-info .ant-alert-icon{color:#1890ff}.qd-dark-modal .ant-list-item{border-bottom-color:#2a2a2a;color:#d4d4d4}.qd-dark-modal .ant-list-item-meta-title{color:#d4d4d4}.qd-dark-modal .ant-list-item-meta-description{color:#888}.qd-dark-modal .ant-empty-description{color:#666}.qd-dark-modal .add-stock-modal-content,.qd-dark-modal p{color:#d4d4d4}.qd-dark-modal .add-stock-modal-content .section-title{color:#d4d4d4!important}.qd-dark-modal .add-stock-modal-content .symbol-list{border-color:#2a2a2a;background:#1c1c1c}.qd-dark-modal .add-stock-modal-content .symbol-list .symbol-list-item:hover{background:#252525!important}.qd-dark-modal .add-stock-modal-content .symbol-list .symbol-list-item .symbol-code{color:#d4d4d4!important}.qd-dark-modal .add-stock-modal-content .symbol-list .symbol-list-item .symbol-name{color:#888!important}.qd-dark-modal .add-stock-modal-content .selected-symbol-info strong{color:#d4d4d4}.qd-dark-modal .add-stock-modal-content .selected-symbol-info span{color:#888!important}.qd-dark-modal .batch-modal-summary p{color:#d4d4d4}.qd-dark-modal .batch-symbols-preview .ant-tag{background:rgba(24,144,255,.1);border-color:rgba(24,144,255,.3);color:#1890ff}.qd-dark-modal .task-item{background:#1c1c1c;border-color:#2a2a2a}.qd-dark-modal .task-item:hover{-webkit-box-shadow:0 2px 8px rgba(0,0,0,.3);box-shadow:0 2px 8px rgba(0,0,0,.3)}.qd-dark-modal .task-item-name{color:#d4d4d4}.qd-dark-modal .task-item-meta{color:#888}.qd-dark-modal .task-drawer-empty{color:#666}.qd-dark-modal .history-item{background:#1c1c1c;border-color:#2a2a2a}.qd-dark-modal .search-result-item{color:#d4d4d4}.qd-dark-modal .search-result-item:hover{background:#1c1c1c}.qd-dark-modal .search-result-name{color:#d4d4d4}.qd-dark-modal .search-result-market{color:#888}.qd-dark-drawer .ant-drawer-content{background:#141414}.qd-dark-drawer .ant-drawer-header{background:#141414;border-bottom-color:#2a2a2a}.qd-dark-drawer .ant-drawer-header .ant-drawer-title{color:#d4d4d4}.qd-dark-drawer .ant-drawer-header .ant-drawer-close{color:#888}.qd-dark-drawer .ant-drawer-body{background:#141414;color:#d4d4d4}.qd-dark-drawer .task-item{background:#1c1c1c;border-color:#2a2a2a}.qd-dark-drawer .task-item:hover{-webkit-box-shadow:0 2px 8px rgba(0,0,0,.3);box-shadow:0 2px 8px rgba(0,0,0,.3)}.qd-dark-drawer .task-item-name{color:#d4d4d4}.qd-dark-drawer .task-item-meta{color:#888}.qd-dark-drawer .task-drawer-empty{color:#666}.qd-dark-drawer .ant-btn-default{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.qd-dark-drawer .ant-btn-default:hover{border-color:#1890ff;color:#1890ff}.qd-dark-drawer .ant-btn-danger{background:transparent}.qd-dark-drawer .ant-popover-inner{background:#1c1c1c}.qd-dark-drawer .ant-popover-message,.qd-dark-drawer .ant-popover-message-title{color:#d4d4d4}.qd-dark-drawer .ant-popover-buttons .ant-btn-default{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.qd-dark-modal .ant-select-dropdown,body.colorWeak .ant-select-dropdown{background:#1c1c1c}.qd-dark-modal .ant-select-dropdown .ant-select-dropdown-menu-item,body.colorWeak .ant-select-dropdown .ant-select-dropdown-menu-item{color:#d4d4d4}.qd-dark-modal .ant-select-dropdown .ant-select-dropdown-menu-item-active,.qd-dark-modal .ant-select-dropdown .ant-select-dropdown-menu-item:hover,body.colorWeak .ant-select-dropdown .ant-select-dropdown-menu-item-active,body.colorWeak .ant-select-dropdown .ant-select-dropdown-menu-item:hover{background:#252525}.qd-dark-modal .ant-select-dropdown .ant-select-dropdown-menu-item-selected,body.colorWeak .ant-select-dropdown .ant-select-dropdown-menu-item-selected{background:rgba(24,144,255,.1);color:#1890ff} \ No newline at end of file diff --git a/frontend/dist/css/668.b1bf2178.css b/frontend/dist/css/668.b1bf2178.css new file mode 100644 index 0000000..17f22e9 --- /dev/null +++ b/frontend/dist/css/668.b1bf2178.css @@ -0,0 +1 @@ +.settings-page[data-v-15e1ba02]{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)}.settings-page .restart-alert[data-v-15e1ba02]{margin-bottom:16px;border-radius:8px}.settings-page .settings-header[data-v-15e1ba02]{margin-bottom:24px}.settings-page .settings-header .page-title[data-v-15e1ba02]{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}.settings-page .settings-header .page-title .anticon[data-v-15e1ba02]{font-size:28px;color:#1890ff}.settings-page .settings-header .page-desc[data-v-15e1ba02]{color:#64748b;font-size:14px;margin:0}.settings-page .settings-content[data-v-15e1ba02]{margin-bottom:80px}.settings-page .openrouter-balance-card[data-v-15e1ba02]{margin-bottom:20px}.settings-page .openrouter-balance-card .ant-card[data-v-15e1ba02]{background:linear-gradient(135deg,#e6f7ff,#f0f5ff);border:1px solid #91d5ff;border-radius:8px}.settings-page .openrouter-balance-card .balance-header[data-v-15e1ba02]{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;margin-bottom:12px}.settings-page .openrouter-balance-card .balance-header .balance-title[data-v-15e1ba02]{font-size:15px;font-weight:600;color:#1890ff}.settings-page .openrouter-balance-card .balance-info[data-v-15e1ba02]{padding:8px 0}.settings-page .openrouter-balance-card .balance-info[data-v-15e1ba02] .ant-statistic-title{font-size:12px;color:#666}.settings-page .openrouter-balance-card .balance-info[data-v-15e1ba02] .ant-statistic-content{font-size:18px}.settings-page .openrouter-balance-card .balance-info .free-tier-badge[data-v-15e1ba02]{margin-top:12px;text-align:right}.settings-page .openrouter-balance-card .balance-empty[data-v-15e1ba02]{color:#8c8c8c;font-size:13px;padding:8px 0}.settings-page .settings-collapse[data-v-15e1ba02]{background:transparent}.settings-page .settings-collapse[data-v-15e1ba02] .ant-collapse-item{margin-bottom:16px;border:none;border-radius:12px;overflow:hidden;background:#fff;-webkit-box-shadow:0 4px 20px rgba(0,0,0,.08);box-shadow:0 4px 20px rgba(0,0,0,.08)}.settings-page .settings-collapse[data-v-15e1ba02] .ant-collapse-item .ant-collapse-header{font-size:16px;font-weight:600;color:#1e3a5f;padding:16px 24px;padding-left:48px;background:linear-gradient(135deg,#fff,#f8fafc);border-bottom:1px solid #f0f0f0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.settings-page .settings-collapse[data-v-15e1ba02] .ant-collapse-item .ant-collapse-header .ant-collapse-arrow{color:#1890ff;left:20px}.settings-page .settings-collapse[data-v-15e1ba02] .ant-collapse-item .ant-collapse-header .panel-header{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px;-webkit-box-flex:1;-ms-flex:1;flex:1}.settings-page .settings-collapse[data-v-15e1ba02] .ant-collapse-item .ant-collapse-header .panel-header .panel-icon-left{font-size:18px;color:#1890ff}.settings-page .settings-collapse[data-v-15e1ba02] .ant-collapse-item .ant-collapse-header .panel-header .panel-title{font-size:16px}.settings-page .settings-collapse[data-v-15e1ba02] .ant-collapse-item .ant-collapse-content{border-top:none}.settings-page .settings-collapse[data-v-15e1ba02] .ant-collapse-item .ant-collapse-content .ant-collapse-content-box{padding:24px}.settings-page .settings-form[data-v-15e1ba02] .ant-form-item-label{padding-bottom:4px}.settings-page .settings-form[data-v-15e1ba02] .ant-form-item-label label{color:#475569;font-weight:500}.settings-page .settings-form[data-v-15e1ba02] .ant-form-item-label .form-label-with-tooltip{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;-ms-flex-wrap:wrap;flex-wrap:wrap}.settings-page .settings-form[data-v-15e1ba02] .ant-form-item-label .form-label-with-tooltip .label-text{color:#475569;font-weight:500}.settings-page .settings-form[data-v-15e1ba02] .ant-form-item-label .form-label-with-tooltip .help-icon{font-size:14px;color:#94a3b8;cursor:help;-webkit-transition:color .2s;transition:color .2s}.settings-page .settings-form[data-v-15e1ba02] .ant-form-item-label .form-label-with-tooltip .help-icon:hover{color:#1890ff}.settings-page .settings-form[data-v-15e1ba02] .ant-form-item-label .form-label-with-tooltip .api-link{font-size:12px;font-weight:400;color:#1890ff;text-decoration:none;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;padding:2px 8px;background:rgba(24,144,255,.08);border-radius:4px;-webkit-transition:all .2s;transition:all .2s;margin-left:4px}.settings-page .settings-form[data-v-15e1ba02] .ant-form-item-label .form-label-with-tooltip .api-link:hover{background:rgba(24,144,255,.15);color:#0076e4}.settings-page .settings-form[data-v-15e1ba02] .ant-form-item-label .form-label-with-tooltip .api-link .anticon{font-size:11px}.settings-page .settings-form[data-v-15e1ba02] .ant-input,.settings-page .settings-form[data-v-15e1ba02] .ant-input-number,.settings-page .settings-form[data-v-15e1ba02] .ant-select-selection{border-radius:8px}.settings-page .settings-form[data-v-15e1ba02] .ant-input-number{width:100%}.settings-page .settings-form .password-field .field-hint[data-v-15e1ba02]{margin-top:4px;font-size:12px;color:#52c41a;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px}.settings-page .settings-form .field-default[data-v-15e1ba02]{margin-top:4px;font-size:12px;color:#94a3b8}.settings-page .settings-footer[data-v-15e1ba02]{position:fixed;bottom:0;left:208px;right:0;padding:16px 24px;background:#fff;-webkit-box-shadow:0 -4px 20px rgba(0,0,0,.08);box-shadow:0 -4px 20px rgba(0,0,0,.08);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;gap:12px;z-index:100}.settings-page .settings-footer .ant-btn[data-v-15e1ba02]{min-width:100px;height:40px;border-radius:8px;font-weight:500}.settings-page.theme-dark[data-v-15e1ba02]{background:-webkit-gradient(linear,left top,left bottom,from(#141414),to(#1c1c1c));background:linear-gradient(180deg,#141414,#1c1c1c)}.settings-page.theme-dark .restart-alert[data-v-15e1ba02]{background:#1c1c1c;border-color:#b08800}.settings-page.theme-dark .settings-header .page-title[data-v-15e1ba02]{color:#e0e6ed}.settings-page.theme-dark .settings-header .page-desc[data-v-15e1ba02]{color:#8b949e}.settings-page.theme-dark .settings-collapse[data-v-15e1ba02] .ant-collapse-item{background:#1c1c1c;-webkit-box-shadow:0 4px 24px rgba(0,0,0,.25);box-shadow:0 4px 24px rgba(0,0,0,.25)}.settings-page.theme-dark .settings-collapse[data-v-15e1ba02] .ant-collapse-item .ant-collapse-header{background:linear-gradient(135deg,#252525,#1c1c1c);color:#e0e6ed;border-bottom-color:hsla(0,0%,100%,.06)}.settings-page.theme-dark .settings-collapse[data-v-15e1ba02] .ant-collapse-item .ant-collapse-header .panel-header .panel-icon-left{color:#58a6ff}.settings-page.theme-dark .settings-collapse[data-v-15e1ba02] .ant-collapse-item .ant-collapse-header .panel-header .panel-title{color:#e0e6ed}.settings-page.theme-dark .settings-collapse[data-v-15e1ba02] .ant-collapse-item .ant-collapse-content,.settings-page.theme-dark .settings-collapse[data-v-15e1ba02] .ant-collapse-item .ant-collapse-content .ant-collapse-content-box{background:#1c1c1c}.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-form-item-label .form-label-with-tooltip .label-text,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-form-item-label label{color:#c9d1d9}.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-form-item-label .form-label-with-tooltip .help-icon{color:#6e7681}.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-form-item-label .form-label-with-tooltip .help-icon:hover{color:#58a6ff}.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-form-item-label .form-label-with-tooltip .api-link{background:rgba(24,144,255,.15);color:#58a6ff}.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-form-item-label .form-label-with-tooltip .api-link:hover{background:rgba(24,144,255,.25)}.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input-number,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input-password,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-select-selection{background:#141414;border-color:#2a2a2a;color:#c9d1d9}.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input-number:focus,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input-number:hover,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input-password:focus,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input-password:hover,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input:focus,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input:hover,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-select-selection:focus,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-select-selection:hover{border-color:#1890ff}.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input-number-input{background:transparent;color:#c9d1d9}.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input-clear-icon,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input-clear-icon .anticon,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input-number-handler-wrap,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input-suffix .anticon,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-select-arrow{color:#8b949e}.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input-clear-icon:hover,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input-number-handler:hover .ant-input-number-handler-down-inner,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input-number-handler:hover .ant-input-number-handler-up-inner,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input-suffix .anticon:hover{color:#58a6ff}.settings-page.theme-dark .settings-form .field-default[data-v-15e1ba02]{color:#6e7681}.settings-page.theme-dark .settings-footer[data-v-15e1ba02]{background:#1c1c1c;border-top:1px solid hsla(0,0%,100%,.06);-webkit-box-shadow:0 -4px 24px rgba(0,0,0,.25);box-shadow:0 -4px 24px rgba(0,0,0,.25)}@media (max-width:768px){.settings-page[data-v-15e1ba02]{padding:16px}.settings-page .settings-footer[data-v-15e1ba02]{left:0;padding:12px 16px}} \ No newline at end of file diff --git a/frontend/dist/css/727.b1bf2178.css b/frontend/dist/css/727.b1bf2178.css new file mode 100644 index 0000000..17f22e9 --- /dev/null +++ b/frontend/dist/css/727.b1bf2178.css @@ -0,0 +1 @@ +.settings-page[data-v-15e1ba02]{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)}.settings-page .restart-alert[data-v-15e1ba02]{margin-bottom:16px;border-radius:8px}.settings-page .settings-header[data-v-15e1ba02]{margin-bottom:24px}.settings-page .settings-header .page-title[data-v-15e1ba02]{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}.settings-page .settings-header .page-title .anticon[data-v-15e1ba02]{font-size:28px;color:#1890ff}.settings-page .settings-header .page-desc[data-v-15e1ba02]{color:#64748b;font-size:14px;margin:0}.settings-page .settings-content[data-v-15e1ba02]{margin-bottom:80px}.settings-page .openrouter-balance-card[data-v-15e1ba02]{margin-bottom:20px}.settings-page .openrouter-balance-card .ant-card[data-v-15e1ba02]{background:linear-gradient(135deg,#e6f7ff,#f0f5ff);border:1px solid #91d5ff;border-radius:8px}.settings-page .openrouter-balance-card .balance-header[data-v-15e1ba02]{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;margin-bottom:12px}.settings-page .openrouter-balance-card .balance-header .balance-title[data-v-15e1ba02]{font-size:15px;font-weight:600;color:#1890ff}.settings-page .openrouter-balance-card .balance-info[data-v-15e1ba02]{padding:8px 0}.settings-page .openrouter-balance-card .balance-info[data-v-15e1ba02] .ant-statistic-title{font-size:12px;color:#666}.settings-page .openrouter-balance-card .balance-info[data-v-15e1ba02] .ant-statistic-content{font-size:18px}.settings-page .openrouter-balance-card .balance-info .free-tier-badge[data-v-15e1ba02]{margin-top:12px;text-align:right}.settings-page .openrouter-balance-card .balance-empty[data-v-15e1ba02]{color:#8c8c8c;font-size:13px;padding:8px 0}.settings-page .settings-collapse[data-v-15e1ba02]{background:transparent}.settings-page .settings-collapse[data-v-15e1ba02] .ant-collapse-item{margin-bottom:16px;border:none;border-radius:12px;overflow:hidden;background:#fff;-webkit-box-shadow:0 4px 20px rgba(0,0,0,.08);box-shadow:0 4px 20px rgba(0,0,0,.08)}.settings-page .settings-collapse[data-v-15e1ba02] .ant-collapse-item .ant-collapse-header{font-size:16px;font-weight:600;color:#1e3a5f;padding:16px 24px;padding-left:48px;background:linear-gradient(135deg,#fff,#f8fafc);border-bottom:1px solid #f0f0f0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.settings-page .settings-collapse[data-v-15e1ba02] .ant-collapse-item .ant-collapse-header .ant-collapse-arrow{color:#1890ff;left:20px}.settings-page .settings-collapse[data-v-15e1ba02] .ant-collapse-item .ant-collapse-header .panel-header{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px;-webkit-box-flex:1;-ms-flex:1;flex:1}.settings-page .settings-collapse[data-v-15e1ba02] .ant-collapse-item .ant-collapse-header .panel-header .panel-icon-left{font-size:18px;color:#1890ff}.settings-page .settings-collapse[data-v-15e1ba02] .ant-collapse-item .ant-collapse-header .panel-header .panel-title{font-size:16px}.settings-page .settings-collapse[data-v-15e1ba02] .ant-collapse-item .ant-collapse-content{border-top:none}.settings-page .settings-collapse[data-v-15e1ba02] .ant-collapse-item .ant-collapse-content .ant-collapse-content-box{padding:24px}.settings-page .settings-form[data-v-15e1ba02] .ant-form-item-label{padding-bottom:4px}.settings-page .settings-form[data-v-15e1ba02] .ant-form-item-label label{color:#475569;font-weight:500}.settings-page .settings-form[data-v-15e1ba02] .ant-form-item-label .form-label-with-tooltip{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;-ms-flex-wrap:wrap;flex-wrap:wrap}.settings-page .settings-form[data-v-15e1ba02] .ant-form-item-label .form-label-with-tooltip .label-text{color:#475569;font-weight:500}.settings-page .settings-form[data-v-15e1ba02] .ant-form-item-label .form-label-with-tooltip .help-icon{font-size:14px;color:#94a3b8;cursor:help;-webkit-transition:color .2s;transition:color .2s}.settings-page .settings-form[data-v-15e1ba02] .ant-form-item-label .form-label-with-tooltip .help-icon:hover{color:#1890ff}.settings-page .settings-form[data-v-15e1ba02] .ant-form-item-label .form-label-with-tooltip .api-link{font-size:12px;font-weight:400;color:#1890ff;text-decoration:none;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;padding:2px 8px;background:rgba(24,144,255,.08);border-radius:4px;-webkit-transition:all .2s;transition:all .2s;margin-left:4px}.settings-page .settings-form[data-v-15e1ba02] .ant-form-item-label .form-label-with-tooltip .api-link:hover{background:rgba(24,144,255,.15);color:#0076e4}.settings-page .settings-form[data-v-15e1ba02] .ant-form-item-label .form-label-with-tooltip .api-link .anticon{font-size:11px}.settings-page .settings-form[data-v-15e1ba02] .ant-input,.settings-page .settings-form[data-v-15e1ba02] .ant-input-number,.settings-page .settings-form[data-v-15e1ba02] .ant-select-selection{border-radius:8px}.settings-page .settings-form[data-v-15e1ba02] .ant-input-number{width:100%}.settings-page .settings-form .password-field .field-hint[data-v-15e1ba02]{margin-top:4px;font-size:12px;color:#52c41a;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px}.settings-page .settings-form .field-default[data-v-15e1ba02]{margin-top:4px;font-size:12px;color:#94a3b8}.settings-page .settings-footer[data-v-15e1ba02]{position:fixed;bottom:0;left:208px;right:0;padding:16px 24px;background:#fff;-webkit-box-shadow:0 -4px 20px rgba(0,0,0,.08);box-shadow:0 -4px 20px rgba(0,0,0,.08);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;gap:12px;z-index:100}.settings-page .settings-footer .ant-btn[data-v-15e1ba02]{min-width:100px;height:40px;border-radius:8px;font-weight:500}.settings-page.theme-dark[data-v-15e1ba02]{background:-webkit-gradient(linear,left top,left bottom,from(#141414),to(#1c1c1c));background:linear-gradient(180deg,#141414,#1c1c1c)}.settings-page.theme-dark .restart-alert[data-v-15e1ba02]{background:#1c1c1c;border-color:#b08800}.settings-page.theme-dark .settings-header .page-title[data-v-15e1ba02]{color:#e0e6ed}.settings-page.theme-dark .settings-header .page-desc[data-v-15e1ba02]{color:#8b949e}.settings-page.theme-dark .settings-collapse[data-v-15e1ba02] .ant-collapse-item{background:#1c1c1c;-webkit-box-shadow:0 4px 24px rgba(0,0,0,.25);box-shadow:0 4px 24px rgba(0,0,0,.25)}.settings-page.theme-dark .settings-collapse[data-v-15e1ba02] .ant-collapse-item .ant-collapse-header{background:linear-gradient(135deg,#252525,#1c1c1c);color:#e0e6ed;border-bottom-color:hsla(0,0%,100%,.06)}.settings-page.theme-dark .settings-collapse[data-v-15e1ba02] .ant-collapse-item .ant-collapse-header .panel-header .panel-icon-left{color:#58a6ff}.settings-page.theme-dark .settings-collapse[data-v-15e1ba02] .ant-collapse-item .ant-collapse-header .panel-header .panel-title{color:#e0e6ed}.settings-page.theme-dark .settings-collapse[data-v-15e1ba02] .ant-collapse-item .ant-collapse-content,.settings-page.theme-dark .settings-collapse[data-v-15e1ba02] .ant-collapse-item .ant-collapse-content .ant-collapse-content-box{background:#1c1c1c}.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-form-item-label .form-label-with-tooltip .label-text,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-form-item-label label{color:#c9d1d9}.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-form-item-label .form-label-with-tooltip .help-icon{color:#6e7681}.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-form-item-label .form-label-with-tooltip .help-icon:hover{color:#58a6ff}.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-form-item-label .form-label-with-tooltip .api-link{background:rgba(24,144,255,.15);color:#58a6ff}.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-form-item-label .form-label-with-tooltip .api-link:hover{background:rgba(24,144,255,.25)}.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input-number,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input-password,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-select-selection{background:#141414;border-color:#2a2a2a;color:#c9d1d9}.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input-number:focus,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input-number:hover,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input-password:focus,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input-password:hover,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input:focus,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input:hover,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-select-selection:focus,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-select-selection:hover{border-color:#1890ff}.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input-number-input{background:transparent;color:#c9d1d9}.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input-clear-icon,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input-clear-icon .anticon,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input-number-handler-wrap,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input-suffix .anticon,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-select-arrow{color:#8b949e}.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input-clear-icon:hover,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input-number-handler:hover .ant-input-number-handler-down-inner,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input-number-handler:hover .ant-input-number-handler-up-inner,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input-suffix .anticon:hover{color:#58a6ff}.settings-page.theme-dark .settings-form .field-default[data-v-15e1ba02]{color:#6e7681}.settings-page.theme-dark .settings-footer[data-v-15e1ba02]{background:#1c1c1c;border-top:1px solid hsla(0,0%,100%,.06);-webkit-box-shadow:0 -4px 24px rgba(0,0,0,.25);box-shadow:0 -4px 24px rgba(0,0,0,.25)}@media (max-width:768px){.settings-page[data-v-15e1ba02]{padding:16px}.settings-page .settings-footer[data-v-15e1ba02]{left:0;padding:12px 16px}} \ No newline at end of file diff --git a/frontend/dist/css/795.752239ab.css b/frontend/dist/css/795.752239ab.css deleted file mode 100644 index ffcfbe4..0000000 --- a/frontend/dist/css/795.752239ab.css +++ /dev/null @@ -1 +0,0 @@ -.settings-page[data-v-f144964c]{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)}.settings-page .restart-alert[data-v-f144964c]{margin-bottom:16px;border-radius:8px}.settings-page .settings-header[data-v-f144964c]{margin-bottom:24px}.settings-page .settings-header .page-title[data-v-f144964c]{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}.settings-page .settings-header .page-title .anticon[data-v-f144964c]{font-size:28px;color:#1890ff}.settings-page .settings-header .page-desc[data-v-f144964c]{color:#64748b;font-size:14px;margin:0}.settings-page .settings-content[data-v-f144964c]{margin-bottom:80px}.settings-page .openrouter-balance-card[data-v-f144964c]{margin-bottom:20px}.settings-page .openrouter-balance-card .ant-card[data-v-f144964c]{background:linear-gradient(135deg,#e6f7ff,#f0f5ff);border:1px solid #91d5ff;border-radius:8px}.settings-page .openrouter-balance-card .balance-header[data-v-f144964c]{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;margin-bottom:12px}.settings-page .openrouter-balance-card .balance-header .balance-title[data-v-f144964c]{font-size:15px;font-weight:600;color:#1890ff}.settings-page .openrouter-balance-card .balance-info[data-v-f144964c]{padding:8px 0}.settings-page .openrouter-balance-card .balance-info[data-v-f144964c] .ant-statistic-title{font-size:12px;color:#666}.settings-page .openrouter-balance-card .balance-info[data-v-f144964c] .ant-statistic-content{font-size:18px}.settings-page .openrouter-balance-card .balance-info .free-tier-badge[data-v-f144964c]{margin-top:12px;text-align:right}.settings-page .openrouter-balance-card .balance-empty[data-v-f144964c]{color:#8c8c8c;font-size:13px;padding:8px 0}.settings-page .settings-collapse[data-v-f144964c]{background:transparent}.settings-page .settings-collapse[data-v-f144964c] .ant-collapse-item{margin-bottom:16px;border:none;border-radius:12px;overflow:hidden;background:#fff;-webkit-box-shadow:0 4px 20px rgba(0,0,0,.08);box-shadow:0 4px 20px rgba(0,0,0,.08)}.settings-page .settings-collapse[data-v-f144964c] .ant-collapse-item .ant-collapse-header{font-size:16px;font-weight:600;color:#1e3a5f;padding:16px 24px;padding-left:48px;background:linear-gradient(135deg,#fff,#f8fafc);border-bottom:1px solid #f0f0f0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.settings-page .settings-collapse[data-v-f144964c] .ant-collapse-item .ant-collapse-header .ant-collapse-arrow{color:#1890ff;left:20px}.settings-page .settings-collapse[data-v-f144964c] .ant-collapse-item .ant-collapse-header .panel-header{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px;-webkit-box-flex:1;-ms-flex:1;flex:1}.settings-page .settings-collapse[data-v-f144964c] .ant-collapse-item .ant-collapse-header .panel-header .panel-icon-left{font-size:18px;color:#1890ff}.settings-page .settings-collapse[data-v-f144964c] .ant-collapse-item .ant-collapse-header .panel-header .panel-title{font-size:16px}.settings-page .settings-collapse[data-v-f144964c] .ant-collapse-item .ant-collapse-content{border-top:none}.settings-page .settings-collapse[data-v-f144964c] .ant-collapse-item .ant-collapse-content .ant-collapse-content-box{padding:24px}.settings-page .settings-form[data-v-f144964c] .ant-form-item-label{padding-bottom:4px}.settings-page .settings-form[data-v-f144964c] .ant-form-item-label label{color:#475569;font-weight:500}.settings-page .settings-form[data-v-f144964c] .ant-form-item-label .form-label-with-tooltip{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;-ms-flex-wrap:wrap;flex-wrap:wrap}.settings-page .settings-form[data-v-f144964c] .ant-form-item-label .form-label-with-tooltip .label-text{color:#475569;font-weight:500}.settings-page .settings-form[data-v-f144964c] .ant-form-item-label .form-label-with-tooltip .help-icon{font-size:14px;color:#94a3b8;cursor:help;-webkit-transition:color .2s;transition:color .2s}.settings-page .settings-form[data-v-f144964c] .ant-form-item-label .form-label-with-tooltip .help-icon:hover{color:#1890ff}.settings-page .settings-form[data-v-f144964c] .ant-form-item-label .form-label-with-tooltip .api-link{font-size:12px;font-weight:400;color:#1890ff;text-decoration:none;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;padding:2px 8px;background:rgba(24,144,255,.08);border-radius:4px;-webkit-transition:all .2s;transition:all .2s;margin-left:4px}.settings-page .settings-form[data-v-f144964c] .ant-form-item-label .form-label-with-tooltip .api-link:hover{background:rgba(24,144,255,.15);color:#0076e4}.settings-page .settings-form[data-v-f144964c] .ant-form-item-label .form-label-with-tooltip .api-link .anticon{font-size:11px}.settings-page .settings-form[data-v-f144964c] .ant-input,.settings-page .settings-form[data-v-f144964c] .ant-input-number,.settings-page .settings-form[data-v-f144964c] .ant-select-selection{border-radius:8px}.settings-page .settings-form[data-v-f144964c] .ant-input-number{width:100%}.settings-page .settings-form .password-field .field-hint[data-v-f144964c]{margin-top:4px;font-size:12px;color:#52c41a;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px}.settings-page .settings-form .field-default[data-v-f144964c]{margin-top:4px;font-size:12px;color:#94a3b8}.settings-page .settings-footer[data-v-f144964c]{position:fixed;bottom:0;left:208px;right:0;padding:16px 24px;background:#fff;-webkit-box-shadow:0 -4px 20px rgba(0,0,0,.08);box-shadow:0 -4px 20px rgba(0,0,0,.08);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;gap:12px;z-index:100}.settings-page .settings-footer .ant-btn[data-v-f144964c]{min-width:100px;height:40px;border-radius:8px;font-weight:500}.settings-page.theme-dark[data-v-f144964c]{background:-webkit-gradient(linear,left top,left bottom,from(#141414),to(#1c1c1c));background:linear-gradient(180deg,#141414,#1c1c1c)}.settings-page.theme-dark .restart-alert[data-v-f144964c]{background:#1c1c1c;border-color:#b08800}.settings-page.theme-dark .settings-header .page-title[data-v-f144964c]{color:#e0e6ed}.settings-page.theme-dark .settings-header .page-desc[data-v-f144964c]{color:#8b949e}.settings-page.theme-dark .settings-collapse[data-v-f144964c] .ant-collapse-item{background:#1c1c1c;-webkit-box-shadow:0 4px 24px rgba(0,0,0,.25);box-shadow:0 4px 24px rgba(0,0,0,.25)}.settings-page.theme-dark .settings-collapse[data-v-f144964c] .ant-collapse-item .ant-collapse-header{background:linear-gradient(135deg,#252525,#1c1c1c);color:#e0e6ed;border-bottom-color:hsla(0,0%,100%,.06)}.settings-page.theme-dark .settings-collapse[data-v-f144964c] .ant-collapse-item .ant-collapse-header .panel-header .panel-icon-left{color:#58a6ff}.settings-page.theme-dark .settings-collapse[data-v-f144964c] .ant-collapse-item .ant-collapse-header .panel-header .panel-title{color:#e0e6ed}.settings-page.theme-dark .settings-collapse[data-v-f144964c] .ant-collapse-item .ant-collapse-content,.settings-page.theme-dark .settings-collapse[data-v-f144964c] .ant-collapse-item .ant-collapse-content .ant-collapse-content-box{background:#1c1c1c}.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-form-item-label .form-label-with-tooltip .label-text,.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-form-item-label label{color:#c9d1d9}.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-form-item-label .form-label-with-tooltip .help-icon{color:#6e7681}.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-form-item-label .form-label-with-tooltip .help-icon:hover{color:#58a6ff}.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-form-item-label .form-label-with-tooltip .api-link{background:rgba(24,144,255,.15);color:#58a6ff}.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-form-item-label .form-label-with-tooltip .api-link:hover{background:rgba(24,144,255,.25)}.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-input,.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-input-number,.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-input-password,.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-select-selection{background:#141414;border-color:#2a2a2a;color:#c9d1d9}.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-input-number:focus,.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-input-number:hover,.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-input-password:focus,.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-input-password:hover,.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-input:focus,.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-input:hover,.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-select-selection:focus,.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-select-selection:hover{border-color:#1890ff}.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-input-number-input{background:transparent;color:#c9d1d9}.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-select-arrow{color:#8b949e}.settings-page.theme-dark .settings-form .field-default[data-v-f144964c]{color:#6e7681}.settings-page.theme-dark .settings-footer[data-v-f144964c]{background:#1c1c1c;border-top:1px solid hsla(0,0%,100%,.06);-webkit-box-shadow:0 -4px 24px rgba(0,0,0,.25);box-shadow:0 -4px 24px rgba(0,0,0,.25)}@media (max-width:768px){.settings-page[data-v-f144964c]{padding:16px}.settings-page .settings-footer[data-v-f144964c]{left:0;padding:12px 16px}} \ No newline at end of file diff --git a/frontend/dist/css/798.c66b70a6.css b/frontend/dist/css/798.c66b70a6.css deleted file mode 100644 index 07a455f..0000000 --- a/frontend/dist/css/798.c66b70a6.css +++ /dev/null @@ -1 +0,0 @@ -.quick-trade-drawer[data-v-0d547552] .ant-drawer-body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:100%;overflow-y:auto}.qt-header[data-v-0d547552]{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:16px 20px 12px;border-bottom:1px solid #f0f0f0}.qt-header .qt-header-left[data-v-0d547552],.qt-header[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.qt-header .qt-header-left[data-v-0d547552]{gap:8px}.qt-header .qt-header-left .qt-icon[data-v-0d547552]{font-size:20px;color:#1890ff}.qt-header .qt-header-left .qt-header-title[data-v-0d547552]{font-size:16px;font-weight:600}.qt-header .qt-close[data-v-0d547552]{font-size:16px;cursor:pointer;color:#999}.qt-header .qt-close[data-v-0d547552]:hover{color:#333}.qt-symbol-bar[data-v-0d547552]{padding:12px 20px;background:linear-gradient(135deg,#f6f8fc,#eef2f8);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:8px}.qt-symbol-bar .qt-symbol-selector[data-v-0d547552],.qt-symbol-bar .qt-symbol-selector[data-v-0d547552] .ant-select{width:100%}.qt-symbol-bar .qt-symbol-selector[data-v-0d547552] .ant-select-selection{border-radius:6px;border:1px solid #d9d9d9}.qt-symbol-bar .qt-price-display[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.qt-symbol-bar .qt-price-display .qt-current-price[data-v-0d547552]{font-size:16px;font-weight:600;color:#333}.qt-symbol-option[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.qt-symbol-option .qt-symbol-option-name[data-v-0d547552]{font-weight:600;font-size:14px}.qt-symbol-option .qt-symbol-option-desc[data-v-0d547552]{color:#999;font-size:12px}.qt-section[data-v-0d547552]{padding:8px 20px}.qt-section .qt-label[data-v-0d547552]{font-size:12px;color:#999;margin-bottom:4px;font-weight:500}.qt-section .qt-crypto-hint[data-v-0d547552]{font-size:10px;color:#faad14;background:rgba(250,173,20,.1);padding:1px 6px;border-radius:4px;margin-left:4px}.qt-balance[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;margin-top:6px;font-size:12px}.qt-balance .qt-balance-label[data-v-0d547552]{color:#999}.qt-balance .qt-balance-value[data-v-0d547552]{color:#52c41a;font-weight:600}.qt-direction-toggle[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:8px}.qt-direction-toggle .qt-dir-btn[data-v-0d547552]{-webkit-box-flex:1;-ms-flex:1;flex:1;padding:10px;text-align:center;border-radius:8px;font-weight:600;font-size:14px;cursor:pointer;-webkit-transition:all .2s;transition:all .2s;border:2px solid transparent;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;gap:6px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.qt-direction-toggle .qt-dir-long[data-v-0d547552]{color:#52c41a;background:rgba(82,196,26,.06);border-color:rgba(82,196,26,.2)}.qt-direction-toggle .qt-dir-long.active[data-v-0d547552]{background:#52c41a;color:#fff;border-color:#52c41a;-webkit-box-shadow:0 4px 12px rgba(82,196,26,.3);box-shadow:0 4px 12px rgba(82,196,26,.3)}.qt-direction-toggle .qt-dir-long[data-v-0d547552]:hover:not(.active){border-color:#52c41a}.qt-direction-toggle .qt-dir-short[data-v-0d547552]{color:#f5222d;background:rgba(245,34,45,.06);border-color:rgba(245,34,45,.2)}.qt-direction-toggle .qt-dir-short.active[data-v-0d547552]{background:#f5222d;color:#fff;border-color:#f5222d;-webkit-box-shadow:0 4px 12px rgba(245,34,45,.3);box-shadow:0 4px 12px rgba(245,34,45,.3)}.qt-direction-toggle .qt-dir-short[data-v-0d547552]:hover:not(.active){border-color:#f5222d}.qt-quick-amounts[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:6px;margin-top:6px}.qt-quick-amounts button[data-v-0d547552]{-webkit-box-flex:1;-ms-flex:1;flex:1;font-size:12px}.qt-leverage-row[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.qt-tpsl-row[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px}.qt-tpsl-row .qt-tpsl-item[data-v-0d547552]{-webkit-box-flex:1;-ms-flex:1;flex:1}.qt-submit-section[data-v-0d547552]{padding:12px 20px}.qt-submit-section .qt-submit-btn[data-v-0d547552]{height:48px;font-size:16px;font-weight:700;border-radius:8px;letter-spacing:.5px}.qt-submit-section .qt-btn-long[data-v-0d547552]{background:#52c41a!important;border-color:#52c41a!important}.qt-submit-section .qt-btn-long[data-v-0d547552]:hover{background:#73d13d!important}.qt-submit-section .qt-btn-long[data-v-0d547552]:active{background:#389e0d!important}.qt-submit-section .qt-btn-short[data-v-0d547552]{background:#f5222d!important;border-color:#f5222d!important}.qt-submit-section .qt-btn-short[data-v-0d547552]:hover{background:#ff4d4f!important}.qt-submit-section .qt-btn-short[data-v-0d547552]:active{background:#cf1322!important}.qt-position-section[data-v-0d547552]{padding:8px 20px 12px}.qt-position-section .qt-section-header[data-v-0d547552]{font-size:13px;font-weight:600;color:#666;margin-bottom:8px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}.qt-history-section[data-v-0d547552]{padding:8px 20px 12px}.qt-history-section[data-v-0d547552] .ant-collapse{background:transparent;border:none}.qt-history-section[data-v-0d547552] .ant-collapse-item{border:none}.qt-history-section[data-v-0d547552] .ant-collapse-header{padding:0!important;cursor:pointer}.qt-history-section[data-v-0d547552] .ant-collapse-header:hover{opacity:.8}.qt-history-section[data-v-0d547552] .ant-collapse-content{border:none;background:transparent}.qt-history-section[data-v-0d547552] .ant-collapse-content-box{padding:8px 0 0 0!important}.qt-history-section .qt-section-header[data-v-0d547552]{font-size:13px;font-weight:600;color:#666;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.qt-history-section .qt-history-count[data-v-0d547552]{font-size:12px;color:#999;font-weight:400}.qt-position-card[data-v-0d547552]{background:#fafafa;border-radius:8px;padding:10px 12px;border-left:3px solid #d9d9d9}.qt-position-card.long[data-v-0d547552]{border-left-color:#52c41a}.qt-position-card.short[data-v-0d547552]{border-left-color:#f5222d}.qt-position-card .qt-pos-row[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;font-size:13px;padding:2px 0}.qt-position-card .qt-pos-row span[data-v-0d547552]:first-child{color:#999}.qt-position-empty[data-v-0d547552]{background:#fafafa;border-radius:8px;padding:20px 12px;text-align:center;border:1px dashed #d9d9d9}.qt-green[data-v-0d547552]{color:#52c41a!important}.qt-red[data-v-0d547552]{color:#f5222d!important}.qt-trade-list .qt-trade-item[data-v-0d547552]{padding:6px 0;border-bottom:1px solid #f5f5f5}.qt-trade-list .qt-trade-item[data-v-0d547552]:last-child{border-bottom:none}.qt-trade-list .qt-trade-item .qt-trade-main[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}.qt-trade-list .qt-trade-item .qt-trade-main .qt-trade-symbol[data-v-0d547552]{font-weight:600;font-size:13px}.qt-trade-list .qt-trade-item .qt-trade-main .qt-trade-amount[data-v-0d547552]{margin-left:auto;font-size:13px}.qt-trade-list .qt-trade-item .qt-trade-meta[data-v-0d547552]{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;margin-top:2px}.qt-trade-list .qt-trade-item .qt-trade-meta .qt-trade-time[data-v-0d547552]{font-size:11px;color:#bbb}.theme-dark .qt-header[data-v-0d547552]{border-bottom-color:#303030}.theme-dark .qt-header .qt-header-title[data-v-0d547552]{color:#e0e0e0}.theme-dark .qt-header .qt-close[data-v-0d547552]{color:#666}.theme-dark .qt-header .qt-close[data-v-0d547552]:hover{color:#bbb}.theme-dark .qt-symbol-bar[data-v-0d547552]{background:linear-gradient(135deg,#1a1f2e,#141824)}.theme-dark .qt-symbol-bar .qt-current-price[data-v-0d547552]{color:#e0e0e0}.theme-dark .qt-symbol-bar[data-v-0d547552] .ant-select-selection{background:#1a1f2e;border-color:#303030;color:#e0e0e0}.theme-dark .qt-symbol-bar[data-v-0d547552] .ant-select-selection__placeholder{color:#666}.theme-dark .qt-symbol-option .qt-symbol-option-name[data-v-0d547552]{color:#e0e0e0}.theme-dark .qt-symbol-option .qt-symbol-option-desc[data-v-0d547552]{color:#999}.theme-dark .qt-section .qt-label[data-v-0d547552]{color:#777}.theme-dark .qt-position-card[data-v-0d547552]{background:#1a1f2e}.theme-dark .qt-position-card .qt-pos-row span[data-v-0d547552]:first-child{color:#777}.theme-dark .qt-history-section .qt-section-header[data-v-0d547552],.theme-dark .qt-position-card .qt-pos-row span[data-v-0d547552]:last-child{color:#ccc}.theme-dark .qt-history-section .qt-history-count[data-v-0d547552]{color:#888}.theme-dark .qt-history-section[data-v-0d547552] .ant-collapse{background:transparent!important;color:#ccc}.theme-dark .qt-history-section[data-v-0d547552] .ant-collapse .ant-collapse-header{color:#ccc!important}.theme-dark .qt-history-section[data-v-0d547552] .ant-collapse .ant-collapse-header:hover{opacity:.8}.theme-dark .qt-history-section[data-v-0d547552] .ant-collapse .ant-collapse-content{background:transparent;color:#ccc}.theme-dark .qt-trade-item[data-v-0d547552]{border-bottom-color:#2a2a2a!important}.theme-dark .qt-trade-item .qt-trade-symbol[data-v-0d547552]{color:#e0e0e0}.theme-dark .qt-trade-item .qt-trade-amount[data-v-0d547552]{color:#ccc}.theme-dark[data-v-0d547552] .ant-collapse{background:transparent!important;color:#ccc}.theme-dark[data-v-0d547552] .ant-collapse .ant-collapse-header{color:#ccc!important}.theme-dark[data-v-0d547552] .ant-collapse .ant-collapse-content{background:transparent;color:#ccc}.theme-dark[data-v-0d547552] .ant-drawer-content{background:#141414}.theme-dark[data-v-0d547552] .ant-input-number,.theme-dark[data-v-0d547552] .ant-select-selection{background:#1a1f2e;border-color:#303030;color:#e0e0e0}.theme-dark[data-v-0d547552] .ant-radio-group .ant-radio-button-wrapper{background:#1a1f2e;border-color:#303030;color:#ccc}.theme-dark[data-v-0d547552] .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{background:#1890ff;border-color:#1890ff;color:#fff}.theme-dark[data-v-0d547552] .ant-slider-rail{background:#303030}.theme-dark[data-v-0d547552] .ant-slider-track{background:#1890ff}.polymarket-analysis-modal .input-section .input-actions[data-v-67e891d2]{margin-top:12px}.polymarket-analysis-modal .result-section .market-info[data-v-67e891d2]{margin-bottom:24px}.polymarket-analysis-modal .result-section .market-info h3[data-v-67e891d2]{margin-bottom:12px;font-size:18px;font-weight:600}.polymarket-analysis-modal .result-section .market-info .market-meta[data-v-67e891d2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:16px;-ms-flex-wrap:wrap;flex-wrap:wrap}.polymarket-analysis-modal .result-section .market-info .market-meta .meta-item[data-v-67e891d2]{color:rgba(0,0,0,.65);font-size:14px}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison[data-v-67e891d2]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:16px;margin:24px 0}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item[data-v-67e891d2]{-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center;padding:16px;background:#f5f5f5;border-radius:4px}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-label[data-v-67e891d2]{font-size:12px;color:rgba(0,0,0,.65);margin-bottom:8px}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-value[data-v-67e891d2]{font-size:24px;font-weight:600}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-value.ai-prob[data-v-67e891d2]{color:#1890ff}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-value.divergence-positive[data-v-67e891d2]{color:#52c41a}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-value.divergence-negative[data-v-67e891d2]{color:#ff4d4f}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-value.divergence-neutral[data-v-67e891d2]{color:rgba(0,0,0,.65)}.polymarket-analysis-modal .result-section .analysis-result .recommendation-section[data-v-67e891d2]{margin:24px 0}.polymarket-analysis-modal .result-section .analysis-result .recommendation-section .rec-card[data-v-67e891d2]{text-align:center;padding:16px;background:#f5f5f5;border-radius:4px}.polymarket-analysis-modal .result-section .analysis-result .recommendation-section .rec-card .rec-label[data-v-67e891d2]{font-size:12px;color:rgba(0,0,0,.65);margin-bottom:8px}.polymarket-analysis-modal .result-section .analysis-result .recommendation-section .rec-card .rec-value[data-v-67e891d2]{font-size:24px;font-weight:600;color:#1890ff}.polymarket-analysis-modal .result-section .analysis-result .key-factors-section[data-v-67e891d2],.polymarket-analysis-modal .result-section .analysis-result .reasoning-section[data-v-67e891d2]{margin:24px 0}.polymarket-analysis-modal .result-section .analysis-result .key-factors-section h4[data-v-67e891d2],.polymarket-analysis-modal .result-section .analysis-result .reasoning-section h4[data-v-67e891d2]{margin-bottom:12px;font-size:16px;font-weight:600}.polymarket-analysis-modal .result-section .analysis-result .key-factors-section .reasoning-text[data-v-67e891d2],.polymarket-analysis-modal .result-section .analysis-result .reasoning-section .reasoning-text[data-v-67e891d2]{line-height:1.8;color:rgba(0,0,0,.85);white-space:pre-wrap}.polymarket-analysis-modal .result-section .result-actions[data-v-67e891d2]{margin-top:24px;text-align:right}.polymarket-analysis-modal .loading-section[data-v-67e891d2]{text-align:center;padding:40px 0}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-tabs-bar{border-bottom-color:#2a2a2a}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-tabs-tab{color:#a3a3a3!important}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-tabs-tab-active{color:#d4d4d4!important}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-tabs-ink-bar{background:#58a6ff!important}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-divider{color:#d4d4d4;border-top-color:#2a2a2a}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-divider-inner-text{color:#d4d4d4!important}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-input,.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-input-affix-wrapper,.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-input-number,.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-input-textarea textarea{background:#141414!important;border-color:#2a2a2a!important;color:#d4d4d4!important}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-table{background:#1c1c1c;color:#d4d4d4}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-table-thead>tr>th{background:#252525;color:#d4d4d4;border-bottom-color:#2a2a2a}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-table-tbody>tr>td{background:#1c1c1c;color:#d4d4d4;border-bottom-color:#2a2a2a}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-btn-link{color:#58a6ff!important}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-alert{background:#1c1c1c;border-color:#2a2a2a}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-alert-message{color:#d4d4d4!important}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-alert-description{color:#a3a3a3!important}.polymarket-analysis-modal.theme-dark .market-info h3[data-v-67e891d2]{color:#d4d4d4}.polymarket-analysis-modal.theme-dark .market-info .market-meta .meta-item[data-v-67e891d2]{color:#a3a3a3}.polymarket-analysis-modal.theme-dark .analysis-result .probability-comparison .prob-item[data-v-67e891d2]{background:#252525;border:1px solid #2a2a2a}.polymarket-analysis-modal.theme-dark .analysis-result .probability-comparison .prob-item .prob-label[data-v-67e891d2]{color:#a3a3a3}.polymarket-analysis-modal.theme-dark .analysis-result .probability-comparison .prob-item .prob-value[data-v-67e891d2]{color:#e5e5e5}.polymarket-analysis-modal.theme-dark .analysis-result .probability-comparison .prob-item .prob-value.divergence-neutral[data-v-67e891d2]{color:#b3b3b3}.polymarket-analysis-modal.theme-dark .analysis-result .recommendation-section .rec-card[data-v-67e891d2]{background:#252525;border:1px solid #2a2a2a}.polymarket-analysis-modal.theme-dark .analysis-result .recommendation-section .rec-card .rec-label[data-v-67e891d2]{color:#a3a3a3}.polymarket-analysis-modal.theme-dark .analysis-result .recommendation-section .rec-card .rec-value[data-v-67e891d2]{color:#e5e5e5}.polymarket-analysis-modal.theme-dark .analysis-result .key-factors-section .reasoning-text[data-v-67e891d2],.polymarket-analysis-modal.theme-dark .analysis-result .key-factors-section h4[data-v-67e891d2],.polymarket-analysis-modal.theme-dark .analysis-result .reasoning-section .reasoning-text[data-v-67e891d2],.polymarket-analysis-modal.theme-dark .analysis-result .reasoning-section h4[data-v-67e891d2]{color:#d4d4d4}.ai-asset-analysis-page[data-v-443699fa]{padding:16px;min-height:calc(100vh - 120px);background:#f0f2f5}.ai-asset-analysis-page .opp-section[data-v-443699fa]{margin-bottom:12px}.ai-asset-analysis-page .opp-section .opp-header[data-v-443699fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:8px;padding:0 4px}.ai-asset-analysis-page .opp-section .opp-header .opp-title[data-v-443699fa]{font-size:14px;font-weight:600;color:#1a1a2e}.ai-asset-analysis-page .opp-section .opp-header .opp-header-right[data-v-443699fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.ai-asset-analysis-page .opp-section .opp-header .opp-update-hint[data-v-443699fa]{font-size:12px;color:#8c8c8c}.ai-asset-analysis-page .opp-section .opp-carousel-wrapper[data-v-443699fa]{overflow:hidden;position:relative;border-radius:10px}.ai-asset-analysis-page .opp-section .opp-carousel-wrapper[data-v-443699fa]:after,.ai-asset-analysis-page .opp-section .opp-carousel-wrapper[data-v-443699fa]:before{content:"";position:absolute;top:0;bottom:0;width:40px;z-index:2;pointer-events:none}.ai-asset-analysis-page .opp-section .opp-carousel-wrapper[data-v-443699fa]:before{left:0;background:-webkit-gradient(linear,left top,right top,from(#f0f2f5),to(transparent));background:linear-gradient(90deg,#f0f2f5,transparent)}.ai-asset-analysis-page .opp-section .opp-carousel-wrapper[data-v-443699fa]:after{right:0;background:-webkit-gradient(linear,right top,left top,from(#f0f2f5),to(transparent));background:linear-gradient(270deg,#f0f2f5,transparent)}.ai-asset-analysis-page .opp-section .opp-track[data-v-443699fa]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:10px;-webkit-animation:opp-scroll-left-443699fa 60s linear infinite;animation:opp-scroll-left-443699fa 60s linear infinite;width:-webkit-max-content;width:-moz-max-content;width:max-content;padding:4px 0}.ai-asset-analysis-page .opp-section .opp-track.paused[data-v-443699fa]{-webkit-animation-play-state:paused;animation-play-state:paused}@-webkit-keyframes opp-scroll-left-443699fa{0%{-webkit-transform:translateX(0);transform:translateX(0)}to{-webkit-transform:translateX(-50%);transform:translateX(-50%)}}@keyframes opp-scroll-left-443699fa{0%{-webkit-transform:translateX(0);transform:translateX(0)}to{-webkit-transform:translateX(-50%);transform:translateX(-50%)}}.ai-asset-analysis-page .opp-section .opp-card[data-v-443699fa]{width:190px;background:#fff;border-radius:10px;padding:12px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.06);box-shadow:0 1px 3px rgba(0,0,0,.06);cursor:pointer;-webkit-transition:all .2s;transition:all .2s;border-left:3px solid #d9d9d9;-ms-flex-negative:0;flex-shrink:0}.ai-asset-analysis-page .opp-section .opp-card.is-prediction-market[data-v-443699fa]{width:280px;min-height:160px}.ai-asset-analysis-page .opp-section .opp-card.bullish[data-v-443699fa]{border-left-color:#52c41a}.ai-asset-analysis-page .opp-section .opp-card.bearish[data-v-443699fa]{border-left-color:#ff4d4f}.ai-asset-analysis-page .opp-section .opp-card.market-predictionmarket[data-v-443699fa]{border-left-color:#13c2c2;background:linear-gradient(135deg,#fff,#f0f9ff)}.ai-asset-analysis-page .opp-section .opp-card[data-v-443699fa]:hover{-webkit-transform:translateY(-2px);transform:translateY(-2px);-webkit-box-shadow:0 4px 12px rgba(0,0,0,.1);box-shadow:0 4px 12px rgba(0,0,0,.1)}.ai-asset-analysis-page .opp-section .opp-card .opp-top[data-v-443699fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:6px;gap:8px}.ai-asset-analysis-page .opp-section .opp-card .opp-symbol[data-v-443699fa]{font-weight:700;font-size:14px;color:#1a1a2e;-webkit-box-flex:1;-ms-flex:1;flex:1;word-break:break-word;line-height:1.4}.ai-asset-analysis-page .opp-section .opp-card .opp-symbol.prediction-title[data-v-443699fa]{font-size:13px;font-weight:600;line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}.ai-asset-analysis-page .opp-section .opp-card .opp-market-tag[data-v-443699fa]{font-size:11px;-ms-flex-negative:0;flex-shrink:0;margin-left:auto}.ai-asset-analysis-page .opp-section .opp-card .opp-price[data-v-443699fa]{font-size:13px;color:#595959}.ai-asset-analysis-page .opp-section .opp-card .opp-change[data-v-443699fa]{font-size:15px;font-weight:600}.ai-asset-analysis-page .opp-section .opp-card .opp-change.up[data-v-443699fa]{color:#52c41a}.ai-asset-analysis-page .opp-section .opp-card .opp-change.down[data-v-443699fa]{color:#ff4d4f}.ai-asset-analysis-page .opp-section .opp-card .opp-signal[data-v-443699fa]{margin-top:4px}.ai-asset-analysis-page .opp-section .opp-card .opp-reason[data-v-443699fa]{font-size:11px;color:#8c8c8c;margin-top:4px;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.ai-asset-analysis-page .opp-section .opp-card .opp-actions[data-v-443699fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-top:6px;gap:6px}.ai-asset-analysis-page .opp-section .opp-card .opp-action[data-v-443699fa]{font-size:12px;color:#1890ff;font-weight:500;cursor:pointer}.ai-asset-analysis-page .opp-section .opp-card .opp-action[data-v-443699fa]:hover{text-decoration:underline}.ai-asset-analysis-page .opp-section .opp-card .opp-trade-btn[data-v-443699fa]{font-size:11px;color:#fff;background:linear-gradient(135deg,#1890ff,#722ed1);padding:2px 8px;border-radius:10px;font-weight:600;cursor:pointer;white-space:nowrap;-webkit-transition:all .2s;transition:all .2s}.ai-asset-analysis-page .opp-section .opp-card .opp-trade-btn[data-v-443699fa]:hover{-webkit-transform:scale(1.05);transform:scale(1.05);-webkit-box-shadow:0 2px 8px rgba(114,46,209,.3);box-shadow:0 2px 8px rgba(114,46,209,.3)}.ai-asset-analysis-page .qt-floating-btn[data-v-443699fa]{position:fixed;right:24px;bottom:80px;width:52px;height:52px;border-radius:50%;background:linear-gradient(135deg,#1890ff,#722ed1);color:#fff;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;font-size:24px;cursor:pointer;-webkit-box-shadow:0 4px 16px rgba(24,144,255,.4);box-shadow:0 4px 16px rgba(24,144,255,.4);z-index:1000;-webkit-transition:all .3s;transition:all .3s;-webkit-animation:qt-float-pulse-443699fa 2s ease-in-out infinite;animation:qt-float-pulse-443699fa 2s ease-in-out infinite}.ai-asset-analysis-page .qt-floating-btn[data-v-443699fa]:hover{-webkit-transform:scale(1.1);transform:scale(1.1);-webkit-box-shadow:0 6px 24px rgba(114,46,209,.5);box-shadow:0 6px 24px rgba(114,46,209,.5)}@-webkit-keyframes qt-float-pulse-443699fa{0%,to{-webkit-transform:translateY(0);transform:translateY(0)}50%{-webkit-transform:translateY(-4px);transform:translateY(-4px)}}@keyframes qt-float-pulse-443699fa{0%,to{-webkit-transform:translateY(0);transform:translateY(0)}50%{-webkit-transform:translateY(-4px);transform:translateY(-4px)}}.ai-asset-analysis-page .workspace-card[data-v-443699fa]{border-radius:12px;-webkit-box-shadow:0 1px 4px rgba(0,0,0,.06);box-shadow:0 1px 4px rgba(0,0,0,.06)}.ai-asset-analysis-page .workspace-card[data-v-443699fa] .ant-card-body{padding:0}.ai-asset-analysis-page .workspace-card .workspace-tabs[data-v-443699fa] .ant-tabs-bar{margin-bottom:0;padding:0 16px;border-bottom:1px solid #f0f0f0}.ai-asset-analysis-page .workspace-card .workspace-tabs[data-v-443699fa] .ant-tabs-tab{font-size:15px;padding:14px 16px}.ai-asset-analysis-page .workspace-card .tab-body[data-v-443699fa] .ai-analysis-container.embedded,.ai-asset-analysis-page .workspace-card .tab-body[data-v-443699fa] .portfolio-container.embedded{border-radius:0;overflow:hidden}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content[data-v-443699fa]{padding:40px 20px;text-align:center}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content .polymarket-placeholder .placeholder-icon[data-v-443699fa]{font-size:64px;color:#1890ff;margin-bottom:24px}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content .polymarket-placeholder h3[data-v-443699fa]{font-size:20px;font-weight:600;margin-bottom:12px;color:rgba(0,0,0,.85)}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content .polymarket-placeholder p[data-v-443699fa]{font-size:14px;color:rgba(0,0,0,.65);margin-bottom:24px}.ai-asset-analysis-page.theme-dark[data-v-443699fa]{background:#141414}.ai-asset-analysis-page.theme-dark .opp-section .opp-header .opp-title[data-v-443699fa]{color:#e6edf3}.ai-asset-analysis-page.theme-dark .opp-section .opp-header .opp-update-hint[data-v-443699fa]{color:#8b949e}.ai-asset-analysis-page.theme-dark .opp-section .opp-carousel-wrapper[data-v-443699fa]:before{background:-webkit-gradient(linear,left top,right top,from(#141414),to(transparent));background:linear-gradient(90deg,#141414,transparent)}.ai-asset-analysis-page.theme-dark .opp-section .opp-carousel-wrapper[data-v-443699fa]:after{background:-webkit-gradient(linear,right top,left top,from(#141414),to(transparent));background:linear-gradient(270deg,#141414,transparent)}.ai-asset-analysis-page.theme-dark .opp-section .opp-card[data-v-443699fa]{background:#1c1c1c;border-color:#2a2a2a;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.3);box-shadow:0 1px 3px rgba(0,0,0,.3)}.ai-asset-analysis-page.theme-dark .opp-section .opp-card.market-predictionmarket[data-v-443699fa]{background:linear-gradient(135deg,#1c1c1c,#141414);border-left-color:#13c2c2}.ai-asset-analysis-page.theme-dark .opp-section .opp-card .opp-symbol[data-v-443699fa]{color:#e6edf3}.ai-asset-analysis-page.theme-dark .opp-section .opp-card .opp-price[data-v-443699fa],.ai-asset-analysis-page.theme-dark .opp-section .opp-card .opp-reason[data-v-443699fa]{color:#8b949e}.ai-asset-analysis-page.theme-dark .opp-section .opp-card .opp-action[data-v-443699fa]{color:#58a6ff}.ai-asset-analysis-page.theme-dark .opp-section .opp-card .opp-trade-btn[data-v-443699fa]{background:linear-gradient(135deg,#58a6ff,#8957e5)}.ai-asset-analysis-page.theme-dark .opp-section .opp-card[data-v-443699fa]:hover{-webkit-box-shadow:0 4px 12px rgba(0,0,0,.4);box-shadow:0 4px 12px rgba(0,0,0,.4)}.ai-asset-analysis-page.theme-dark .workspace-card[data-v-443699fa]{background:#1c1c1c;border-color:#2a2a2a}.ai-asset-analysis-page.theme-dark .workspace-card .workspace-tabs[data-v-443699fa] .ant-tabs-bar{border-bottom-color:#2a2a2a}.ai-asset-analysis-page.theme-dark .workspace-card .workspace-tabs[data-v-443699fa] .ant-tabs-tab{color:#8b949e}.ai-asset-analysis-page.theme-dark .workspace-card .workspace-tabs[data-v-443699fa] .ant-tabs-tab:hover{color:#c9d1d9}.ai-asset-analysis-page.theme-dark .workspace-card .workspace-tabs[data-v-443699fa] .ant-tabs-tab-active{color:#58a6ff}.ai-asset-analysis-page.theme-dark .workspace-card .workspace-tabs[data-v-443699fa] .ant-tabs-ink-bar{background-color:#58a6ff}.ai-asset-analysis-page.theme-dark .workspace-card .polymarket-tab-content .polymarket-placeholder h3[data-v-443699fa]{color:#d4d4d4}.ai-asset-analysis-page.theme-dark .workspace-card .polymarket-tab-content .polymarket-placeholder p[data-v-443699fa]{color:#a3a3a3} \ No newline at end of file diff --git a/frontend/dist/css/805.ff086137.css b/frontend/dist/css/805.ff086137.css deleted file mode 100644 index cd4ae9d..0000000 --- a/frontend/dist/css/805.ff086137.css +++ /dev/null @@ -1 +0,0 @@ -.fast-analysis-report[data-v-75da11ec]{height:100%;overflow-y:auto;padding:20px;background:linear-gradient(135deg,#f5f7fa,#e4e8ec);border-radius:12px}.fast-analysis-report .loading-container[data-v-75da11ec]{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;min-height:400px;background:#fff;border-radius:12px}.fast-analysis-report .loading-container .loading-content-pro[data-v-75da11ec]{width:100%;max-width:400px;padding:40px}.fast-analysis-report .loading-container .loading-content-pro .loading-header[data-v-75da11ec]{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;gap:12px;margin-bottom:32px}.fast-analysis-report .loading-container .loading-content-pro .loading-header .loading-icon-pro[data-v-75da11ec]{font-size:28px;color:#1890ff}.fast-analysis-report .loading-container .loading-content-pro .loading-header .loading-title[data-v-75da11ec]{font-size:20px;font-weight:600;color:#1e293b}.fast-analysis-report .loading-container .loading-content-pro .progress-wrapper[data-v-75da11ec]{margin-bottom:24px;position:relative}.fast-analysis-report .loading-container .loading-content-pro .progress-wrapper .progress-text[data-v-75da11ec]{position:absolute;right:0;top:-24px;font-size:14px;font-weight:600;color:#1890ff}.fast-analysis-report .loading-container .loading-content-pro .current-step[data-v-75da11ec]{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;gap:8px;padding:12px 20px;background:#f0f5ff;border-radius:8px;margin-bottom:24px;color:#1890ff;font-size:14px;font-weight:500}.fast-analysis-report .loading-container .loading-content-pro .current-step .anticon[data-v-75da11ec]{font-size:16px}.fast-analysis-report .loading-container .loading-content-pro .steps-list[data-v-75da11ec]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:12px}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item[data-v-75da11ec]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;padding:10px 16px;background:#f8fafc;border-radius:8px;font-size:13px;color:#94a3b8;-webkit-transition:all .3s;transition:all .3s}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item .step-dot[data-v-75da11ec]{width:8px;height:8px;border-radius:50%;background:#e2e8f0;-webkit-transition:all .3s;transition:all .3s}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item .step-text[data-v-75da11ec]{-webkit-box-flex:1;-ms-flex:1;flex:1}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item .step-check[data-v-75da11ec]{color:#52c41a;font-size:14px}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item.active[data-v-75da11ec]{background:#e6f7ff;color:#1890ff;font-weight:500}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item.active .step-dot[data-v-75da11ec]{background:#1890ff;-webkit-box-shadow:0 0 0 3px rgba(24,144,255,.2);box-shadow:0 0 0 3px rgba(24,144,255,.2)}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item.done[data-v-75da11ec]{background:#f6ffed;color:#52c41a}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item.done .step-dot[data-v-75da11ec]{background:#52c41a}.fast-analysis-report .loading-container .loading-content-pro .loading-footer[data-v-75da11ec]{margin-top:24px;text-align:center}.fast-analysis-report .loading-container .loading-content-pro .loading-footer .elapsed-time[data-v-75da11ec]{font-size:13px;color:#94a3b8;font-family:SF Mono,Monaco,monospace}.fast-analysis-report .empty-container[data-v-75da11ec]{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;min-height:400px}.fast-analysis-report .empty-container .empty-content[data-v-75da11ec]{text-align:center}.fast-analysis-report .empty-container .empty-content .empty-icon[data-v-75da11ec]{font-size:64px;color:#d9d9d9}.fast-analysis-report .empty-container .empty-content .empty-title[data-v-75da11ec]{margin-top:16px;font-size:18px;font-weight:600;color:#262626}.fast-analysis-report .empty-container .empty-content .empty-hint[data-v-75da11ec]{margin-top:8px;color:#8c8c8c}.fast-analysis-report .result-container .decision-card[data-v-75da11ec]{background:#fff;border-radius:16px;padding:24px;margin-bottom:20px;-webkit-box-shadow:0 4px 12px rgba(0,0,0,.08);box-shadow:0 4px 12px rgba(0,0,0,.08);border-left:6px solid #1890ff}.fast-analysis-report .result-container .decision-card.decision-buy[data-v-75da11ec]{border-left-color:#52c41a;background:linear-gradient(135deg,#f6ffed,#fff)}.fast-analysis-report .result-container .decision-card.decision-sell[data-v-75da11ec]{border-left-color:#ff4d4f;background:linear-gradient(135deg,#fff2f0,#fff)}.fast-analysis-report .result-container .decision-card.decision-hold[data-v-75da11ec]{border-left-color:#faad14;background:linear-gradient(135deg,#fffbe6,#fff)}.fast-analysis-report .result-container .decision-card .decision-main[data-v-75da11ec]{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;margin-bottom:16px}.fast-analysis-report .result-container .decision-card .decision-main .decision-badge[data-v-75da11ec]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px}.fast-analysis-report .result-container .decision-card .decision-main .decision-badge .anticon[data-v-75da11ec]{font-size:32px}.fast-analysis-report .result-container .decision-card .decision-main .decision-badge .decision-text[data-v-75da11ec]{font-size:36px;font-weight:800;letter-spacing:2px}.fast-analysis-report .result-container .decision-card .decision-main .confidence-ring[data-v-75da11ec]{text-align:center}.fast-analysis-report .result-container .decision-card .decision-main .confidence-ring .confidence-value[data-v-75da11ec]{font-size:18px;font-weight:700}.fast-analysis-report .result-container .decision-card .decision-main .confidence-ring .confidence-label[data-v-75da11ec]{font-size:12px;color:#8c8c8c;margin-top:4px}.fast-analysis-report .result-container .decision-card .decision-summary[data-v-75da11ec]{font-size:16px;line-height:1.6;color:#595959;padding-top:16px;border-top:1px dashed #e8e8e8}.fast-analysis-report .result-container .decision-card .consensus-strip[data-v-75da11ec]{margin-top:14px;padding:12px 14px;border-radius:8px;background:rgba(24,144,255,.06);border:1px solid rgba(24,144,255,.2);font-size:13px;color:#434343}.fast-analysis-report .result-container .decision-card .consensus-strip .consensus-strip-title[data-v-75da11ec]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;font-weight:600;margin-bottom:8px;color:#1890ff}.fast-analysis-report .result-container .decision-card .consensus-strip .consensus-strip-metrics[data-v-75da11ec]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:12px 20px}.fast-analysis-report .result-container .decision-card .consensus-strip .consensus-strip-metrics .cm-item em[data-v-75da11ec]{font-style:normal;color:#8c8c8c;margin-right:6px}.fast-analysis-report .result-container .price-info-row[data-v-75da11ec]{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:20px}.fast-analysis-report .result-container .price-info-row .price-card[data-v-75da11ec]{background:#fff;border-radius:12px;padding:16px;text-align:center;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.06);box-shadow:0 2px 8px rgba(0,0,0,.06)}.fast-analysis-report .result-container .price-info-row .price-card .price-label[data-v-75da11ec]{font-size:12px;color:#8c8c8c;margin-bottom:8px}.fast-analysis-report .result-container .price-info-row .price-card .price-value[data-v-75da11ec]{font-size:18px;font-weight:700;color:#262626}.fast-analysis-report .result-container .price-info-row .price-card .price-value.positive[data-v-75da11ec]{color:#52c41a}.fast-analysis-report .result-container .price-info-row .price-card .price-value.negative[data-v-75da11ec]{color:#ff4d4f}.fast-analysis-report .result-container .price-info-row .price-card .price-hint[data-v-75da11ec]{font-size:10px;color:#bfbfbf;margin-top:6px;cursor:help}.fast-analysis-report .result-container .price-info-row .price-card .price-hint .anticon[data-v-75da11ec]{margin-right:2px}.fast-analysis-report .result-container .price-info-row .price-card .price-change[data-v-75da11ec]{font-size:14px;margin-top:4px;font-weight:600}.fast-analysis-report .result-container .price-info-row .price-card .price-change.positive[data-v-75da11ec]{color:#52c41a}.fast-analysis-report .result-container .price-info-row .price-card .price-change.negative[data-v-75da11ec]{color:#ff4d4f}.fast-analysis-report .result-container .price-info-row .price-card.current[data-v-75da11ec]{border-top:3px solid #1890ff}.fast-analysis-report .result-container .price-info-row .price-card.entry[data-v-75da11ec]{border-top:3px solid #722ed1}.fast-analysis-report .result-container .price-info-row .price-card.stop[data-v-75da11ec]{border-top:3px solid #ff4d4f}.fast-analysis-report .result-container .price-info-row .price-card.target[data-v-75da11ec]{border-top:3px solid #52c41a}.fast-analysis-report .result-container .trend-outlook-card[data-v-75da11ec]{background:#fff;border-radius:12px;padding:16px 20px;margin-bottom:20px;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.06);box-shadow:0 2px 8px rgba(0,0,0,.06);border-left:4px solid #722ed1}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-header[data-v-75da11ec]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;font-size:15px;font-weight:600;color:#262626;margin-bottom:10px}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-header .anticon[data-v-75da11ec]{color:#722ed1}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-summary[data-v-75da11ec]{font-size:13px;line-height:1.65;color:#595959;margin-bottom:14px;padding:10px 12px;background:#fafafa;border-radius:8px}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-grid[data-v-75da11ec]{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-item[data-v-75da11ec]{background:#fafafa;border-radius:8px;padding:10px 12px;text-align:center}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-item .to-label[data-v-75da11ec]{font-size:11px;color:#8c8c8c;margin-bottom:6px}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-item .to-trend[data-v-75da11ec]{font-size:14px;font-weight:700;margin-bottom:6px}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-item .to-trend.trend-bull[data-v-75da11ec]{color:#52c41a}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-item .to-trend.trend-bear[data-v-75da11ec]{color:#ff4d4f}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-item .to-trend.trend-neutral[data-v-75da11ec]{color:#faad14}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-item .to-meta[data-v-75da11ec]{font-size:11px;color:#8c8c8c;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:8px}@media (max-width:992px){.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-grid[data-v-75da11ec]{grid-template-columns:repeat(2,1fr)}}@media (max-width:576px){.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-grid[data-v-75da11ec]{grid-template-columns:1fr}}.fast-analysis-report .result-container .scores-row[data-v-75da11ec]{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:20px}.fast-analysis-report .result-container .scores-row .score-item[data-v-75da11ec]{background:#fff;border-radius:12px;padding:16px;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.06);box-shadow:0 2px 8px rgba(0,0,0,.06)}.fast-analysis-report .result-container .scores-row .score-item .score-header[data-v-75da11ec]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;font-size:14px;color:#595959;margin-bottom:12px}.fast-analysis-report .result-container .scores-row .score-item .score-header .anticon[data-v-75da11ec]{color:#1890ff}.fast-analysis-report .result-container .scores-row .score-item .score-value[data-v-75da11ec]{text-align:right;font-size:20px;font-weight:700;color:#262626;margin-top:8px}.fast-analysis-report .result-container .scores-row .score-item.overall[data-v-75da11ec]{background:linear-gradient(135deg,#e6f7ff,#fff);border:1px solid #91d5ff}.fast-analysis-report .result-container .detailed-analysis[data-v-75da11ec]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:16px;margin-bottom:20px}.fast-analysis-report .result-container .detailed-analysis .analysis-card[data-v-75da11ec]{background:linear-gradient(135deg,#fff,#fafafa);border-radius:12px;padding:20px;-webkit-box-shadow:0 2px 12px rgba(0,0,0,.06);box-shadow:0 2px 12px rgba(0,0,0,.06);border-left:4px solid #1890ff}.fast-analysis-report .result-container .detailed-analysis .analysis-card.technical[data-v-75da11ec]{border-left-color:#1890ff}.fast-analysis-report .result-container .detailed-analysis .analysis-card.fundamental[data-v-75da11ec]{border-left-color:#722ed1}.fast-analysis-report .result-container .detailed-analysis .analysis-card.sentiment[data-v-75da11ec]{border-left-color:#eb2f96}.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-header[data-v-75da11ec]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px;margin-bottom:14px;font-size:16px;font-weight:600;color:#262626}.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-header .anticon[data-v-75da11ec]{font-size:20px}.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-header.technical .anticon[data-v-75da11ec]{color:#1890ff}.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-header.fundamental .anticon[data-v-75da11ec]{color:#722ed1}.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-header.sentiment .anticon[data-v-75da11ec]{color:#eb2f96}.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-content[data-v-75da11ec]{font-size:14px;line-height:1.8;color:#595959;text-align:justify}.fast-analysis-report .result-container .analysis-details[data-v-75da11ec]{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-bottom:20px}.fast-analysis-report .result-container .analysis-details .detail-section[data-v-75da11ec]{background:#fff;border-radius:12px;padding:20px;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.06);box-shadow:0 2px 8px rgba(0,0,0,.06)}.fast-analysis-report .result-container .analysis-details .detail-section .section-title[data-v-75da11ec]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;font-size:16px;font-weight:600;margin-bottom:16px;color:#262626}.fast-analysis-report .result-container .analysis-details .detail-section .detail-list[data-v-75da11ec]{list-style:none;padding:0;margin:0}.fast-analysis-report .result-container .analysis-details .detail-section .detail-list li[data-v-75da11ec]{padding:10px 0;border-bottom:1px solid #f0f0f0;font-size:14px;line-height:1.6;color:#595959}.fast-analysis-report .result-container .analysis-details .detail-section .detail-list li[data-v-75da11ec]:last-child{border-bottom:none}.fast-analysis-report .result-container .analysis-details .detail-section .detail-list li[data-v-75da11ec]:before{content:"•";margin-right:8px;color:#1890ff}.fast-analysis-report .result-container .analysis-details .detail-section.reasons[data-v-75da11ec]{border-left:4px solid #52c41a}.fast-analysis-report .result-container .analysis-details .detail-section.risks[data-v-75da11ec]{border-left:4px solid #faad14}.fast-analysis-report .result-container .indicators-section[data-v-75da11ec]{background:#fff;border-radius:12px;padding:20px;margin-bottom:20px;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.06);box-shadow:0 2px 8px rgba(0,0,0,.06)}.fast-analysis-report .result-container .indicators-section .section-title[data-v-75da11ec]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px;font-size:16px;font-weight:600;margin-bottom:10px;color:#262626}.fast-analysis-report .result-container .indicators-section .section-title .anticon[data-v-75da11ec]{color:#1890ff}.fast-analysis-report .result-container .indicators-section .section-title .indicators-pro-badge[data-v-75da11ec]{margin:0;font-size:11px;line-height:18px;font-weight:500}.fast-analysis-report .result-container .indicators-section .indicators-methodology[data-v-75da11ec]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:8px;font-size:12px;line-height:1.55;color:#595959;margin-bottom:16px;padding:10px 12px;background:-webkit-gradient(linear,left top,right top,from(#f0f5ff),to(#fafafa));background:linear-gradient(90deg,#f0f5ff,#fafafa);border-radius:8px;border:1px solid #e6f0ff}.fast-analysis-report .result-container .indicators-section .indicators-methodology .anticon[data-v-75da11ec]{color:#2f54eb;margin-top:2px}.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap[data-v-75da11ec]{margin-top:20px;padding-top:16px;border-top:1px dashed #e8e8e8}.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap .indicators-pro-title[data-v-75da11ec]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;font-size:13px;font-weight:600;color:#434343;margin-bottom:12px}.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap .indicators-pro-title .anticon[data-v-75da11ec]{color:#722ed1}.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-item-label[data-v-75da11ec]{font-size:12px;color:#8c8c8c;width:38%;font-weight:500}.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-item-content[data-v-75da11ec]{font-size:12px;font-family:SF Mono,Consolas,monospace}.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap .indicators-pro-desc .bullish[data-v-75da11ec]{color:#52c41a;font-weight:600}.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap .indicators-pro-desc .bearish[data-v-75da11ec]{color:#ff4d4f;font-weight:600}.fast-analysis-report .result-container .indicators-section .indicators-grid[data-v-75da11ec]{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:16px}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item[data-v-75da11ec]{background:#fafafa;border-radius:8px;padding:12px;text-align:center}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-name[data-v-75da11ec]{font-size:12px;color:#8c8c8c;margin-bottom:8px}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value[data-v-75da11ec]{font-size:16px;font-weight:600;color:#262626}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.bullish[data-v-75da11ec],.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.oversold[data-v-75da11ec]{color:#52c41a}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.bearish[data-v-75da11ec],.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.high-volatility[data-v-75da11ec],.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.overbought[data-v-75da11ec]{color:#ff4d4f}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.low-volatility[data-v-75da11ec]{color:#52c41a}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-signal[data-v-75da11ec]{font-size:11px;color:#8c8c8c;margin-top:4px;text-transform:capitalize}.fast-analysis-report .result-container .feedback-section[data-v-75da11ec]{background:#fff;border-radius:12px;padding:20px;text-align:center;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.06);box-shadow:0 2px 8px rgba(0,0,0,.06)}.fast-analysis-report .result-container .feedback-section .feedback-question[data-v-75da11ec]{font-size:14px;color:#595959;margin-bottom:12px}.fast-analysis-report .result-container .feedback-section .feedback-buttons[data-v-75da11ec]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:16px;margin-bottom:16px}.fast-analysis-report .result-container .feedback-section .feedback-buttons .ant-btn[data-v-75da11ec]{min-width:100px}.fast-analysis-report .result-container .feedback-section .analysis-meta[data-v-75da11ec]{font-size:12px;color:#8c8c8c;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:16px}@media (max-width:992px){.fast-analysis-report .price-info-row[data-v-75da11ec],.fast-analysis-report .scores-row[data-v-75da11ec]{grid-template-columns:repeat(2,1fr)}.fast-analysis-report .analysis-details[data-v-75da11ec]{grid-template-columns:1fr}}@media (max-width:576px){.fast-analysis-report[data-v-75da11ec]{padding:12px}.fast-analysis-report .price-info-row[data-v-75da11ec],.fast-analysis-report .scores-row[data-v-75da11ec]{grid-template-columns:1fr}.fast-analysis-report .decision-card[data-v-75da11ec]{padding:16px}.fast-analysis-report .decision-card .decision-main[data-v-75da11ec]{gap:16px;text-align:center}.fast-analysis-report .decision-card .decision-main .decision-badge[data-v-75da11ec],.fast-analysis-report .decision-card .decision-main[data-v-75da11ec]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.fast-analysis-report .decision-card .decision-main .decision-badge .decision-text[data-v-75da11ec]{font-size:28px}}.fast-analysis-report.theme-dark[data-v-75da11ec]{background:linear-gradient(135deg,#141414,#1c1c1c)}.fast-analysis-report.theme-dark .loading-content .loading-text[data-v-75da11ec]{color:#00e5ff}.fast-analysis-report.theme-dark .empty-content .empty-title[data-v-75da11ec]{color:#d1d4dc}.fast-analysis-report.theme-dark .decision-card[data-v-75da11ec]{background:#1c1c1c;border-left-color:#1890ff}.fast-analysis-report.theme-dark .decision-card.decision-buy[data-v-75da11ec]{background:linear-gradient(135deg,rgba(82,196,26,.1),#1c1c1c)}.fast-analysis-report.theme-dark .decision-card.decision-sell[data-v-75da11ec]{background:linear-gradient(135deg,rgba(255,77,79,.1),#1c1c1c)}.fast-analysis-report.theme-dark .decision-card.decision-hold[data-v-75da11ec]{background:linear-gradient(135deg,rgba(250,173,20,.1),#1c1c1c)}.fast-analysis-report.theme-dark .decision-card .confidence-ring .confidence-value[data-v-75da11ec]{color:#e5e5e5}.fast-analysis-report.theme-dark .decision-card .confidence-ring .confidence-label[data-v-75da11ec]{color:#a3a3a3}.fast-analysis-report.theme-dark .decision-card .decision-summary[data-v-75da11ec]{color:#868993;border-top-color:#363c4e}.fast-analysis-report.theme-dark .decision-card .consensus-strip[data-v-75da11ec]{background:rgba(24,144,255,.12);border-color:rgba(24,144,255,.35);color:#d1d4dc}.fast-analysis-report.theme-dark .decision-card .consensus-strip .consensus-strip-title[data-v-75da11ec]{color:#69c0ff}.fast-analysis-report.theme-dark .decision-card .consensus-strip .consensus-strip-metrics .cm-item em[data-v-75da11ec]{color:#868993}.fast-analysis-report.theme-dark .detailed-analysis .analysis-card[data-v-75da11ec]{background:linear-gradient(135deg,#1c1c1c,#141414)}.fast-analysis-report.theme-dark .detailed-analysis .analysis-card.technical[data-v-75da11ec]{border-left-color:#1890ff}.fast-analysis-report.theme-dark .detailed-analysis .analysis-card.fundamental[data-v-75da11ec]{border-left-color:#722ed1}.fast-analysis-report.theme-dark .detailed-analysis .analysis-card.sentiment[data-v-75da11ec]{border-left-color:#eb2f96}.fast-analysis-report.theme-dark .detailed-analysis .analysis-card .analysis-card-header[data-v-75da11ec]{color:#d1d4dc}.fast-analysis-report.theme-dark .detailed-analysis .analysis-card .analysis-card-content[data-v-75da11ec]{color:#868993}.fast-analysis-report.theme-dark .trend-outlook-card[data-v-75da11ec]{background:#1c1c1c;border-left-color:#b37feb}.fast-analysis-report.theme-dark .trend-outlook-card .trend-outlook-header[data-v-75da11ec]{color:#d1d4dc}.fast-analysis-report.theme-dark .trend-outlook-card .trend-outlook-header .anticon[data-v-75da11ec]{color:#b37feb}.fast-analysis-report.theme-dark .trend-outlook-card .trend-outlook-summary[data-v-75da11ec]{background:#252525;color:#868993}.fast-analysis-report.theme-dark .trend-outlook-card .trend-outlook-item[data-v-75da11ec]{background:#252525}.fast-analysis-report.theme-dark .trend-outlook-card .trend-outlook-item .to-label[data-v-75da11ec],.fast-analysis-report.theme-dark .trend-outlook-card .trend-outlook-item .to-meta[data-v-75da11ec]{color:#868993}.fast-analysis-report.theme-dark .detail-section[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item[data-v-75da11ec]{background:#1c1c1c;color:#d1d4dc}.fast-analysis-report.theme-dark .detail-section .indicators-methodology[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .indicators-methodology[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .indicators-methodology[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .indicators-methodology[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .indicators-methodology[data-v-75da11ec]{background:-webkit-gradient(linear,left top,right top,from(hsla(0,0%,47%,.12)),to(#252525));background:linear-gradient(90deg,hsla(0,0%,47%,.12),#252525);border-color:hsla(0,0%,71%,.2);color:#868993}.fast-analysis-report.theme-dark .detail-section .indicators-methodology .anticon[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .indicators-methodology .anticon[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .indicators-methodology .anticon[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .indicators-methodology .anticon[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .indicators-methodology .anticon[data-v-75da11ec]{color:#69c0ff}.fast-analysis-report.theme-dark .detail-section .indicators-pro-wrap[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .indicators-pro-wrap[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .indicators-pro-wrap[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .indicators-pro-wrap[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .indicators-pro-wrap[data-v-75da11ec]{border-top-color:#2a2a2a}.fast-analysis-report.theme-dark .detail-section .indicators-pro-wrap .indicators-pro-title[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .indicators-pro-wrap .indicators-pro-title[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .indicators-pro-wrap .indicators-pro-title[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .indicators-pro-wrap .indicators-pro-title[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .indicators-pro-wrap .indicators-pro-title[data-v-75da11ec]{color:#d1d4dc}.fast-analysis-report.theme-dark .detail-section .indicators-pro-wrap .indicators-pro-title .anticon[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .indicators-pro-wrap .indicators-pro-title .anticon[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .indicators-pro-wrap .indicators-pro-title .anticon[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .indicators-pro-wrap .indicators-pro-title .anticon[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .indicators-pro-wrap .indicators-pro-title .anticon[data-v-75da11ec]{color:#b37feb}.fast-analysis-report.theme-dark .detail-section .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-bordered .ant-descriptions-item-content[data-v-75da11ec],.fast-analysis-report.theme-dark .detail-section .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-bordered .ant-descriptions-item-label[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-bordered .ant-descriptions-item-content[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-bordered .ant-descriptions-item-label[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-bordered .ant-descriptions-item-content[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-bordered .ant-descriptions-item-label[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-bordered .ant-descriptions-item-content[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-bordered .ant-descriptions-item-label[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-bordered .ant-descriptions-item-content[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-bordered .ant-descriptions-item-label[data-v-75da11ec]{background:#1c1c1c;border-color:#2a2a2a!important;color:#d1d4dc}.fast-analysis-report.theme-dark .detail-section .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-bordered .ant-descriptions-item-label[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-bordered .ant-descriptions-item-label[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-bordered .ant-descriptions-item-label[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-bordered .ant-descriptions-item-label[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-bordered .ant-descriptions-item-label[data-v-75da11ec]{color:#868993}.fast-analysis-report.theme-dark .detail-section .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-item-content>span[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-item-content>span[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-item-content>span[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-item-content>span[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-item-content>span[data-v-75da11ec]{color:#d1d4dc!important}.fast-analysis-report.theme-dark .detail-section .indicators-pro-wrap .indicators-pro-desc .bullish[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .indicators-pro-wrap .indicators-pro-desc .bullish[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .indicators-pro-wrap .indicators-pro-desc .bullish[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .indicators-pro-wrap .indicators-pro-desc .bullish[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .indicators-pro-wrap .indicators-pro-desc .bullish[data-v-75da11ec]{color:#73d13d}.fast-analysis-report.theme-dark .detail-section .indicators-pro-wrap .indicators-pro-desc .bearish[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .indicators-pro-wrap .indicators-pro-desc .bearish[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .indicators-pro-wrap .indicators-pro-desc .bearish[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .indicators-pro-wrap .indicators-pro-desc .bearish[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .indicators-pro-wrap .indicators-pro-desc .bearish[data-v-75da11ec]{color:#ff7875}.fast-analysis-report.theme-dark .detail-section .analysis-meta[data-v-75da11ec],.fast-analysis-report.theme-dark .detail-section .feedback-question[data-v-75da11ec],.fast-analysis-report.theme-dark .detail-section .indicator-name[data-v-75da11ec],.fast-analysis-report.theme-dark .detail-section .indicator-signal[data-v-75da11ec],.fast-analysis-report.theme-dark .detail-section .price-label[data-v-75da11ec],.fast-analysis-report.theme-dark .detail-section .score-header[data-v-75da11ec],.fast-analysis-report.theme-dark .detail-section .section-title[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .analysis-meta[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .feedback-question[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .indicator-name[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .indicator-signal[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .price-label[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .score-header[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .section-title[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .analysis-meta[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .feedback-question[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .indicator-name[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .indicator-signal[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .price-label[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .score-header[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .section-title[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .analysis-meta[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .feedback-question[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .indicator-name[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .indicator-signal[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .price-label[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .score-header[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .section-title[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .analysis-meta[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .feedback-question[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .indicator-name[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .indicator-signal[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .price-label[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .score-header[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .section-title[data-v-75da11ec]{color:#868993}.fast-analysis-report.theme-dark .detail-section .indicator-value[data-v-75da11ec],.fast-analysis-report.theme-dark .detail-section .price-value[data-v-75da11ec],.fast-analysis-report.theme-dark .detail-section .score-value[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .indicator-value[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .price-value[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .score-value[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .indicator-value[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .price-value[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .score-value[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .indicator-value[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .price-value[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .score-value[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .indicator-value[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .price-value[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .score-value[data-v-75da11ec]{color:#d1d4dc}.fast-analysis-report.theme-dark .score-item.overall[data-v-75da11ec]{background:linear-gradient(135deg,hsla(0,0%,47%,.12),#1c1c1c);border-color:#3a3a3a}.fast-analysis-report.theme-dark .detail-list li[data-v-75da11ec]{color:#868993;border-bottom-color:#2a2a2a}.fast-analysis-report.theme-dark .indicators-grid .indicator-item[data-v-75da11ec]{background:#252525}.ai-analysis-container[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;height:calc(100vh - 120px);background:#f0f2f5;overflow:hidden;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.ai-analysis-container.embedded[data-v-5cbe52d9]{height:auto;min-height:700px;background:transparent}.ai-analysis-container.embedded .main-content-full[data-v-5cbe52d9]{-webkit-box-shadow:none;box-shadow:none;border-radius:0}.main-content-full[data-v-5cbe52d9]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow:hidden;background:#fff;border-radius:12px;height:100%;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.08);box-shadow:0 2px 8px rgba(0,0,0,.08);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.top-index-bar[data-v-5cbe52d9]{gap:8px;padding:8px 16px;background:#f8fafc;border-bottom:1px solid #e2e8f0;font-family:SF Mono,Monaco,Consolas,monospace}.top-index-bar .indicator-box[data-v-5cbe52d9],.top-index-bar[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.top-index-bar .indicator-box[data-v-5cbe52d9]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:4px 10px;background:#fff;border-radius:6px;border:1px solid #e2e8f0;min-width:50px}.top-index-bar .indicator-box .ind-label[data-v-5cbe52d9]{font-size:9px;color:#94a3b8;text-transform:uppercase}.top-index-bar .indicator-box .ind-value[data-v-5cbe52d9]{font-size:13px;font-weight:700;color:#1e293b}.top-index-bar .indicator-box.fear-greed.extreme-fear .ind-value[data-v-5cbe52d9]{color:#dc2626}.top-index-bar .indicator-box.fear-greed.fear .ind-value[data-v-5cbe52d9]{color:#ea580c}.top-index-bar .indicator-box.fear-greed.neutral .ind-value[data-v-5cbe52d9]{color:#ca8a04}.top-index-bar .indicator-box.fear-greed.greed .ind-value[data-v-5cbe52d9]{color:#65a30d}.top-index-bar .indicator-box.fear-greed.extreme-greed .ind-value[data-v-5cbe52d9],.top-index-bar .indicator-box.vix.low .ind-value[data-v-5cbe52d9]{color:#16a34a}.top-index-bar .indicator-box.vix.medium .ind-value[data-v-5cbe52d9]{color:#ca8a04}.top-index-bar .indicator-box.vix.high .ind-value[data-v-5cbe52d9]{color:#dc2626}.top-index-bar .indicator-box.dxy .ind-value[data-v-5cbe52d9]{color:#2563eb}.top-index-bar .indices-marquee[data-v-5cbe52d9]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:hidden;min-width:0}.top-index-bar .indices-marquee .marquee-track[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:8px;-webkit-animation:marquee-5cbe52d9 35s linear infinite;animation:marquee-5cbe52d9 35s linear infinite;width:-webkit-max-content;width:-moz-max-content;width:max-content}.top-index-bar .indices-marquee .marquee-track[data-v-5cbe52d9]:hover{-webkit-animation-play-state:paused;animation-play-state:paused}.top-index-bar .indices-marquee .index-item[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;padding:4px 8px;background:#fff;border-radius:4px;border:1px solid #e2e8f0;font-size:11px;white-space:nowrap}.top-index-bar .indices-marquee .index-item .idx-flag[data-v-5cbe52d9]{font-size:11px}.top-index-bar .indices-marquee .index-item .idx-symbol[data-v-5cbe52d9]{color:#64748b;font-weight:500}.top-index-bar .indices-marquee .index-item .idx-price[data-v-5cbe52d9]{color:#1e293b;font-weight:600}.top-index-bar .indices-marquee .index-item .idx-change[data-v-5cbe52d9]{font-weight:600;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:1px}.top-index-bar .indices-marquee .index-item .idx-change.up[data-v-5cbe52d9]{color:#16a34a}.top-index-bar .indices-marquee .index-item .idx-change.down[data-v-5cbe52d9]{color:#dc2626}@-webkit-keyframes marquee-5cbe52d9{0%{-webkit-transform:translateX(0);transform:translateX(0)}to{-webkit-transform:translateX(-50%);transform:translateX(-50%)}}@keyframes marquee-5cbe52d9{0%{-webkit-transform:translateX(0);transform:translateX(0)}to{-webkit-transform:translateX(-50%);transform:translateX(-50%)}}.top-index-bar .refresh-btn[data-v-5cbe52d9]{color:#94a3b8;-ms-flex-negative:0;flex-shrink:0}.top-index-bar .refresh-btn[data-v-5cbe52d9]:hover{color:#1e293b}.main-body[data-v-5cbe52d9]{-webkit-box-flex:1;-ms-flex:1;flex:1;padding:12px;overflow:hidden;min-height:0}.left-panel[data-v-5cbe52d9],.main-body[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px}.left-panel[data-v-5cbe52d9]{width:280px;-ms-flex-negative:0;flex-shrink:0;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow-y:auto}.left-panel .heatmap-box[data-v-5cbe52d9]{background:#fff;border-radius:8px;padding:12px;border:1px solid #e2e8f0}.left-panel .heatmap-box .box-header[data-v-5cbe52d9]{margin-bottom:10px}.left-panel .heatmap-box .box-header[data-v-5cbe52d9] .ant-radio-group .ant-radio-button-wrapper{font-size:10px;padding:0 6px;height:22px;line-height:20px}.left-panel .heatmap-box .box-header[data-v-5cbe52d9] .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{background:var(--primary-color,#1890ff);border-color:var(--primary-color,#1890ff);color:#fff}.left-panel .heatmap-box .heatmap-grid[data-v-5cbe52d9]{display:grid;grid-template-columns:repeat(3,1fr);gap:4px}.left-panel .heatmap-box .heatmap-grid .heat-cell[data-v-5cbe52d9]{padding:6px 4px;border-radius:4px;text-align:center;font-size:9px}.left-panel .heatmap-box .heatmap-grid .heat-cell .heat-name[data-v-5cbe52d9]{display:block;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:1px}.left-panel .heatmap-box .heatmap-grid .heat-cell .heat-price[data-v-5cbe52d9]{display:block;font-size:9px;opacity:.8;margin-bottom:1px}.left-panel .heatmap-box .heatmap-grid .heat-cell .heat-val[data-v-5cbe52d9]{font-weight:700;font-size:10px}.left-panel .calendar-box[data-v-5cbe52d9]{-webkit-box-flex:1;-ms-flex:1;flex:1;background:#fff;border-radius:8px;padding:12px;border:1px solid #e2e8f0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-height:0;overflow:hidden}.left-panel .calendar-box .box-header[data-v-5cbe52d9]{margin-bottom:8px}.left-panel .calendar-box .box-header .box-title[data-v-5cbe52d9]{font-size:12px;color:#64748b;font-weight:600}.left-panel .calendar-box .box-header .box-title .anticon[data-v-5cbe52d9]{margin-right:6px;color:var(--primary-color,#1890ff)}.left-panel .calendar-box .calendar-list[data-v-5cbe52d9]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto}.left-panel .calendar-box .calendar-list[data-v-5cbe52d9]::-webkit-scrollbar{width:4px}.left-panel .calendar-box .calendar-list[data-v-5cbe52d9]::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:2px}.left-panel .calendar-box .calendar-list .cal-item[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;padding:6px 0;border-bottom:1px solid #f1f5f9;font-size:10px}.left-panel .calendar-box .calendar-list .cal-item[data-v-5cbe52d9]:last-child{border-bottom:none}.left-panel .calendar-box .calendar-list .cal-item.high[data-v-5cbe52d9]{border-left:3px solid #dc2626;padding-left:8px;margin-left:-4px}.left-panel .calendar-box .calendar-list .cal-item.medium[data-v-5cbe52d9]{border-left:3px solid #ca8a04;padding-left:8px;margin-left:-4px}.left-panel .calendar-box .calendar-list .cal-item.low[data-v-5cbe52d9]{border-left:3px solid #16a34a;padding-left:8px;margin-left:-4px}.left-panel .calendar-box .calendar-list .cal-item .cal-date[data-v-5cbe52d9]{font-size:9px;color:#94a3b8;min-width:32px;font-weight:500}.left-panel .calendar-box .calendar-list .cal-item .cal-time[data-v-5cbe52d9]{color:#64748b;min-width:36px;font-weight:500}.left-panel .calendar-box .calendar-list .cal-item .cal-flag[data-v-5cbe52d9]{font-size:12px}.left-panel .calendar-box .calendar-list .cal-item .cal-name[data-v-5cbe52d9]{-webkit-box-flex:1;-ms-flex:1;flex:1;color:#334155;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.left-panel .calendar-box .calendar-list .cal-item .cal-impact[data-v-5cbe52d9]{font-weight:600;font-size:10px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:2px}.left-panel .calendar-box .calendar-list .cal-item .cal-impact.bullish[data-v-5cbe52d9]{color:#16a34a}.left-panel .calendar-box .calendar-list .cal-item .cal-impact.bearish[data-v-5cbe52d9]{color:#dc2626}.left-panel .calendar-box .calendar-list .cal-item .cal-impact.neutral[data-v-5cbe52d9]{color:#94a3b8}.left-panel .calendar-box .calendar-list .cal-empty[data-v-5cbe52d9]{text-align:center;color:#94a3b8;padding:20px 0;font-size:12px}.right-panel[data-v-5cbe52d9]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-width:0;overflow:hidden;background:#fff;border-radius:8px;border:1px solid #e2e8f0}.right-panel .analysis-toolbar[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;padding:12px 16px;border-bottom:1px solid #f1f5f9;background:#fafafa;border-radius:8px 8px 0 0}.right-panel .analysis-toolbar .symbol-selector[data-v-5cbe52d9]{-webkit-box-flex:1;-ms-flex:1;flex:1;max-width:320px}.right-panel .analysis-toolbar .analyze-button[data-v-5cbe52d9]{background:var(--primary-color,#1890ff);border-color:var(--primary-color,#1890ff)}.right-panel .analysis-toolbar .history-button[data-v-5cbe52d9]{border-color:#d9d9d9}.right-panel .analysis-main[data-v-5cbe52d9]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:auto;padding:16px;min-height:0}.right-panel .analysis-main .analysis-placeholder[data-v-5cbe52d9]{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;height:100%;min-height:300px}.watchlist-panel[data-v-5cbe52d9]{width:320px;-ms-flex-negative:0;flex-shrink:0;background:#fff;border-radius:8px;border:1px solid #e2e8f0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow:hidden}.watchlist-panel .panel-header[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:10px 12px;border-bottom:1px solid #f1f5f9;background:#fafafa}.watchlist-panel .panel-header .panel-title[data-v-5cbe52d9]{font-size:12px;font-weight:600;color:#64748b}.watchlist-panel .panel-header .panel-title .anticon[data-v-5cbe52d9]{color:#facc15;margin-right:6px}.watchlist-panel .watchlist-list[data-v-5cbe52d9]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto;padding:8px}.watchlist-panel .watchlist-list[data-v-5cbe52d9]::-webkit-scrollbar{width:4px}.watchlist-panel .watchlist-list[data-v-5cbe52d9]::-webkit-scrollbar-thumb{background:#e2e8f0;border-radius:2px}.watchlist-panel .watchlist-list .watchlist-empty[data-v-5cbe52d9]{text-align:center;padding:24px 12px;color:#94a3b8}.watchlist-panel .watchlist-list .watchlist-empty .anticon[data-v-5cbe52d9]{font-size:32px;margin-bottom:8px;display:block}.watchlist-panel .watchlist-list .watchlist-empty p[data-v-5cbe52d9]{font-size:12px;margin-bottom:12px}@-webkit-keyframes pulse-5cbe52d9{0%,to{opacity:1}50%{opacity:.5}}@keyframes pulse-5cbe52d9{0%,to{opacity:1}50%{opacity:.5}}@media (max-width:992px){.ai-analysis-container[data-v-5cbe52d9]{height:auto;min-height:calc(100vh - 64px);overflow-y:auto}.main-content-full[data-v-5cbe52d9]{height:auto;min-height:auto}.top-index-bar[data-v-5cbe52d9]{-ms-flex-wrap:wrap;flex-wrap:wrap;padding:8px}.top-index-bar .indicator-box[data-v-5cbe52d9]{min-width:45px;padding:3px 6px}.top-index-bar .indices-marquee[data-v-5cbe52d9]{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10;width:100%;margin-top:8px}.main-body[data-v-5cbe52d9]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:12px}.left-panel[data-v-5cbe52d9]{width:100%;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;gap:12px}.left-panel .calendar-box[data-v-5cbe52d9],.left-panel .heatmap-box[data-v-5cbe52d9]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.left-panel .calendar-box[data-v-5cbe52d9]{max-height:200px}.right-panel .analysis-toolbar[data-v-5cbe52d9]{-ms-flex-wrap:wrap;flex-wrap:wrap}.right-panel .analysis-toolbar .symbol-selector[data-v-5cbe52d9]{width:100%!important;max-width:none!important}.right-panel .analysis-toolbar .analyze-button[data-v-5cbe52d9],.right-panel .analysis-toolbar .history-button[data-v-5cbe52d9]{-webkit-box-flex:1;-ms-flex:1;flex:1}.watchlist-panel[data-v-5cbe52d9]{width:100%;max-height:250px;-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.hero-stats[data-v-5cbe52d9]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.hero-stats .hstat[data-v-5cbe52d9]{width:100%;max-width:300px;-webkit-box-flex:0;-ms-flex:none;flex:none}}.ai-analysis-container.theme-dark[data-v-5cbe52d9]{background:#0a0a0a;color:#d4d4d4}.ai-analysis-container.theme-dark .main-content-full[data-v-5cbe52d9]{background:#141414;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.5);box-shadow:0 2px 8px rgba(0,0,0,.5)}.ai-analysis-container.theme-dark .top-index-bar[data-v-5cbe52d9]{background:#141414;border-bottom-color:#2a2a2a}.ai-analysis-container.theme-dark .top-index-bar .indicator-box[data-v-5cbe52d9]{background:#1c1c1c;border-color:#2a2a2a}.ai-analysis-container.theme-dark .top-index-bar .indicator-box .ind-label[data-v-5cbe52d9]{color:#888}.ai-analysis-container.theme-dark .top-index-bar .indicator-box .ind-value[data-v-5cbe52d9]{color:#d4d4d4}.ai-analysis-container.theme-dark .top-index-bar .indices-marquee .index-item[data-v-5cbe52d9]{background:#1c1c1c;border-color:#2a2a2a}.ai-analysis-container.theme-dark .top-index-bar .indices-marquee .index-item .idx-symbol[data-v-5cbe52d9]{color:#888}.ai-analysis-container.theme-dark .top-index-bar .indices-marquee .index-item .idx-price[data-v-5cbe52d9]{color:#d4d4d4}.ai-analysis-container.theme-dark .top-index-bar .refresh-btn[data-v-5cbe52d9]{color:#888}.ai-analysis-container.theme-dark .top-index-bar .refresh-btn[data-v-5cbe52d9]:hover{color:#d4d4d4}.ai-analysis-container.theme-dark .watchlist-panel[data-v-5cbe52d9]{background:#1c1c1c;border-color:#2a2a2a}.ai-analysis-container.theme-dark .watchlist-panel .panel-header[data-v-5cbe52d9]{background:#141414;border-bottom-color:#2a2a2a}.ai-analysis-container.theme-dark .watchlist-panel .panel-header .panel-title[data-v-5cbe52d9]{color:#888}.ai-analysis-container.theme-dark .watchlist-panel .panel-summary[data-v-5cbe52d9]{background:#141414;border-bottom-color:#2a2a2a}.ai-analysis-container.theme-dark .watchlist-panel .panel-summary .summary-chip[data-v-5cbe52d9]{border-right-color:#2a2a2a}.ai-analysis-container.theme-dark .watchlist-panel .panel-summary .sc-num[data-v-5cbe52d9]{color:#d4d4d4}.ai-analysis-container.theme-dark .watchlist-panel .panel-summary .sc-label[data-v-5cbe52d9]{color:#666}.ai-analysis-container.theme-dark .watchlist-panel .batch-bar[data-v-5cbe52d9]{background:hsla(0,0%,100%,.04);border-bottom-color:#2a2a2a}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card[data-v-5cbe52d9]:hover{background:#252525}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card.active[data-v-5cbe52d9]{background:rgba(24,144,255,.08);border-color:#1890ff}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card .wl-symbol[data-v-5cbe52d9]{color:#d4d4d4}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card .wl-market[data-v-5cbe52d9]{color:#666;background:#2a2a2a}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card .wl-price[data-v-5cbe52d9]{color:#d4d4d4}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card .wl-pnl-qty[data-v-5cbe52d9]{color:#666}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card .wl-task-badge.paused[data-v-5cbe52d9]{background:#2a2a2a;color:#666}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card .wl-task-next[data-v-5cbe52d9]{color:#666}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card-hover-actions[data-v-5cbe52d9]{background:-webkit-gradient(linear,left top,right top,from(transparent),color-stop(30%,#252525));background:linear-gradient(90deg,transparent,#252525 30%)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card-hover-actions .wl-hover-btn[data-v-5cbe52d9]{background:#1c1c1c;color:#888;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.3);box-shadow:0 1px 3px rgba(0,0,0,.3)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card-hover-actions .wl-hover-btn[data-v-5cbe52d9]:hover{color:#1890ff;background:rgba(24,144,255,.1)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card-hover-actions .wl-hover-btn.danger[data-v-5cbe52d9]:hover{color:#dc2626;background:rgba(220,38,38,.1)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card.active .wl-card-hover-actions[data-v-5cbe52d9]{background:-webkit-gradient(linear,left top,right top,from(transparent),color-stop(30%,rgba(24,144,255,.06)));background:linear-gradient(90deg,transparent,rgba(24,144,255,.06) 30%)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .watchlist-empty[data-v-5cbe52d9]{color:#666}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .we-icon[data-v-5cbe52d9]{color:#2a2a2a}.ai-analysis-container.theme-dark .placeholder-hero .hero-bg-grid[data-v-5cbe52d9]{background-image:linear-gradient(hsla(0,0%,100%,.02) 1px,transparent 0),linear-gradient(90deg,hsla(0,0%,100%,.02) 1px,transparent 0)}.ai-analysis-container.theme-dark .placeholder-hero .hero-badge[data-v-5cbe52d9]{background:rgba(24,144,255,.1);border-color:rgba(24,144,255,.2)}.ai-analysis-container.theme-dark .placeholder-hero .hero-title[data-v-5cbe52d9]{color:#d4d4d4}.ai-analysis-container.theme-dark .placeholder-hero .hero-hint[data-v-5cbe52d9],.ai-analysis-container.theme-dark .placeholder-hero .hero-subtitle[data-v-5cbe52d9]{color:#888}.ai-analysis-container.theme-dark .placeholder-hero .hstat[data-v-5cbe52d9]{background:#1c1c1c;border-color:#2a2a2a;-webkit-box-shadow:none;box-shadow:none}.ai-analysis-container.theme-dark .placeholder-hero .hstat[data-v-5cbe52d9]:hover{border-color:#1890ff;-webkit-box-shadow:0 4px 16px rgba(24,144,255,.12);box-shadow:0 4px 16px rgba(24,144,255,.12)}.ai-analysis-container.theme-dark .placeholder-hero .hstat-icon[data-v-5cbe52d9]{background:linear-gradient(135deg,rgba(24,144,255,.12),rgba(114,46,209,.08))}.ai-analysis-container.theme-dark .placeholder-hero .hstat-val[data-v-5cbe52d9]{color:#d4d4d4}.ai-analysis-container.theme-dark .placeholder-hero .hstat-label[data-v-5cbe52d9]{color:#666}.ai-analysis-container.theme-dark .placeholder-hero .hero-cta .ant-btn-primary[data-v-5cbe52d9]{-webkit-box-shadow:0 4px 14px rgba(24,144,255,.35);box-shadow:0 4px 14px rgba(24,144,255,.35)}.ai-analysis-container.theme-dark .watchlist-bar-legacy[data-v-5cbe52d9]{background:#141414;border-bottom-color:#2a2a2a}.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip[data-v-5cbe52d9]{background:#1c1c1c;border-color:#2a2a2a}.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip.active[data-v-5cbe52d9],.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip[data-v-5cbe52d9]:hover{border-color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08)}.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip .chip-symbol[data-v-5cbe52d9]{color:#d4d4d4}.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip .chip-price[data-v-5cbe52d9]{color:#888}.ai-analysis-container.theme-dark .left-panel .heatmap-box[data-v-5cbe52d9]{background:#1c1c1c;border-color:#2a2a2a}.ai-analysis-container.theme-dark .left-panel .heatmap-box[data-v-5cbe52d9] .ant-radio-group .ant-radio-button-wrapper{background:#141414;border-color:#2a2a2a;color:#888}.ai-analysis-container.theme-dark .left-panel .heatmap-box[data-v-5cbe52d9] .ant-radio-group .ant-radio-button-wrapper:hover{color:#d4d4d4}.ai-analysis-container.theme-dark .left-panel .calendar-box[data-v-5cbe52d9]{background:#1c1c1c;border-color:#2a2a2a}.ai-analysis-container.theme-dark .left-panel .calendar-box .box-title[data-v-5cbe52d9]{color:#888}.ai-analysis-container.theme-dark .left-panel .calendar-box .cal-item[data-v-5cbe52d9]{border-bottom-color:#2a2a2a}.ai-analysis-container.theme-dark .left-panel .calendar-box .cal-item .cal-date[data-v-5cbe52d9]{color:#666}.ai-analysis-container.theme-dark .left-panel .calendar-box .cal-item .cal-time[data-v-5cbe52d9]{color:#888}.ai-analysis-container.theme-dark .left-panel .calendar-box .cal-item .cal-name[data-v-5cbe52d9]{color:#d4d4d4}.ai-analysis-container.theme-dark .left-panel .calendar-box .cal-empty[data-v-5cbe52d9]{color:#666}.ai-analysis-container.theme-dark .right-panel[data-v-5cbe52d9]{background:#1c1c1c;border-color:#2a2a2a}.ai-analysis-container.theme-dark .right-panel .analysis-toolbar[data-v-5cbe52d9]{background:#141414;border-bottom-color:#2a2a2a}.ai-analysis-container.theme-dark .hero-cta .ant-btn[data-v-5cbe52d9]:not(.ant-btn-primary),.ai-analysis-container.theme-dark .right-panel .analysis-toolbar .history-button[data-v-5cbe52d9]{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark .hero-cta .ant-btn[data-v-5cbe52d9]:not(.ant-btn-primary):hover{border-color:#1890ff;color:#1890ff}.ai-analysis-container.theme-dark .wl-change.up[data-v-5cbe52d9]{background:rgba(22,163,74,.15)}.ai-analysis-container.theme-dark .wl-change.down[data-v-5cbe52d9]{background:rgba(220,38,38,.12)}.ai-analysis-container.theme-dark .panel-header-icon[data-v-5cbe52d9]{color:#666}.ai-analysis-container.theme-dark .panel-header-icon[data-v-5cbe52d9]:hover{color:#1890ff;background:rgba(24,144,255,.08)}.ai-analysis-container.theme-dark .panel-summary[data-v-5cbe52d9]{background:#141414}.ai-analysis-container.theme-dark .batch-bar[data-v-5cbe52d9]{background:hsla(0,0%,100%,.03)!important;border-bottom-color:#2a2a2a!important}.ai-analysis-container.theme-dark .watchlist-bar-compat[data-v-5cbe52d9]{background:#141414;border-top-color:#2a2a2a}.ai-analysis-container.theme-dark .watchlist-bar-compat .bar-label[data-v-5cbe52d9]{color:#888}.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip[data-v-5cbe52d9]{background:#1c1c1c;border-color:#2a2a2a}.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip.active[data-v-5cbe52d9],.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip[data-v-5cbe52d9]:hover{border-color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08)}.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip .chip-symbol[data-v-5cbe52d9]{color:#d4d4d4}.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip .chip-price[data-v-5cbe52d9]{color:#888}.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip .chip-remove[data-v-5cbe52d9]{color:#666}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .symbol-selector .ant-select-selection{background-color:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-tabs-bar{border-bottom-color:#2a2a2a}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-tabs-tab{color:#888}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-tabs-tab:hover{color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-tabs-tab-active{color:#1890ff!important}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-tabs-ink-bar{background-color:#1890ff}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-input{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-input::-webkit-input-placeholder{color:#555}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-input::-moz-placeholder{color:#555}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-input:-ms-input-placeholder{color:#555}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-input::-ms-input-placeholder{color:#555}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-input::placeholder{color:#555}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-input-number{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-input-number .ant-input-number-handler-wrap{background:#1c1c1c}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-select-selection{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-select-arrow{color:#666}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-checkbox-wrapper,.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-form-item-label>label,.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-radio-wrapper{color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-btn-default{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-btn-default:hover{border-color:#1890ff;color:#1890ff}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-alert{background:rgba(24,144,255,.06);border-color:#2a2a2a}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-alert-message{color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-tag{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-list-item{border-bottom-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-list-item-meta-title{color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-list-item-meta-description{color:#888}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-empty-description{color:#666}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-tooltip-inner{background:#1c1c1c}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-badge-count{-webkit-box-shadow:0 0 0 1px #141414;box-shadow:0 0 0 1px #141414}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-popover-inner{background:#1c1c1c}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-popover-message{color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-popover-arrow{border-color:#1c1c1c}.placeholder-hero[data-v-5cbe52d9]{position:relative;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;width:100%;height:100%;overflow:hidden}.hero-bg[data-v-5cbe52d9]{position:absolute;inset:0;pointer-events:none}.hero-bg-circle[data-v-5cbe52d9]{position:absolute;border-radius:50%;opacity:.5}.hero-bg-circle.c1[data-v-5cbe52d9]{width:320px;height:320px;top:-80px;right:-60px;background:radial-gradient(circle,rgba(24,144,255,.1) 0,transparent 70%);-webkit-animation:hero-float-5cbe52d9 6s ease-in-out infinite;animation:hero-float-5cbe52d9 6s ease-in-out infinite}.hero-bg-circle.c2[data-v-5cbe52d9]{width:240px;height:240px;bottom:-40px;left:-40px;background:radial-gradient(circle,rgba(114,46,209,.08) 0,transparent 70%);animation:hero-float-5cbe52d9 8s ease-in-out infinite reverse}.hero-bg-grid[data-v-5cbe52d9]{position:absolute;inset:0;background-image:linear-gradient(rgba(24,144,255,.03) 1px,transparent 0),linear-gradient(90deg,rgba(24,144,255,.03) 1px,transparent 0);background-size:32px 32px}@-webkit-keyframes hero-float-5cbe52d9{0%,to{-webkit-transform:translateY(0);transform:translateY(0)}50%{-webkit-transform:translateY(-12px);transform:translateY(-12px)}}@keyframes hero-float-5cbe52d9{0%,to{-webkit-transform:translateY(0);transform:translateY(0)}50%{-webkit-transform:translateY(-12px);transform:translateY(-12px)}}.hero-body[data-v-5cbe52d9]{position:relative;text-align:center;padding:40px 32px;max-width:560px}.hero-badge[data-v-5cbe52d9]{display:inline-block;padding:3px 12px;border-radius:20px;font-size:10px;font-weight:700;letter-spacing:1.5px;color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08);border:1px solid rgba(24,144,255,.2);margin-bottom:16px}.hero-title[data-v-5cbe52d9]{font-size:26px;font-weight:800;color:#0f172a;margin-bottom:8px;letter-spacing:-.3px;line-height:1.3}.hero-subtitle[data-v-5cbe52d9]{font-size:14px;color:#64748b;margin-bottom:32px;line-height:1.5}.hero-stats[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-bottom:32px;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.hstat[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px;padding:12px 14px;background:#fff;border:1px solid #e2e8f0;border-radius:12px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.04);box-shadow:0 1px 3px rgba(0,0,0,.04);-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0;text-align:left;-webkit-transition:all .25s;transition:all .25s}.hstat[data-v-5cbe52d9]:hover{border-color:var(--primary-color,#1890ff);-webkit-box-shadow:0 4px 16px rgba(24,144,255,.1);box-shadow:0 4px 16px rgba(24,144,255,.1);-webkit-transform:translateY(-2px);transform:translateY(-2px)}.hstat-icon[data-v-5cbe52d9]{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;width:36px;height:36px;border-radius:8px;background:linear-gradient(135deg,rgba(24,144,255,.1),rgba(114,46,209,.08));font-size:16px;color:var(--primary-color,#1890ff);-ms-flex-negative:0;flex-shrink:0}.hstat-body[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-width:0}.hstat-val[data-v-5cbe52d9]{font-size:12px;font-weight:700;color:#0f172a}.hstat-label[data-v-5cbe52d9],.hstat-val[data-v-5cbe52d9]{line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.hstat-label[data-v-5cbe52d9]{font-size:10px;color:#94a3b8;margin-top:1px}.hero-cta[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-bottom:16px}.hero-cta .ant-btn[data-v-5cbe52d9]{border-radius:10px;font-weight:600;height:42px;padding:0 24px;font-size:14px}.hero-cta .ant-btn-primary[data-v-5cbe52d9]{-webkit-box-shadow:0 4px 14px rgba(24,144,255,.3);box-shadow:0 4px 14px rgba(24,144,255,.3)}.hero-hint[data-v-5cbe52d9]{font-size:12px;color:#94a3b8}.panel-header-actions[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px}.panel-header-icon[data-v-5cbe52d9]{font-size:15px;color:#94a3b8;cursor:pointer;padding:4px;border-radius:6px;-webkit-transition:color .2s,background .2s;transition:color .2s,background .2s}.panel-header-icon[data-v-5cbe52d9]:hover{color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08)}.panel-summary[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:0;padding:0;border-bottom:1px solid #f1f5f9}.summary-chip[data-v-5cbe52d9]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:8px 4px;border-right:1px solid #f1f5f9}.summary-chip[data-v-5cbe52d9]:last-child{border-right:none}.sc-num[data-v-5cbe52d9]{font-size:14px;font-weight:700;color:#0f172a;line-height:1.2;font-family:SF Mono,Monaco,monospace}.sc-num.up[data-v-5cbe52d9]{color:#16a34a}.sc-num.down[data-v-5cbe52d9]{color:#dc2626}.sc-label[data-v-5cbe52d9]{font-size:9px;color:#94a3b8;text-transform:uppercase;letter-spacing:.5px;margin-top:2px}.batch-bar[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;padding:8px 12px;background:-webkit-gradient(linear,left top,right top,from(#eff6ff),to(#f0f5ff));background:linear-gradient(90deg,#eff6ff,#f0f5ff);border-bottom:1px solid #dbeafe}.batch-all-cb[data-v-5cbe52d9]{font-size:12px}.wl-card[data-v-5cbe52d9]{position:relative;padding:10px 12px;border-radius:8px;cursor:pointer;-webkit-transition:all .15s;transition:all .15s;margin-bottom:2px;border:1px solid transparent}.wl-card[data-v-5cbe52d9]:hover{background:#f8fafc}.wl-card.active[data-v-5cbe52d9]{background:linear-gradient(135deg,#e6f7ff,#f0f5ff);border-color:#91d5ff}.wl-card-cb[data-v-5cbe52d9]{position:absolute;top:12px;left:4px;z-index:1}.wl-card-body[data-v-5cbe52d9]{-webkit-transition:padding-left .2s;transition:padding-left .2s}.wl-card-body.with-cb[data-v-5cbe52d9]{padding-left:24px}.wl-row-main[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;gap:5px}.wl-symbol[data-v-5cbe52d9]{font-size:13px;font-weight:700;color:#0f172a}.wl-market[data-v-5cbe52d9]{font-size:9px;color:#94a3b8;letter-spacing:.3px;padding:1px 4px;background:#f1f5f9;border-radius:3px}.wl-spacer[data-v-5cbe52d9]{-webkit-box-flex:1;-ms-flex:1;flex:1}.wl-price[data-v-5cbe52d9]{font-size:12px;font-weight:600;color:#0f172a;font-family:SF Mono,Monaco,monospace}.wl-change[data-v-5cbe52d9]{font-size:10px;font-weight:700;font-family:SF Mono,Monaco,monospace;padding:1px 5px;border-radius:4px;margin-left:4px}.wl-change.up[data-v-5cbe52d9]{color:#16a34a;background:rgba(22,163,74,.08)}.wl-change.down[data-v-5cbe52d9]{color:#dc2626;background:rgba(220,38,38,.06)}.wl-row-pnl[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin-top:4px;font-family:SF Mono,Monaco,monospace}.wl-pnl-qty[data-v-5cbe52d9]{font-size:10px;color:#94a3b8}.wl-pnl-val[data-v-5cbe52d9]{font-size:10px;font-weight:600;margin-left:auto}.wl-pnl-val.up[data-v-5cbe52d9]{color:#16a34a}.wl-pnl-val.down[data-v-5cbe52d9]{color:#dc2626}.wl-row-task[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:6px;margin-top:4px}.wl-row-task[data-v-5cbe52d9],.wl-task-badge[data-v-5cbe52d9]{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.wl-task-badge[data-v-5cbe52d9]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;gap:3px;font-size:10px;padding:1px 8px;border-radius:10px;cursor:pointer;-webkit-transition:all .2s;transition:all .2s}.wl-task-badge.active[data-v-5cbe52d9]{color:#16a34a;background:rgba(22,163,74,.08)}.wl-task-badge.paused[data-v-5cbe52d9]{color:#94a3b8;background:#f1f5f9}.wl-task-badge[data-v-5cbe52d9]:hover{opacity:.75}.wl-task-next[data-v-5cbe52d9]{font-size:10px;color:#94a3b8;margin-left:auto}.wl-card-hover-actions[data-v-5cbe52d9]{position:absolute;top:0;right:0;bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:2px;padding-right:8px;opacity:0;-webkit-transition:opacity .15s;transition:opacity .15s;background:-webkit-gradient(linear,left top,right top,from(transparent),color-stop(30%,#f8fafc));background:linear-gradient(90deg,transparent,#f8fafc 30%);border-radius:0 8px 8px 0;pointer-events:none}.wl-card:hover .wl-card-hover-actions[data-v-5cbe52d9]{opacity:1;pointer-events:auto}.wl-card.active .wl-card-hover-actions[data-v-5cbe52d9]{background:-webkit-gradient(linear,left top,right top,from(transparent),color-stop(30%,#e6f7ff));background:linear-gradient(90deg,transparent,#e6f7ff 30%)}.wl-hover-btn[data-v-5cbe52d9]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:26px;height:26px;border-radius:6px;font-size:13px;color:#64748b;cursor:pointer;-webkit-transition:all .15s;transition:all .15s;background:#fff;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.06);box-shadow:0 1px 3px rgba(0,0,0,.06)}.wl-hover-btn[data-v-5cbe52d9]:hover{color:var(--primary-color,#1890ff);background:#e6f7ff}.wl-hover-btn.danger[data-v-5cbe52d9]:hover{color:#dc2626;background:#fef2f2}.watchlist-empty[data-v-5cbe52d9]{text-align:center;padding:32px 16px}.we-icon[data-v-5cbe52d9]{font-size:36px;color:#e2e8f0;margin-bottom:12px}.watchlist-empty p[data-v-5cbe52d9]{font-size:12px;color:#94a3b8;margin-bottom:12px}.batch-modal-summary[data-v-5cbe52d9]{margin-bottom:16px}.batch-modal-summary p[data-v-5cbe52d9]{font-size:13px;color:#475569;margin-bottom:8px}.batch-symbols-preview[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:4px;max-height:80px;overflow-y:auto}.task-drawer-empty[data-v-5cbe52d9]{text-align:center;padding:48px 16px;color:#94a3b8}.task-drawer-empty p[data-v-5cbe52d9]{margin-top:12px;font-size:13px}.task-drawer-list[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:12px}.task-item[data-v-5cbe52d9]{padding:14px 16px;border:1px solid #e2e8f0;border-radius:10px;background:#fafafa;-webkit-transition:-webkit-box-shadow .2s;transition:-webkit-box-shadow .2s;transition:box-shadow .2s;transition:box-shadow .2s,-webkit-box-shadow .2s}.task-item[data-v-5cbe52d9]:hover{-webkit-box-shadow:0 2px 8px rgba(0,0,0,.06);box-shadow:0 2px 8px rgba(0,0,0,.06)}.task-item-header[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:8px}.task-item-name[data-v-5cbe52d9]{font-size:13px;font-weight:600;color:#0f172a}.task-item-meta[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:16px;font-size:12px;color:#64748b;margin-bottom:10px}.task-item-meta .anticon[data-v-5cbe52d9]{margin-right:4px}.task-item-actions[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:8px}.add-stock-modal-content .market-tabs[data-v-5cbe52d9]{margin-bottom:16px}.add-stock-modal-content .hot-symbols-section[data-v-5cbe52d9],.add-stock-modal-content .search-results-section[data-v-5cbe52d9],.add-stock-modal-content .symbol-search-section[data-v-5cbe52d9]{margin-bottom:24px}.add-stock-modal-content .hot-symbols-section .section-title[data-v-5cbe52d9],.add-stock-modal-content .search-results-section .section-title[data-v-5cbe52d9]{font-size:14px;font-weight:600;color:#262626;margin-bottom:12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.add-stock-modal-content .symbol-list[data-v-5cbe52d9]{max-height:200px;overflow-y:auto;border:1px solid #e8e8e8;border-radius:4px}.add-stock-modal-content .symbol-list .symbol-list-item[data-v-5cbe52d9]{cursor:pointer;padding:8px 12px;-webkit-transition:background-color .3s;transition:background-color .3s}.add-stock-modal-content .symbol-list .symbol-list-item[data-v-5cbe52d9]:hover{background-color:#f5f5f5}.add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content .symbol-code[data-v-5cbe52d9]{font-weight:600;color:#262626;min-width:80px}.add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content .symbol-name[data-v-5cbe52d9]{color:#595959;-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.add-stock-modal-content .selected-symbol-section[data-v-5cbe52d9]{margin-top:16px}.add-stock-modal-content .selected-symbol-section .selected-symbol-info[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.skeleton-box .skeleton-text[data-v-5cbe52d9]{display:block;height:12px;background:-webkit-gradient(linear,left top,right top,color-stop(25%,#e2e8f0),color-stop(50%,#f1f5f9),color-stop(75%,#e2e8f0));background:linear-gradient(90deg,#e2e8f0 25%,#f1f5f9 50%,#e2e8f0 75%);background-size:200% 100%;-webkit-animation:skeleton-pulse-5cbe52d9 1.5s ease-in-out infinite;animation:skeleton-pulse-5cbe52d9 1.5s ease-in-out infinite;border-radius:4px;margin:3px 0}.skeleton-box .skeleton-text.short[data-v-5cbe52d9]{width:40px;height:9px}.skeleton-cell[data-v-5cbe52d9]{background:#f8fafc!important;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:8px 4px}.skeleton-cell .skeleton-text[data-v-5cbe52d9]{width:80%;height:10px;background:-webkit-gradient(linear,left top,right top,color-stop(25%,#e2e8f0),color-stop(50%,#f1f5f9),color-stop(75%,#e2e8f0));background:linear-gradient(90deg,#e2e8f0 25%,#f1f5f9 50%,#e2e8f0 75%);background-size:200% 100%;-webkit-animation:skeleton-pulse-5cbe52d9 1.5s ease-in-out infinite;animation:skeleton-pulse-5cbe52d9 1.5s ease-in-out infinite;border-radius:3px;margin:2px 0}.skeleton-cell .skeleton-text.short[data-v-5cbe52d9]{width:50%;height:8px}.skeleton-item[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;padding:6px 0}.skeleton-item .skeleton-text[data-v-5cbe52d9]{height:12px;background:-webkit-gradient(linear,left top,right top,color-stop(25%,#e2e8f0),color-stop(50%,#f1f5f9),color-stop(75%,#e2e8f0));background:linear-gradient(90deg,#e2e8f0 25%,#f1f5f9 50%,#e2e8f0 75%);background-size:200% 100%;-webkit-animation:skeleton-pulse-5cbe52d9 1.5s ease-in-out infinite;animation:skeleton-pulse-5cbe52d9 1.5s ease-in-out infinite;border-radius:4px;-webkit-box-flex:1;-ms-flex:1;flex:1}.skeleton-item .skeleton-text.short[data-v-5cbe52d9]{-webkit-box-flex:0;-ms-flex:none;flex:none;width:40px}.indices-empty[data-v-5cbe52d9],.indices-loading[data-v-5cbe52d9]{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;height:100%;font-size:11px;color:#94a3b8;padding:4px 16px}.indices-loading .anticon[data-v-5cbe52d9]{margin-right:6px}.heatmap-empty[data-v-5cbe52d9]{grid-column:-1;text-align:center;padding:20px;color:#94a3b8;font-size:12px}@-webkit-keyframes skeleton-pulse-5cbe52d9{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes skeleton-pulse-5cbe52d9{0%{background-position:200% 0}to{background-position:-200% 0}}.theme-dark .skeleton-box .skeleton-text[data-v-5cbe52d9],.theme-dark .skeleton-cell .skeleton-text[data-v-5cbe52d9],.theme-dark .skeleton-item .skeleton-text[data-v-5cbe52d9]{background:-webkit-gradient(linear,left top,right top,color-stop(25%,#2a2a2a),color-stop(50%,#333),color-stop(75%,#2a2a2a));background:linear-gradient(90deg,#2a2a2a 25%,#333 50%,#2a2a2a 75%);background-size:200% 100%}.theme-dark .skeleton-cell[data-v-5cbe52d9]{background:#1c1c1c!important}.theme-dark .heatmap-empty[data-v-5cbe52d9],.theme-dark .indices-empty[data-v-5cbe52d9],.theme-dark .indices-loading[data-v-5cbe52d9]{color:#666}.qd-dark-modal .ant-modal-content{background:#141414}.qd-dark-modal .ant-modal-header{background:#141414;border-bottom-color:#2a2a2a}.qd-dark-modal .ant-modal-header .ant-modal-title{color:#d4d4d4}.qd-dark-modal .ant-modal-close-x{color:#888}.qd-dark-modal .ant-modal-body{background:#141414;color:#d4d4d4}.qd-dark-modal .ant-modal-footer{background:#141414;border-top-color:#2a2a2a}.qd-dark-modal .ant-modal-footer .ant-btn-default{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.qd-dark-modal .ant-modal-footer .ant-btn-default:hover{border-color:#1890ff;color:#1890ff}.qd-dark-modal .ant-form-item-label>label{color:#d4d4d4}.qd-dark-modal .ant-input{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.qd-dark-modal .ant-input::-webkit-input-placeholder{color:#555}.qd-dark-modal .ant-input::-moz-placeholder{color:#555}.qd-dark-modal .ant-input:-ms-input-placeholder{color:#555}.qd-dark-modal .ant-input::-ms-input-placeholder{color:#555}.qd-dark-modal .ant-input::placeholder{color:#555}.qd-dark-modal .ant-input-number,.qd-dark-modal .ant-select-selection{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.qd-dark-modal .ant-select-arrow{color:#666}.qd-dark-modal .ant-checkbox-wrapper,.qd-dark-modal .ant-radio-wrapper{color:#d4d4d4}.qd-dark-modal .ant-tabs-bar{border-bottom-color:#2a2a2a}.qd-dark-modal .ant-tabs-tab{color:#888}.qd-dark-modal .ant-tabs-tab:hover{color:#d4d4d4}.qd-dark-modal .ant-tabs-tab-active{color:#1890ff!important}.qd-dark-modal .ant-tag{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.qd-dark-modal .ant-tag-blue{background:rgba(24,144,255,.1);border-color:rgba(24,144,255,.3);color:#1890ff}.qd-dark-modal .ant-alert{background:rgba(24,144,255,.06);border-color:#2a2a2a}.qd-dark-modal .ant-alert-message{color:#d4d4d4}.qd-dark-modal .ant-alert-info .ant-alert-icon{color:#1890ff}.qd-dark-modal .ant-list-item{border-bottom-color:#2a2a2a;color:#d4d4d4}.qd-dark-modal .ant-list-item-meta-title{color:#d4d4d4}.qd-dark-modal .ant-list-item-meta-description{color:#888}.qd-dark-modal .ant-empty-description{color:#666}.qd-dark-modal .add-stock-modal-content,.qd-dark-modal p{color:#d4d4d4}.qd-dark-modal .add-stock-modal-content .section-title{color:#d4d4d4!important}.qd-dark-modal .add-stock-modal-content .symbol-list{border-color:#2a2a2a;background:#1c1c1c}.qd-dark-modal .add-stock-modal-content .symbol-list .symbol-list-item:hover{background:#252525!important}.qd-dark-modal .add-stock-modal-content .symbol-list .symbol-list-item .symbol-code{color:#d4d4d4!important}.qd-dark-modal .add-stock-modal-content .symbol-list .symbol-list-item .symbol-name{color:#888!important}.qd-dark-modal .add-stock-modal-content .selected-symbol-info strong{color:#d4d4d4}.qd-dark-modal .add-stock-modal-content .selected-symbol-info span{color:#888!important}.qd-dark-modal .batch-modal-summary p{color:#d4d4d4}.qd-dark-modal .batch-symbols-preview .ant-tag{background:rgba(24,144,255,.1);border-color:rgba(24,144,255,.3);color:#1890ff}.qd-dark-modal .task-item{background:#1c1c1c;border-color:#2a2a2a}.qd-dark-modal .task-item:hover{-webkit-box-shadow:0 2px 8px rgba(0,0,0,.3);box-shadow:0 2px 8px rgba(0,0,0,.3)}.qd-dark-modal .task-item-name{color:#d4d4d4}.qd-dark-modal .task-item-meta{color:#888}.qd-dark-modal .task-drawer-empty{color:#666}.qd-dark-modal .history-item{background:#1c1c1c;border-color:#2a2a2a}.qd-dark-modal .search-result-item{color:#d4d4d4}.qd-dark-modal .search-result-item:hover{background:#1c1c1c}.qd-dark-modal .search-result-name{color:#d4d4d4}.qd-dark-modal .search-result-market{color:#888}.qd-dark-drawer .ant-drawer-content{background:#141414}.qd-dark-drawer .ant-drawer-header{background:#141414;border-bottom-color:#2a2a2a}.qd-dark-drawer .ant-drawer-header .ant-drawer-title{color:#d4d4d4}.qd-dark-drawer .ant-drawer-header .ant-drawer-close{color:#888}.qd-dark-drawer .ant-drawer-body{background:#141414;color:#d4d4d4}.qd-dark-drawer .task-item{background:#1c1c1c;border-color:#2a2a2a}.qd-dark-drawer .task-item:hover{-webkit-box-shadow:0 2px 8px rgba(0,0,0,.3);box-shadow:0 2px 8px rgba(0,0,0,.3)}.qd-dark-drawer .task-item-name{color:#d4d4d4}.qd-dark-drawer .task-item-meta{color:#888}.qd-dark-drawer .task-drawer-empty{color:#666}.qd-dark-drawer .ant-btn-default{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.qd-dark-drawer .ant-btn-default:hover{border-color:#1890ff;color:#1890ff}.qd-dark-drawer .ant-btn-danger{background:transparent}.qd-dark-drawer .ant-popover-inner{background:#1c1c1c}.qd-dark-drawer .ant-popover-message,.qd-dark-drawer .ant-popover-message-title{color:#d4d4d4}.qd-dark-drawer .ant-popover-buttons .ant-btn-default{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.qd-dark-modal .ant-select-dropdown,body.colorWeak .ant-select-dropdown{background:#1c1c1c}.qd-dark-modal .ant-select-dropdown .ant-select-dropdown-menu-item,body.colorWeak .ant-select-dropdown .ant-select-dropdown-menu-item{color:#d4d4d4}.qd-dark-modal .ant-select-dropdown .ant-select-dropdown-menu-item-active,.qd-dark-modal .ant-select-dropdown .ant-select-dropdown-menu-item:hover,body.colorWeak .ant-select-dropdown .ant-select-dropdown-menu-item-active,body.colorWeak .ant-select-dropdown .ant-select-dropdown-menu-item:hover{background:#252525}.qd-dark-modal .ant-select-dropdown .ant-select-dropdown-menu-item-selected,body.colorWeak .ant-select-dropdown .ant-select-dropdown-menu-item-selected{background:rgba(24,144,255,.1);color:#1890ff} \ No newline at end of file diff --git a/frontend/dist/css/855.e5d22965.css b/frontend/dist/css/855.e5d22965.css new file mode 100644 index 0000000..9fb1fb7 --- /dev/null +++ b/frontend/dist/css/855.e5d22965.css @@ -0,0 +1 @@ +.fast-analysis-report[data-v-03feb1fa]{height:100%;overflow-y:auto;padding:24px;background:#f7f8fa;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased}.fast-analysis-report[data-v-03feb1fa]::-webkit-scrollbar{width:4px}.fast-analysis-report[data-v-03feb1fa]::-webkit-scrollbar-thumb{background:#d0d4da;border-radius:2px}.fast-analysis-report .loading-container[data-v-03feb1fa]{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;min-height:420px}.fast-analysis-report .loading-container .loading-content-pro[data-v-03feb1fa]{width:100%;max-width:400px;padding:40px}.fast-analysis-report .loading-container .loading-content-pro .loading-header[data-v-03feb1fa]{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;gap:12px;margin-bottom:32px}.fast-analysis-report .loading-container .loading-content-pro .loading-header .loading-icon-pro[data-v-03feb1fa]{font-size:26px;color:var(--primary-color,#1890ff)}.fast-analysis-report .loading-container .loading-content-pro .loading-header .loading-title[data-v-03feb1fa]{font-size:18px;font-weight:700;color:#1a1a2e}.fast-analysis-report .loading-container .loading-content-pro .progress-wrapper[data-v-03feb1fa]{margin-bottom:24px;position:relative}.fast-analysis-report .loading-container .loading-content-pro .progress-wrapper .progress-text[data-v-03feb1fa]{position:absolute;right:0;top:-22px;font-size:13px;font-weight:700;color:var(--primary-color,#1890ff)}.fast-analysis-report .loading-container .loading-content-pro .current-step[data-v-03feb1fa]{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;gap:8px;padding:10px 20px;background:color-mix(in srgb,var(--primary-color,#1890ff) 6%,transparent);border-radius:8px;margin-bottom:20px;color:var(--primary-color,#1890ff);font-size:13px;font-weight:600}.fast-analysis-report .loading-container .loading-content-pro .current-step .anticon[data-v-03feb1fa]{font-size:15px}.fast-analysis-report .loading-container .loading-content-pro .steps-list[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:8px}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px;padding:9px 14px;background:rgba(0,0,0,.02);border-radius:8px;font-size:12px;color:#999;-webkit-transition:all .3s;transition:all .3s}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item .step-dot[data-v-03feb1fa]{width:7px;height:7px;border-radius:50%;background:#ddd;-webkit-transition:all .3s;transition:all .3s}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item .step-text[data-v-03feb1fa]{-webkit-box-flex:1;-ms-flex:1;flex:1}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item .step-check[data-v-03feb1fa]{color:#10b981;font-size:13px}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item.active[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 6%,transparent);color:var(--primary-color,#1890ff);font-weight:600}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item.active .step-dot[data-v-03feb1fa]{background:var(--primary-color,#1890ff);-webkit-box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color,#1890ff) 15%,transparent);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color,#1890ff) 15%,transparent)}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item.done[data-v-03feb1fa]{color:#10b981}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item.done .step-dot[data-v-03feb1fa]{background:#10b981}.fast-analysis-report .loading-container .loading-content-pro .loading-footer[data-v-03feb1fa]{margin-top:20px;text-align:center}.fast-analysis-report .loading-container .loading-content-pro .loading-footer .elapsed-time[data-v-03feb1fa]{font-size:12px;color:#999;font-family:SF Mono,Monaco,monospace}.fast-analysis-report .empty-container[data-v-03feb1fa]{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;min-height:400px}.fast-analysis-report .empty-container .empty-content[data-v-03feb1fa]{text-align:center}.fast-analysis-report .empty-container .empty-content .empty-icon[data-v-03feb1fa]{font-size:56px;color:#ccc}.fast-analysis-report .empty-container .empty-content .empty-title[data-v-03feb1fa]{margin-top:14px;font-size:17px;font-weight:700;color:#1a1a2e}.fast-analysis-report .empty-container .empty-content .empty-hint[data-v-03feb1fa]{margin-top:6px;color:#999;font-size:13px}.fast-analysis-report .result-container .decision-card[data-v-03feb1fa]{padding:28px 24px;margin-bottom:2px;border-radius:16px 16px 0 0;background:#fff;position:relative;overflow:hidden}.fast-analysis-report .result-container .decision-card[data-v-03feb1fa]:after{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:var(--primary-color,#1890ff)}.fast-analysis-report .result-container .decision-card.decision-buy[data-v-03feb1fa]:after{background:-webkit-gradient(linear,left top,right top,from(#10b981),to(#34d399));background:linear-gradient(90deg,#10b981,#34d399)}.fast-analysis-report .result-container .decision-card.decision-sell[data-v-03feb1fa]:after{background:-webkit-gradient(linear,left top,right top,from(#ef4444),to(#f87171));background:linear-gradient(90deg,#ef4444,#f87171)}.fast-analysis-report .result-container .decision-card.decision-hold[data-v-03feb1fa]:after{background:-webkit-gradient(linear,left top,right top,from(#f59e0b),to(#fbbf24));background:linear-gradient(90deg,#f59e0b,#fbbf24)}.fast-analysis-report .result-container .decision-card .decision-main[data-v-03feb1fa]{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;margin-bottom:16px}.fast-analysis-report .result-container .decision-card .decision-main .decision-badge[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px}.fast-analysis-report .result-container .decision-card .decision-main .decision-badge .anticon[data-v-03feb1fa]{font-size:28px}.fast-analysis-report .result-container .decision-card .decision-main .decision-badge .decision-text[data-v-03feb1fa]{font-size:32px;font-weight:800;letter-spacing:1px;color:#1a1a2e;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,sans-serif}.fast-analysis-report .result-container .decision-card .decision-main .confidence-ring[data-v-03feb1fa]{text-align:center}.fast-analysis-report .result-container .decision-card .decision-main .confidence-ring .confidence-value[data-v-03feb1fa]{font-size:17px;font-weight:800;color:#1a1a2e;font-family:SF Mono,Cascadia Code,Consolas,Monaco,monospace}.fast-analysis-report .result-container .decision-card .decision-main .confidence-ring .confidence-label[data-v-03feb1fa]{font-size:11px;color:#999;margin-top:2px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,sans-serif}.fast-analysis-report .result-container .decision-card .decision-summary[data-v-03feb1fa]{font-size:14px;line-height:1.75;color:#555;padding-top:14px;border-top:1px solid #ebeef2}.fast-analysis-report .result-container .decision-card .consensus-strip[data-v-03feb1fa]{margin-top:12px;padding:10px 14px;border-radius:8px;background:color-mix(in srgb,var(--primary-color,#1890ff) 4%,transparent);font-size:12px;color:#555}.fast-analysis-report .result-container .decision-card .consensus-strip .consensus-strip-title[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;font-weight:700;margin-bottom:6px;color:var(--primary-color,#1890ff);font-size:12px}.fast-analysis-report .result-container .decision-card .consensus-strip .consensus-strip-metrics[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px 18px}.fast-analysis-report .result-container .decision-card .consensus-strip .consensus-strip-metrics .cm-item em[data-v-03feb1fa]{font-style:normal;color:#999;margin-right:4px}.fast-analysis-report .result-container .decision-card.decision-buy .decision-badge .anticon[data-v-03feb1fa],.fast-analysis-report .result-container .decision-card.decision-buy .decision-badge .decision-text[data-v-03feb1fa]{color:#10b981}.fast-analysis-report .result-container .decision-card.decision-sell .decision-badge .anticon[data-v-03feb1fa],.fast-analysis-report .result-container .decision-card.decision-sell .decision-badge .decision-text[data-v-03feb1fa]{color:#ef4444}.fast-analysis-report .result-container .decision-card.decision-hold .decision-badge .anticon[data-v-03feb1fa],.fast-analysis-report .result-container .decision-card.decision-hold .decision-badge .decision-text[data-v-03feb1fa]{color:#f59e0b}.fast-analysis-report .result-container .price-info-row[data-v-03feb1fa]{display:grid;grid-template-columns:repeat(4,1fr);gap:0;background:#fff;margin-bottom:2px}.fast-analysis-report .result-container .price-info-row.hold-mode[data-v-03feb1fa]{grid-template-columns:1fr}.fast-analysis-report .result-container .price-info-row .price-card[data-v-03feb1fa]{padding:16px 14px;text-align:center;position:relative;background:transparent;border:none;-webkit-box-shadow:none;box-shadow:none;border-radius:0}.fast-analysis-report .result-container .price-info-row .price-card[data-v-03feb1fa]:not(:last-child):after{content:"";position:absolute;right:0;top:20%;height:60%;width:1px;background:#ebeef2}.fast-analysis-report .result-container .price-info-row .price-card .price-label[data-v-03feb1fa]{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:#999;margin-bottom:6px}.fast-analysis-report .result-container .price-info-row .price-card .price-value[data-v-03feb1fa]{font-size:18px;font-weight:700;color:#1a1a2e;font-family:SF Mono,Cascadia Code,Consolas,Monaco,monospace}.fast-analysis-report .result-container .price-info-row .price-card .price-value.positive[data-v-03feb1fa]{color:#10b981}.fast-analysis-report .result-container .price-info-row .price-card .price-value.negative[data-v-03feb1fa]{color:#ef4444}.fast-analysis-report .result-container .price-info-row .price-card .price-hint[data-v-03feb1fa]{font-size:9px;color:#bbb;margin-top:4px}.fast-analysis-report .result-container .price-info-row .price-card .price-hint .anticon[data-v-03feb1fa]{margin-right:2px}.fast-analysis-report .result-container .price-info-row .price-card .price-change[data-v-03feb1fa]{font-size:13px;margin-top:3px;font-weight:700;font-family:SF Mono,Cascadia Code,Consolas,Monaco,monospace}.fast-analysis-report .result-container .price-info-row .price-card .price-change.positive[data-v-03feb1fa]{color:#10b981}.fast-analysis-report .result-container .price-info-row .price-card .price-change.negative[data-v-03feb1fa]{color:#ef4444}.fast-analysis-report .result-container .price-info-row .price-card.current .price-label[data-v-03feb1fa]{color:#3b82f6}.fast-analysis-report .result-container .price-info-row .price-card.entry .price-label[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report .result-container .price-info-row .price-card.stop .price-label[data-v-03feb1fa]{color:#ef4444}.fast-analysis-report .result-container .price-info-row .price-card.target .price-label[data-v-03feb1fa]{color:#10b981}.fast-analysis-report .result-container .trend-outlook-card[data-v-03feb1fa]{background:#fff;padding:18px 20px;margin-bottom:2px}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-header[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;font-size:13px;font-weight:700;color:#1a1a2e;margin-bottom:10px}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-header .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff);font-size:15px}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-summary[data-v-03feb1fa]{font-size:12px;line-height:1.65;color:#555;margin-bottom:12px;padding:10px 12px;background:rgba(0,0,0,.02);border-radius:8px}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-grid[data-v-03feb1fa]{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-item[data-v-03feb1fa]{background:rgba(0,0,0,.02);border-radius:8px;padding:10px;text-align:center}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-item .to-label[data-v-03feb1fa]{font-size:10px;color:#999;margin-bottom:4px;text-transform:uppercase;letter-spacing:.3px}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-item .to-trend[data-v-03feb1fa]{font-size:13px;font-weight:700;margin-bottom:4px}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-item .to-trend.trend-bull[data-v-03feb1fa]{color:#10b981}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-item .to-trend.trend-bear[data-v-03feb1fa]{color:#ef4444}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-item .to-trend.trend-neutral[data-v-03feb1fa]{color:#f59e0b}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-item .to-meta[data-v-03feb1fa]{font-size:10px;color:#999;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:6px}@media (max-width:992px){.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-grid[data-v-03feb1fa]{grid-template-columns:repeat(2,1fr)}}.fast-analysis-report .result-container .scores-row[data-v-03feb1fa]{display:grid;grid-template-columns:repeat(4,1fr);gap:0;background:#fff;margin-bottom:2px}.fast-analysis-report .result-container .scores-row .score-item[data-v-03feb1fa]{padding:14px 16px;position:relative;background:transparent;border:none;-webkit-box-shadow:none;box-shadow:none;border-radius:0}.fast-analysis-report .result-container .scores-row .score-item[data-v-03feb1fa]:not(:last-child):after{content:"";position:absolute;right:0;top:16%;height:68%;width:1px;background:#ebeef2}.fast-analysis-report .result-container .scores-row .score-item .score-header[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;font-size:12px;font-weight:600;color:#999;margin-bottom:8px}.fast-analysis-report .result-container .scores-row .score-item .score-header .anticon[data-v-03feb1fa]{font-size:14px;color:var(--primary-color,#1890ff)}.fast-analysis-report .result-container .scores-row .score-item .score-value[data-v-03feb1fa]{text-align:right;font-size:22px;font-weight:800;color:#1a1a2e;margin-top:6px;font-family:SF Mono,Cascadia Code,Consolas,Monaco,monospace}.fast-analysis-report .result-container .scores-row .score-item.overall[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 3%,transparent)}.fast-analysis-report .result-container .scores-row .score-item.overall .score-header .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report .result-container .detailed-analysis[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:0;background:#fff;margin-bottom:2px;padding:0}.fast-analysis-report .result-container .detailed-analysis .analysis-card[data-v-03feb1fa]{padding:20px 24px;border:none;-webkit-box-shadow:none;box-shadow:none;border-radius:0;background:transparent;border-bottom:1px solid #ebeef2;position:relative}.fast-analysis-report .result-container .detailed-analysis .analysis-card[data-v-03feb1fa]:last-child{border-bottom:none}.fast-analysis-report .result-container .detailed-analysis .analysis-card[data-v-03feb1fa]:before{content:"";position:absolute;left:0;top:20px;bottom:20px;width:3px;border-radius:2px}.fast-analysis-report .result-container .detailed-analysis .analysis-card.technical[data-v-03feb1fa]:before{background:#3b82f6}.fast-analysis-report .result-container .detailed-analysis .analysis-card.fundamental[data-v-03feb1fa]:before{background:var(--primary-color,#1890ff)}.fast-analysis-report .result-container .detailed-analysis .analysis-card.sentiment[data-v-03feb1fa]:before{background:#ec4899}.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-header[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin-bottom:10px;font-size:14px;font-weight:700;color:#1a1a2e;padding-left:12px}.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-header .anticon[data-v-03feb1fa]{font-size:16px}.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-header.technical .anticon[data-v-03feb1fa]{color:#3b82f6}.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-header.fundamental .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-header.sentiment .anticon[data-v-03feb1fa]{color:#ec4899}.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-content[data-v-03feb1fa]{font-size:13px;line-height:1.85;color:#555;padding-left:12px}.fast-analysis-report .result-container .analysis-details[data-v-03feb1fa]{display:grid;grid-template-columns:1fr 1fr;gap:0;background:#fff;margin-bottom:2px}.fast-analysis-report .result-container .analysis-details .detail-section[data-v-03feb1fa]{padding:20px 24px;border:none;-webkit-box-shadow:none;box-shadow:none;border-radius:0;background:transparent}.fast-analysis-report .result-container .analysis-details .detail-section.reasons[data-v-03feb1fa]{border-right:1px solid #ebeef2}.fast-analysis-report .result-container .analysis-details .detail-section .section-title[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;font-size:13px;font-weight:700;margin-bottom:12px;color:#1a1a2e;text-transform:uppercase;letter-spacing:.3px}.fast-analysis-report .result-container .analysis-details .detail-section .detail-list[data-v-03feb1fa]{list-style:none;padding:0;margin:0}.fast-analysis-report .result-container .analysis-details .detail-section .detail-list li[data-v-03feb1fa]{padding:8px 0;font-size:13px;line-height:1.65;color:#555;border-bottom:1px solid rgba(0,0,0,.04)}.fast-analysis-report .result-container .analysis-details .detail-section .detail-list li[data-v-03feb1fa]:last-child{border-bottom:none}.fast-analysis-report .result-container .analysis-details .detail-section .detail-list li[data-v-03feb1fa]:before{content:"";display:inline-block;width:5px;height:5px;border-radius:50%;margin-right:10px;vertical-align:middle}.fast-analysis-report .result-container .analysis-details .detail-section.reasons .detail-list li[data-v-03feb1fa]:before{background:#10b981}.fast-analysis-report .result-container .analysis-details .detail-section.risks .detail-list li[data-v-03feb1fa]:before{background:#f59e0b}.fast-analysis-report .result-container .indicators-section[data-v-03feb1fa]{background:#fff;padding:20px 24px;margin-bottom:2px;border:none;-webkit-box-shadow:none;box-shadow:none;border-radius:0}.fast-analysis-report .result-container .indicators-section .section-title[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px;font-size:13px;font-weight:700;margin-bottom:8px;color:#1a1a2e;text-transform:uppercase;letter-spacing:.3px}.fast-analysis-report .result-container .indicators-section .section-title .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report .result-container .indicators-section .section-title .indicators-pro-badge[data-v-03feb1fa]{margin:0;font-size:10px;line-height:16px;font-weight:600}.fast-analysis-report .result-container .indicators-section .indicators-methodology[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:8px;font-size:11px;line-height:1.5;color:#999;margin-bottom:14px;padding:8px 12px;background:rgba(0,0,0,.02);border-radius:6px;border:none}.fast-analysis-report .result-container .indicators-section .indicators-methodology .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff);margin-top:1px}.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa]{margin-top:18px;padding-top:14px;border-top:1px solid #ebeef2}.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap .indicators-pro-title[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;font-size:12px;font-weight:700;color:#555;margin-bottom:10px}.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap .indicators-pro-title .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc .ant-descriptions-item-label{font-size:11px;color:#999;font-weight:600;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,sans-serif}.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc .ant-descriptions-item-content{font-size:11px;font-family:SF Mono,Cascadia Code,Consolas,Monaco,monospace}.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc .bullish{color:#10b981;font-weight:700}.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc .bearish{color:#ef4444;font-weight:700}.fast-analysis-report .result-container .indicators-section .indicators-grid[data-v-03feb1fa]{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:8px}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item[data-v-03feb1fa]{background:rgba(0,0,0,.02);border-radius:8px;padding:12px 10px;text-align:center;border:none;-webkit-transition:background .15s;transition:background .15s}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item[data-v-03feb1fa]:hover{background:rgba(0,0,0,.04)}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-name[data-v-03feb1fa]{font-size:10px;color:#999;margin-bottom:6px;font-weight:600;text-transform:uppercase;letter-spacing:.3px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,sans-serif}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value[data-v-03feb1fa]{font-size:15px;font-weight:700;color:#1a1a2e;font-family:SF Mono,Cascadia Code,Consolas,Monaco,monospace}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.bullish[data-v-03feb1fa],.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.oversold[data-v-03feb1fa]{color:#10b981}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.bearish[data-v-03feb1fa],.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.high-volatility[data-v-03feb1fa],.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.overbought[data-v-03feb1fa]{color:#ef4444}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.low-volatility[data-v-03feb1fa]{color:#10b981}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-signal[data-v-03feb1fa]{font-size:10px;color:#999;margin-top:3px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,sans-serif}.fast-analysis-report .result-container .feedback-section[data-v-03feb1fa]{background:#fff;border-radius:0 0 16px 16px;padding:18px 24px;text-align:center;border:none;-webkit-box-shadow:none;box-shadow:none}.fast-analysis-report .result-container .feedback-section .feedback-question[data-v-03feb1fa]{font-size:13px;color:#999;margin-bottom:10px}.fast-analysis-report .result-container .feedback-section .feedback-buttons[data-v-03feb1fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:12px;margin-bottom:12px}.fast-analysis-report .result-container .feedback-section .feedback-buttons .ant-btn[data-v-03feb1fa]{min-width:90px;border-radius:8px}.fast-analysis-report .result-container .feedback-section .analysis-meta[data-v-03feb1fa]{font-size:11px;color:#bbb;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:14px}@media (max-width:992px){.fast-analysis-report .price-info-row[data-v-03feb1fa]:not(.hold-mode),.fast-analysis-report .scores-row[data-v-03feb1fa]{grid-template-columns:repeat(2,1fr)}.fast-analysis-report .analysis-details[data-v-03feb1fa]{grid-template-columns:1fr}.fast-analysis-report .analysis-details .detail-section.reasons[data-v-03feb1fa]{border-right:none;border-bottom:1px solid #ebeef2}}@media (max-width:576px){.fast-analysis-report[data-v-03feb1fa]{padding:8px 6px}.fast-analysis-report .price-info-row[data-v-03feb1fa]:not(.hold-mode),.fast-analysis-report .scores-row[data-v-03feb1fa]{grid-template-columns:1fr}.fast-analysis-report .decision-card[data-v-03feb1fa]{padding:20px 16px}.fast-analysis-report .decision-card .decision-main[data-v-03feb1fa]{gap:14px;text-align:center}.fast-analysis-report .decision-card .decision-main .decision-badge[data-v-03feb1fa],.fast-analysis-report .decision-card .decision-main[data-v-03feb1fa]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.fast-analysis-report .decision-card .decision-main .decision-badge .decision-text[data-v-03feb1fa]{font-size:26px}}.fast-analysis-report.theme-dark[data-v-03feb1fa]{background:#111113}.fast-analysis-report.theme-dark[data-v-03feb1fa]::-webkit-scrollbar-thumb{background:#333}.fast-analysis-report.theme-dark .loading-container .loading-content-pro .loading-title[data-v-03feb1fa]{color:#e8e8ec}.fast-analysis-report.theme-dark .loading-container .loading-content-pro .loading-icon-pro[data-v-03feb1fa],.fast-analysis-report.theme-dark .loading-container .loading-content-pro .progress-wrapper .progress-text[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report.theme-dark .loading-container .loading-content-pro .current-step[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 8%,transparent);color:var(--primary-color,#1890ff)}.fast-analysis-report.theme-dark .loading-container .loading-content-pro .steps-list .step-item[data-v-03feb1fa]{background:#222224;color:#666}.fast-analysis-report.theme-dark .loading-container .loading-content-pro .steps-list .step-item.active[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 8%,transparent);color:var(--primary-color,#1890ff)}.fast-analysis-report.theme-dark .loading-container .loading-content-pro .steps-list .step-item.active .step-dot[data-v-03feb1fa]{background:var(--primary-color,#1890ff);-webkit-box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color,#1890ff) 15%,transparent);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color,#1890ff) 15%,transparent)}.fast-analysis-report.theme-dark .loading-container .loading-content-pro .steps-list .step-item.done[data-v-03feb1fa]{color:#34d399}.fast-analysis-report.theme-dark .loading-container .loading-content-pro .steps-list .step-item.done .step-dot[data-v-03feb1fa]{background:#34d399}.fast-analysis-report.theme-dark .loading-container .loading-content-pro .loading-footer .elapsed-time[data-v-03feb1fa]{color:#666}.fast-analysis-report.theme-dark .empty-content .empty-icon[data-v-03feb1fa]{color:#444}.fast-analysis-report.theme-dark .empty-content .empty-title[data-v-03feb1fa]{color:#e8e8ec}.fast-analysis-report.theme-dark .empty-content .empty-hint[data-v-03feb1fa]{color:#666}.fast-analysis-report.theme-dark .result-container .decision-card[data-v-03feb1fa]{background:#19191b}.fast-analysis-report.theme-dark .result-container .decision-card.decision-buy[data-v-03feb1fa]{background:linear-gradient(135deg,rgba(16,185,129,.06),#19191b)}.fast-analysis-report.theme-dark .result-container .decision-card.decision-buy .decision-badge .anticon[data-v-03feb1fa],.fast-analysis-report.theme-dark .result-container .decision-card.decision-buy .decision-text[data-v-03feb1fa]{color:#34d399}.fast-analysis-report.theme-dark .result-container .decision-card.decision-sell[data-v-03feb1fa]{background:linear-gradient(135deg,rgba(239,68,68,.06),#19191b)}.fast-analysis-report.theme-dark .result-container .decision-card.decision-sell .decision-badge .anticon[data-v-03feb1fa],.fast-analysis-report.theme-dark .result-container .decision-card.decision-sell .decision-text[data-v-03feb1fa]{color:#f87171}.fast-analysis-report.theme-dark .result-container .decision-card.decision-hold[data-v-03feb1fa]{background:linear-gradient(135deg,rgba(245,158,11,.06),#19191b)}.fast-analysis-report.theme-dark .result-container .decision-card.decision-hold .decision-badge .anticon[data-v-03feb1fa],.fast-analysis-report.theme-dark .result-container .decision-card.decision-hold .decision-text[data-v-03feb1fa]{color:#fbbf24}.fast-analysis-report.theme-dark .result-container .decision-card .decision-text[data-v-03feb1fa]{color:#e8e8ec}.fast-analysis-report.theme-dark .result-container .decision-card .confidence-label[data-v-03feb1fa]{color:#a0a0a8}.fast-analysis-report.theme-dark .result-container .decision-card .decision-summary[data-v-03feb1fa]{color:#a0a0a8;border-top-color:hsla(0,0%,100%,.06)}.fast-analysis-report.theme-dark .result-container .decision-card .confidence-value[data-v-03feb1fa],.fast-analysis-report.theme-dark .result-container .decision-card[data-v-03feb1fa] .ant-progress-text{color:#e8e8ec!important}.fast-analysis-report.theme-dark .result-container .decision-card .consensus-strip[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 5%,transparent);color:#a0a0a8}.fast-analysis-report.theme-dark .result-container .decision-card .consensus-strip .consensus-strip-title[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report.theme-dark .result-container .decision-card .consensus-strip .cm-item em[data-v-03feb1fa]{color:#666}.fast-analysis-report.theme-dark .result-container .price-info-row[data-v-03feb1fa]{background:#19191b}.fast-analysis-report.theme-dark .result-container .price-info-row .price-card[data-v-03feb1fa]:not(:last-child):after{background:hsla(0,0%,100%,.06)}.fast-analysis-report.theme-dark .result-container .price-info-row .price-card .price-label[data-v-03feb1fa]{color:#a0a0a8}.fast-analysis-report.theme-dark .result-container .price-info-row .price-card .price-value[data-v-03feb1fa]{color:#f0f0f2}.fast-analysis-report.theme-dark .result-container .price-info-row .price-card .price-value.positive[data-v-03feb1fa]{color:#34d399}.fast-analysis-report.theme-dark .result-container .price-info-row .price-card .price-value.negative[data-v-03feb1fa]{color:#f87171}.fast-analysis-report.theme-dark .result-container .price-info-row .price-card .price-hint[data-v-03feb1fa]{color:#555}.fast-analysis-report.theme-dark .result-container .price-info-row .price-card .price-change.positive[data-v-03feb1fa]{color:#34d399}.fast-analysis-report.theme-dark .result-container .price-info-row .price-card .price-change.negative[data-v-03feb1fa]{color:#f87171}.fast-analysis-report.theme-dark .result-container .price-info-row .price-card.current .price-label[data-v-03feb1fa]{color:#60a5fa}.fast-analysis-report.theme-dark .result-container .price-info-row .price-card.entry .price-label[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report.theme-dark .result-container .price-info-row .price-card.stop .price-label[data-v-03feb1fa]{color:#f87171}.fast-analysis-report.theme-dark .result-container .price-info-row .price-card.target .price-label[data-v-03feb1fa]{color:#34d399}.fast-analysis-report.theme-dark .result-container .trend-outlook-card[data-v-03feb1fa]{background:#19191b}.fast-analysis-report.theme-dark .result-container .trend-outlook-card .trend-outlook-header[data-v-03feb1fa]{color:#e8e8ec}.fast-analysis-report.theme-dark .result-container .trend-outlook-card .trend-outlook-header .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report.theme-dark .result-container .trend-outlook-card .trend-outlook-summary[data-v-03feb1fa]{background:#222224;color:#a0a0a8}.fast-analysis-report.theme-dark .result-container .trend-outlook-card .trend-outlook-item[data-v-03feb1fa]{background:#222224}.fast-analysis-report.theme-dark .result-container .trend-outlook-card .trend-outlook-item .to-label[data-v-03feb1fa],.fast-analysis-report.theme-dark .result-container .trend-outlook-card .trend-outlook-item .to-meta[data-v-03feb1fa]{color:#666}.fast-analysis-report.theme-dark .result-container .trend-outlook-card .trend-outlook-item .to-trend.trend-bull[data-v-03feb1fa]{color:#34d399}.fast-analysis-report.theme-dark .result-container .trend-outlook-card .trend-outlook-item .to-trend.trend-bear[data-v-03feb1fa]{color:#f87171}.fast-analysis-report.theme-dark .result-container .trend-outlook-card .trend-outlook-item .to-trend.trend-neutral[data-v-03feb1fa]{color:#fbbf24}.fast-analysis-report.theme-dark .result-container .scores-row[data-v-03feb1fa]{background:#19191b}.fast-analysis-report.theme-dark .result-container .scores-row .score-item[data-v-03feb1fa]:not(:last-child):after{background:hsla(0,0%,100%,.06)}.fast-analysis-report.theme-dark .result-container .scores-row .score-item .score-header[data-v-03feb1fa]{color:#a0a0a8}.fast-analysis-report.theme-dark .result-container .scores-row .score-item .score-header .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report.theme-dark .result-container .scores-row .score-item .score-value[data-v-03feb1fa]{color:#f0f0f2}.fast-analysis-report.theme-dark .result-container .scores-row .score-item.overall[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 4%,transparent)}.fast-analysis-report.theme-dark .result-container .detailed-analysis[data-v-03feb1fa]{background:#19191b}.fast-analysis-report.theme-dark .result-container .detailed-analysis .analysis-card[data-v-03feb1fa]{border-bottom-color:hsla(0,0%,100%,.06)}.fast-analysis-report.theme-dark .result-container .detailed-analysis .analysis-card .analysis-card-header[data-v-03feb1fa]{color:#e8e8ec}.fast-analysis-report.theme-dark .result-container .detailed-analysis .analysis-card .analysis-card-content[data-v-03feb1fa]{color:#a0a0a8}.fast-analysis-report.theme-dark .result-container .analysis-details[data-v-03feb1fa]{background:#19191b}.fast-analysis-report.theme-dark .result-container .analysis-details .detail-section.reasons[data-v-03feb1fa]{border-right-color:hsla(0,0%,100%,.06)}.fast-analysis-report.theme-dark .result-container .analysis-details .detail-section .section-title[data-v-03feb1fa]{color:#e8e8ec}.fast-analysis-report.theme-dark .result-container .analysis-details .detail-section .detail-list li[data-v-03feb1fa]{color:#a0a0a8;border-bottom-color:hsla(0,0%,100%,.06)}.fast-analysis-report.theme-dark .result-container .indicators-section[data-v-03feb1fa]{background:#19191b}.fast-analysis-report.theme-dark .result-container .indicators-section .section-title[data-v-03feb1fa]{color:#e8e8ec}.fast-analysis-report.theme-dark .result-container .indicators-section .section-title .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-methodology[data-v-03feb1fa]{background:#222224;color:#666}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-methodology .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-grid .indicator-item[data-v-03feb1fa]{background:#222224}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-grid .indicator-item[data-v-03feb1fa]:hover{background:hsla(0,0%,100%,.05)}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-grid .indicator-item .indicator-name[data-v-03feb1fa]{color:#a0a0a8}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-grid .indicator-item .indicator-value[data-v-03feb1fa]{color:#f0f0f2}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.bullish[data-v-03feb1fa],.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.oversold[data-v-03feb1fa]{color:#34d399}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.bearish[data-v-03feb1fa],.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.high-volatility[data-v-03feb1fa],.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.overbought[data-v-03feb1fa]{color:#f87171}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.low-volatility[data-v-03feb1fa]{color:#34d399}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-grid .indicator-item .indicator-signal[data-v-03feb1fa]{color:#666}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa]{border-top-color:hsla(0,0%,100%,.06)}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap .indicators-pro-title[data-v-03feb1fa]{color:#e8e8ec}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap .indicators-pro-title .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc .ant-descriptions-row,.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc .ant-descriptions-view{border-color:hsla(0,0%,100%,.06)}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc th.ant-descriptions-item-label{background:#222224;border-color:hsla(0,0%,100%,.06);color:#666}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc td.ant-descriptions-item-content{background:#19191b;border-color:hsla(0,0%,100%,.06);color:#a0a0a8}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc .ant-descriptions-item-label{background:#222224;border-color:hsla(0,0%,100%,.06);color:#666}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc .ant-descriptions-item-content{background:#19191b;border-color:hsla(0,0%,100%,.06);color:#a0a0a8}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc .ant-descriptions-item-content>span{color:#a0a0a8}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc .bullish{color:#34d399!important}.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap[data-v-03feb1fa] .indicators-pro-desc .bearish{color:#f87171!important}.fast-analysis-report.theme-dark .result-container .feedback-section[data-v-03feb1fa]{background:#19191b}.fast-analysis-report.theme-dark .result-container .feedback-section .feedback-question[data-v-03feb1fa]{color:#666}.fast-analysis-report.theme-dark .result-container .feedback-section .analysis-meta[data-v-03feb1fa]{color:#555}.fast-analysis-report.theme-dark .result-container .feedback-section .ant-btn[data-v-03feb1fa]{background:#222224;border-color:hsla(0,0%,100%,.06);color:#a0a0a8}.fast-analysis-report.theme-dark .result-container .feedback-section .ant-btn[data-v-03feb1fa]:hover{border-color:color-mix(in srgb,var(--primary-color,#1890ff) 30%,transparent);color:var(--primary-color,#1890ff)}@media (max-width:992px){.fast-analysis-report.theme-dark .result-container .analysis-details .detail-section.reasons[data-v-03feb1fa]{border-right-color:transparent;border-bottom-color:hsla(0,0%,100%,.06)}}.ai-analysis-container[data-v-06c771c0]{display:-webkit-box;display:-ms-flexbox;display:flex;height:calc(100vh - 120px);background:#f0f2f5;overflow:hidden;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.ai-analysis-container.embedded[data-v-06c771c0]{height:auto;min-height:700px;background:transparent}@media (max-width:768px){.ai-analysis-container.embedded[data-v-06c771c0]{min-height:0}}.ai-analysis-container.embedded .main-content-full[data-v-06c771c0]{-webkit-box-shadow:none;box-shadow:none;border-radius:0}.ai-analysis-container.embedded .top-index-bar[data-v-06c771c0]{margin-top:6px}.main-content-full[data-v-06c771c0]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow:hidden;background:#fff;border-radius:12px;height:100%;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.08);box-shadow:0 2px 8px rgba(0,0,0,.08);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.top-index-bar[data-v-06c771c0]{gap:8px;padding:8px 16px;background:#f8fafc;border-bottom:1px solid #e2e8f0;font-family:SF Mono,Monaco,Consolas,monospace}.top-index-bar .indicator-box[data-v-06c771c0],.top-index-bar[data-v-06c771c0]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.top-index-bar .indicator-box[data-v-06c771c0]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:4px 10px;background:#fff;border-radius:6px;border:1px solid #e2e8f0;min-width:50px}.top-index-bar .indicator-box .ind-label[data-v-06c771c0]{font-size:9px;color:#94a3b8;text-transform:uppercase}.top-index-bar .indicator-box .ind-value[data-v-06c771c0]{font-size:13px;font-weight:700;color:#1e293b}.top-index-bar .indicator-box.fear-greed.extreme-fear .ind-value[data-v-06c771c0]{color:#dc2626}.top-index-bar .indicator-box.fear-greed.fear .ind-value[data-v-06c771c0]{color:#ea580c}.top-index-bar .indicator-box.fear-greed.neutral .ind-value[data-v-06c771c0]{color:#ca8a04}.top-index-bar .indicator-box.fear-greed.greed .ind-value[data-v-06c771c0]{color:#65a30d}.top-index-bar .indicator-box.fear-greed.extreme-greed .ind-value[data-v-06c771c0],.top-index-bar .indicator-box.vix.low .ind-value[data-v-06c771c0]{color:#16a34a}.top-index-bar .indicator-box.vix.medium .ind-value[data-v-06c771c0]{color:#ca8a04}.top-index-bar .indicator-box.vix.high .ind-value[data-v-06c771c0]{color:#dc2626}.top-index-bar .indicator-box.dxy .ind-value[data-v-06c771c0]{color:#2563eb}.top-index-bar .indices-marquee[data-v-06c771c0]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:hidden;min-width:0}.top-index-bar .indices-marquee .marquee-track[data-v-06c771c0]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:8px;-webkit-animation:marquee-06c771c0 35s linear infinite;animation:marquee-06c771c0 35s linear infinite;width:-webkit-max-content;width:-moz-max-content;width:max-content}.top-index-bar .indices-marquee .marquee-track[data-v-06c771c0]:hover{-webkit-animation-play-state:paused;animation-play-state:paused}.top-index-bar .indices-marquee .index-item[data-v-06c771c0]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;padding:4px 8px;background:#fff;border-radius:4px;border:1px solid #e2e8f0;font-size:11px;white-space:nowrap}.top-index-bar .indices-marquee .index-item .idx-flag[data-v-06c771c0]{font-size:11px}.top-index-bar .indices-marquee .index-item .idx-symbol[data-v-06c771c0]{color:#64748b;font-weight:500}.top-index-bar .indices-marquee .index-item .idx-price[data-v-06c771c0]{color:#1e293b;font-weight:600}.top-index-bar .indices-marquee .index-item .idx-change[data-v-06c771c0]{font-weight:600;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:1px}.top-index-bar .indices-marquee .index-item .idx-change.up[data-v-06c771c0]{color:#16a34a}.top-index-bar .indices-marquee .index-item .idx-change.down[data-v-06c771c0]{color:#dc2626}@-webkit-keyframes marquee-06c771c0{0%{-webkit-transform:translateX(0);transform:translateX(0)}to{-webkit-transform:translateX(-50%);transform:translateX(-50%)}}@keyframes marquee-06c771c0{0%{-webkit-transform:translateX(0);transform:translateX(0)}to{-webkit-transform:translateX(-50%);transform:translateX(-50%)}}.top-index-bar .refresh-btn[data-v-06c771c0]{color:#94a3b8;-ms-flex-negative:0;flex-shrink:0}.top-index-bar .refresh-btn[data-v-06c771c0]:hover{color:#1e293b}.main-body[data-v-06c771c0]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px;padding:12px;overflow:hidden;min-height:0}.left-panel[data-v-06c771c0]{width:280px;-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:10px;overflow-y:auto}.left-panel .heatmap-box[data-v-06c771c0]{background:#fff;border-radius:10px;padding:14px;border:1px solid #eaeef3;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.04);box-shadow:0 1px 3px rgba(0,0,0,.04)}.left-panel .heatmap-box .box-header[data-v-06c771c0]{margin-bottom:10px}.left-panel .heatmap-box .box-header[data-v-06c771c0] .ant-radio-group{display:-webkit-box;display:-ms-flexbox;display:flex;gap:0;background:#f4f5f7;border-radius:8px;padding:2px}.left-panel .heatmap-box .box-header[data-v-06c771c0] .ant-radio-group .ant-radio-button-wrapper{font-size:10px;font-weight:600;padding:0 8px;height:24px;line-height:22px;border:none;border-radius:6px;background:transparent;color:#8c8c8c;-webkit-box-shadow:none;box-shadow:none;-webkit-transition:all .2s;transition:all .2s}.left-panel .heatmap-box .box-header[data-v-06c771c0] .ant-radio-group .ant-radio-button-wrapper:before{display:none}.left-panel .heatmap-box .box-header[data-v-06c771c0] .ant-radio-group .ant-radio-button-wrapper:hover{color:#555}.left-panel .heatmap-box .box-header[data-v-06c771c0] .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{background:#fff;border-color:transparent;color:#111;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.1);box-shadow:0 1px 3px rgba(0,0,0,.1)}.left-panel .heatmap-box .heatmap-grid[data-v-06c771c0]{display:grid;grid-template-columns:repeat(3,1fr);gap:4px}.left-panel .heatmap-box .heatmap-grid .heat-cell[data-v-06c771c0]{padding:6px 4px;border-radius:6px;text-align:center;font-size:9px;-webkit-transition:-webkit-transform .15s;transition:-webkit-transform .15s;transition:transform .15s;transition:transform .15s,-webkit-transform .15s}.left-panel .heatmap-box .heatmap-grid .heat-cell[data-v-06c771c0]:hover{-webkit-transform:scale(1.03);transform:scale(1.03)}.left-panel .heatmap-box .heatmap-grid .heat-cell .heat-name[data-v-06c771c0]{display:block;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:1px}.left-panel .heatmap-box .heatmap-grid .heat-cell .heat-price[data-v-06c771c0]{display:block;font-size:9px;opacity:.8;margin-bottom:1px}.left-panel .heatmap-box .heatmap-grid .heat-cell .heat-val[data-v-06c771c0]{font-weight:700;font-size:10px}.left-panel .calendar-box[data-v-06c771c0]{-webkit-box-flex:1;-ms-flex:1;flex:1;background:#fff;border-radius:10px;padding:14px;border:1px solid #eaeef3;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.04);box-shadow:0 1px 3px rgba(0,0,0,.04);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-height:0;overflow:hidden}.left-panel .calendar-box .box-header[data-v-06c771c0]{margin-bottom:8px}.left-panel .calendar-box .box-header .box-title[data-v-06c771c0]{font-size:12px;color:#555;font-weight:700;letter-spacing:-.1px}.left-panel .calendar-box .box-header .box-title .anticon[data-v-06c771c0]{margin-right:6px;color:var(--primary-color,#1890ff)}.left-panel .calendar-box .calendar-list[data-v-06c771c0]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto}.left-panel .calendar-box .calendar-list[data-v-06c771c0]::-webkit-scrollbar{width:3px}.left-panel .calendar-box .calendar-list[data-v-06c771c0]::-webkit-scrollbar-thumb{background:#d4d8dd;border-radius:2px}.left-panel .calendar-box .calendar-list .cal-item[data-v-06c771c0]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;padding:6px 0;border-bottom:1px solid #f1f5f9;font-size:10px}.left-panel .calendar-box .calendar-list .cal-item[data-v-06c771c0]:last-child{border-bottom:none}.left-panel .calendar-box .calendar-list .cal-item.high[data-v-06c771c0]{border-left:3px solid #dc2626;padding-left:8px;margin-left:-4px}.left-panel .calendar-box .calendar-list .cal-item.medium[data-v-06c771c0]{border-left:3px solid #ca8a04;padding-left:8px;margin-left:-4px}.left-panel .calendar-box .calendar-list .cal-item.low[data-v-06c771c0]{border-left:3px solid #16a34a;padding-left:8px;margin-left:-4px}.left-panel .calendar-box .calendar-list .cal-item .cal-date[data-v-06c771c0]{font-size:9px;color:#94a3b8;min-width:32px;font-weight:500}.left-panel .calendar-box .calendar-list .cal-item .cal-time[data-v-06c771c0]{color:#64748b;min-width:36px;font-weight:500}.left-panel .calendar-box .calendar-list .cal-item .cal-flag[data-v-06c771c0]{font-size:12px}.left-panel .calendar-box .calendar-list .cal-item .cal-name[data-v-06c771c0]{-webkit-box-flex:1;-ms-flex:1;flex:1;color:#334155;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.left-panel .calendar-box .calendar-list .cal-item .cal-impact[data-v-06c771c0]{font-weight:600;font-size:10px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:2px}.left-panel .calendar-box .calendar-list .cal-item .cal-impact.bullish[data-v-06c771c0]{color:#16a34a}.left-panel .calendar-box .calendar-list .cal-item .cal-impact.bearish[data-v-06c771c0]{color:#dc2626}.left-panel .calendar-box .calendar-list .cal-item .cal-impact.neutral[data-v-06c771c0]{color:#94a3b8}.left-panel .calendar-box .calendar-list .cal-empty[data-v-06c771c0]{text-align:center;color:#94a3b8;padding:20px 0;font-size:12px}.right-panel[data-v-06c771c0]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-width:0;overflow:hidden;background:#fff;border-radius:10px;border:1px solid #eaeef3;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.04);box-shadow:0 1px 3px rgba(0,0,0,.04)}.right-panel .analysis-toolbar[data-v-06c771c0]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;padding:12px 16px;border-bottom:1px solid #f0f2f5;background:#fafbfc;border-radius:10px 10px 0 0}.right-panel .analysis-toolbar .symbol-selector[data-v-06c771c0]{-webkit-box-flex:1;-ms-flex:1;flex:1;max-width:320px}.right-panel .analysis-toolbar .analyze-button[data-v-06c771c0]{background:var(--primary-color,#1890ff);border-color:var(--primary-color,#1890ff);border-radius:8px;font-weight:600}.right-panel .analysis-toolbar .history-button[data-v-06c771c0]{border-color:#d9d9d9;border-radius:8px}.right-panel .analysis-main[data-v-06c771c0]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:auto;padding:16px;min-height:0}.right-panel .analysis-main .analysis-placeholder[data-v-06c771c0]{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;height:100%;min-height:300px}.watchlist-panel[data-v-06c771c0]{width:320px;-ms-flex-negative:0;flex-shrink:0;background:#fff;border-radius:10px;border:1px solid #eaeef3;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.04);box-shadow:0 1px 3px rgba(0,0,0,.04);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow:hidden}.watchlist-panel .panel-header[data-v-06c771c0]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:12px 14px;border-bottom:1px solid #f0f2f5;background:#fafbfc}.watchlist-panel .panel-header .panel-title[data-v-06c771c0]{font-size:13px;font-weight:700;color:#333;letter-spacing:-.1px}.watchlist-panel .panel-header .panel-title .anticon[data-v-06c771c0]{color:#facc15;margin-right:6px}.watchlist-panel .watchlist-list[data-v-06c771c0]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto;padding:6px 8px}.watchlist-panel .watchlist-list[data-v-06c771c0]::-webkit-scrollbar{width:3px}.watchlist-panel .watchlist-list[data-v-06c771c0]::-webkit-scrollbar-thumb{background:#d4d8dd;border-radius:2px}.watchlist-panel .watchlist-list .watchlist-empty[data-v-06c771c0]{text-align:center;padding:24px 12px;color:#94a3b8}.watchlist-panel .watchlist-list .watchlist-empty .anticon[data-v-06c771c0]{font-size:32px;margin-bottom:8px;display:block}.watchlist-panel .watchlist-list .watchlist-empty p[data-v-06c771c0]{font-size:12px;margin-bottom:12px}@-webkit-keyframes pulse-06c771c0{0%,to{opacity:1}50%{opacity:.5}}@keyframes pulse-06c771c0{0%,to{opacity:1}50%{opacity:.5}}@media (max-width:992px){.ai-analysis-container[data-v-06c771c0]{height:auto;min-height:calc(100vh - 64px);overflow-y:auto;overflow-x:hidden;width:100%;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.main-content-full[data-v-06c771c0]{height:auto;min-height:auto}.top-index-bar[data-v-06c771c0]{-ms-flex-wrap:wrap;flex-wrap:wrap;padding:6px 8px}.top-index-bar .indicator-box[data-v-06c771c0]{min-width:45px;padding:3px 6px}.top-index-bar .indices-marquee[data-v-06c771c0]{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10;width:100%;margin-top:6px}.main-body[data-v-06c771c0]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:8px;gap:8px}.left-panel[data-v-06c771c0]{width:100%;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;gap:8px}.left-panel .calendar-box[data-v-06c771c0],.left-panel .heatmap-box[data-v-06c771c0]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.left-panel .calendar-box[data-v-06c771c0]{max-height:200px}.right-panel .analysis-toolbar[data-v-06c771c0]{-ms-flex-wrap:wrap;flex-wrap:wrap}.right-panel .analysis-toolbar .symbol-selector[data-v-06c771c0]{width:100%!important;max-width:none!important}.right-panel .analysis-toolbar .analyze-button[data-v-06c771c0],.right-panel .analysis-toolbar .history-button[data-v-06c771c0]{-webkit-box-flex:1;-ms-flex:1;flex:1}.watchlist-panel[data-v-06c771c0]{width:100%;max-height:250px;-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.hero-stats[data-v-06c771c0]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.hero-stats .hstat[data-v-06c771c0]{width:100%;max-width:300px;-webkit-box-flex:0;-ms-flex:none;flex:none}}@media (max-width:576px){.main-body[data-v-06c771c0]{padding:4px 6px;gap:6px}.top-index-bar[data-v-06c771c0]{padding:5px 6px;gap:6px}.top-index-bar .indicator-box[data-v-06c771c0]{padding:2px 5px}.top-index-bar .indicator-box .ind-value[data-v-06c771c0]{font-size:11px}.top-index-bar .indices-marquee .index-item[data-v-06c771c0]{font-size:10px;padding:2px 5px}.left-panel[data-v-06c771c0]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:6px}.left-panel .calendar-box[data-v-06c771c0],.left-panel .heatmap-box[data-v-06c771c0]{-webkit-box-flex:0;-ms-flex:none;flex:none;width:100%;min-width:0;padding:8px;border-radius:8px}.left-panel .calendar-box[data-v-06c771c0]{max-height:220px}.left-panel .heatmap-box .box-header[data-v-06c771c0]{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:0 -2px;padding:0 2px 6px}.left-panel .heatmap-box .box-header[data-v-06c771c0] .ant-radio-group{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap;white-space:nowrap}.left-panel .heatmap-box .box-header[data-v-06c771c0] .ant-radio-group .ant-radio-button-wrapper{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.right-panel[data-v-06c771c0]{border-radius:8px}.right-panel .analysis-toolbar[data-v-06c771c0]{padding:6px 8px;gap:6px}.right-panel .analysis-toolbar[data-v-06c771c0] .ant-btn-lg{height:36px;padding:0 10px;font-size:13px}.right-panel .analysis-toolbar[data-v-06c771c0] .symbol-selector .ant-select-selection--single{height:36px!important}.right-panel .analysis-toolbar[data-v-06c771c0] .symbol-selector .ant-select-selection__rendered{line-height:34px!important}.right-panel .analysis-main[data-v-06c771c0]{padding:6px 8px}.watchlist-panel[data-v-06c771c0]{max-height:min(42vh,320px);border-radius:8px}.watchlist-panel .panel-header[data-v-06c771c0]{padding:8px 10px}.watchlist-panel .watchlist-list[data-v-06c771c0]{padding:4px 6px}.batch-bar[data-v-06c771c0]{margin:6px 6px 4px;padding:8px 8px;gap:6px}.panel-summary[data-v-06c771c0]{-ms-flex-wrap:wrap;flex-wrap:wrap}.panel-summary .summary-chip[data-v-06c771c0]{-webkit-box-flex:1;-ms-flex:1 1 22%;flex:1 1 22%;min-width:0;padding:5px 2px}.panel-summary .sc-num[data-v-06c771c0]{font-size:12px}.panel-summary .sc-label[data-v-06c771c0]{font-size:8px;letter-spacing:.2px}.placeholder-hero .hero-body[data-v-06c771c0]{padding:16px 10px;max-width:100%}.hero-title[data-v-06c771c0]{font-size:20px}.hero-subtitle[data-v-06c771c0]{font-size:13px;margin-bottom:14px}.hero-stats[data-v-06c771c0]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:nowrap;flex-wrap:nowrap;gap:8px;margin-bottom:14px}.hero-stats .hstat[data-v-06c771c0]{width:100%;max-width:none;-webkit-box-flex:0;-ms-flex:none;flex:none;padding:10px 10px}.hero-cta[data-v-06c771c0]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:100%;gap:8px}.hero-cta .ant-btn[data-v-06c771c0]{width:100%;height:40px}.wl-card[data-v-06c771c0]{padding:8px 10px}}.ai-analysis-container.theme-dark[data-v-06c771c0]{background:#0a0a0a;color:#d4d4d4}.ai-analysis-container.theme-dark .main-content-full[data-v-06c771c0]{background:#141416;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.4);box-shadow:0 2px 8px rgba(0,0,0,.4)}.ai-analysis-container.theme-dark .top-index-bar[data-v-06c771c0]{background:#141416;border-bottom-color:hsla(0,0%,100%,.05)}.ai-analysis-container.theme-dark .top-index-bar .indicator-box[data-v-06c771c0]{background:#1a1a1c;border-color:hsla(0,0%,100%,.06)}.ai-analysis-container.theme-dark .top-index-bar .indicator-box .ind-label[data-v-06c771c0]{color:#666}.ai-analysis-container.theme-dark .top-index-bar .indicator-box .ind-value[data-v-06c771c0]{color:#d4d4d4}.ai-analysis-container.theme-dark .top-index-bar .indices-marquee .index-item[data-v-06c771c0]{background:#1a1a1c;border-color:hsla(0,0%,100%,.06)}.ai-analysis-container.theme-dark .top-index-bar .indices-marquee .index-item .idx-symbol[data-v-06c771c0]{color:#777}.ai-analysis-container.theme-dark .top-index-bar .indices-marquee .index-item .idx-price[data-v-06c771c0]{color:#d4d4d4}.ai-analysis-container.theme-dark .top-index-bar .refresh-btn[data-v-06c771c0]{color:#666}.ai-analysis-container.theme-dark .top-index-bar .refresh-btn[data-v-06c771c0]:hover{color:#d4d4d4}.ai-analysis-container.theme-dark .watchlist-panel[data-v-06c771c0]{background:#1a1a1c;border-color:hsla(0,0%,100%,.06);-webkit-box-shadow:0 1px 3px rgba(0,0,0,.3);box-shadow:0 1px 3px rgba(0,0,0,.3)}.ai-analysis-container.theme-dark .watchlist-panel .panel-header[data-v-06c771c0]{background:#141416;border-bottom-color:hsla(0,0%,100%,.05)}.ai-analysis-container.theme-dark .watchlist-panel .panel-header .panel-title[data-v-06c771c0]{color:#ccc}.ai-analysis-container.theme-dark .watchlist-panel .panel-summary[data-v-06c771c0]{background:#141416;border-bottom-color:hsla(0,0%,100%,.05)}.ai-analysis-container.theme-dark .watchlist-panel .panel-summary .summary-chip[data-v-06c771c0]{border-right-color:hsla(0,0%,100%,.05)}.ai-analysis-container.theme-dark .watchlist-panel .panel-summary .sc-num[data-v-06c771c0]{color:#d4d4d4}.ai-analysis-container.theme-dark .watchlist-panel .panel-summary .sc-label[data-v-06c771c0]{color:#666}.ai-analysis-container.theme-dark .watchlist-panel .batch-bar[data-v-06c771c0]{background:#1c1c1c;border:1px solid #2a2a2a;border-radius:10px;margin:8px 10px;margin-bottom:4px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.2);box-shadow:0 1px 3px rgba(0,0,0,.2)}.ai-analysis-container.theme-dark .watchlist-panel .batch-bar .batch-all-cb[data-v-06c771c0]{color:#a0a0a8}.ai-analysis-container.theme-dark .watchlist-panel .batch-bar .ant-btn[data-v-06c771c0]:not(.ant-btn-primary){background:#2a2a2c;border-color:#3a3a3c;color:#b0b0b8}.ai-analysis-container.theme-dark .watchlist-panel .batch-bar .ant-btn[data-v-06c771c0]:not(.ant-btn-primary):hover{background:#333336;border-color:var(--primary-color,#1890ff);color:var(--primary-color,#1890ff)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list[data-v-06c771c0]::-webkit-scrollbar-thumb{background:#333}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card[data-v-06c771c0]:hover{background:#222224;border-color:hsla(0,0%,100%,.06)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card.active[data-v-06c771c0]{background:color-mix(in srgb,var(--primary-color,#1890ff) 8%,transparent);border-color:color-mix(in srgb,var(--primary-color,#1890ff) 28%,transparent)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card .wl-symbol[data-v-06c771c0]{color:#e0e0e0}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card .wl-market[data-v-06c771c0]{color:#666;background:hsla(0,0%,100%,.06)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card .wl-price[data-v-06c771c0]{color:#d4d4d4}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card .wl-pnl-qty[data-v-06c771c0]{color:#666}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card .wl-task-badge.paused[data-v-06c771c0]{background:hsla(0,0%,100%,.05);color:#666}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card .wl-task-next[data-v-06c771c0]{color:#555}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card-hover-actions[data-v-06c771c0]{background:-webkit-gradient(linear,left top,right top,from(transparent),color-stop(30%,#222224));background:linear-gradient(90deg,transparent,#222224 30%)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card-hover-actions .wl-hover-btn[data-v-06c771c0]{background:#1a1a1c;color:#888;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.4);box-shadow:0 1px 3px rgba(0,0,0,.4)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card-hover-actions .wl-hover-btn[data-v-06c771c0]:hover{color:var(--primary-color,#1890ff);background:color-mix(in srgb,var(--primary-color,#1890ff) 12%,transparent)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card-hover-actions .wl-hover-btn.danger[data-v-06c771c0]:hover{color:#f87171;background:hsla(0,91%,71%,.1)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card.active .wl-card-hover-actions[data-v-06c771c0]{background:linear-gradient(90deg,transparent 0,color-mix(in srgb,var(--primary-color,#1890ff) 6%,transparent) 30%)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .watchlist-empty[data-v-06c771c0]{color:#555}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .we-icon[data-v-06c771c0]{color:#333}.ai-analysis-container.theme-dark .placeholder-hero .hero-bg-grid[data-v-06c771c0]{background-image:linear-gradient(hsla(0,0%,100%,.02) 1px,transparent 0),linear-gradient(90deg,hsla(0,0%,100%,.02) 1px,transparent 0)}.ai-analysis-container.theme-dark .placeholder-hero .hero-badge[data-v-06c771c0]{background:color-mix(in srgb,var(--primary-color,#1890ff) 10%,transparent);border-color:color-mix(in srgb,var(--primary-color,#1890ff) 25%,transparent);color:var(--primary-color,#1890ff)}.ai-analysis-container.theme-dark .placeholder-hero .hero-title[data-v-06c771c0]{color:#e0e0e0}.ai-analysis-container.theme-dark .placeholder-hero .hero-hint[data-v-06c771c0],.ai-analysis-container.theme-dark .placeholder-hero .hero-subtitle[data-v-06c771c0]{color:#777}.ai-analysis-container.theme-dark .placeholder-hero .hstat[data-v-06c771c0]{background:#1a1a1c;border-color:hsla(0,0%,100%,.06);-webkit-box-shadow:none;box-shadow:none}.ai-analysis-container.theme-dark .placeholder-hero .hstat[data-v-06c771c0]:hover{border-color:color-mix(in srgb,var(--primary-color,#1890ff) 35%,transparent);-webkit-box-shadow:0 4px 16px color-mix(in srgb,var(--primary-color,#1890ff) 12%,transparent);box-shadow:0 4px 16px color-mix(in srgb,var(--primary-color,#1890ff) 12%,transparent)}.ai-analysis-container.theme-dark .placeholder-hero .hstat-icon[data-v-06c771c0]{background:color-mix(in srgb,var(--primary-color,#1890ff) 12%,transparent);color:var(--primary-color,#1890ff)}.ai-analysis-container.theme-dark .placeholder-hero .hstat-val[data-v-06c771c0]{color:#ddd}.ai-analysis-container.theme-dark .placeholder-hero .hstat-label[data-v-06c771c0]{color:#666}.ai-analysis-container.theme-dark .placeholder-hero .hero-cta .ant-btn-primary[data-v-06c771c0]{-webkit-box-shadow:0 4px 14px color-mix(in srgb,var(--primary-color,#1890ff) 35%,transparent);box-shadow:0 4px 14px color-mix(in srgb,var(--primary-color,#1890ff) 35%,transparent)}.ai-analysis-container.theme-dark .watchlist-bar-legacy[data-v-06c771c0]{background:#141414;border-bottom-color:#2a2a2a}.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip[data-v-06c771c0]{background:#1c1c1c;border-color:#2a2a2a}.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip.active[data-v-06c771c0],.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip[data-v-06c771c0]:hover{border-color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08)}.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip .chip-symbol[data-v-06c771c0]{color:#d4d4d4}.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip .chip-price[data-v-06c771c0]{color:#888}.ai-analysis-container.theme-dark .left-panel .heatmap-box[data-v-06c771c0]{background:#1a1a1c;border-color:hsla(0,0%,100%,.06);-webkit-box-shadow:0 1px 3px rgba(0,0,0,.3);box-shadow:0 1px 3px rgba(0,0,0,.3)}.ai-analysis-container.theme-dark .left-panel .heatmap-box[data-v-06c771c0] .ant-radio-group{background:#111113}.ai-analysis-container.theme-dark .left-panel .heatmap-box[data-v-06c771c0] .ant-radio-group .ant-radio-button-wrapper{background:transparent;border-color:transparent;color:#666}.ai-analysis-container.theme-dark .left-panel .heatmap-box[data-v-06c771c0] .ant-radio-group .ant-radio-button-wrapper:hover{color:#aaa}.ai-analysis-container.theme-dark .left-panel .heatmap-box[data-v-06c771c0] .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{background:#2a2a2c;color:#e8e8e8;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.3);box-shadow:0 1px 3px rgba(0,0,0,.3)}.ai-analysis-container.theme-dark .left-panel .calendar-box[data-v-06c771c0]{background:#1a1a1c;border-color:hsla(0,0%,100%,.06);-webkit-box-shadow:0 1px 3px rgba(0,0,0,.3);box-shadow:0 1px 3px rgba(0,0,0,.3)}.ai-analysis-container.theme-dark .left-panel .calendar-box .box-title[data-v-06c771c0]{color:#888}.ai-analysis-container.theme-dark .left-panel .calendar-box .cal-item[data-v-06c771c0]{border-bottom-color:hsla(0,0%,100%,.05)}.ai-analysis-container.theme-dark .left-panel .calendar-box .cal-item .cal-date[data-v-06c771c0]{color:#555}.ai-analysis-container.theme-dark .left-panel .calendar-box .cal-item .cal-time[data-v-06c771c0]{color:#777}.ai-analysis-container.theme-dark .left-panel .calendar-box .cal-item .cal-name[data-v-06c771c0]{color:#ccc}.ai-analysis-container.theme-dark .left-panel .calendar-box .cal-empty[data-v-06c771c0]{color:#555}.ai-analysis-container.theme-dark .left-panel .calendar-box .calendar-list[data-v-06c771c0]::-webkit-scrollbar-thumb{background:#333}.ai-analysis-container.theme-dark .right-panel[data-v-06c771c0]{background:#1a1a1c;border-color:hsla(0,0%,100%,.06);-webkit-box-shadow:0 1px 3px rgba(0,0,0,.3);box-shadow:0 1px 3px rgba(0,0,0,.3)}.ai-analysis-container.theme-dark .right-panel .analysis-toolbar[data-v-06c771c0]{background:#141416;border-bottom-color:hsla(0,0%,100%,.05)}.ai-analysis-container.theme-dark .right-panel .analysis-toolbar .history-button[data-v-06c771c0]{background:#222224;border-color:hsla(0,0%,100%,.08);color:#ccc}.ai-analysis-container.theme-dark .right-panel .analysis-toolbar .history-button[data-v-06c771c0]:hover{border-color:color-mix(in srgb,var(--primary-color,#1890ff) 45%,transparent);color:var(--primary-color,#1890ff)}.ai-analysis-container.theme-dark .hero-cta .ant-btn[data-v-06c771c0]:not(.ant-btn-primary){background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark .hero-cta .ant-btn[data-v-06c771c0]:not(.ant-btn-primary):hover{border-color:#1890ff;color:#1890ff}.ai-analysis-container.theme-dark .wl-change.up[data-v-06c771c0]{background:rgba(74,222,128,.1)}.ai-analysis-container.theme-dark .wl-change.down[data-v-06c771c0]{background:hsla(0,91%,71%,.1)}.ai-analysis-container.theme-dark .panel-header-icon[data-v-06c771c0]{color:#666}.ai-analysis-container.theme-dark .panel-header-icon[data-v-06c771c0]:hover{color:var(--primary-color,#1890ff);background:color-mix(in srgb,var(--primary-color,#1890ff) 10%,transparent)}.ai-analysis-container.theme-dark .panel-summary[data-v-06c771c0]{background:#141416}.ai-analysis-container.theme-dark .batch-bar[data-v-06c771c0]{background:#1c1c1c!important;border:1px solid #2a2a2a!important;border-radius:10px;margin:8px 10px;margin-bottom:4px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.2);box-shadow:0 1px 3px rgba(0,0,0,.2)}.ai-analysis-container.theme-dark .batch-bar .batch-all-cb[data-v-06c771c0]{color:#a0a0a8}.ai-analysis-container.theme-dark .batch-bar .ant-btn[data-v-06c771c0]:not(.ant-btn-primary){background:#2a2a2c!important;border-color:#3a3a3c!important;color:#b0b0b8!important}.ai-analysis-container.theme-dark .batch-bar .ant-btn[data-v-06c771c0]:not(.ant-btn-primary):hover{background:#333336!important;border-color:var(--primary-color,#1890ff)!important;color:var(--primary-color,#1890ff)!important}.ai-analysis-container.theme-dark .watchlist-bar-compat[data-v-06c771c0]{background:#141414;border-top-color:#2a2a2a}.ai-analysis-container.theme-dark .watchlist-bar-compat .bar-label[data-v-06c771c0]{color:#888}.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip[data-v-06c771c0]{background:#1c1c1c;border-color:#2a2a2a}.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip.active[data-v-06c771c0],.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip[data-v-06c771c0]:hover{border-color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08)}.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip .chip-symbol[data-v-06c771c0]{color:#d4d4d4}.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip .chip-price[data-v-06c771c0]{color:#888}.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip .chip-remove[data-v-06c771c0]{color:#666}.ai-analysis-container.theme-dark[data-v-06c771c0] .symbol-selector .ant-select-selection{background-color:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-06c771c0] .ant-tabs-bar{border-bottom-color:#2a2a2a}.ai-analysis-container.theme-dark[data-v-06c771c0] .ant-tabs-tab{color:#888}.ai-analysis-container.theme-dark[data-v-06c771c0] .ant-tabs-tab:hover{color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-06c771c0] .ant-tabs-tab-active{color:#1890ff!important}.ai-analysis-container.theme-dark[data-v-06c771c0] .ant-tabs-ink-bar{background-color:#1890ff}.ai-analysis-container.theme-dark[data-v-06c771c0] .ant-input{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-06c771c0] .ant-input::-webkit-input-placeholder{color:#555}.ai-analysis-container.theme-dark[data-v-06c771c0] .ant-input::-moz-placeholder{color:#555}.ai-analysis-container.theme-dark[data-v-06c771c0] .ant-input:-ms-input-placeholder{color:#555}.ai-analysis-container.theme-dark[data-v-06c771c0] .ant-input::-ms-input-placeholder{color:#555}.ai-analysis-container.theme-dark[data-v-06c771c0] .ant-input::placeholder{color:#555}.ai-analysis-container.theme-dark[data-v-06c771c0] .ant-input-number{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-06c771c0] .ant-input-number .ant-input-number-handler-wrap{background:#1c1c1c}.ai-analysis-container.theme-dark[data-v-06c771c0] .ant-select-selection{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-06c771c0] .ant-select-arrow{color:#666}.ai-analysis-container.theme-dark[data-v-06c771c0] .ant-checkbox-wrapper,.ai-analysis-container.theme-dark[data-v-06c771c0] .ant-form-item-label>label,.ai-analysis-container.theme-dark[data-v-06c771c0] .ant-radio-wrapper{color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-06c771c0] .ant-btn-default{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-06c771c0] .ant-btn-default:hover{border-color:#1890ff;color:#1890ff}.ai-analysis-container.theme-dark[data-v-06c771c0] .ant-alert{background:rgba(24,144,255,.06);border-color:#2a2a2a}.ai-analysis-container.theme-dark[data-v-06c771c0] .ant-alert-message{color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-06c771c0] .ant-tag{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-06c771c0] .ant-list-item{border-bottom-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-06c771c0] .ant-list-item-meta-title{color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-06c771c0] .ant-list-item-meta-description{color:#888}.ai-analysis-container.theme-dark[data-v-06c771c0] .ant-empty-description{color:#666}.ai-analysis-container.theme-dark[data-v-06c771c0] .ant-tooltip-inner{background:#1c1c1c}.ai-analysis-container.theme-dark[data-v-06c771c0] .ant-badge-count{-webkit-box-shadow:0 0 0 1px #141414;box-shadow:0 0 0 1px #141414}.ai-analysis-container.theme-dark[data-v-06c771c0] .ant-popover-inner{background:#1c1c1c}.ai-analysis-container.theme-dark[data-v-06c771c0] .ant-popover-message{color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-06c771c0] .ant-popover-arrow{border-color:#1c1c1c}.placeholder-hero[data-v-06c771c0]{position:relative;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;width:100%;height:100%;overflow:hidden}.hero-bg[data-v-06c771c0]{position:absolute;inset:0;pointer-events:none}.hero-bg-circle[data-v-06c771c0]{position:absolute;border-radius:50%;opacity:.5}.hero-bg-circle.c1[data-v-06c771c0]{width:320px;height:320px;top:-80px;right:-60px;background:radial-gradient(circle,rgba(24,144,255,.1) 0,transparent 70%);-webkit-animation:hero-float-06c771c0 6s ease-in-out infinite;animation:hero-float-06c771c0 6s ease-in-out infinite}.hero-bg-circle.c2[data-v-06c771c0]{width:240px;height:240px;bottom:-40px;left:-40px;background:radial-gradient(circle,rgba(114,46,209,.08) 0,transparent 70%);animation:hero-float-06c771c0 8s ease-in-out infinite reverse}.hero-bg-grid[data-v-06c771c0]{position:absolute;inset:0;background-image:linear-gradient(rgba(24,144,255,.03) 1px,transparent 0),linear-gradient(90deg,rgba(24,144,255,.03) 1px,transparent 0);background-size:32px 32px}@-webkit-keyframes hero-float-06c771c0{0%,to{-webkit-transform:translateY(0);transform:translateY(0)}50%{-webkit-transform:translateY(-12px);transform:translateY(-12px)}}@keyframes hero-float-06c771c0{0%,to{-webkit-transform:translateY(0);transform:translateY(0)}50%{-webkit-transform:translateY(-12px);transform:translateY(-12px)}}.hero-body[data-v-06c771c0]{position:relative;text-align:center;padding:40px 32px;max-width:560px}.hero-badge[data-v-06c771c0]{display:inline-block;padding:3px 12px;border-radius:20px;font-size:10px;font-weight:700;letter-spacing:1.5px;color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08);border:1px solid rgba(24,144,255,.2);margin-bottom:16px}.hero-title[data-v-06c771c0]{font-size:26px;font-weight:800;color:#0f172a;margin-bottom:8px;letter-spacing:-.3px;line-height:1.3}.hero-subtitle[data-v-06c771c0]{font-size:14px;color:#64748b;margin-bottom:32px;line-height:1.5}.hero-stats[data-v-06c771c0]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-bottom:32px;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.hstat[data-v-06c771c0]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px;padding:12px 14px;background:#fff;border:1px solid #e2e8f0;border-radius:12px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.04);box-shadow:0 1px 3px rgba(0,0,0,.04);-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0;text-align:left;-webkit-transition:all .25s;transition:all .25s}.hstat[data-v-06c771c0]:hover{border-color:var(--primary-color,#1890ff);-webkit-box-shadow:0 4px 16px rgba(24,144,255,.1);box-shadow:0 4px 16px rgba(24,144,255,.1);-webkit-transform:translateY(-2px);transform:translateY(-2px)}.hstat-icon[data-v-06c771c0]{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;width:36px;height:36px;border-radius:8px;background:linear-gradient(135deg,rgba(24,144,255,.1),rgba(114,46,209,.08));font-size:16px;color:var(--primary-color,#1890ff);-ms-flex-negative:0;flex-shrink:0}.hstat-body[data-v-06c771c0]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-width:0}.hstat-val[data-v-06c771c0]{font-size:12px;font-weight:700;color:#0f172a}.hstat-label[data-v-06c771c0],.hstat-val[data-v-06c771c0]{line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.hstat-label[data-v-06c771c0]{font-size:10px;color:#94a3b8;margin-top:1px}.hero-cta[data-v-06c771c0]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-bottom:16px}.hero-cta .ant-btn[data-v-06c771c0]{border-radius:10px;font-weight:600;height:42px;padding:0 24px;font-size:14px}.hero-cta .ant-btn-primary[data-v-06c771c0]{-webkit-box-shadow:0 4px 14px rgba(24,144,255,.3);box-shadow:0 4px 14px rgba(24,144,255,.3)}.hero-hint[data-v-06c771c0]{font-size:12px;color:#94a3b8}.panel-header-actions[data-v-06c771c0]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px}.panel-header-icon[data-v-06c771c0]{font-size:15px;color:#94a3b8;cursor:pointer;padding:4px;border-radius:6px;-webkit-transition:color .2s,background .2s;transition:color .2s,background .2s}.panel-header-icon[data-v-06c771c0]:hover{color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08)}.panel-summary[data-v-06c771c0]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:0;padding:0;border-bottom:1px solid #f1f5f9}.summary-chip[data-v-06c771c0]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:8px 4px;border-right:1px solid #f1f5f9}.summary-chip[data-v-06c771c0]:last-child{border-right:none}.sc-num[data-v-06c771c0]{font-size:14px;font-weight:700;color:#0f172a;line-height:1.2;font-family:SF Mono,Monaco,monospace}.sc-num.up[data-v-06c771c0]{color:#16a34a}.sc-num.down[data-v-06c771c0]{color:#dc2626}.sc-label[data-v-06c771c0]{font-size:9px;color:#94a3b8;text-transform:uppercase;letter-spacing:.5px;margin-top:2px}.batch-bar[data-v-06c771c0]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;padding:10px 12px;margin:8px 10px;margin-bottom:4px;background:#fff;border:1px solid #e2e8f0;border-radius:10px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.04);box-shadow:0 1px 3px rgba(0,0,0,.04);-ms-flex-wrap:wrap;flex-wrap:wrap}.batch-all-cb[data-v-06c771c0]{font-size:12px;font-weight:500;color:#475569;margin-right:4px}.batch-bar .ant-btn[data-v-06c771c0]{border-radius:6px;font-size:12px;font-weight:500;height:28px;padding:0 10px;-ms-flex-negative:0;flex-shrink:0;-webkit-transition:all .2s;transition:all .2s}.batch-bar .ant-btn-primary[data-v-06c771c0]{-webkit-box-shadow:0 1px 2px color-mix(in srgb,var(--primary-color,#1890ff) 20%,transparent);box-shadow:0 1px 2px color-mix(in srgb,var(--primary-color,#1890ff) 20%,transparent)}.batch-bar .ant-btn-primary[data-v-06c771c0]:hover{-webkit-filter:brightness(1.05);filter:brightness(1.05)}.batch-bar .ant-btn[data-v-06c771c0]:not(.ant-btn-primary){background:#f8fafc;border-color:#e2e8f0;color:#64748b}.batch-bar .ant-btn[data-v-06c771c0]:not(.ant-btn-primary):hover{background:#f1f5f9;border-color:#cbd5e1;color:#475569}.wl-card[data-v-06c771c0]{position:relative;padding:10px 12px;border-radius:8px;cursor:pointer;-webkit-transition:all .2s cubic-bezier(.4,0,.2,1);transition:all .2s cubic-bezier(.4,0,.2,1);margin-bottom:3px;border:1px solid transparent}.wl-card[data-v-06c771c0]:hover{background:#f5f7fa;border-color:#e8ecf1}.wl-card.active[data-v-06c771c0]{background:linear-gradient(135deg,color-mix(in srgb,var(--primary-color,#1890ff) 6%,#fff) 0,color-mix(in srgb,var(--primary-color,#1890ff) 4%,#fff) 100%);border-color:color-mix(in srgb,var(--primary-color,#1890ff) 28%,transparent);-webkit-box-shadow:0 1px 4px color-mix(in srgb,var(--primary-color,#1890ff) 10%,transparent);box-shadow:0 1px 4px color-mix(in srgb,var(--primary-color,#1890ff) 10%,transparent)}.wl-card-cb[data-v-06c771c0]{position:absolute;top:12px;left:4px;z-index:1}.wl-card-body[data-v-06c771c0]{-webkit-transition:padding-left .2s;transition:padding-left .2s}.wl-card-body.with-cb[data-v-06c771c0]{padding-left:24px}.wl-row-main[data-v-06c771c0]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;gap:5px}.wl-symbol[data-v-06c771c0]{font-size:13px;font-weight:700;color:#0f172a}.wl-market[data-v-06c771c0]{font-size:9px;color:#94a3b8;letter-spacing:.3px;padding:1px 4px;background:#f1f5f9;border-radius:3px}.wl-spacer[data-v-06c771c0]{-webkit-box-flex:1;-ms-flex:1;flex:1}.wl-price[data-v-06c771c0]{font-size:12px;font-weight:600;color:#0f172a;font-family:SF Mono,Monaco,monospace}.wl-change[data-v-06c771c0]{font-size:10px;font-weight:700;font-family:SF Mono,Monaco,monospace;padding:1px 5px;border-radius:4px;margin-left:4px}.wl-change.up[data-v-06c771c0]{color:#16a34a;background:rgba(22,163,74,.08)}.wl-change.down[data-v-06c771c0]{color:#dc2626;background:rgba(220,38,38,.06)}.wl-row-pnl[data-v-06c771c0]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin-top:4px;font-family:SF Mono,Monaco,monospace}.wl-pnl-qty[data-v-06c771c0]{font-size:10px;color:#94a3b8}.wl-pnl-val[data-v-06c771c0]{font-size:10px;font-weight:600;margin-left:auto}.wl-pnl-val.up[data-v-06c771c0]{color:#16a34a}.wl-pnl-val.down[data-v-06c771c0]{color:#dc2626}.wl-row-task[data-v-06c771c0]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:6px;margin-top:4px}.wl-row-task[data-v-06c771c0],.wl-task-badge[data-v-06c771c0]{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.wl-task-badge[data-v-06c771c0]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;gap:3px;font-size:10px;padding:1px 8px;border-radius:10px;cursor:pointer;-webkit-transition:all .2s;transition:all .2s}.wl-task-badge.active[data-v-06c771c0]{color:#16a34a;background:rgba(22,163,74,.08)}.wl-task-badge.paused[data-v-06c771c0]{color:#94a3b8;background:#f1f5f9}.wl-task-badge[data-v-06c771c0]:hover{opacity:.75}.wl-task-next[data-v-06c771c0]{font-size:10px;color:#94a3b8;margin-left:auto}.wl-card-hover-actions[data-v-06c771c0]{position:absolute;top:0;right:0;bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:2px;padding-right:8px;opacity:0;-webkit-transition:opacity .15s;transition:opacity .15s;background:-webkit-gradient(linear,left top,right top,from(transparent),color-stop(30%,#f8fafc));background:linear-gradient(90deg,transparent,#f8fafc 30%);border-radius:0 8px 8px 0;pointer-events:none}.wl-card:hover .wl-card-hover-actions[data-v-06c771c0]{opacity:1;pointer-events:auto}.wl-card.active .wl-card-hover-actions[data-v-06c771c0]{background:-webkit-gradient(linear,left top,right top,from(transparent),color-stop(30%,#e6f7ff));background:linear-gradient(90deg,transparent,#e6f7ff 30%)}.wl-hover-btn[data-v-06c771c0]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:26px;height:26px;border-radius:6px;font-size:13px;color:#64748b;cursor:pointer;-webkit-transition:all .15s;transition:all .15s;background:#fff;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.06);box-shadow:0 1px 3px rgba(0,0,0,.06)}.wl-hover-btn[data-v-06c771c0]:hover{color:var(--primary-color,#1890ff);background:#e6f7ff}.wl-hover-btn.danger[data-v-06c771c0]:hover{color:#dc2626;background:#fef2f2}.watchlist-empty[data-v-06c771c0]{text-align:center;padding:32px 16px}.we-icon[data-v-06c771c0]{font-size:36px;color:#e2e8f0;margin-bottom:12px}.watchlist-empty p[data-v-06c771c0]{font-size:12px;color:#94a3b8;margin-bottom:12px}.batch-modal-summary[data-v-06c771c0]{margin-bottom:16px}.batch-modal-summary p[data-v-06c771c0]{font-size:13px;color:#475569;margin-bottom:8px}.batch-symbols-preview[data-v-06c771c0]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:4px;max-height:80px;overflow-y:auto}.task-drawer-empty[data-v-06c771c0]{text-align:center;padding:48px 16px;color:#94a3b8}.task-drawer-empty p[data-v-06c771c0]{margin-top:12px;font-size:13px}.task-drawer-list[data-v-06c771c0]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:12px}.task-item[data-v-06c771c0]{padding:14px 16px;border:1px solid #e2e8f0;border-radius:10px;background:#fafafa;-webkit-transition:-webkit-box-shadow .2s;transition:-webkit-box-shadow .2s;transition:box-shadow .2s;transition:box-shadow .2s,-webkit-box-shadow .2s}.task-item[data-v-06c771c0]:hover{-webkit-box-shadow:0 2px 8px rgba(0,0,0,.06);box-shadow:0 2px 8px rgba(0,0,0,.06)}.task-item-header[data-v-06c771c0]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:8px}.task-item-name[data-v-06c771c0]{font-size:13px;font-weight:600;color:#0f172a}.task-item-meta[data-v-06c771c0]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:16px;font-size:12px;color:#64748b;margin-bottom:10px}.task-item-meta .anticon[data-v-06c771c0]{margin-right:4px}.task-item-actions[data-v-06c771c0]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:6px;margin-top:4px}.task-item-actions .ant-btn[data-v-06c771c0]{border-radius:6px;font-size:12px;font-weight:500;height:28px;padding:0 10px;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;-webkit-transition:all .2s;transition:all .2s;border-width:1px}.task-item-actions .ant-btn.ant-btn-primary[data-v-06c771c0]{background:var(--primary-color,#1890ff);border-color:var(--primary-color,#1890ff);-webkit-box-shadow:0 1px 2px rgba(0,0,0,.04);box-shadow:0 1px 2px rgba(0,0,0,.04)}.task-item-actions .ant-btn.ant-btn-primary[data-v-06c771c0]:hover{-webkit-filter:brightness(1.05);filter:brightness(1.05);-webkit-box-shadow:0 2px 6px color-mix(in srgb,var(--primary-color,#1890ff) 25%,transparent);box-shadow:0 2px 6px color-mix(in srgb,var(--primary-color,#1890ff) 25%,transparent)}.task-item-actions .ant-btn.ant-btn-default[data-v-06c771c0]{background:#f8fafc;border-color:#e2e8f0;color:#475569}.task-item-actions .ant-btn.ant-btn-default[data-v-06c771c0]:hover{background:#f1f5f9;border-color:#cbd5e1;color:#334155}.task-item-actions .ant-btn.ant-btn-danger[data-v-06c771c0]{background:#fef2f2;border-color:#fecaca;color:#dc2626}.task-item-actions .ant-btn.ant-btn-danger[data-v-06c771c0]:hover{background:#fee2e2;border-color:#fca5a5;color:#b91c1c}.add-stock-modal-content .market-tabs[data-v-06c771c0]{margin-bottom:16px}.add-stock-modal-content .hot-symbols-section[data-v-06c771c0],.add-stock-modal-content .search-results-section[data-v-06c771c0],.add-stock-modal-content .symbol-search-section[data-v-06c771c0]{margin-bottom:24px}.add-stock-modal-content .hot-symbols-section .section-title[data-v-06c771c0],.add-stock-modal-content .search-results-section .section-title[data-v-06c771c0]{font-size:14px;font-weight:600;color:#262626;margin-bottom:12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.add-stock-modal-content .symbol-list[data-v-06c771c0]{max-height:200px;overflow-y:auto;border:1px solid #e8e8e8;border-radius:4px}.add-stock-modal-content .symbol-list .symbol-list-item[data-v-06c771c0]{cursor:pointer;padding:8px 12px;-webkit-transition:background-color .3s;transition:background-color .3s}.add-stock-modal-content .symbol-list .symbol-list-item[data-v-06c771c0]:hover{background-color:#f5f5f5}.add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content[data-v-06c771c0]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content .symbol-code[data-v-06c771c0]{font-weight:600;color:#262626;min-width:80px}.add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content .symbol-name[data-v-06c771c0]{color:#595959;-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.add-stock-modal-content .selected-symbol-section[data-v-06c771c0]{margin-top:16px}.add-stock-modal-content .selected-symbol-section .selected-symbol-info[data-v-06c771c0]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.skeleton-box .skeleton-text[data-v-06c771c0]{display:block;height:12px;background:-webkit-gradient(linear,left top,right top,color-stop(25%,#e2e8f0),color-stop(50%,#f1f5f9),color-stop(75%,#e2e8f0));background:linear-gradient(90deg,#e2e8f0 25%,#f1f5f9 50%,#e2e8f0 75%);background-size:200% 100%;-webkit-animation:skeleton-pulse-06c771c0 1.5s ease-in-out infinite;animation:skeleton-pulse-06c771c0 1.5s ease-in-out infinite;border-radius:4px;margin:3px 0}.skeleton-box .skeleton-text.short[data-v-06c771c0]{width:40px;height:9px}.skeleton-cell[data-v-06c771c0]{background:#f8fafc!important;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:8px 4px}.skeleton-cell .skeleton-text[data-v-06c771c0]{width:80%;height:10px;background:-webkit-gradient(linear,left top,right top,color-stop(25%,#e2e8f0),color-stop(50%,#f1f5f9),color-stop(75%,#e2e8f0));background:linear-gradient(90deg,#e2e8f0 25%,#f1f5f9 50%,#e2e8f0 75%);background-size:200% 100%;-webkit-animation:skeleton-pulse-06c771c0 1.5s ease-in-out infinite;animation:skeleton-pulse-06c771c0 1.5s ease-in-out infinite;border-radius:3px;margin:2px 0}.skeleton-cell .skeleton-text.short[data-v-06c771c0]{width:50%;height:8px}.skeleton-item[data-v-06c771c0]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;padding:6px 0}.skeleton-item .skeleton-text[data-v-06c771c0]{height:12px;background:-webkit-gradient(linear,left top,right top,color-stop(25%,#e2e8f0),color-stop(50%,#f1f5f9),color-stop(75%,#e2e8f0));background:linear-gradient(90deg,#e2e8f0 25%,#f1f5f9 50%,#e2e8f0 75%);background-size:200% 100%;-webkit-animation:skeleton-pulse-06c771c0 1.5s ease-in-out infinite;animation:skeleton-pulse-06c771c0 1.5s ease-in-out infinite;border-radius:4px;-webkit-box-flex:1;-ms-flex:1;flex:1}.skeleton-item .skeleton-text.short[data-v-06c771c0]{-webkit-box-flex:0;-ms-flex:none;flex:none;width:40px}.indices-empty[data-v-06c771c0],.indices-loading[data-v-06c771c0]{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;height:100%;font-size:11px;color:#94a3b8;padding:4px 16px}.indices-loading .anticon[data-v-06c771c0]{margin-right:6px}.heatmap-empty[data-v-06c771c0]{grid-column:-1;text-align:center;padding:20px;color:#94a3b8;font-size:12px}@-webkit-keyframes skeleton-pulse-06c771c0{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes skeleton-pulse-06c771c0{0%{background-position:200% 0}to{background-position:-200% 0}}.theme-dark .skeleton-box .skeleton-text[data-v-06c771c0],.theme-dark .skeleton-cell .skeleton-text[data-v-06c771c0],.theme-dark .skeleton-item .skeleton-text[data-v-06c771c0]{background:-webkit-gradient(linear,left top,right top,color-stop(25%,#2a2a2a),color-stop(50%,#333),color-stop(75%,#2a2a2a));background:linear-gradient(90deg,#2a2a2a 25%,#333 50%,#2a2a2a 75%);background-size:200% 100%}.theme-dark .skeleton-cell[data-v-06c771c0]{background:#1c1c1c!important}.theme-dark .heatmap-empty[data-v-06c771c0],.theme-dark .indices-empty[data-v-06c771c0],.theme-dark .indices-loading[data-v-06c771c0]{color:#666}.qd-dark-modal .ant-modal-content{background:#141414}.qd-dark-modal .ant-modal-header{background:#141414;border-bottom-color:#2a2a2a}.qd-dark-modal .ant-modal-header .ant-modal-title{color:#d4d4d4}.qd-dark-modal .ant-modal-close-x{color:#888}.qd-dark-modal .ant-modal-body{background:#141414;color:#d4d4d4}.qd-dark-modal .ant-modal-footer{background:#141414;border-top-color:#2a2a2a}.qd-dark-modal .ant-modal-footer .ant-btn-default{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.qd-dark-modal .ant-modal-footer .ant-btn-default:hover{border-color:#1890ff;color:#1890ff}.qd-dark-modal .ant-form-item-label>label{color:#d4d4d4}.qd-dark-modal .ant-input{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.qd-dark-modal .ant-input::-webkit-input-placeholder{color:#555}.qd-dark-modal .ant-input::-moz-placeholder{color:#555}.qd-dark-modal .ant-input:-ms-input-placeholder{color:#555}.qd-dark-modal .ant-input::-ms-input-placeholder{color:#555}.qd-dark-modal .ant-input::placeholder{color:#555}.qd-dark-modal .ant-input-number,.qd-dark-modal .ant-select-selection{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.qd-dark-modal .ant-select-arrow{color:#666}.qd-dark-modal .ant-checkbox-wrapper,.qd-dark-modal .ant-radio-wrapper{color:#d4d4d4}.qd-dark-modal .ant-tabs-bar{border-bottom-color:#2a2a2a}.qd-dark-modal .ant-tabs-tab{color:#888}.qd-dark-modal .ant-tabs-tab:hover{color:#d4d4d4}.qd-dark-modal .ant-tabs-tab-active{color:#1890ff!important}.qd-dark-modal .ant-tag{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.qd-dark-modal .ant-tag-blue{background:rgba(24,144,255,.1);border-color:rgba(24,144,255,.3);color:#1890ff}.qd-dark-modal .ant-alert{background:rgba(24,144,255,.06);border-color:#2a2a2a}.qd-dark-modal .ant-alert-message{color:#d4d4d4}.qd-dark-modal .ant-alert-info .ant-alert-icon{color:#1890ff}.qd-dark-modal .ant-list-item{border-bottom-color:#2a2a2a;color:#d4d4d4}.qd-dark-modal .ant-list-item-meta-title{color:#d4d4d4}.qd-dark-modal .ant-list-item-meta-description{color:#888}.qd-dark-modal .ant-empty-description{color:#666}.qd-dark-modal .add-stock-modal-content,.qd-dark-modal p{color:#d4d4d4}.qd-dark-modal .add-stock-modal-content .section-title{color:#d4d4d4!important}.qd-dark-modal .add-stock-modal-content .symbol-list{border-color:#2a2a2a;background:#1c1c1c}.qd-dark-modal .add-stock-modal-content .symbol-list .symbol-list-item:hover{background:#252525!important}.qd-dark-modal .add-stock-modal-content .symbol-list .symbol-list-item .symbol-code{color:#d4d4d4!important}.qd-dark-modal .add-stock-modal-content .symbol-list .symbol-list-item .symbol-name{color:#888!important}.qd-dark-modal .add-stock-modal-content .selected-symbol-info strong{color:#d4d4d4}.qd-dark-modal .add-stock-modal-content .selected-symbol-info span{color:#888!important}.qd-dark-modal .batch-modal-summary p{color:#d4d4d4}.qd-dark-modal .batch-symbols-preview .ant-tag{background:rgba(24,144,255,.1);border-color:rgba(24,144,255,.3);color:#1890ff}.qd-dark-modal .task-item{background:#1c1c1c;border-color:#2a2a2a}.qd-dark-modal .task-item:hover{-webkit-box-shadow:0 2px 8px rgba(0,0,0,.3);box-shadow:0 2px 8px rgba(0,0,0,.3)}.qd-dark-modal .task-item-name{color:#d4d4d4}.qd-dark-modal .task-item-meta{color:#888}.qd-dark-modal .task-drawer-empty{color:#666}.qd-dark-modal .history-item{background:#1c1c1c;border-color:#2a2a2a}.qd-dark-modal .search-result-item{color:#d4d4d4}.qd-dark-modal .search-result-item:hover{background:#1c1c1c}.qd-dark-modal .search-result-name{color:#d4d4d4}.qd-dark-modal .search-result-market{color:#888}.qd-dark-drawer .ant-drawer-content{background:#141414}.qd-dark-drawer .ant-drawer-header{background:#141414;border-bottom-color:#2a2a2a}.qd-dark-drawer .ant-drawer-header .ant-drawer-title{color:#d4d4d4}.qd-dark-drawer .ant-drawer-header .ant-drawer-close{color:#888}.qd-dark-drawer .ant-drawer-body{background:#141414;color:#d4d4d4}.qd-dark-drawer .task-item{background:#1c1c1c;border-color:#2a2a2a}.qd-dark-drawer .task-item:hover{-webkit-box-shadow:0 2px 8px rgba(0,0,0,.3);box-shadow:0 2px 8px rgba(0,0,0,.3)}.qd-dark-drawer .task-item-name{color:#d4d4d4}.qd-dark-drawer .task-item-meta{color:#888}.qd-dark-drawer .task-drawer-empty{color:#666}.qd-dark-drawer .task-item-actions .ant-btn.ant-btn-primary{background:var(--primary-color,#1890ff);border-color:var(--primary-color,#1890ff)}.qd-dark-drawer .task-item-actions .ant-btn.ant-btn-primary:hover{-webkit-filter:brightness(1.1);filter:brightness(1.1)}.qd-dark-drawer .task-item-actions .ant-btn.ant-btn-default{background:#2a2a2c;border-color:#3a3a3c;color:#b0b0b8}.qd-dark-drawer .task-item-actions .ant-btn.ant-btn-default:hover{background:#333336;border-color:var(--primary-color,#1890ff);color:var(--primary-color,#1890ff)}.qd-dark-drawer .task-item-actions .ant-btn.ant-btn-danger{background:rgba(239,68,68,.1);border-color:rgba(239,68,68,.25);color:#f87171}.qd-dark-drawer .task-item-actions .ant-btn.ant-btn-danger:hover{background:rgba(239,68,68,.18);border-color:rgba(239,68,68,.4);color:#fca5a5}.qd-dark-drawer .ant-btn-default{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.qd-dark-drawer .ant-btn-default:hover{border-color:#1890ff;color:#1890ff}.qd-dark-drawer .ant-btn-danger{background:transparent}.qd-dark-drawer .ant-popover-inner{background:#1c1c1c}.qd-dark-drawer .ant-popover-message,.qd-dark-drawer .ant-popover-message-title{color:#d4d4d4}.qd-dark-drawer .ant-popover-buttons .ant-btn-default{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.qd-dark-modal .ant-select-dropdown,body.colorWeak .ant-select-dropdown{background:#1c1c1c}.qd-dark-modal .ant-select-dropdown .ant-select-dropdown-menu-item,body.colorWeak .ant-select-dropdown .ant-select-dropdown-menu-item{color:#d4d4d4}.qd-dark-modal .ant-select-dropdown .ant-select-dropdown-menu-item-active,.qd-dark-modal .ant-select-dropdown .ant-select-dropdown-menu-item:hover,body.colorWeak .ant-select-dropdown .ant-select-dropdown-menu-item-active,body.colorWeak .ant-select-dropdown .ant-select-dropdown-menu-item:hover{background:#252525}.qd-dark-modal .ant-select-dropdown .ant-select-dropdown-menu-item-selected,body.colorWeak .ant-select-dropdown .ant-select-dropdown-menu-item-selected{background:rgba(24,144,255,.1);color:#1890ff} \ No newline at end of file diff --git a/frontend/dist/css/875.752239ab.css b/frontend/dist/css/875.752239ab.css deleted file mode 100644 index ffcfbe4..0000000 --- a/frontend/dist/css/875.752239ab.css +++ /dev/null @@ -1 +0,0 @@ -.settings-page[data-v-f144964c]{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)}.settings-page .restart-alert[data-v-f144964c]{margin-bottom:16px;border-radius:8px}.settings-page .settings-header[data-v-f144964c]{margin-bottom:24px}.settings-page .settings-header .page-title[data-v-f144964c]{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}.settings-page .settings-header .page-title .anticon[data-v-f144964c]{font-size:28px;color:#1890ff}.settings-page .settings-header .page-desc[data-v-f144964c]{color:#64748b;font-size:14px;margin:0}.settings-page .settings-content[data-v-f144964c]{margin-bottom:80px}.settings-page .openrouter-balance-card[data-v-f144964c]{margin-bottom:20px}.settings-page .openrouter-balance-card .ant-card[data-v-f144964c]{background:linear-gradient(135deg,#e6f7ff,#f0f5ff);border:1px solid #91d5ff;border-radius:8px}.settings-page .openrouter-balance-card .balance-header[data-v-f144964c]{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;margin-bottom:12px}.settings-page .openrouter-balance-card .balance-header .balance-title[data-v-f144964c]{font-size:15px;font-weight:600;color:#1890ff}.settings-page .openrouter-balance-card .balance-info[data-v-f144964c]{padding:8px 0}.settings-page .openrouter-balance-card .balance-info[data-v-f144964c] .ant-statistic-title{font-size:12px;color:#666}.settings-page .openrouter-balance-card .balance-info[data-v-f144964c] .ant-statistic-content{font-size:18px}.settings-page .openrouter-balance-card .balance-info .free-tier-badge[data-v-f144964c]{margin-top:12px;text-align:right}.settings-page .openrouter-balance-card .balance-empty[data-v-f144964c]{color:#8c8c8c;font-size:13px;padding:8px 0}.settings-page .settings-collapse[data-v-f144964c]{background:transparent}.settings-page .settings-collapse[data-v-f144964c] .ant-collapse-item{margin-bottom:16px;border:none;border-radius:12px;overflow:hidden;background:#fff;-webkit-box-shadow:0 4px 20px rgba(0,0,0,.08);box-shadow:0 4px 20px rgba(0,0,0,.08)}.settings-page .settings-collapse[data-v-f144964c] .ant-collapse-item .ant-collapse-header{font-size:16px;font-weight:600;color:#1e3a5f;padding:16px 24px;padding-left:48px;background:linear-gradient(135deg,#fff,#f8fafc);border-bottom:1px solid #f0f0f0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.settings-page .settings-collapse[data-v-f144964c] .ant-collapse-item .ant-collapse-header .ant-collapse-arrow{color:#1890ff;left:20px}.settings-page .settings-collapse[data-v-f144964c] .ant-collapse-item .ant-collapse-header .panel-header{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px;-webkit-box-flex:1;-ms-flex:1;flex:1}.settings-page .settings-collapse[data-v-f144964c] .ant-collapse-item .ant-collapse-header .panel-header .panel-icon-left{font-size:18px;color:#1890ff}.settings-page .settings-collapse[data-v-f144964c] .ant-collapse-item .ant-collapse-header .panel-header .panel-title{font-size:16px}.settings-page .settings-collapse[data-v-f144964c] .ant-collapse-item .ant-collapse-content{border-top:none}.settings-page .settings-collapse[data-v-f144964c] .ant-collapse-item .ant-collapse-content .ant-collapse-content-box{padding:24px}.settings-page .settings-form[data-v-f144964c] .ant-form-item-label{padding-bottom:4px}.settings-page .settings-form[data-v-f144964c] .ant-form-item-label label{color:#475569;font-weight:500}.settings-page .settings-form[data-v-f144964c] .ant-form-item-label .form-label-with-tooltip{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;-ms-flex-wrap:wrap;flex-wrap:wrap}.settings-page .settings-form[data-v-f144964c] .ant-form-item-label .form-label-with-tooltip .label-text{color:#475569;font-weight:500}.settings-page .settings-form[data-v-f144964c] .ant-form-item-label .form-label-with-tooltip .help-icon{font-size:14px;color:#94a3b8;cursor:help;-webkit-transition:color .2s;transition:color .2s}.settings-page .settings-form[data-v-f144964c] .ant-form-item-label .form-label-with-tooltip .help-icon:hover{color:#1890ff}.settings-page .settings-form[data-v-f144964c] .ant-form-item-label .form-label-with-tooltip .api-link{font-size:12px;font-weight:400;color:#1890ff;text-decoration:none;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;padding:2px 8px;background:rgba(24,144,255,.08);border-radius:4px;-webkit-transition:all .2s;transition:all .2s;margin-left:4px}.settings-page .settings-form[data-v-f144964c] .ant-form-item-label .form-label-with-tooltip .api-link:hover{background:rgba(24,144,255,.15);color:#0076e4}.settings-page .settings-form[data-v-f144964c] .ant-form-item-label .form-label-with-tooltip .api-link .anticon{font-size:11px}.settings-page .settings-form[data-v-f144964c] .ant-input,.settings-page .settings-form[data-v-f144964c] .ant-input-number,.settings-page .settings-form[data-v-f144964c] .ant-select-selection{border-radius:8px}.settings-page .settings-form[data-v-f144964c] .ant-input-number{width:100%}.settings-page .settings-form .password-field .field-hint[data-v-f144964c]{margin-top:4px;font-size:12px;color:#52c41a;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px}.settings-page .settings-form .field-default[data-v-f144964c]{margin-top:4px;font-size:12px;color:#94a3b8}.settings-page .settings-footer[data-v-f144964c]{position:fixed;bottom:0;left:208px;right:0;padding:16px 24px;background:#fff;-webkit-box-shadow:0 -4px 20px rgba(0,0,0,.08);box-shadow:0 -4px 20px rgba(0,0,0,.08);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;gap:12px;z-index:100}.settings-page .settings-footer .ant-btn[data-v-f144964c]{min-width:100px;height:40px;border-radius:8px;font-weight:500}.settings-page.theme-dark[data-v-f144964c]{background:-webkit-gradient(linear,left top,left bottom,from(#141414),to(#1c1c1c));background:linear-gradient(180deg,#141414,#1c1c1c)}.settings-page.theme-dark .restart-alert[data-v-f144964c]{background:#1c1c1c;border-color:#b08800}.settings-page.theme-dark .settings-header .page-title[data-v-f144964c]{color:#e0e6ed}.settings-page.theme-dark .settings-header .page-desc[data-v-f144964c]{color:#8b949e}.settings-page.theme-dark .settings-collapse[data-v-f144964c] .ant-collapse-item{background:#1c1c1c;-webkit-box-shadow:0 4px 24px rgba(0,0,0,.25);box-shadow:0 4px 24px rgba(0,0,0,.25)}.settings-page.theme-dark .settings-collapse[data-v-f144964c] .ant-collapse-item .ant-collapse-header{background:linear-gradient(135deg,#252525,#1c1c1c);color:#e0e6ed;border-bottom-color:hsla(0,0%,100%,.06)}.settings-page.theme-dark .settings-collapse[data-v-f144964c] .ant-collapse-item .ant-collapse-header .panel-header .panel-icon-left{color:#58a6ff}.settings-page.theme-dark .settings-collapse[data-v-f144964c] .ant-collapse-item .ant-collapse-header .panel-header .panel-title{color:#e0e6ed}.settings-page.theme-dark .settings-collapse[data-v-f144964c] .ant-collapse-item .ant-collapse-content,.settings-page.theme-dark .settings-collapse[data-v-f144964c] .ant-collapse-item .ant-collapse-content .ant-collapse-content-box{background:#1c1c1c}.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-form-item-label .form-label-with-tooltip .label-text,.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-form-item-label label{color:#c9d1d9}.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-form-item-label .form-label-with-tooltip .help-icon{color:#6e7681}.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-form-item-label .form-label-with-tooltip .help-icon:hover{color:#58a6ff}.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-form-item-label .form-label-with-tooltip .api-link{background:rgba(24,144,255,.15);color:#58a6ff}.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-form-item-label .form-label-with-tooltip .api-link:hover{background:rgba(24,144,255,.25)}.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-input,.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-input-number,.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-input-password,.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-select-selection{background:#141414;border-color:#2a2a2a;color:#c9d1d9}.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-input-number:focus,.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-input-number:hover,.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-input-password:focus,.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-input-password:hover,.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-input:focus,.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-input:hover,.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-select-selection:focus,.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-select-selection:hover{border-color:#1890ff}.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-input-number-input{background:transparent;color:#c9d1d9}.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-select-arrow{color:#8b949e}.settings-page.theme-dark .settings-form .field-default[data-v-f144964c]{color:#6e7681}.settings-page.theme-dark .settings-footer[data-v-f144964c]{background:#1c1c1c;border-top:1px solid hsla(0,0%,100%,.06);-webkit-box-shadow:0 -4px 24px rgba(0,0,0,.25);box-shadow:0 -4px 24px rgba(0,0,0,.25)}@media (max-width:768px){.settings-page[data-v-f144964c]{padding:16px}.settings-page .settings-footer[data-v-f144964c]{left:0;padding:12px 16px}} \ No newline at end of file diff --git a/frontend/dist/css/app.23a9a8f8.css b/frontend/dist/css/app.9dca4aef.css similarity index 91% rename from frontend/dist/css/app.23a9a8f8.css rename to frontend/dist/css/app.9dca4aef.css index e0637d8..6ed8ac3 100644 --- a/frontend/dist/css/app.23a9a8f8.css +++ b/frontend/dist/css/app.9dca4aef.css @@ -1 +1 @@ -.ant-pro-header-menu .anticon{margin-right:8px}.ant-pro-header-menu .ant-dropdown-menu-item{min-width:160px}.ant-pro-drop-down{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;height:64px;line-height:64px;padding:0 12px;vertical-align:top;cursor:pointer;-webkit-transition:all .3s;transition:all .3s}.ant-pro-drop-down:hover{background:rgba(0,0,0,.04)}.ant-pro-drop-down>i{font-size:16px!important;-webkit-transform:none!important;transform:none!important}.ant-pro-drop-down>i svg{position:relative;top:-1px}@media (max-width:768px){.ant-pro-drop-down{padding:0 8px}}#userLayout.user-layout-wrapper[data-v-7ae30672]{height:100%}#userLayout.user-layout-wrapper.mobile .container .main[data-v-7ae30672]{max-width:368px;width:98%}#userLayout.user-layout-wrapper .container[data-v-7ae30672]{width:100%;min-height:100%;background:#f0f2f5 url(/img/background.ed05d5bd.svg) no-repeat 50%;background-size:100%;position:relative}#userLayout.user-layout-wrapper .container .fx-layer[data-v-7ae30672]{position:absolute;inset:0;overflow:hidden;z-index:0;pointer-events:none}#userLayout.user-layout-wrapper .container .fx-layer .fx-gradient[data-v-7ae30672]{position:absolute;inset:-20% -20% -20% -20%;background:radial-gradient(1200px 600px at 10% 10%,rgba(78,161,255,.18),transparent 60%),radial-gradient(900px 500px at 90% 20%,rgba(127,92,255,.18),transparent 60%),radial-gradient(800px 500px at 30% 90%,rgba(0,210,170,.14),transparent 60%);-webkit-filter:blur(20px);filter:blur(20px);-webkit-animation:fxFloat-7ae30672 18s ease-in-out infinite alternate;animation:fxFloat-7ae30672 18s ease-in-out infinite alternate;-webkit-transform:translateZ(0);transform:translateZ(0)}#userLayout.user-layout-wrapper .container .fx-layer .fx-grid[data-v-7ae30672]{position:absolute;inset:0;background-image:linear-gradient(hsla(0,0%,100%,.06) 1px,transparent 0),linear-gradient(90deg,hsla(0,0%,100%,.06) 1px,transparent 0);background-size:44px 44px,44px 44px;background-position:0 0,0 0;mix-blend-mode:overlay;-webkit-animation:gridDrift-7ae30672 40s linear infinite;animation:gridDrift-7ae30672 40s linear infinite}#userLayout.user-layout-wrapper .container .user-layout-lang[data-v-7ae30672]{width:100%;height:40px;line-height:44px;text-align:right}#userLayout.user-layout-wrapper .container .user-layout-lang .select-lang-trigger[data-v-7ae30672]{cursor:pointer;padding:12px;margin-right:24px;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;font-size:18px;vertical-align:middle}#userLayout.user-layout-wrapper .container .user-layout-content[data-v-7ae30672]{padding:32px 0 24px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-height:calc(100vh - 40px);position:relative;z-index:1}#userLayout.user-layout-wrapper .container .user-layout-content .top[data-v-7ae30672]{text-align:center}#userLayout.user-layout-wrapper .container .user-layout-content .top .header[data-v-7ae30672]{height:56px;line-height:56px}#userLayout.user-layout-wrapper .container .user-layout-content .top .header .badge[data-v-7ae30672]{position:absolute;display:inline-block;line-height:1;vertical-align:middle;margin-left:-12px;margin-top:-10px;opacity:.8}#userLayout.user-layout-wrapper .container .user-layout-content .top .header .logo[data-v-7ae30672]{width:342px;max-width:42vw;height:auto;vertical-align:middle;margin-right:0;border-style:none}#userLayout.user-layout-wrapper .container .user-layout-content .top .header .title[data-v-7ae30672]{font-size:33px;color:rgba(0,0,0,.85);font-family:Avenir,Helvetica Neue,Arial,Helvetica,sans-serif;font-weight:600;position:relative;top:2px}#userLayout.user-layout-wrapper .container .user-layout-content .top .desc[data-v-7ae30672]{font-size:14px;color:rgba(0,0,0,.45);margin-top:12px;margin-bottom:40px}#userLayout.user-layout-wrapper .container .user-layout-content .main[data-v-7ae30672]{min-width:320px;width:480px;margin:0 auto}#userLayout.user-layout-wrapper .container .user-layout-content .main-content[data-v-7ae30672]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}#userLayout.user-layout-wrapper .container .user-layout-content .footer[data-v-7ae30672]{width:100%;padding:0 16px;margin-top:auto;margin-bottom:16px;text-align:center}#userLayout.user-layout-wrapper .container .user-layout-content .footer .links[data-v-7ae30672]{margin-bottom:8px;font-size:14px}#userLayout.user-layout-wrapper .container .user-layout-content .footer .links a[data-v-7ae30672]{color:rgba(0,0,0,.45);-webkit-transition:all .3s;transition:all .3s}#userLayout.user-layout-wrapper .container .user-layout-content .footer .links a[data-v-7ae30672]:not(:last-child){margin-right:40px}#userLayout.user-layout-wrapper .container .user-layout-content .footer .copyright[data-v-7ae30672]{color:rgba(0,0,0,.45);font-size:14px}#userLayout.user-layout-wrapper .container a[data-v-7ae30672]{text-decoration:none}@media (max-width:576px){#userLayout.user-layout-wrapper .container .user-layout-content .top .header .logo[data-v-7ae30672]{width:208px;max-width:70vw;margin-top:8px}#userLayout.user-layout-wrapper .container .user-layout-content .main[data-v-7ae30672]{width:92vw}}@-webkit-keyframes fxFloat-7ae30672{0%{-webkit-transform:translate3d(-2%,-1%,0) scale(1);transform:translate3d(-2%,-1%,0) scale(1)}50%{-webkit-transform:translate3d(1%,2%,0) scale(1.02);transform:translate3d(1%,2%,0) scale(1.02)}to{-webkit-transform:translate3d(3%,-2%,0) scale(1.04);transform:translate3d(3%,-2%,0) scale(1.04)}}@keyframes fxFloat-7ae30672{0%{-webkit-transform:translate3d(-2%,-1%,0) scale(1);transform:translate3d(-2%,-1%,0) scale(1)}50%{-webkit-transform:translate3d(1%,2%,0) scale(1.02);transform:translate3d(1%,2%,0) scale(1.02)}to{-webkit-transform:translate3d(3%,-2%,0) scale(1.04);transform:translate3d(3%,-2%,0) scale(1.04)}}@-webkit-keyframes gridDrift-7ae30672{0%{background-position:0 0,0 0;-webkit-transform:rotate(0deg);transform:rotate(0deg)}50%{background-position:22px 22px,22px 22px}to{background-position:44px 44px,44px 44px;-webkit-transform:rotate(3.6deg);transform:rotate(3.6deg)}}@keyframes gridDrift-7ae30672{0%{background-position:0 0,0 0;-webkit-transform:rotate(0deg);transform:rotate(0deg)}50%{background-position:22px 22px,22px 22px}to{background-position:44px 44px,44px 44px;-webkit-transform:rotate(3.6deg);transform:rotate(3.6deg)}}.ant-pro-drop-down .action{margin-right:8px}.ant-pro-drop-down .ant-dropdown-menu-item{min-width:160px}.ant-layout.dark .ant-dropdown-menu,.ant-layout.realdark .ant-dropdown-menu,.ant-pro-layout.dark .ant-dropdown-menu,.ant-pro-layout.realdark .ant-dropdown-menu,body.dark .ant-dropdown-menu,body.realdark .ant-dropdown-menu{background-color:#1f1f1f;border:1px solid #303030;-webkit-box-shadow:0 4px 12px rgba(0,0,0,.3);box-shadow:0 4px 12px rgba(0,0,0,.3)}.ant-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item,.ant-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item,.ant-pro-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item,.ant-pro-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item,body.dark .ant-dropdown-menu .ant-dropdown-menu-item,body.realdark .ant-dropdown-menu .ant-dropdown-menu-item{color:hsla(0,0%,100%,.85)}.ant-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item.ant-dropdown-menu-item-selected,.ant-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item:hover,.ant-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item.ant-dropdown-menu-item-selected,.ant-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item:hover,.ant-pro-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item.ant-dropdown-menu-item-selected,.ant-pro-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item:hover,.ant-pro-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item.ant-dropdown-menu-item-selected,.ant-pro-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item:hover,body.dark .ant-dropdown-menu .ant-dropdown-menu-item.ant-dropdown-menu-item-selected,body.dark .ant-dropdown-menu .ant-dropdown-menu-item:hover,body.realdark .ant-dropdown-menu .ant-dropdown-menu-item.ant-dropdown-menu-item-selected,body.realdark .ant-dropdown-menu .ant-dropdown-menu-item:hover{background-color:#262626;color:#1890ff}.ant-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item .anticon,.ant-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item .anticon,.ant-pro-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item .anticon,.ant-pro-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item .anticon,body.dark .ant-dropdown-menu .ant-dropdown-menu-item .anticon,body.realdark .ant-dropdown-menu .ant-dropdown-menu-item .anticon{color:hsla(0,0%,100%,.85)}.ant-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item-divider,.ant-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item-divider,.ant-pro-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item-divider,.ant-pro-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item-divider,body.dark .ant-dropdown-menu .ant-dropdown-menu-item-divider,body.realdark .ant-dropdown-menu .ant-dropdown-menu-item-divider{background-color:#303030}.notice-icon-wrapper[data-v-7e99442e]{display:inline-block;vertical-align:top}.header-notice[data-v-7e99442e]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;height:64px;line-height:64px;-webkit-transition:all .3s;transition:all .3s;cursor:pointer;padding:0 12px;vertical-align:top}.header-notice[data-v-7e99442e]:hover{background:rgba(0,0,0,.04)}.header-notice span[data-v-7e99442e]{vertical-align:initial}@media (max-width:768px){.header-notice[data-v-7e99442e]{padding:0 8px}}.notice-header[data-v-7e99442e]{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;padding:12px 16px;border-bottom:1px solid #f0f0f0}.notice-header .notice-title[data-v-7e99442e]{font-weight:500;font-size:14px}.notice-header .notice-action[data-v-7e99442e]{font-size:12px;color:#1890ff;cursor:pointer}.notice-header .notice-action[data-v-7e99442e]:hover{color:#40a9ff}.notice-list[data-v-7e99442e]{max-height:400px;overflow-y:auto}.notice-item[data-v-7e99442e]{display:-webkit-box;display:-ms-flexbox;display:flex;padding:12px 16px;cursor:pointer;-webkit-transition:background .3s;transition:background .3s}.notice-item[data-v-7e99442e]:hover{background:#f5f5f5}.notice-item.unread[data-v-7e99442e]{background:#e6f7ff}.notice-item.unread[data-v-7e99442e]:hover{background:#bae7ff}.notice-item .notice-item-icon[data-v-7e99442e]{-ms-flex-negative:0;flex-shrink:0;width:32px;height:32px;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;background:#f0f0f0;border-radius:50%;margin-right:12px;font-size:16px}.notice-item .notice-item-content[data-v-7e99442e]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.notice-item .notice-item-content .notice-item-title[data-v-7e99442e]{font-weight:500;font-size:13px;color:rgba(0,0,0,.85);margin-bottom:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.notice-item .notice-item-content .notice-item-desc[data-v-7e99442e]{font-size:12px;color:rgba(0,0,0,.45);line-height:1.5;margin-bottom:4px}.notice-item .notice-item-content .notice-item-time[data-v-7e99442e]{font-size:11px;color:rgba(0,0,0,.25)}.notice-empty[data-v-7e99442e]{padding:48px 0}.notice-footer[data-v-7e99442e]{text-align:center;padding:12px;border-top:1px solid #f0f0f0}.notice-footer a[data-v-7e99442e]{color:#1890ff;cursor:pointer}.notice-footer a[data-v-7e99442e]:hover{color:#40a9ff}.notice-detail .notice-detail-meta[data-v-7e99442e]{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}.notice-detail .notice-detail-meta .notice-detail-type[data-v-7e99442e]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.notice-detail .notice-detail-meta .notice-detail-type .type-label[data-v-7e99442e]{font-size:14px;color:rgba(0,0,0,.65)}.notice-detail .notice-detail-meta .notice-detail-time[data-v-7e99442e]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;font-size:13px;color:rgba(0,0,0,.45)}.notice-detail .notice-detail-content .message-body[data-v-7e99442e]{font-size:14px;line-height:1.8;color:rgba(0,0,0,.85);max-height:300px;overflow-y:auto;padding:8px 0}.notice-detail .notice-detail-content .message-body h2[data-v-7e99442e],.notice-detail .notice-detail-content .message-body h3[data-v-7e99442e],.notice-detail .notice-detail-content .message-body h4[data-v-7e99442e]{margin:12px 0 8px;font-weight:600}.notice-detail .notice-detail-content .message-body h2[data-v-7e99442e]{font-size:18px}.notice-detail .notice-detail-content .message-body h3[data-v-7e99442e]{font-size:16px}.notice-detail .notice-detail-content .message-body h4[data-v-7e99442e]{font-size:14px}.notice-detail .notice-detail-content .message-body li[data-v-7e99442e]{margin-left:20px;list-style:disc}.notice-detail .notice-detail-content .message-body strong[data-v-7e99442e]{font-weight:600}.notice-detail .notice-detail-content.html-report .message-body[data-v-7e99442e]{max-height:70vh;padding:0;margin:-16px -24px;overflow-y:auto}.notice-detail .notice-detail-extra .extra-title[data-v-7e99442e]{font-weight:500;font-size:14px;margin-bottom:12px;color:rgba(0,0,0,.85)}.notice-detail .notice-detail-extra .extra-item[data-v-7e99442e]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;margin-bottom:8px;font-size:13px}.notice-detail .notice-detail-extra .extra-item .label[data-v-7e99442e]{-ms-flex-negative:0;flex-shrink:0;color:rgba(0,0,0,.45);margin-right:8px}.notice-detail .notice-detail-extra .extra-item .value[data-v-7e99442e]{color:rgba(0,0,0,.85);word-break:break-word}.notice-detail .notice-detail-extra .extra-item.decision[data-v-7e99442e]{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.notice-detail .notice-detail-extra .extra-item.decision .confidence[data-v-7e99442e]{margin-left:8px;color:rgba(0,0,0,.45);font-size:12px}.notice-detail .notice-detail-actions[data-v-7e99442e]{margin-top:24px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;gap:12px}.header-notice-wrapper{top:50px!important}.header-notice-wrapper .ant-popover-inner-content{padding:0}.notice-detail-modal .ant-modal-header{border-bottom:1px solid #f0f0f0}.notice-detail-modal .ant-modal-body{padding:16px 24px}.notice-detail-modal.html-report-modal .ant-modal-body{padding:0}.ant-layout.dark .header-notice-wrapper .ant-popover-inner,.ant-layout.realdark .header-notice-wrapper .ant-popover-inner,body.dark .header-notice-wrapper .ant-popover-inner,body.realdark .header-notice-wrapper .ant-popover-inner{background:#1f1f1f}.ant-layout.dark .header-notice-wrapper .ant-popover-arrow,.ant-layout.realdark .header-notice-wrapper .ant-popover-arrow,body.dark .header-notice-wrapper .ant-popover-arrow,body.realdark .header-notice-wrapper .ant-popover-arrow{border-color:#1f1f1f}.ant-layout.dark .header-notice-wrapper .notice-header,.ant-layout.realdark .header-notice-wrapper .notice-header,body.dark .header-notice-wrapper .notice-header,body.realdark .header-notice-wrapper .notice-header{border-color:#303030}.ant-layout.dark .header-notice-wrapper .notice-header .notice-title,.ant-layout.realdark .header-notice-wrapper .notice-header .notice-title,body.dark .header-notice-wrapper .notice-header .notice-title,body.realdark .header-notice-wrapper .notice-header .notice-title{color:hsla(0,0%,100%,.85)}.ant-layout.dark .header-notice-wrapper .notice-item:hover,.ant-layout.realdark .header-notice-wrapper .notice-item:hover,body.dark .header-notice-wrapper .notice-item:hover,body.realdark .header-notice-wrapper .notice-item:hover{background:#303030}.ant-layout.dark .header-notice-wrapper .notice-item.unread,.ant-layout.realdark .header-notice-wrapper .notice-item.unread,body.dark .header-notice-wrapper .notice-item.unread,body.realdark .header-notice-wrapper .notice-item.unread{background:rgba(24,144,255,.15)}.ant-layout.dark .header-notice-wrapper .notice-item.unread:hover,.ant-layout.realdark .header-notice-wrapper .notice-item.unread:hover,body.dark .header-notice-wrapper .notice-item.unread:hover,body.realdark .header-notice-wrapper .notice-item.unread:hover{background:rgba(24,144,255,.25)}.ant-layout.dark .header-notice-wrapper .notice-item .notice-item-icon,.ant-layout.realdark .header-notice-wrapper .notice-item .notice-item-icon,body.dark .header-notice-wrapper .notice-item .notice-item-icon,body.realdark .header-notice-wrapper .notice-item .notice-item-icon{background:#303030}.ant-layout.dark .header-notice-wrapper .notice-item .notice-item-content .notice-item-title,.ant-layout.realdark .header-notice-wrapper .notice-item .notice-item-content .notice-item-title,body.dark .header-notice-wrapper .notice-item .notice-item-content .notice-item-title,body.realdark .header-notice-wrapper .notice-item .notice-item-content .notice-item-title{color:hsla(0,0%,100%,.85)}.ant-layout.dark .header-notice-wrapper .notice-item .notice-item-content .notice-item-desc,.ant-layout.realdark .header-notice-wrapper .notice-item .notice-item-content .notice-item-desc,body.dark .header-notice-wrapper .notice-item .notice-item-content .notice-item-desc,body.realdark .header-notice-wrapper .notice-item .notice-item-content .notice-item-desc{color:hsla(0,0%,100%,.45)}.ant-layout.dark .header-notice-wrapper .notice-item .notice-item-content .notice-item-time,.ant-layout.realdark .header-notice-wrapper .notice-item .notice-item-content .notice-item-time,body.dark .header-notice-wrapper .notice-item .notice-item-content .notice-item-time,body.realdark .header-notice-wrapper .notice-item .notice-item-content .notice-item-time{color:hsla(0,0%,100%,.25)}.ant-layout.dark .header-notice-wrapper .notice-footer,.ant-layout.realdark .header-notice-wrapper .notice-footer,body.dark .header-notice-wrapper .notice-footer,body.realdark .header-notice-wrapper .notice-footer{border-color:#303030}.ant-layout.dark .header-notice-wrapper .ant-empty-description,.ant-layout.realdark .header-notice-wrapper .ant-empty-description,body.dark .header-notice-wrapper .ant-empty-description,body.realdark .header-notice-wrapper .ant-empty-description{color:hsla(0,0%,100%,.45)}.ant-layout.dark .notice-detail-modal .ant-modal-content,.ant-layout.realdark .notice-detail-modal .ant-modal-content,body.dark .notice-detail-modal .ant-modal-content,body.realdark .notice-detail-modal .ant-modal-content{background:#1f1f1f}.ant-layout.dark .notice-detail-modal .ant-modal-header,.ant-layout.realdark .notice-detail-modal .ant-modal-header,body.dark .notice-detail-modal .ant-modal-header,body.realdark .notice-detail-modal .ant-modal-header{background:#1f1f1f;border-color:#303030}.ant-layout.dark .notice-detail-modal .ant-modal-header .ant-modal-title,.ant-layout.realdark .notice-detail-modal .ant-modal-header .ant-modal-title,body.dark .notice-detail-modal .ant-modal-header .ant-modal-title,body.realdark .notice-detail-modal .ant-modal-header .ant-modal-title{color:hsla(0,0%,100%,.85)}.ant-layout.dark .notice-detail-modal .ant-modal-close-x,.ant-layout.realdark .notice-detail-modal .ant-modal-close-x,body.dark .notice-detail-modal .ant-modal-close-x,body.realdark .notice-detail-modal .ant-modal-close-x{color:hsla(0,0%,100%,.45)}.ant-layout.dark .notice-detail-modal .ant-divider,.ant-layout.realdark .notice-detail-modal .ant-divider,body.dark .notice-detail-modal .ant-divider,body.realdark .notice-detail-modal .ant-divider{border-color:#303030}.ant-layout.dark .notice-detail-modal .notice-detail .notice-detail-meta .notice-detail-type .type-label,.ant-layout.realdark .notice-detail-modal .notice-detail .notice-detail-meta .notice-detail-type .type-label,body.dark .notice-detail-modal .notice-detail .notice-detail-meta .notice-detail-type .type-label,body.realdark .notice-detail-modal .notice-detail .notice-detail-meta .notice-detail-type .type-label{color:hsla(0,0%,100%,.65)}.ant-layout.dark .notice-detail-modal .notice-detail .notice-detail-meta .notice-detail-time,.ant-layout.realdark .notice-detail-modal .notice-detail .notice-detail-meta .notice-detail-time,body.dark .notice-detail-modal .notice-detail .notice-detail-meta .notice-detail-time,body.realdark .notice-detail-modal .notice-detail .notice-detail-meta .notice-detail-time{color:hsla(0,0%,100%,.45)}.ant-layout.dark .notice-detail-modal .notice-detail .notice-detail-content .message-body,.ant-layout.dark .notice-detail-modal .notice-detail .notice-detail-extra .extra-title,.ant-layout.realdark .notice-detail-modal .notice-detail .notice-detail-content .message-body,.ant-layout.realdark .notice-detail-modal .notice-detail .notice-detail-extra .extra-title,body.dark .notice-detail-modal .notice-detail .notice-detail-content .message-body,body.dark .notice-detail-modal .notice-detail .notice-detail-extra .extra-title,body.realdark .notice-detail-modal .notice-detail .notice-detail-content .message-body,body.realdark .notice-detail-modal .notice-detail .notice-detail-extra .extra-title{color:hsla(0,0%,100%,.85)}.ant-layout.dark .notice-detail-modal .notice-detail .notice-detail-extra .extra-item .label,.ant-layout.realdark .notice-detail-modal .notice-detail .notice-detail-extra .extra-item .label,body.dark .notice-detail-modal .notice-detail .notice-detail-extra .extra-item .label,body.realdark .notice-detail-modal .notice-detail .notice-detail-extra .extra-item .label{color:hsla(0,0%,100%,.45)}.ant-layout.dark .notice-detail-modal .notice-detail .notice-detail-extra .extra-item .value,.ant-layout.realdark .notice-detail-modal .notice-detail .notice-detail-extra .extra-item .value,body.dark .notice-detail-modal .notice-detail .notice-detail-extra .extra-item .value,body.realdark .notice-detail-modal .notice-detail .notice-detail-extra .extra-item .value{color:hsla(0,0%,100%,.85)}.ant-layout.dark .notice-detail-modal .notice-detail .notice-detail-extra .extra-item .confidence,.ant-layout.realdark .notice-detail-modal .notice-detail .notice-detail-extra .extra-item .confidence,body.dark .notice-detail-modal .notice-detail .notice-detail-extra .extra-item .confidence,body.realdark .notice-detail-modal .notice-detail .notice-detail-extra .extra-item .confidence{color:hsla(0,0%,100%,.45)}.ant-pro-global-header-index-right{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-negative:0;flex-shrink:0}.ant-pro-global-header-index-right .ant-pro-global-header-index-action{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;height:64px;padding:0 12px;color:rgba(0,0,0,.65);-webkit-transition:all .3s;transition:all .3s;cursor:pointer;vertical-align:top}.ant-pro-global-header-index-right .ant-pro-global-header-index-action:hover{color:#1890ff;background:rgba(0,0,0,.04)}@media (max-width:768px){.ant-pro-global-header-index-right .ant-pro-account-avatar,.ant-pro-global-header-index-right .ant-pro-drop-down,.ant-pro-global-header-index-right .ant-pro-global-header-index-action{padding:0 8px}}.ant-layout.dark .ant-pro-global-header-index-right,.ant-layout.dark .ant-pro-global-header-index-right *,.ant-layout.dark .ant-pro-global-header-index-right .ant-pro-global-header-index-action,.ant-layout.realdark .ant-pro-global-header-index-right,.ant-layout.realdark .ant-pro-global-header-index-right *,.ant-layout.realdark .ant-pro-global-header-index-right .ant-pro-global-header-index-action,.ant-pro-layout.dark .ant-pro-global-header-index-right,.ant-pro-layout.dark .ant-pro-global-header-index-right *,.ant-pro-layout.dark .ant-pro-global-header-index-right .ant-pro-global-header-index-action,.ant-pro-layout.realdark .ant-pro-global-header-index-right,.ant-pro-layout.realdark .ant-pro-global-header-index-right *,.ant-pro-layout.realdark .ant-pro-global-header-index-right .ant-pro-global-header-index-action,body.dark .ant-pro-global-header-index-right,body.dark .ant-pro-global-header-index-right *,body.dark .ant-pro-global-header-index-right .ant-pro-global-header-index-action,body.realdark .ant-pro-global-header-index-right,body.realdark .ant-pro-global-header-index-right *,body.realdark .ant-pro-global-header-index-right .ant-pro-global-header-index-action{color:hsla(0,0%,100%,.85)!important}.ant-layout.dark .ant-pro-global-header-index-right .ant-pro-global-header-index-action:hover,.ant-layout.realdark .ant-pro-global-header-index-right .ant-pro-global-header-index-action:hover,.ant-pro-layout.dark .ant-pro-global-header-index-right .ant-pro-global-header-index-action:hover,.ant-pro-layout.realdark .ant-pro-global-header-index-right .ant-pro-global-header-index-action:hover,body.dark .ant-pro-global-header-index-right .ant-pro-global-header-index-action:hover,body.realdark .ant-pro-global-header-index-right .ant-pro-global-header-index-action:hover{color:#1890ff!important;background:hsla(0,0%,100%,.08)!important}.ant-layout.dark .ant-pro-global-header-index-right .ant-pro-account-avatar .antd-pro-global-header-index-avatar,.ant-layout.realdark .ant-pro-global-header-index-right .ant-pro-account-avatar .antd-pro-global-header-index-avatar,.ant-pro-layout.dark .ant-pro-global-header-index-right .ant-pro-account-avatar .antd-pro-global-header-index-avatar,.ant-pro-layout.realdark .ant-pro-global-header-index-right .ant-pro-account-avatar .antd-pro-global-header-index-avatar,body.dark .ant-pro-global-header-index-right .ant-pro-account-avatar .antd-pro-global-header-index-avatar,body.realdark .ant-pro-global-header-index-right .ant-pro-account-avatar .antd-pro-global-header-index-avatar{background:hsla(0,0%,100%,.25)!important}.ant-layout.dark .ant-pro-global-header-index-right .ant-dropdown-trigger,.ant-layout.dark .ant-pro-global-header-index-right .ant-pro-drop-down,.ant-layout.realdark .ant-pro-global-header-index-right .ant-dropdown-trigger,.ant-layout.realdark .ant-pro-global-header-index-right .ant-pro-drop-down,.ant-pro-layout.dark .ant-pro-global-header-index-right .ant-dropdown-trigger,.ant-pro-layout.dark .ant-pro-global-header-index-right .ant-pro-drop-down,.ant-pro-layout.realdark .ant-pro-global-header-index-right .ant-dropdown-trigger,.ant-pro-layout.realdark .ant-pro-global-header-index-right .ant-pro-drop-down,body.dark .ant-pro-global-header-index-right .ant-dropdown-trigger,body.dark .ant-pro-global-header-index-right .ant-pro-drop-down,body.realdark .ant-pro-global-header-index-right .ant-dropdown-trigger,body.realdark .ant-pro-global-header-index-right .ant-pro-drop-down{color:hsla(0,0%,100%,.85)!important}.ant-layout.dark .ant-pro-global-header-index-right .ant-dropdown-trigger:hover,.ant-layout.dark .ant-pro-global-header-index-right .ant-pro-drop-down:hover,.ant-layout.realdark .ant-pro-global-header-index-right .ant-dropdown-trigger:hover,.ant-layout.realdark .ant-pro-global-header-index-right .ant-pro-drop-down:hover,.ant-pro-layout.dark .ant-pro-global-header-index-right .ant-dropdown-trigger:hover,.ant-pro-layout.dark .ant-pro-global-header-index-right .ant-pro-drop-down:hover,.ant-pro-layout.realdark .ant-pro-global-header-index-right .ant-dropdown-trigger:hover,.ant-pro-layout.realdark .ant-pro-global-header-index-right .ant-pro-drop-down:hover,body.dark .ant-pro-global-header-index-right .ant-dropdown-trigger:hover,body.dark .ant-pro-global-header-index-right .ant-pro-drop-down:hover,body.realdark .ant-pro-global-header-index-right .ant-dropdown-trigger:hover,body.realdark .ant-pro-global-header-index-right .ant-pro-drop-down:hover{color:#1890ff!important;background:hsla(0,0%,100%,.08)!important}.ant-layout.dark .ant-pro-global-header-index-right .ant-dropdown-trigger .anticon,.ant-layout.dark .ant-pro-global-header-index-right .ant-pro-drop-down .anticon,.ant-layout.realdark .ant-pro-global-header-index-right .ant-dropdown-trigger .anticon,.ant-layout.realdark .ant-pro-global-header-index-right .ant-pro-drop-down .anticon,.ant-pro-layout.dark .ant-pro-global-header-index-right .ant-dropdown-trigger .anticon,.ant-pro-layout.dark .ant-pro-global-header-index-right .ant-pro-drop-down .anticon,.ant-pro-layout.realdark .ant-pro-global-header-index-right .ant-dropdown-trigger .anticon,.ant-pro-layout.realdark .ant-pro-global-header-index-right .ant-pro-drop-down .anticon,body.dark .ant-pro-global-header-index-right .ant-dropdown-trigger .anticon,body.dark .ant-pro-global-header-index-right .ant-pro-drop-down .anticon,body.realdark .ant-pro-global-header-index-right .ant-dropdown-trigger .anticon,body.realdark .ant-pro-global-header-index-right .ant-pro-drop-down .anticon{color:hsla(0,0%,100%,.85)!important}.setting-drawer-index-item[data-v-e773bc98]{margin-bottom:24px}.setting-drawer-index-item .setting-drawer-index-title[data-v-e773bc98]{font-size:14px;color:rgba(0,0,0,.85);line-height:22px;margin-bottom:12px}[data-v-940007f2] .ant-drawer-handle,[data-v-940007f2] .setting-drawer-index-handle{display:none!important}.setting-drawer-index-content .setting-drawer-index-blockChecbox[data-v-940007f2]{display:-webkit-box;display:-ms-flexbox;display:flex}.setting-drawer-index-content .setting-drawer-index-blockChecbox .setting-drawer-index-item[data-v-940007f2]{margin-right:16px;position:relative;border-radius:4px;cursor:pointer}.setting-drawer-index-content .setting-drawer-index-blockChecbox .setting-drawer-index-item img[data-v-940007f2]{width:48px}.setting-drawer-index-content .setting-drawer-index-blockChecbox .setting-drawer-index-item .setting-drawer-index-selectIcon[data-v-940007f2]{position:absolute;top:0;right:0;width:100%;padding-top:15px;padding-left:24px;height:100%;color:#1890ff;font-size:14px;font-weight:700}.setting-drawer-index-content .setting-drawer-theme-color-colorBlock[data-v-940007f2]{width:20px;height:20px;border-radius:2px;float:left;cursor:pointer;margin-right:8px;padding-left:0;padding-right:0;text-align:center;color:#fff;font-weight:700}.setting-drawer-index-content .setting-drawer-theme-color-colorBlock i[data-v-940007f2]{font-size:14px}:global .ant-layout .ant-layout-footer,:global .ant-layout-footer,:global .ant-pro-layout .ant-layout-footer,:global footer.ant-layout-footer{display:none!important;height:0!important;padding:0!important;margin:0!important;border:none!important;min-height:0!important;visibility:hidden!important;overflow:hidden!important}:global .ant-layout.dark .ant-layout-header,:global .ant-layout.realdark .ant-layout-header,:global .ant-pro-layout.dark .ant-layout-header,:global .ant-pro-layout.realdark .ant-layout-header,:global body.dark .ant-layout-header,:global body.realdark .ant-layout-header{background:#111!important;border-bottom:1px solid #1c1c1c!important;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05),0 1px 4px rgba(0,0,0,.2)!important;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05),0 1px 4px rgba(0,0,0,.2)!important;color:hsla(0,0%,100%,.85)!important}:global .ant-layout.dark .ant-layout-header *,:global .ant-layout.realdark .ant-layout-header *,:global .ant-pro-layout.dark .ant-layout-header *,:global .ant-pro-layout.realdark .ant-layout-header *,:global body.dark .ant-layout-header *,:global body.realdark .ant-layout-header *{color:hsla(0,0%,100%,.85)!important}:global .ant-layout.dark .ant-layout-header .anticon,:global .ant-layout.realdark .ant-layout-header .anticon,:global .ant-pro-layout.dark .ant-layout-header .anticon,:global .ant-pro-layout.realdark .ant-layout-header .anticon,:global body.dark .ant-layout-header .anticon,:global body.realdark .ant-layout-header .anticon{color:hsla(0,0%,100%,.85)!important}:global .ant-layout.dark .ant-layout-header .anticon:hover,:global .ant-layout.realdark .ant-layout-header .anticon:hover,:global .ant-pro-layout.dark .ant-layout-header .anticon:hover,:global .ant-pro-layout.realdark .ant-layout-header .anticon:hover,:global body.dark .ant-layout-header .anticon:hover,:global body.realdark .ant-layout-header .anticon:hover{color:#1890ff!important;background:hsla(0,0%,100%,.08)!important;border-radius:4px}:global .ant-layout.dark .ant-layout-header a,:global .ant-layout.realdark .ant-layout-header a,:global .ant-pro-layout.dark .ant-layout-header a,:global .ant-pro-layout.realdark .ant-layout-header a,:global body.dark .ant-layout-header a,:global body.realdark .ant-layout-header a{color:hsla(0,0%,100%,.85)!important}:global .ant-layout.dark .ant-layout-header a:hover,:global .ant-layout.realdark .ant-layout-header a:hover,:global .ant-pro-layout.dark .ant-layout-header a:hover,:global .ant-pro-layout.realdark .ant-layout-header a:hover,:global body.dark .ant-layout-header a:hover,:global body.realdark .ant-layout-header a:hover{color:#1890ff!important}:global .ant-layout.dark .ant-layout-header .ant-tooltip-open .anticon,:global .ant-layout.realdark .ant-layout-header .ant-tooltip-open .anticon,:global .ant-pro-layout.dark .ant-layout-header .ant-tooltip-open .anticon,:global .ant-pro-layout.realdark .ant-layout-header .ant-tooltip-open .anticon,:global body.dark .ant-layout-header .ant-tooltip-open .anticon,:global body.realdark .ant-layout-header .ant-tooltip-open .anticon{color:hsla(0,0%,100%,.85)!important}:global .ant-layout.light .ant-layout-header,:global .ant-pro-layout.light .ant-layout-header,:global body.light .ant-layout-header{background:#fff!important;border-bottom:1px solid #e8e8e8!important;-webkit-box-shadow:0 1px 4px rgba(0,21,41,.08)!important;box-shadow:0 1px 4px rgba(0,21,41,.08)!important;color:rgba(0,0,0,.85)!important}:global .ant-layout.dark .ant-layout-content,:global .ant-layout.realdark .ant-layout-content,:global .ant-pro-layout.dark .ant-layout-content,:global .ant-pro-layout.realdark .ant-layout-content,:global body.dark .ant-layout-content,:global body.realdark .ant-layout-content{background:#141414!important;color:hsla(0,0%,100%,.85)!important}:global .ant-layout.light .ant-layout-content,:global .ant-pro-layout.light .ant-layout-content,:global body.light .ant-layout-content{background:#f0f2f5!important;color:rgba(0,0,0,.85)!important}:global .ant-layout.dark .ant-pro-global-header,:global .ant-layout.realdark .ant-pro-global-header,:global .ant-pro-layout.dark .ant-layout-header .ant-pro-global-header,:global .ant-pro-layout.dark .ant-pro-global-header,:global .ant-pro-layout.realdark .ant-layout-header .ant-pro-global-header,:global .ant-pro-layout.realdark .ant-pro-global-header,:global body.dark .ant-layout-header .ant-pro-global-header,:global body.dark .ant-pro-global-header,:global body.realdark .ant-layout-header .ant-pro-global-header,:global body.realdark .ant-pro-global-header{background:#111!important;border-bottom:none!important;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important;color:hsla(0,0%,100%,.85)!important}:global .ant-layout.dark .ant-pro-global-header *,:global .ant-layout.realdark .ant-pro-global-header *,:global .ant-pro-layout.dark .ant-layout-header .ant-pro-global-header *,:global .ant-pro-layout.dark .ant-pro-global-header *,:global .ant-pro-layout.realdark .ant-layout-header .ant-pro-global-header *,:global .ant-pro-layout.realdark .ant-pro-global-header *,:global body.dark .ant-layout-header .ant-pro-global-header *,:global body.dark .ant-pro-global-header *,:global body.realdark .ant-layout-header .ant-pro-global-header *,:global body.realdark .ant-pro-global-header *{color:hsla(0,0%,100%,.85)!important}:global .ant-layout.dark .ant-pro-global-header .ant-pro-global-header-logo,:global .ant-layout.realdark .ant-pro-global-header .ant-pro-global-header-logo,:global .ant-pro-layout.dark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo,:global .ant-pro-layout.dark .ant-pro-global-header .ant-pro-global-header-logo,:global .ant-pro-layout.realdark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo,:global .ant-pro-layout.realdark .ant-pro-global-header .ant-pro-global-header-logo,:global body.dark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo,:global body.dark .ant-pro-global-header .ant-pro-global-header-logo,:global body.realdark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo,:global body.realdark .ant-pro-global-header .ant-pro-global-header-logo{background:transparent!important;color:hsla(0,0%,100%,.85)!important}:global .ant-layout.dark .ant-pro-global-header .ant-pro-global-header-logo h1,:global .ant-layout.realdark .ant-pro-global-header .ant-pro-global-header-logo h1,:global .ant-pro-layout.dark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo h1,:global .ant-pro-layout.dark .ant-pro-global-header .ant-pro-global-header-logo h1,:global .ant-pro-layout.realdark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo h1,:global .ant-pro-layout.realdark .ant-pro-global-header .ant-pro-global-header-logo h1,:global body.dark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo h1,:global body.dark .ant-pro-global-header .ant-pro-global-header-logo h1,:global body.realdark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo h1,:global body.realdark .ant-pro-global-header .ant-pro-global-header-logo h1{color:hsla(0,0%,100%,.85)!important}:global .ant-layout.dark .ant-pro-global-header .ant-pro-global-header-logo img,:global .ant-layout.realdark .ant-pro-global-header .ant-pro-global-header-logo img,:global .ant-pro-layout.dark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo img,:global .ant-pro-layout.dark .ant-pro-global-header .ant-pro-global-header-logo img,:global .ant-pro-layout.realdark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo img,:global .ant-pro-layout.realdark .ant-pro-global-header .ant-pro-global-header-logo img,:global body.dark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo img,:global body.dark .ant-pro-global-header .ant-pro-global-header-logo img,:global body.realdark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo img,:global body.realdark .ant-pro-global-header .ant-pro-global-header-logo img{opacity:.9}:global .ant-layout.dark .ant-pro-global-header .ant-pro-global-header-logo *,:global .ant-layout.realdark .ant-pro-global-header .ant-pro-global-header-logo *,:global .ant-pro-layout.dark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo *,:global .ant-pro-layout.dark .ant-pro-global-header .ant-pro-global-header-logo *,:global .ant-pro-layout.realdark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo *,:global .ant-pro-layout.realdark .ant-pro-global-header .ant-pro-global-header-logo *,:global body.dark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo *,:global body.dark .ant-pro-global-header .ant-pro-global-header-logo *,:global body.realdark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo *,:global body.realdark .ant-pro-global-header .ant-pro-global-header-logo *{color:hsla(0,0%,100%,.85)!important}:global .ant-pro-global-header-content{background:transparent!important;color:hsla(0,0%,100%,.85)!important}:global .ant-pro-global-header-content *{color:hsla(0,0%,100%,.85)!important}:global .ant-pro-global-header-content .anticon{color:hsla(0,0%,100%,.85)!important}:global .ant-pro-global-header-content .anticon:hover{color:#1890ff!important;background:hsla(0,0%,100%,.08)!important;border-radius:4px}:global .ant-pro-global-header-content .ant-tooltip-open .anticon{color:hsla(0,0%,100%,.85)!important}:global .ant-pro-global-header-index-right{background:transparent!important;color:hsla(0,0%,100%,.85)!important}:global .ant-pro-global-header-index-right *{color:hsla(0,0%,100%,.85)!important}:global .ant-pro-global-header-index-right .ant-pro-global-header-index-action{color:hsla(0,0%,100%,.85)!important}:global .ant-pro-global-header-index-right .ant-pro-global-header-index-action:hover{color:#1890ff!important;background:hsla(0,0%,100%,.08)!important}:global .ant-pro-global-header-index-right .ant-pro-global-header-index-action .anticon{color:hsla(0,0%,100%,.85)!important}:global .ant-pro-global-header-index-right .ant-pro-account-avatar{color:hsla(0,0%,100%,.85)!important}:global .ant-pro-global-header-index-right .ant-pro-account-avatar span{color:hsla(0,0%,100%,.85)!important}:global .ant-pro-global-header-index-right .ant-pro-account-avatar .antd-pro-global-header-index-avatar{background:hsla(0,0%,100%,.25)!important}:global .ant-pro-global-header-index-right .ant-dropdown-trigger,:global .ant-pro-global-header-index-right .ant-pro-drop-down{color:hsla(0,0%,100%,.85)!important}:global .ant-pro-global-header-index-right .ant-dropdown-trigger:hover,:global .ant-pro-global-header-index-right .ant-pro-drop-down:hover{color:#1890ff!important;background:hsla(0,0%,100%,.08)!important}:global .ant-pro-global-header-index-right .ant-dropdown-trigger .anticon,:global .ant-pro-global-header-index-right .ant-pro-drop-down .anticon{color:hsla(0,0%,100%,.85)!important}:global a{color:hsla(0,0%,100%,.85)!important}:global a:hover{color:#1890ff!important}:global .anticon{color:hsla(0,0%,100%,.85)!important}:global .anticon:hover{color:#1890ff!important}:global .ant-layout.light .ant-pro-global-header,:global .ant-pro-layout.light .ant-layout-header .ant-pro-global-header,:global .ant-pro-layout.light .ant-pro-global-header,:global body.light .ant-layout-header .ant-pro-global-header,:global body.light .ant-pro-global-header{background:#fff!important;border-bottom:1px solid #e8e8e8!important;color:rgba(0,0,0,.85)!important}:global(.ant-pro-layout).dark :global(.ant-layout),:global(.ant-pro-layout).realdark :global(.ant-layout){background-color:#0a0a0a!important}:global(.ant-pro-layout).dark :global(.ant-layout-header),:global(.ant-pro-layout).realdark :global(.ant-layout-header){background:#111!important;border-bottom:1px solid #1c1c1c!important;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important;color:hsla(0,0%,100%,.85)!important}:global(.ant-pro-layout).dark :global(.ant-layout-header) :global(.ant-pro-global-header),:global(.ant-pro-layout).realdark :global(.ant-layout-header) :global(.ant-pro-global-header){background:#111!important;border-bottom:none!important;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important;color:hsla(0,0%,100%,.85)!important}:global(.ant-pro-layout).dark :global(.ant-layout-header) :global(.ant-pro-global-header) *,:global(.ant-pro-layout).realdark :global(.ant-layout-header) :global(.ant-pro-global-header) *{color:hsla(0,0%,100%,.85)!important}:global(.ant-pro-layout).dark :global(.ant-layout-content),:global(.ant-pro-layout).realdark :global(.ant-layout-content){background:#141414!important;color:hsla(0,0%,100%,.85)!important}:global(.ant-pro-layout).dark :global(.ant-pro-basicLayout-content),:global(.ant-pro-layout).realdark :global(.ant-pro-basicLayout-content){background:#141414!important;color:hsla(0,0%,100%,.85)!important}:global(.ant-pro-layout).dark :global(.ant-layout-sider),:global(.ant-pro-layout).dark :global(.ant-pro-sider),:global(.ant-pro-layout).dark :global(.ant-pro-sider-menu-sider),:global(.ant-pro-layout).realdark :global(.ant-layout-sider),:global(.ant-pro-layout).realdark :global(.ant-pro-sider),:global(.ant-pro-layout).realdark :global(.ant-pro-sider-menu-sider){background:#0a0a0a!important}:global(.ant-pro-layout).dark :global(.ant-layout-sider) :global(.ant-layout-sider-children),:global(.ant-pro-layout).dark :global(.ant-pro-sider) :global(.ant-layout-sider-children),:global(.ant-pro-layout).dark :global(.ant-pro-sider-menu-sider) :global(.ant-layout-sider-children),:global(.ant-pro-layout).realdark :global(.ant-layout-sider) :global(.ant-layout-sider-children),:global(.ant-pro-layout).realdark :global(.ant-pro-sider) :global(.ant-layout-sider-children),:global(.ant-pro-layout).realdark :global(.ant-pro-sider-menu-sider) :global(.ant-layout-sider-children){background:#0a0a0a!important}:global(.ant-pro-layout).dark :global(.ant-menu-dark .ant-menu-inline.ant-menu-sub),:global(.ant-pro-layout).dark :global(.ant-menu-dark),:global(.ant-pro-layout).dark :global(.ant-menu.ant-menu-dark),:global(.ant-pro-layout).realdark :global(.ant-menu-dark .ant-menu-inline.ant-menu-sub),:global(.ant-pro-layout).realdark :global(.ant-menu-dark),:global(.ant-pro-layout).realdark :global(.ant-menu.ant-menu-dark){background:#0a0a0a!important}:global(.ant-pro-layout).dark :global(.ant-menu-dark .ant-menu-sub),:global(.ant-pro-layout).realdark :global(.ant-menu-dark .ant-menu-sub){background:#111!important}:global(.ant-pro-layout).dark :global(.ant-menu-dark .ant-menu-item-selected),:global(.ant-pro-layout).realdark :global(.ant-menu-dark .ant-menu-item-selected){background:rgba(24,144,255,.25)!important}:global(.ant-pro-layout).dark :global(.ant-menu-dark .ant-menu-item:hover),:global(.ant-pro-layout).dark :global(.ant-menu-dark .ant-menu-submenu-title:hover),:global(.ant-pro-layout).realdark :global(.ant-menu-dark .ant-menu-item:hover),:global(.ant-pro-layout).realdark :global(.ant-menu-dark .ant-menu-submenu-title:hover){background:hsla(0,0%,100%,.06)!important}:global(.ant-pro-layout).dark :global(.ant-layout-sider-trigger),:global(.ant-pro-layout).realdark :global(.ant-layout-sider-trigger){background:#111!important;border-top:1px solid #1c1c1c;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05);box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)}:global(.ant-pro-layout).light :global(.ant-layout){background-color:#f0f2f5!important}:global(.ant-pro-layout).light :global(.ant-layout-header){background:#fff!important;border-bottom:1px solid #e8e8e8!important;color:rgba(0,0,0,.85)!important}:global(.ant-pro-layout).light :global(.ant-layout-content){background:#f0f2f5!important;color:rgba(0,0,0,.85)!important}:global(.ant-pro-layout).light :global(.ant-pro-basicLayout-content){background:#f0f2f5!important;color:rgba(0,0,0,.85)!important}.ant-pro-global-header-index-right{margin-right:8px}.ant-pro-global-header-index-right.ant-pro-global-header-index-dark .ant-pro-global-header-index-action{color:#030303}.ant-pro-global-header-index-right.ant-pro-global-header-index-dark .ant-pro-global-header-index-action:hover{background:#1890ff}.ant-pro-global-header-index-right.ant-pro-global-header-index-dark .ant-pro-account-avatar{color:hsla(0,0%,100%,.85)}.ant-pro-global-header-index-right.ant-pro-global-header-index-dark .ant-pro-account-avatar .antd-pro-global-header-index-avatar{background:hsla(0,0%,100%,.25)!important}.ant-pro-global-header-index-right.ant-pro-global-header-index-dark .ant-pro-account-avatar span,.ant-pro-global-header-index-right.ant-pro-global-header-index-dark .ant-pro-drop-down{color:hsla(0,0%,100%,.85)}.ant-pro-global-header-index-right.ant-pro-global-header-index-dark .ant-pro-drop-down:hover{color:#1890ff;background:hsla(0,0%,100%,.08)}.ant-pro-global-header-index-right .ant-pro-account-avatar .antd-pro-global-header-index-avatar{margin:20px 0;margin-right:8px;color:#1890ff;vertical-align:top;background:rgb(255 255 3%)}.ant-pro-global-header-index-right .menu .anticon{margin-right:8px}.ant-pro-global-header-index-right .menu .ant-dropdown-menu-item{min-width:100px}:global .ant-pro-layout.dark .ant-dropdown-menu,:global .ant-pro-layout.realdark .ant-dropdown-menu{background:#1c1c1c!important;border:1px solid #2a2a2a!important;-webkit-box-shadow:0 4px 12px rgba(0,0,0,.4)!important;box-shadow:0 4px 12px rgba(0,0,0,.4)!important}:global .ant-pro-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item,:global .ant-pro-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item{color:hsla(0,0%,100%,.85)!important}:global .ant-pro-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item:hover,:global .ant-pro-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item:hover{background:#252525!important;color:#1890ff!important}:global .ant-pro-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item-divider,:global .ant-pro-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item-divider{background:#2a2a2a!important}:global body.dark .ant-layout-sider,:global body.dark .ant-layout-sider-dark,:global body.dark .ant-pro-sider-menu-sider,:global body.dark .ant-pro-sider-menu-sider.ant-layout-sider-dark,:global body.realdark .ant-layout-sider,:global body.realdark .ant-layout-sider-dark,:global body.realdark .ant-pro-sider-menu-sider,:global body.realdark .ant-pro-sider-menu-sider.ant-layout-sider-dark{background:#0a0a0a!important}:global body.dark .ant-layout-sider-children,:global body.realdark .ant-layout-sider-children{background:#0a0a0a!important}:global body.dark .ant-menu-dark,:global body.dark .ant-menu-dark .ant-menu-inline.ant-menu-sub,:global body.dark .ant-menu.ant-menu-dark,:global body.dark ul.ant-menu.ant-menu-dark.ant-menu-root,:global body.realdark .ant-menu-dark,:global body.realdark .ant-menu-dark .ant-menu-inline.ant-menu-sub,:global body.realdark .ant-menu.ant-menu-dark,:global body.realdark ul.ant-menu.ant-menu-dark.ant-menu-root{background:#0a0a0a!important}:global body.dark .ant-menu-dark .ant-menu-sub,:global body.dark .ant-menu.ant-menu-dark .ant-menu-sub,:global body.realdark .ant-menu-dark .ant-menu-sub,:global body.realdark .ant-menu.ant-menu-dark .ant-menu-sub{background:#111!important}:global body.dark .ant-menu-dark .ant-menu-item-selected,:global body.realdark .ant-menu-dark .ant-menu-item-selected{background:rgba(24,144,255,.25)!important}:global body.dark .ant-pro-sider-menu-logo,:global body.realdark .ant-pro-sider-menu-logo{background:#0a0a0a!important}:global body.dark .ant-layout-sider-trigger,:global body.realdark .ant-layout-sider-trigger{background:#111!important;border-top:1px solid #1c1c1c;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important}:global body.dark .ant-layout-header,:global body.realdark .ant-layout-header{background:#111!important;border-bottom:1px solid #1c1c1c!important;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important}:global body.dark .ant-pro-global-header,:global body.realdark .ant-pro-global-header{background:#111!important;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important}@media (max-width:768px){:global .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo,:global .ant-pro-global-header-logo,:global .ant-pro-layout .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo,:global body .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo{padding:0!important;padding-left:0!important;padding-right:0!important;padding-top:0!important;padding-bottom:0!important}}.ant-pro-sider-menu-sider.light .ant-menu-light{height:60vh!important}.basic-layout-wrapper .ant-layout-footer{display:none!important;height:0!important;padding:0!important;margin:0!important;border:none!important}.basic-layout-wrapper{position:relative}.basic-layout-wrapper .custom-menu-footer{position:fixed;bottom:0;left:0;z-index:100;width:256px;background:#111;border-top:1px solid #1c1c1c;-webkit-transition:left .3s cubic-bezier(.78,.14,.15,.86),width .3s cubic-bezier(.78,.14,.15,.86),max-width .3s cubic-bezier(.78,.14,.15,.86),opacity .3s cubic-bezier(.78,.14,.15,.86);transition:left .3s cubic-bezier(.78,.14,.15,.86),width .3s cubic-bezier(.78,.14,.15,.86),max-width .3s cubic-bezier(.78,.14,.15,.86),opacity .3s cubic-bezier(.78,.14,.15,.86);max-width:256px;display:block;opacity:1}.basic-layout-wrapper .custom-menu-footer.collapsed{width:80px;max-width:80px}@media (max-width:768px){.basic-layout-wrapper .custom-menu-footer{z-index:1001}.basic-layout-wrapper .custom-menu-footer:not(.drawer-open){display:none!important;opacity:0}.basic-layout-wrapper .custom-menu-footer.drawer-animating{opacity:0;-webkit-transition:opacity .1s ease-out;transition:opacity .1s ease-out}.basic-layout-wrapper .custom-menu-footer.drawer-open:not(.drawer-animating){opacity:1;-webkit-transition:left .3s cubic-bezier(.78,.14,.15,.86),width .3s cubic-bezier(.78,.14,.15,.86),max-width .3s cubic-bezier(.78,.14,.15,.86),opacity .3s cubic-bezier(.78,.14,.15,.86) .1s;transition:left .3s cubic-bezier(.78,.14,.15,.86),width .3s cubic-bezier(.78,.14,.15,.86),max-width .3s cubic-bezier(.78,.14,.15,.86),opacity .3s cubic-bezier(.78,.14,.15,.86) .1s}}.basic-layout-wrapper .custom-menu-footer .menu-footer-content{padding:12px 16px;font-size:11px;color:inherit;max-height:none;overflow:visible;scrollbar-width:thin;scrollbar-color:hsla(0,0%,100%,.2) transparent}.basic-layout-wrapper .custom-menu-footer .menu-footer-content::-webkit-scrollbar{width:4px}.basic-layout-wrapper .custom-menu-footer .menu-footer-content::-webkit-scrollbar-track{background:transparent}.basic-layout-wrapper .custom-menu-footer .menu-footer-content::-webkit-scrollbar-thumb{background:hsla(0,0%,100%,.2);border-radius:2px}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section{margin-bottom:12px;text-align:center}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section:last-child{margin-bottom:0}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .section-title{font-size:11px;font-weight:500;margin-bottom:6px;opacity:.8;color:inherit}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .section-links{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;gap:4px;-ms-flex-wrap:wrap;flex-wrap:wrap;font-size:10px;opacity:.7}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .section-links a{cursor:pointer;color:inherit;text-decoration:underline;-webkit-transition:opacity .2s;transition:opacity .2s}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .section-links a:hover{opacity:1}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .section-links .separator{opacity:.5;margin:0 2px}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .social-icons{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:8px;margin-top:6px}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .social-icons .social-icon{width:15px;height:15px;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;border-radius:4px;cursor:pointer;opacity:.7;-webkit-transition:all .2s;transition:all .2s;background:hsla(0,0%,100%,.05);text-decoration:none;overflow:hidden}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .social-icons .social-icon:hover{opacity:1;background:hsla(0,0%,100%,.1);-webkit-transform:translateY(-2px);transform:translateY(-2px)}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .social-icons .social-icon .social-icon-svg{width:15x;height:15px;color:currentColor}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .social-icons .social-icon .anticon{font-size:16px}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .social-icons .social-icon .social-logo{width:15px;height:15px;-o-object-fit:contain;object-fit:contain}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .social-icons .social-icon .social-icon-text{font-size:10px;font-weight:700}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section.copyright{margin-top:12px;padding-top:12px;border-top:1px solid #2a2a2a;opacity:.6;font-size:10px}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section.version{margin-top:4px;font-size:9px;opacity:.4;text-align:center;letter-spacing:1px}.basic-layout-wrapper .custom-menu-footer .menu-footer-content-collapsed{text-align:center;padding:16px;font-size:12px;opacity:.6;cursor:pointer;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}.basic-layout-wrapper .custom-menu-footer .menu-footer-content-collapsed .anticon{font-size:16px}.basic-layout-wrapper .custom-menu-footer .menu-footer-content-collapsed:hover{opacity:1}.basic-layout-wrapper ::v-deep .ant-pro-layout .ant-pro-sider-collapsed~.custom-menu-footer,.basic-layout-wrapper ::v-deep .ant-pro-layout.ant-pro-sider-collapsed~.custom-menu-footer{width:80px}.basic-layout-wrapper .ant-layout-sider-children{padding-bottom:calc(var(--menu-footer-height, 220px) + 12px);overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.15) transparent}.basic-layout-wrapper .ant-layout-sider-children::-webkit-scrollbar{width:6px}.basic-layout-wrapper .ant-layout-sider-children::-webkit-scrollbar-track{background:transparent}.basic-layout-wrapper .ant-layout-sider-children::-webkit-scrollbar-thumb{background:rgba(0,0,0,.15);border-radius:3px}.ant-pro-layout.dark .basic-layout-wrapper .ant-layout-sider-children,.ant-pro-layout.realdark .basic-layout-wrapper .ant-layout-sider-children,body.dark .basic-layout-wrapper .ant-layout-sider-children,body.realdark .basic-layout-wrapper .ant-layout-sider-children{scrollbar-color:hsla(0,0%,100%,.25) transparent}.ant-pro-layout.dark .basic-layout-wrapper .ant-layout-sider-children::-webkit-scrollbar-thumb,.ant-pro-layout.realdark .basic-layout-wrapper .ant-layout-sider-children::-webkit-scrollbar-thumb,body.dark .basic-layout-wrapper .ant-layout-sider-children::-webkit-scrollbar-thumb,body.realdark .basic-layout-wrapper .ant-layout-sider-children::-webkit-scrollbar-thumb{background:hsla(0,0%,100%,.25)}.basic-layout-wrapper .ant-pro-sider{height:100vh;-ms-flex-direction:column;flex-direction:column}.basic-layout-wrapper .ant-pro-sider,.basic-layout-wrapper .ant-pro-sider .ant-layout-sider-children{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal}.basic-layout-wrapper .ant-pro-sider .ant-layout-sider-children{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;min-height:0;-ms-flex-direction:column;flex-direction:column}.basic-layout-wrapper .ant-pro-sider .ant-menu,.basic-layout-wrapper .ant-pro-sider .ant-menu-root,.basic-layout-wrapper .ant-pro-sider .ant-pro-sider-menu{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;min-height:0;max-height:calc(100vh - var(--menu-footer-height, 220px) - 24px);overflow-y:auto!important;overflow-x:hidden;-webkit-overflow-scrolling:touch}.basic-layout-wrapper.dark .ant-layout-header,.basic-layout-wrapper.realdark .ant-layout-header{background:#111!important;border-bottom:1px solid #1c1c1c!important;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important}.basic-layout-wrapper.dark .ant-pro-global-header,.basic-layout-wrapper.realdark .ant-pro-global-header{background:#111!important;border-bottom:none!important;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important;color:hsla(0,0%,100%,.85)!important}.basic-layout-wrapper.dark .ant-pro-global-header .ant-pro-global-header-trigger,.basic-layout-wrapper.realdark .ant-pro-global-header .ant-pro-global-header-trigger{color:hsla(0,0%,100%,.85)!important}.basic-layout-wrapper.dark .ant-pro-global-header .ant-pro-global-header-trigger:hover,.basic-layout-wrapper.realdark .ant-pro-global-header .ant-pro-global-header-trigger:hover{background:hsla(0,0%,100%,.06)!important}.basic-layout-wrapper.dark .ant-pro-global-header .action,.basic-layout-wrapper.realdark .ant-pro-global-header .action{color:hsla(0,0%,100%,.85)!important}.basic-layout-wrapper.dark .ant-pro-global-header .action:hover,.basic-layout-wrapper.realdark .ant-pro-global-header .action:hover{background:hsla(0,0%,100%,.06)!important}.basic-layout-wrapper.dark .ant-layout,.basic-layout-wrapper.dark .ant-pro-basicLayout-content,.basic-layout-wrapper.realdark .ant-layout,.basic-layout-wrapper.realdark .ant-pro-basicLayout-content{background-color:#141414!important}@media (max-width:768px){.ant-drawer.ant-drawer-open .ant-drawer-content-wrapper{overflow:visible}.ant-drawer.ant-drawer-open .ant-drawer-content,.ant-drawer.ant-drawer-open .ant-drawer-wrapper-body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:100%;overflow:visible}.ant-drawer.ant-drawer-open .ant-drawer-body{overflow-y:auto!important;overflow-x:hidden!important;padding-bottom:var(--footer-height,280px)!important;-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:hsla(0,0%,100%,.2) transparent;min-height:0;-webkit-box-flex:1;-ms-flex:1;flex:1}.ant-drawer.ant-drawer-open .ant-drawer-body::-webkit-scrollbar{width:4px}.ant-drawer.ant-drawer-open .ant-drawer-body::-webkit-scrollbar-track{background:transparent}.ant-drawer.ant-drawer-open .ant-drawer-body::-webkit-scrollbar-thumb{background:hsla(0,0%,100%,.2);border-radius:2px}.ant-drawer.ant-drawer-open .ant-drawer-body::-webkit-scrollbar-thumb:hover{background:hsla(0,0%,100%,.3)}}.ant-pro-multi-tab{margin:-23px -24px 24px;background:#fff}.topmenu .ant-pro-multi-tab-wrapper{max-width:1200px;margin:0 auto}.topmenu.content-width-Fluid .ant-pro-multi-tab-wrapper{max-width:100%;margin:0 auto}body,html{width:100%;height:100%}input::-ms-clear,input::-ms-reveal{display:none}*,:after,:before{-webkit-box-sizing:border-box;box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:rgba(0,0,0,0)}@-ms-viewport{width:device-width}article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;color:rgba(0,0,0,.65);font-size:14px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;font-variant:tabular-nums;line-height:1.5;background-color:#fff;-webkit-font-feature-settings:"tnum";font-feature-settings:"tnum"}[tabindex="-1"]:focus{outline:none!important}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5em;color:rgba(0,0,0,.85);font-weight:500}p{margin-top:0;margin-bottom:1em}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;border-bottom:0;cursor:help}address{margin-bottom:1em;font-style:normal;line-height:inherit}input[type=number],input[type=password],input[type=text],textarea{-webkit-appearance:none}dl,ol,ul{margin-top:0;margin-bottom:1em}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:500}dd{margin-bottom:.5em;margin-left:0}blockquote{margin:0 0 1em}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#1890ff;text-decoration:none;background-color:transparent;outline:none;cursor:pointer;-webkit-transition:color .3s;transition:color .3s;-webkit-text-decoration-skip:objects}a:hover{color:#40a9ff}a:active{color:#096dd9}a:active,a:hover{text-decoration:none;outline:0}a[disabled]{color:rgba(0,0,0,.25);cursor:not-allowed;pointer-events:none}code,kbd,pre,samp{font-size:1em;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace}pre{margin-top:0;margin-bottom:1em;overflow:auto}figure{margin:0 0 1em}img{vertical-align:middle;border-style:none}svg:not(:root){overflow:hidden}[role=button],a,area,button,input:not([type=range]),label,select,summary,textarea{-ms-touch-action:manipulation;touch-action:manipulation}table{border-collapse:collapse}caption{padding-top:.75em;padding-bottom:.3em;color:rgba(0,0,0,.45);text-align:left;caption-side:bottom}th{text-align:inherit}button,input,optgroup,select,textarea{margin:0;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;margin:0;padding:0;border:0}legend{display:block;width:100%;max-width:100%;margin-bottom:.5em;padding:0;color:inherit;font-size:1.5em;line-height:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item}template{display:none}[hidden]{display:none!important}mark{padding:.2em;background-color:#feffe6}::-moz-selection{color:#fff;background:#1890ff}::selection{color:#fff;background:#1890ff}.clearfix{zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}.anticon{display:inline-block;color:inherit;font-style:normal;line-height:0;text-align:center;text-transform:none;vertical-align:-.125em;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.anticon>*{line-height:1}.anticon svg{display:inline-block}.anticon:before{display:none}.anticon .anticon-icon{display:block}.anticon[tabindex]{cursor:pointer}.anticon-spin,.anticon-spin:before{display:inline-block;-webkit-animation:loadingCircle 1s linear infinite;animation:loadingCircle 1s linear infinite}.fade-appear,.fade-enter,.fade-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.fade-appear.fade-appear-active,.fade-enter.fade-enter-active{-webkit-animation-name:antFadeIn;animation-name:antFadeIn;-webkit-animation-play-state:running;animation-play-state:running}.fade-leave.fade-leave-active{-webkit-animation-name:antFadeOut;animation-name:antFadeOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.fade-appear,.fade-enter{opacity:0}.fade-appear,.fade-enter,.fade-leave{-webkit-animation-timing-function:linear;animation-timing-function:linear}@-webkit-keyframes antFadeIn{0%{opacity:0}to{opacity:1}}@keyframes antFadeIn{0%{opacity:0}to{opacity:1}}@-webkit-keyframes antFadeOut{0%{opacity:1}to{opacity:0}}@keyframes antFadeOut{0%{opacity:1}to{opacity:0}}.move-up-appear,.move-up-enter,.move-up-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.move-up-appear.move-up-appear-active,.move-up-enter.move-up-enter-active{-webkit-animation-name:antMoveUpIn;animation-name:antMoveUpIn;-webkit-animation-play-state:running;animation-play-state:running}.move-up-leave.move-up-leave-active{-webkit-animation-name:antMoveUpOut;animation-name:antMoveUpOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.move-up-appear,.move-up-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.move-up-leave{-webkit-animation-timing-function:cubic-bezier(.6,.04,.98,.34);animation-timing-function:cubic-bezier(.6,.04,.98,.34)}.move-down-appear,.move-down-enter,.move-down-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.move-down-appear.move-down-appear-active,.move-down-enter.move-down-enter-active{-webkit-animation-name:antMoveDownIn;animation-name:antMoveDownIn;-webkit-animation-play-state:running;animation-play-state:running}.move-down-leave.move-down-leave-active{-webkit-animation-name:antMoveDownOut;animation-name:antMoveDownOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.move-down-appear,.move-down-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.move-down-leave{-webkit-animation-timing-function:cubic-bezier(.6,.04,.98,.34);animation-timing-function:cubic-bezier(.6,.04,.98,.34)}.move-left-appear,.move-left-enter,.move-left-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.move-left-appear.move-left-appear-active,.move-left-enter.move-left-enter-active{-webkit-animation-name:antMoveLeftIn;animation-name:antMoveLeftIn;-webkit-animation-play-state:running;animation-play-state:running}.move-left-leave.move-left-leave-active{-webkit-animation-name:antMoveLeftOut;animation-name:antMoveLeftOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.move-left-appear,.move-left-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.move-left-leave{-webkit-animation-timing-function:cubic-bezier(.6,.04,.98,.34);animation-timing-function:cubic-bezier(.6,.04,.98,.34)}.move-right-appear,.move-right-enter,.move-right-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.move-right-appear.move-right-appear-active,.move-right-enter.move-right-enter-active{-webkit-animation-name:antMoveRightIn;animation-name:antMoveRightIn;-webkit-animation-play-state:running;animation-play-state:running}.move-right-leave.move-right-leave-active{-webkit-animation-name:antMoveRightOut;animation-name:antMoveRightOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.move-right-appear,.move-right-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.move-right-leave{-webkit-animation-timing-function:cubic-bezier(.6,.04,.98,.34);animation-timing-function:cubic-bezier(.6,.04,.98,.34)}@-webkit-keyframes antMoveDownIn{0%{-webkit-transform:translateY(100%);transform:translateY(100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}to{-webkit-transform:translateY(0);transform:translateY(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@keyframes antMoveDownIn{0%{-webkit-transform:translateY(100%);transform:translateY(100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}to{-webkit-transform:translateY(0);transform:translateY(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@-webkit-keyframes antMoveDownOut{0%{-webkit-transform:translateY(0);transform:translateY(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}to{-webkit-transform:translateY(100%);transform:translateY(100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}}@keyframes antMoveDownOut{0%{-webkit-transform:translateY(0);transform:translateY(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}to{-webkit-transform:translateY(100%);transform:translateY(100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}}@-webkit-keyframes antMoveLeftIn{0%{-webkit-transform:translateX(-100%);transform:translateX(-100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}to{-webkit-transform:translateX(0);transform:translateX(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@keyframes antMoveLeftIn{0%{-webkit-transform:translateX(-100%);transform:translateX(-100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}to{-webkit-transform:translateX(0);transform:translateX(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@-webkit-keyframes antMoveLeftOut{0%{-webkit-transform:translateX(0);transform:translateX(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}to{-webkit-transform:translateX(-100%);transform:translateX(-100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}}@keyframes antMoveLeftOut{0%{-webkit-transform:translateX(0);transform:translateX(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}to{-webkit-transform:translateX(-100%);transform:translateX(-100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}}@-webkit-keyframes antMoveRightIn{0%{-webkit-transform:translateX(100%);transform:translateX(100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}to{-webkit-transform:translateX(0);transform:translateX(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@keyframes antMoveRightIn{0%{-webkit-transform:translateX(100%);transform:translateX(100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}to{-webkit-transform:translateX(0);transform:translateX(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@-webkit-keyframes antMoveRightOut{0%{-webkit-transform:translateX(0);transform:translateX(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}to{-webkit-transform:translateX(100%);transform:translateX(100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}}@keyframes antMoveRightOut{0%{-webkit-transform:translateX(0);transform:translateX(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}to{-webkit-transform:translateX(100%);transform:translateX(100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}}@-webkit-keyframes antMoveUpIn{0%{-webkit-transform:translateY(-100%);transform:translateY(-100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}to{-webkit-transform:translateY(0);transform:translateY(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@keyframes antMoveUpIn{0%{-webkit-transform:translateY(-100%);transform:translateY(-100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}to{-webkit-transform:translateY(0);transform:translateY(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@-webkit-keyframes antMoveUpOut{0%{-webkit-transform:translateY(0);transform:translateY(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}to{-webkit-transform:translateY(-100%);transform:translateY(-100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}}@keyframes antMoveUpOut{0%{-webkit-transform:translateY(0);transform:translateY(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}to{-webkit-transform:translateY(-100%);transform:translateY(-100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}}@-webkit-keyframes loadingCircle{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes loadingCircle{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}[ant-click-animating-without-extra-node=true],[ant-click-animating=true]{position:relative}html{--antd-wave-shadow-color:#1890ff}.ant-click-animating-node,[ant-click-animating-without-extra-node=true]:after{position:absolute;top:0;right:0;bottom:0;left:0;display:block;border-radius:inherit;-webkit-box-shadow:0 0 0 0 #1890ff;box-shadow:0 0 0 0 #1890ff;-webkit-box-shadow:0 0 0 0 var(--antd-wave-shadow-color);box-shadow:0 0 0 0 var(--antd-wave-shadow-color);opacity:.2;-webkit-animation:fadeEffect 2s cubic-bezier(.08,.82,.17,1),waveEffect .4s cubic-bezier(.08,.82,.17,1);animation:fadeEffect 2s cubic-bezier(.08,.82,.17,1),waveEffect .4s cubic-bezier(.08,.82,.17,1);-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;content:"";pointer-events:none}@-webkit-keyframes waveEffect{to{-webkit-box-shadow:0 0 0 #1890ff;box-shadow:0 0 0 #1890ff;-webkit-box-shadow:0 0 0 6px var(--antd-wave-shadow-color);box-shadow:0 0 0 6px var(--antd-wave-shadow-color)}}@keyframes waveEffect{to{-webkit-box-shadow:0 0 0 #1890ff;box-shadow:0 0 0 #1890ff;-webkit-box-shadow:0 0 0 6px var(--antd-wave-shadow-color);box-shadow:0 0 0 6px var(--antd-wave-shadow-color)}}@-webkit-keyframes fadeEffect{to{opacity:0}}@keyframes fadeEffect{to{opacity:0}}.slide-up-appear,.slide-up-enter,.slide-up-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.slide-up-appear.slide-up-appear-active,.slide-up-enter.slide-up-enter-active{-webkit-animation-name:antSlideUpIn;animation-name:antSlideUpIn;-webkit-animation-play-state:running;animation-play-state:running}.slide-up-leave.slide-up-leave-active{-webkit-animation-name:antSlideUpOut;animation-name:antSlideUpOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.slide-up-appear,.slide-up-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.23,1,.32,1);animation-timing-function:cubic-bezier(.23,1,.32,1)}.slide-up-leave{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06)}.slide-down-appear,.slide-down-enter,.slide-down-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.slide-down-appear.slide-down-appear-active,.slide-down-enter.slide-down-enter-active{-webkit-animation-name:antSlideDownIn;animation-name:antSlideDownIn;-webkit-animation-play-state:running;animation-play-state:running}.slide-down-leave.slide-down-leave-active{-webkit-animation-name:antSlideDownOut;animation-name:antSlideDownOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.slide-down-appear,.slide-down-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.23,1,.32,1);animation-timing-function:cubic-bezier(.23,1,.32,1)}.slide-down-leave{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06)}.slide-left-appear,.slide-left-enter,.slide-left-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.slide-left-appear.slide-left-appear-active,.slide-left-enter.slide-left-enter-active{-webkit-animation-name:antSlideLeftIn;animation-name:antSlideLeftIn;-webkit-animation-play-state:running;animation-play-state:running}.slide-left-leave.slide-left-leave-active{-webkit-animation-name:antSlideLeftOut;animation-name:antSlideLeftOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.slide-left-appear,.slide-left-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.23,1,.32,1);animation-timing-function:cubic-bezier(.23,1,.32,1)}.slide-left-leave{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06)}.slide-right-appear,.slide-right-enter,.slide-right-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.slide-right-appear.slide-right-appear-active,.slide-right-enter.slide-right-enter-active{-webkit-animation-name:antSlideRightIn;animation-name:antSlideRightIn;-webkit-animation-play-state:running;animation-play-state:running}.slide-right-leave.slide-right-leave-active{-webkit-animation-name:antSlideRightOut;animation-name:antSlideRightOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.slide-right-appear,.slide-right-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.23,1,.32,1);animation-timing-function:cubic-bezier(.23,1,.32,1)}.slide-right-leave{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06)}@-webkit-keyframes antSlideUpIn{0%{-webkit-transform:scaleY(.8);transform:scaleY(.8);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}to{-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@keyframes antSlideUpIn{0%{-webkit-transform:scaleY(.8);transform:scaleY(.8);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}to{-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@-webkit-keyframes antSlideUpOut{0%{-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}to{-webkit-transform:scaleY(.8);transform:scaleY(.8);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}}@keyframes antSlideUpOut{0%{-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}to{-webkit-transform:scaleY(.8);transform:scaleY(.8);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}}@-webkit-keyframes antSlideDownIn{0%{-webkit-transform:scaleY(.8);transform:scaleY(.8);-webkit-transform-origin:100% 100%;transform-origin:100% 100%;opacity:0}to{-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:100% 100%;transform-origin:100% 100%;opacity:1}}@keyframes antSlideDownIn{0%{-webkit-transform:scaleY(.8);transform:scaleY(.8);-webkit-transform-origin:100% 100%;transform-origin:100% 100%;opacity:0}to{-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:100% 100%;transform-origin:100% 100%;opacity:1}}@-webkit-keyframes antSlideDownOut{0%{-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:100% 100%;transform-origin:100% 100%;opacity:1}to{-webkit-transform:scaleY(.8);transform:scaleY(.8);-webkit-transform-origin:100% 100%;transform-origin:100% 100%;opacity:0}}@keyframes antSlideDownOut{0%{-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:100% 100%;transform-origin:100% 100%;opacity:1}to{-webkit-transform:scaleY(.8);transform:scaleY(.8);-webkit-transform-origin:100% 100%;transform-origin:100% 100%;opacity:0}}@-webkit-keyframes antSlideLeftIn{0%{-webkit-transform:scaleX(.8);transform:scaleX(.8);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}to{-webkit-transform:scaleX(1);transform:scaleX(1);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@keyframes antSlideLeftIn{0%{-webkit-transform:scaleX(.8);transform:scaleX(.8);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}to{-webkit-transform:scaleX(1);transform:scaleX(1);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@-webkit-keyframes antSlideLeftOut{0%{-webkit-transform:scaleX(1);transform:scaleX(1);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}to{-webkit-transform:scaleX(.8);transform:scaleX(.8);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}}@keyframes antSlideLeftOut{0%{-webkit-transform:scaleX(1);transform:scaleX(1);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}to{-webkit-transform:scaleX(.8);transform:scaleX(.8);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}}@-webkit-keyframes antSlideRightIn{0%{-webkit-transform:scaleX(.8);transform:scaleX(.8);-webkit-transform-origin:100% 0;transform-origin:100% 0;opacity:0}to{-webkit-transform:scaleX(1);transform:scaleX(1);-webkit-transform-origin:100% 0;transform-origin:100% 0;opacity:1}}@keyframes antSlideRightIn{0%{-webkit-transform:scaleX(.8);transform:scaleX(.8);-webkit-transform-origin:100% 0;transform-origin:100% 0;opacity:0}to{-webkit-transform:scaleX(1);transform:scaleX(1);-webkit-transform-origin:100% 0;transform-origin:100% 0;opacity:1}}@-webkit-keyframes antSlideRightOut{0%{-webkit-transform:scaleX(1);transform:scaleX(1);-webkit-transform-origin:100% 0;transform-origin:100% 0;opacity:1}to{-webkit-transform:scaleX(.8);transform:scaleX(.8);-webkit-transform-origin:100% 0;transform-origin:100% 0;opacity:0}}@keyframes antSlideRightOut{0%{-webkit-transform:scaleX(1);transform:scaleX(1);-webkit-transform-origin:100% 0;transform-origin:100% 0;opacity:1}to{-webkit-transform:scaleX(.8);transform:scaleX(.8);-webkit-transform-origin:100% 0;transform-origin:100% 0;opacity:0}}.swing-appear,.swing-enter{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.swing-appear.swing-appear-active,.swing-enter.swing-enter-active{-webkit-animation-name:antSwingIn;animation-name:antSwingIn;-webkit-animation-play-state:running;animation-play-state:running}@-webkit-keyframes antSwingIn{0%,to{-webkit-transform:translateX(0);transform:translateX(0)}20%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}40%{-webkit-transform:translateX(10px);transform:translateX(10px)}60%{-webkit-transform:translateX(-5px);transform:translateX(-5px)}80%{-webkit-transform:translateX(5px);transform:translateX(5px)}}@keyframes antSwingIn{0%,to{-webkit-transform:translateX(0);transform:translateX(0)}20%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}40%{-webkit-transform:translateX(10px);transform:translateX(10px)}60%{-webkit-transform:translateX(-5px);transform:translateX(-5px)}80%{-webkit-transform:translateX(5px);transform:translateX(5px)}}.zoom-appear,.zoom-enter,.zoom-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.zoom-appear.zoom-appear-active,.zoom-enter.zoom-enter-active{-webkit-animation-name:antZoomIn;animation-name:antZoomIn;-webkit-animation-play-state:running;animation-play-state:running}.zoom-leave.zoom-leave-active{-webkit-animation-name:antZoomOut;animation-name:antZoomOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.zoom-appear,.zoom-enter{-webkit-transform:scale(0);transform:scale(0);opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.zoom-leave{-webkit-animation-timing-function:cubic-bezier(.78,.14,.15,.86);animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.zoom-big-appear,.zoom-big-enter,.zoom-big-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.zoom-big-appear.zoom-big-appear-active,.zoom-big-enter.zoom-big-enter-active{-webkit-animation-name:antZoomBigIn;animation-name:antZoomBigIn;-webkit-animation-play-state:running;animation-play-state:running}.zoom-big-leave.zoom-big-leave-active{-webkit-animation-name:antZoomBigOut;animation-name:antZoomBigOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.zoom-big-appear,.zoom-big-enter{-webkit-transform:scale(0);transform:scale(0);opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.zoom-big-leave{-webkit-animation-timing-function:cubic-bezier(.78,.14,.15,.86);animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.zoom-big-fast-appear,.zoom-big-fast-enter,.zoom-big-fast-leave{-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.zoom-big-fast-appear.zoom-big-fast-appear-active,.zoom-big-fast-enter.zoom-big-fast-enter-active{-webkit-animation-name:antZoomBigIn;animation-name:antZoomBigIn;-webkit-animation-play-state:running;animation-play-state:running}.zoom-big-fast-leave.zoom-big-fast-leave-active{-webkit-animation-name:antZoomBigOut;animation-name:antZoomBigOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.zoom-big-fast-appear,.zoom-big-fast-enter{-webkit-transform:scale(0);transform:scale(0);opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.zoom-big-fast-leave{-webkit-animation-timing-function:cubic-bezier(.78,.14,.15,.86);animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.zoom-up-appear,.zoom-up-enter,.zoom-up-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.zoom-up-appear.zoom-up-appear-active,.zoom-up-enter.zoom-up-enter-active{-webkit-animation-name:antZoomUpIn;animation-name:antZoomUpIn;-webkit-animation-play-state:running;animation-play-state:running}.zoom-up-leave.zoom-up-leave-active{-webkit-animation-name:antZoomUpOut;animation-name:antZoomUpOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.zoom-up-appear,.zoom-up-enter{-webkit-transform:scale(0);transform:scale(0);opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.zoom-up-leave{-webkit-animation-timing-function:cubic-bezier(.78,.14,.15,.86);animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.zoom-down-appear,.zoom-down-enter,.zoom-down-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.zoom-down-appear.zoom-down-appear-active,.zoom-down-enter.zoom-down-enter-active{-webkit-animation-name:antZoomDownIn;animation-name:antZoomDownIn;-webkit-animation-play-state:running;animation-play-state:running}.zoom-down-leave.zoom-down-leave-active{-webkit-animation-name:antZoomDownOut;animation-name:antZoomDownOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.zoom-down-appear,.zoom-down-enter{-webkit-transform:scale(0);transform:scale(0);opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.zoom-down-leave{-webkit-animation-timing-function:cubic-bezier(.78,.14,.15,.86);animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.zoom-left-appear,.zoom-left-enter,.zoom-left-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.zoom-left-appear.zoom-left-appear-active,.zoom-left-enter.zoom-left-enter-active{-webkit-animation-name:antZoomLeftIn;animation-name:antZoomLeftIn;-webkit-animation-play-state:running;animation-play-state:running}.zoom-left-leave.zoom-left-leave-active{-webkit-animation-name:antZoomLeftOut;animation-name:antZoomLeftOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.zoom-left-appear,.zoom-left-enter{-webkit-transform:scale(0);transform:scale(0);opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.zoom-left-leave{-webkit-animation-timing-function:cubic-bezier(.78,.14,.15,.86);animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.zoom-right-appear,.zoom-right-enter,.zoom-right-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.zoom-right-appear.zoom-right-appear-active,.zoom-right-enter.zoom-right-enter-active{-webkit-animation-name:antZoomRightIn;animation-name:antZoomRightIn;-webkit-animation-play-state:running;animation-play-state:running}.zoom-right-leave.zoom-right-leave-active{-webkit-animation-name:antZoomRightOut;animation-name:antZoomRightOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.zoom-right-appear,.zoom-right-enter{-webkit-transform:scale(0);transform:scale(0);opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.zoom-right-leave{-webkit-animation-timing-function:cubic-bezier(.78,.14,.15,.86);animation-timing-function:cubic-bezier(.78,.14,.15,.86)}@-webkit-keyframes antZoomIn{0%{-webkit-transform:scale(.2);transform:scale(.2);opacity:0}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes antZoomIn{0%{-webkit-transform:scale(.2);transform:scale(.2);opacity:0}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@-webkit-keyframes antZoomOut{0%{-webkit-transform:scale(1);transform:scale(1)}to{-webkit-transform:scale(.2);transform:scale(.2);opacity:0}}@keyframes antZoomOut{0%{-webkit-transform:scale(1);transform:scale(1)}to{-webkit-transform:scale(.2);transform:scale(.2);opacity:0}}@-webkit-keyframes antZoomBigIn{0%{-webkit-transform:scale(.8);transform:scale(.8);opacity:0}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes antZoomBigIn{0%{-webkit-transform:scale(.8);transform:scale(.8);opacity:0}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@-webkit-keyframes antZoomBigOut{0%{-webkit-transform:scale(1);transform:scale(1)}to{-webkit-transform:scale(.8);transform:scale(.8);opacity:0}}@keyframes antZoomBigOut{0%{-webkit-transform:scale(1);transform:scale(1)}to{-webkit-transform:scale(.8);transform:scale(.8);opacity:0}}@-webkit-keyframes antZoomUpIn{0%{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:50% 0;transform-origin:50% 0;opacity:0}to{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:50% 0;transform-origin:50% 0}}@keyframes antZoomUpIn{0%{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:50% 0;transform-origin:50% 0;opacity:0}to{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:50% 0;transform-origin:50% 0}}@-webkit-keyframes antZoomUpOut{0%{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:50% 0;transform-origin:50% 0}to{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:50% 0;transform-origin:50% 0;opacity:0}}@keyframes antZoomUpOut{0%{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:50% 0;transform-origin:50% 0}to{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:50% 0;transform-origin:50% 0;opacity:0}}@-webkit-keyframes antZoomLeftIn{0%{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:0 50%;transform-origin:0 50%;opacity:0}to{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:0 50%;transform-origin:0 50%}}@keyframes antZoomLeftIn{0%{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:0 50%;transform-origin:0 50%;opacity:0}to{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:0 50%;transform-origin:0 50%}}@-webkit-keyframes antZoomLeftOut{0%{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:0 50%;transform-origin:0 50%}to{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:0 50%;transform-origin:0 50%;opacity:0}}@keyframes antZoomLeftOut{0%{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:0 50%;transform-origin:0 50%}to{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:0 50%;transform-origin:0 50%;opacity:0}}@-webkit-keyframes antZoomRightIn{0%{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:100% 50%;transform-origin:100% 50%;opacity:0}to{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:100% 50%;transform-origin:100% 50%}}@keyframes antZoomRightIn{0%{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:100% 50%;transform-origin:100% 50%;opacity:0}to{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:100% 50%;transform-origin:100% 50%}}@-webkit-keyframes antZoomRightOut{0%{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:100% 50%;transform-origin:100% 50%}to{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:100% 50%;transform-origin:100% 50%;opacity:0}}@keyframes antZoomRightOut{0%{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:100% 50%;transform-origin:100% 50%}to{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:100% 50%;transform-origin:100% 50%;opacity:0}}@-webkit-keyframes antZoomDownIn{0%{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:50% 100%;transform-origin:50% 100%;opacity:0}to{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:50% 100%;transform-origin:50% 100%}}@keyframes antZoomDownIn{0%{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:50% 100%;transform-origin:50% 100%;opacity:0}to{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:50% 100%;transform-origin:50% 100%}}@-webkit-keyframes antZoomDownOut{0%{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:50% 100%;transform-origin:50% 100%}to{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:50% 100%;transform-origin:50% 100%;opacity:0}}@keyframes antZoomDownOut{0%{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:50% 100%;transform-origin:50% 100%}to{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:50% 100%;transform-origin:50% 100%;opacity:0}}.ant-motion-collapse-legacy{overflow:hidden}.ant-motion-collapse,.ant-motion-collapse-legacy-active{-webkit-transition:height .15s cubic-bezier(.645,.045,.355,1),opacity .15s cubic-bezier(.645,.045,.355,1)!important;transition:height .15s cubic-bezier(.645,.045,.355,1),opacity .15s cubic-bezier(.645,.045,.355,1)!important}.ant-motion-collapse{overflow:hidden}#nprogress{pointer-events:none}#nprogress .bar{position:fixed;top:0;left:0;z-index:1031;width:100%;height:2px;background:#1890ff}#nprogress .peg{position:absolute;right:0;display:block;width:100px;height:100%;opacity:1;-webkit-transform:rotate(3deg) translateY(-4px);transform:rotate(3deg) translateY(-4px);-webkit-box-shadow:0 0 10px #1890ff,0 0 5px #1890ff;box-shadow:0 0 10px #1890ff,0 0 5px #1890ff}#nprogress .spinner{position:fixed;top:15px;right:15px;z-index:1031;display:block}#nprogress .spinner-icon{width:18px;height:18px;-webkit-box-sizing:border-box;box-sizing:border-box;border:2px solid transparent;border-top-color:#1890ff;border-left-color:#1890ff;border-radius:50%;-webkit-animation:nprogress-spinner .4s linear infinite;animation:nprogress-spinner .4s linear infinite}.nprogress-custom-parent{position:relative;overflow:hidden}.nprogress-custom-parent #nprogress .bar,.nprogress-custom-parent #nprogress .spinner{position:absolute}@-webkit-keyframes nprogress-spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes nprogress-spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}#app,#root,body,html{height:100%}.colorWeak{-webkit-filter:invert(80%);filter:invert(80%)}.ant-layout.layout-basic{height:100vh;min-height:100vh}canvas{display:block}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility}ol,ul{list-style:none}.table-alert{margin-bottom:16px}.table-operator{margin-bottom:18px}.table-operator button{margin-right:8px}.table-page-search-wrapper .ant-form-inline .ant-form-item{display:-webkit-box;display:-ms-flexbox;display:flex;margin-right:0;margin-bottom:24px}.table-page-search-wrapper .ant-form-inline .ant-form-item .ant-form-item-control-wrapper{-webkit-box-flex:1;-ms-flex:1 1;flex:1 1;display:inline-block;vertical-align:middle}.table-page-search-wrapper .ant-form-inline .ant-form-item>.ant-form-item-label{width:auto;padding-right:8px;line-height:32px}.table-page-search-wrapper .ant-form-inline .ant-form-item .ant-form-item-control{height:32px;line-height:32px}.table-page-search-wrapper .table-page-search-submitButtons{display:block;margin-bottom:24px;white-space:nowrap}@media (max-width:480px){.ant-table{width:100%;overflow-x:auto}.ant-table-tbody>tr>td,.ant-table-tbody>tr>th,.ant-table-thead>tr>td,.ant-table-thead>tr>th{white-space:pre}.ant-table-tbody>tr>td>span,.ant-table-tbody>tr>th>span,.ant-table-thead>tr>td>span,.ant-table-thead>tr>th>span{display:block}}#webpack-dev-server-client-overlay,#webpack-hot-middleware-client-overlay,.webpack-dev-server-client-overlay{display:none!important;pointer-events:none!important;visibility:hidden!important}@media (max-width:768px){.ant-pro-global-header-logo{padding:0!important;padding-left:0!important;padding-right:0!important;padding-top:0!important;padding-bottom:0!important}}body.dark .ant-layout-sider,body.dark .ant-layout-sider-children,body.dark .ant-layout-sider-dark,body.dark .ant-menu-dark,body.dark .ant-menu-dark .ant-menu-inline.ant-menu-sub,body.dark .ant-menu.ant-menu-dark,body.dark .ant-pro-sider-menu-logo,body.dark .ant-pro-sider-menu-sider,body.dark .ant-pro-sider-menu-sider.ant-layout-sider-dark,body.dark aside.ant-layout-sider.ant-layout-sider-dark,body.dark ul.ant-menu.ant-menu-dark.ant-menu-root.ant-menu-inline,body.realdark .ant-layout-sider,body.realdark .ant-layout-sider-children,body.realdark .ant-layout-sider-dark,body.realdark .ant-menu-dark,body.realdark .ant-menu-dark .ant-menu-inline.ant-menu-sub,body.realdark .ant-menu.ant-menu-dark,body.realdark .ant-pro-sider-menu-logo,body.realdark .ant-pro-sider-menu-sider,body.realdark .ant-pro-sider-menu-sider.ant-layout-sider-dark,body.realdark aside.ant-layout-sider.ant-layout-sider-dark,body.realdark ul.ant-menu.ant-menu-dark.ant-menu-root.ant-menu-inline{background:#0a0a0a!important}body.dark .ant-menu-dark .ant-menu-sub,body.dark .ant-menu.ant-menu-dark .ant-menu-sub,body.realdark .ant-menu-dark .ant-menu-sub,body.realdark .ant-menu.ant-menu-dark .ant-menu-sub{background:#111!important}body.dark .ant-layout-sider-trigger,body.realdark .ant-layout-sider-trigger{border-top:1px solid #1c1c1c}body.dark .ant-layout-header,body.dark .ant-layout-sider-trigger,body.realdark .ant-layout-header,body.realdark .ant-layout-sider-trigger{background:#111!important;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important}body.dark .ant-layout-header,body.realdark .ant-layout-header{border-bottom:1px solid #1c1c1c!important}body.dark .ant-pro-global-header,body.realdark .ant-pro-global-header{background:#111!important;border-bottom:none!important;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important}body.dark .ant-layout,body.realdark .ant-layout{background:#0a0a0a!important}body.dark .ant-layout-content,body.dark .ant-pro-basicLayout-content,body.realdark .ant-layout-content,body.realdark .ant-pro-basicLayout-content{background:#141414!important}body.dark .ant-card,body.realdark .ant-card{background:#1c1c1c!important;border-color:#2a2a2a!important;color:hsla(0,0%,100%,.85)}body.dark .ant-card .ant-card-head,body.realdark .ant-card .ant-card-head{background:#1c1c1c!important;border-bottom-color:#2a2a2a!important;color:hsla(0,0%,100%,.85)!important}body.dark .ant-card .ant-card-body,body.realdark .ant-card .ant-card-body{color:hsla(0,0%,100%,.85)}body.dark .ant-table,body.realdark .ant-table{background:#1c1c1c!important;color:hsla(0,0%,100%,.85)}body.dark .ant-table .ant-table-thead>tr>th,body.realdark .ant-table .ant-table-thead>tr>th{background:#141414!important;border-bottom-color:#2a2a2a!important;color:hsla(0,0%,100%,.85)!important}body.dark .ant-table .ant-table-tbody>tr>td,body.realdark .ant-table .ant-table-tbody>tr>td{border-bottom-color:#2a2a2a!important;color:hsla(0,0%,100%,.85)}body.dark .ant-table .ant-table-tbody>tr:hover>td,body.realdark .ant-table .ant-table-tbody>tr:hover>td{background:#252525!important}body.dark .ant-table .ant-table-placeholder,body.realdark .ant-table .ant-table-placeholder{background:#1c1c1c!important;color:#666!important}body.dark .ant-pagination-item,body.realdark .ant-pagination-item{background:#1c1c1c!important;border-color:#2a2a2a!important}body.dark .ant-pagination-item a,body.realdark .ant-pagination-item a{color:hsla(0,0%,100%,.85)!important}body.dark .ant-pagination-item-active,body.realdark .ant-pagination-item-active{border-color:#1890ff!important}body.dark .ant-input,body.dark .ant-input-number,body.dark .ant-pagination-next .ant-pagination-item-link,body.dark .ant-pagination-prev .ant-pagination-item-link,body.dark .ant-select-selection,body.realdark .ant-input,body.realdark .ant-input-number,body.realdark .ant-pagination-next .ant-pagination-item-link,body.realdark .ant-pagination-prev .ant-pagination-item-link,body.realdark .ant-select-selection{background:#1c1c1c!important;border-color:#2a2a2a!important;color:hsla(0,0%,100%,.85)!important}body.dark .ant-input::-webkit-input-placeholder,body.realdark .ant-input::-webkit-input-placeholder{color:#555!important}body.dark .ant-input::-moz-placeholder,body.realdark .ant-input::-moz-placeholder{color:#555!important}body.dark .ant-input:-ms-input-placeholder,body.realdark .ant-input:-ms-input-placeholder{color:#555!important}body.dark .ant-input::-ms-input-placeholder,body.realdark .ant-input::-ms-input-placeholder{color:#555!important}body.dark .ant-input::placeholder,body.realdark .ant-input::placeholder{color:#555!important}body.dark .ant-form-item-label>label,body.realdark .ant-form-item-label>label{color:hsla(0,0%,100%,.85)!important}body.dark .ant-btn-default,body.realdark .ant-btn-default{background:#1c1c1c!important;border-color:#2a2a2a!important;color:hsla(0,0%,100%,.85)!important}body.dark .ant-btn-default:hover,body.realdark .ant-btn-default:hover{border-color:#1890ff!important;color:#1890ff!important}body.dark .ant-page-header,body.realdark .ant-page-header{background:transparent!important}body.dark .ant-breadcrumb-link,body.dark .ant-breadcrumb-separator,body.dark .ant-breadcrumb>span,body.realdark .ant-breadcrumb-link,body.realdark .ant-breadcrumb-separator,body.realdark .ant-breadcrumb>span{color:hsla(0,0%,100%,.45)!important}body.dark .ant-page-header-heading-title,body.realdark .ant-page-header-heading-title{color:hsla(0,0%,100%,.85)!important}body.dark .ant-tabs-bar,body.realdark .ant-tabs-bar{border-bottom-color:#2a2a2a!important}body.dark .ant-tabs-tab,body.realdark .ant-tabs-tab{color:#888!important}body.dark .ant-tabs-tab:hover,body.realdark .ant-tabs-tab:hover{color:#d4d4d4!important}body.dark .ant-tabs-tab-active,body.realdark .ant-tabs-tab-active{color:#1890ff!important}body.dark .ant-modal-content,body.realdark .ant-modal-content{background:#1c1c1c!important}body.dark .ant-modal-content .ant-modal-header,body.realdark .ant-modal-content .ant-modal-header{background:#1c1c1c!important;border-bottom-color:#2a2a2a!important}body.dark .ant-modal-content .ant-modal-body,body.dark .ant-modal-content .ant-modal-header .ant-modal-title,body.realdark .ant-modal-content .ant-modal-body,body.realdark .ant-modal-content .ant-modal-header .ant-modal-title{color:hsla(0,0%,100%,.85)!important}body.dark .ant-modal-content .ant-modal-footer,body.realdark .ant-modal-content .ant-modal-footer{border-top-color:#2a2a2a!important;background:#1c1c1c!important}body.dark .ant-modal-content .ant-modal-close-x,body.realdark .ant-modal-content .ant-modal-close-x{color:#888!important}body.dark .ant-select-dropdown,body.realdark .ant-select-dropdown{background:#1c1c1c!important}body.dark .ant-select-dropdown .ant-select-dropdown-menu-item,body.realdark .ant-select-dropdown .ant-select-dropdown-menu-item{color:hsla(0,0%,100%,.85)!important}body.dark .ant-select-dropdown .ant-select-dropdown-menu-item-active,body.dark .ant-select-dropdown .ant-select-dropdown-menu-item:hover,body.realdark .ant-select-dropdown .ant-select-dropdown-menu-item-active,body.realdark .ant-select-dropdown .ant-select-dropdown-menu-item:hover{background:#252525!important}body.dark .ant-select-dropdown .ant-select-dropdown-menu-item-selected,body.realdark .ant-select-dropdown .ant-select-dropdown-menu-item-selected{background:rgba(24,144,255,.1)!important;color:#1890ff!important}.basic-layout-wrapper.dark .ant-layout-header,.basic-layout-wrapper.realdark .ant-layout-header,body.dark .basic-layout-wrapper .ant-layout-header,body.realdark .basic-layout-wrapper .ant-layout-header{background:#111!important;background-color:#111!important;border-bottom:1px solid #1c1c1c!important;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.06)!important;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.06)!important}.basic-layout-wrapper.dark .ant-pro-global-header,.basic-layout-wrapper.realdark .ant-pro-global-header,body.dark .basic-layout-wrapper .ant-pro-global-header,body.realdark .basic-layout-wrapper .ant-pro-global-header{background:#111!important;background-color:#111!important;border-bottom:none!important;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.06)!important;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.06)!important}.basic-layout-wrapper.dark .ant-pro-basicLayout-content,.basic-layout-wrapper.dark .ant-pro-page-header-wrap,.basic-layout-wrapper.dark .ant-pro-page-header-wrap-children-content,.basic-layout-wrapper.realdark .ant-pro-basicLayout-content,.basic-layout-wrapper.realdark .ant-pro-page-header-wrap,.basic-layout-wrapper.realdark .ant-pro-page-header-wrap-children-content,body.dark .basic-layout-wrapper .ant-pro-page-header-wrap,body.dark .basic-layout-wrapper .ant-pro-page-header-wrap-children-content,body.realdark .basic-layout-wrapper .ant-pro-page-header-wrap,body.realdark .basic-layout-wrapper .ant-pro-page-header-wrap-children-content{background:#141414!important;background-color:#141414!important}.basic-layout-wrapper.dark .custom-menu-footer,.basic-layout-wrapper.realdark .custom-menu-footer,body.dark .basic-layout-wrapper .custom-menu-footer,body.realdark .basic-layout-wrapper .custom-menu-footer{background:#111!important;background-color:#111!important;border-top:1px solid #1c1c1c!important;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.06)!important;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.06)!important;color:hsla(0,0%,100%,.88)!important}.basic-layout-wrapper.dark .custom-menu-footer .menu-footer-content .footer-section,.basic-layout-wrapper.realdark .custom-menu-footer .menu-footer-content .footer-section{padding:4px 2px!important;margin-bottom:6px!important;border-radius:0!important;background:transparent!important;-webkit-box-shadow:none!important;box-shadow:none!important;opacity:1!important}.basic-layout-wrapper.dark .custom-menu-footer .menu-footer-content .footer-section:hover,.basic-layout-wrapper.realdark .custom-menu-footer .menu-footer-content .footer-section:hover{background:transparent!important}.basic-layout-wrapper.dark .custom-menu-footer .footer-section .section-title,.basic-layout-wrapper.realdark .custom-menu-footer .footer-section .section-title{color:hsla(0,0%,100%,.5)!important;opacity:1!important;text-transform:uppercase!important;letter-spacing:.5px!important;font-size:9px!important}.basic-layout-wrapper.dark .custom-menu-footer .footer-section .section-links,.basic-layout-wrapper.realdark .custom-menu-footer .footer-section .section-links{opacity:1!important}.basic-layout-wrapper.dark .custom-menu-footer .footer-section .section-links a,.basic-layout-wrapper.realdark .custom-menu-footer .footer-section .section-links a{color:hsla(0,0%,100%,.68)!important}.basic-layout-wrapper.dark .custom-menu-footer .footer-section.copyright,.basic-layout-wrapper.realdark .custom-menu-footer .footer-section.copyright{color:hsla(0,0%,100%,.45)!important;border-top-color:#1c1c1c!important;background:transparent!important;-webkit-box-shadow:none!important;box-shadow:none!important}.basic-layout-wrapper.dark .custom-menu-footer .footer-section.version,.basic-layout-wrapper.realdark .custom-menu-footer .footer-section.version{color:hsla(0,0%,100%,.35)!important}.basic-layout-wrapper.dark .custom-menu-footer .social-icon,.basic-layout-wrapper.realdark .custom-menu-footer .social-icon{background:hsla(0,0%,100%,.08)!important;color:hsla(0,0%,100%,.75)!important}.basic-layout-wrapper.light .custom-menu-footer{background:#fff!important;background-color:#fff!important;border-top-color:#e8e8e8!important;-webkit-box-shadow:none!important;box-shadow:none!important;color:rgba(0,0,0,.85)!important}.basic-layout-wrapper.light .custom-menu-footer .footer-section .section-links{opacity:.75}body.dark .ant-modal-wrap [class*=billing],body.dark .ant-modal-wrap [class*=billing] .ant-steps-item-description,body.dark .ant-modal-wrap [class*=billing] .ant-steps-item-title,body.dark .ant-modal-wrap [class*=checkout],body.dark .ant-modal-wrap [class*=payment],body.dark .ant-modal-wrap [class*=payment] .ant-steps-item-description,body.dark .ant-modal-wrap [class*=payment] .ant-steps-item-title,body.dark .ant-modal-wrap [class*=recharge],body.dark .ant-modal-wrap [class*=usdt],body.dark .ant-modal-wrap [class*=usdt] .ant-steps-item-description,body.dark .ant-modal-wrap [class*=usdt] .ant-steps-item-title,body.realdark .ant-modal-wrap [class*=billing],body.realdark .ant-modal-wrap [class*=billing] .ant-steps-item-description,body.realdark .ant-modal-wrap [class*=billing] .ant-steps-item-title,body.realdark .ant-modal-wrap [class*=checkout],body.realdark .ant-modal-wrap [class*=payment],body.realdark .ant-modal-wrap [class*=payment] .ant-steps-item-description,body.realdark .ant-modal-wrap [class*=payment] .ant-steps-item-title,body.realdark .ant-modal-wrap [class*=recharge],body.realdark .ant-modal-wrap [class*=usdt],body.realdark .ant-modal-wrap [class*=usdt] .ant-steps-item-description,body.realdark .ant-modal-wrap [class*=usdt] .ant-steps-item-title{color:#d4d4d4!important}body.dark .ant-modal-wrap [class*=billing] .ant-descriptions-item-content,body.dark .ant-modal-wrap [class*=billing] .ant-statistic-content,body.dark .ant-modal-wrap [class*=payment] .ant-descriptions-item-content,body.dark .ant-modal-wrap [class*=payment] .ant-statistic-content,body.dark .ant-modal-wrap [class*=usdt] .ant-descriptions-item-content,body.dark .ant-modal-wrap [class*=usdt] .ant-statistic-content,body.realdark .ant-modal-wrap [class*=billing] .ant-descriptions-item-content,body.realdark .ant-modal-wrap [class*=billing] .ant-statistic-content,body.realdark .ant-modal-wrap [class*=payment] .ant-descriptions-item-content,body.realdark .ant-modal-wrap [class*=payment] .ant-statistic-content,body.realdark .ant-modal-wrap [class*=usdt] .ant-descriptions-item-content,body.realdark .ant-modal-wrap [class*=usdt] .ant-statistic-content{color:#e5e5e5!important} \ No newline at end of file +.ant-pro-header-menu .anticon{margin-right:8px}.ant-pro-header-menu .ant-dropdown-menu-item{min-width:160px}.ant-pro-drop-down{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;height:64px;line-height:64px;padding:0 12px;vertical-align:top;cursor:pointer;-webkit-transition:all .3s;transition:all .3s}.ant-pro-drop-down:hover{background:rgba(0,0,0,.04)}.ant-pro-drop-down>i{font-size:16px!important;-webkit-transform:none!important;transform:none!important}.ant-pro-drop-down>i svg{position:relative;top:-1px}@media (max-width:768px){.ant-pro-drop-down{padding:0 8px}}#userLayout.user-layout-wrapper[data-v-7ae30672]{height:100%}#userLayout.user-layout-wrapper.mobile .container .main[data-v-7ae30672]{max-width:368px;width:98%}#userLayout.user-layout-wrapper .container[data-v-7ae30672]{width:100%;min-height:100%;background:#f0f2f5 url(/img/background.ed05d5bd.svg) no-repeat 50%;background-size:100%;position:relative}#userLayout.user-layout-wrapper .container .fx-layer[data-v-7ae30672]{position:absolute;inset:0;overflow:hidden;z-index:0;pointer-events:none}#userLayout.user-layout-wrapper .container .fx-layer .fx-gradient[data-v-7ae30672]{position:absolute;inset:-20% -20% -20% -20%;background:radial-gradient(1200px 600px at 10% 10%,rgba(78,161,255,.18),transparent 60%),radial-gradient(900px 500px at 90% 20%,rgba(127,92,255,.18),transparent 60%),radial-gradient(800px 500px at 30% 90%,rgba(0,210,170,.14),transparent 60%);-webkit-filter:blur(20px);filter:blur(20px);-webkit-animation:fxFloat-7ae30672 18s ease-in-out infinite alternate;animation:fxFloat-7ae30672 18s ease-in-out infinite alternate;-webkit-transform:translateZ(0);transform:translateZ(0)}#userLayout.user-layout-wrapper .container .fx-layer .fx-grid[data-v-7ae30672]{position:absolute;inset:0;background-image:linear-gradient(hsla(0,0%,100%,.06) 1px,transparent 0),linear-gradient(90deg,hsla(0,0%,100%,.06) 1px,transparent 0);background-size:44px 44px,44px 44px;background-position:0 0,0 0;mix-blend-mode:overlay;-webkit-animation:gridDrift-7ae30672 40s linear infinite;animation:gridDrift-7ae30672 40s linear infinite}#userLayout.user-layout-wrapper .container .user-layout-lang[data-v-7ae30672]{width:100%;height:40px;line-height:44px;text-align:right}#userLayout.user-layout-wrapper .container .user-layout-lang .select-lang-trigger[data-v-7ae30672]{cursor:pointer;padding:12px;margin-right:24px;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;font-size:18px;vertical-align:middle}#userLayout.user-layout-wrapper .container .user-layout-content[data-v-7ae30672]{padding:32px 0 24px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-height:calc(100vh - 40px);position:relative;z-index:1}#userLayout.user-layout-wrapper .container .user-layout-content .top[data-v-7ae30672]{text-align:center}#userLayout.user-layout-wrapper .container .user-layout-content .top .header[data-v-7ae30672]{height:56px;line-height:56px}#userLayout.user-layout-wrapper .container .user-layout-content .top .header .badge[data-v-7ae30672]{position:absolute;display:inline-block;line-height:1;vertical-align:middle;margin-left:-12px;margin-top:-10px;opacity:.8}#userLayout.user-layout-wrapper .container .user-layout-content .top .header .logo[data-v-7ae30672]{width:342px;max-width:42vw;height:auto;vertical-align:middle;margin-right:0;border-style:none}#userLayout.user-layout-wrapper .container .user-layout-content .top .header .title[data-v-7ae30672]{font-size:33px;color:rgba(0,0,0,.85);font-family:Avenir,Helvetica Neue,Arial,Helvetica,sans-serif;font-weight:600;position:relative;top:2px}#userLayout.user-layout-wrapper .container .user-layout-content .top .desc[data-v-7ae30672]{font-size:14px;color:rgba(0,0,0,.45);margin-top:12px;margin-bottom:40px}#userLayout.user-layout-wrapper .container .user-layout-content .main[data-v-7ae30672]{min-width:320px;width:480px;margin:0 auto}#userLayout.user-layout-wrapper .container .user-layout-content .main-content[data-v-7ae30672]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}#userLayout.user-layout-wrapper .container .user-layout-content .footer[data-v-7ae30672]{width:100%;padding:0 16px;margin-top:auto;margin-bottom:16px;text-align:center}#userLayout.user-layout-wrapper .container .user-layout-content .footer .links[data-v-7ae30672]{margin-bottom:8px;font-size:14px}#userLayout.user-layout-wrapper .container .user-layout-content .footer .links a[data-v-7ae30672]{color:rgba(0,0,0,.45);-webkit-transition:all .3s;transition:all .3s}#userLayout.user-layout-wrapper .container .user-layout-content .footer .links a[data-v-7ae30672]:not(:last-child){margin-right:40px}#userLayout.user-layout-wrapper .container .user-layout-content .footer .copyright[data-v-7ae30672]{color:rgba(0,0,0,.45);font-size:14px}#userLayout.user-layout-wrapper .container a[data-v-7ae30672]{text-decoration:none}@media (max-width:576px){#userLayout.user-layout-wrapper .container .user-layout-content .top .header .logo[data-v-7ae30672]{width:208px;max-width:70vw;margin-top:8px}#userLayout.user-layout-wrapper .container .user-layout-content .main[data-v-7ae30672]{width:92vw}}@-webkit-keyframes fxFloat-7ae30672{0%{-webkit-transform:translate3d(-2%,-1%,0) scale(1);transform:translate3d(-2%,-1%,0) scale(1)}50%{-webkit-transform:translate3d(1%,2%,0) scale(1.02);transform:translate3d(1%,2%,0) scale(1.02)}to{-webkit-transform:translate3d(3%,-2%,0) scale(1.04);transform:translate3d(3%,-2%,0) scale(1.04)}}@keyframes fxFloat-7ae30672{0%{-webkit-transform:translate3d(-2%,-1%,0) scale(1);transform:translate3d(-2%,-1%,0) scale(1)}50%{-webkit-transform:translate3d(1%,2%,0) scale(1.02);transform:translate3d(1%,2%,0) scale(1.02)}to{-webkit-transform:translate3d(3%,-2%,0) scale(1.04);transform:translate3d(3%,-2%,0) scale(1.04)}}@-webkit-keyframes gridDrift-7ae30672{0%{background-position:0 0,0 0;-webkit-transform:rotate(0deg);transform:rotate(0deg)}50%{background-position:22px 22px,22px 22px}to{background-position:44px 44px,44px 44px;-webkit-transform:rotate(3.6deg);transform:rotate(3.6deg)}}@keyframes gridDrift-7ae30672{0%{background-position:0 0,0 0;-webkit-transform:rotate(0deg);transform:rotate(0deg)}50%{background-position:22px 22px,22px 22px}to{background-position:44px 44px,44px 44px;-webkit-transform:rotate(3.6deg);transform:rotate(3.6deg)}}.ant-pro-drop-down .action{margin-right:8px}.ant-pro-drop-down .ant-dropdown-menu-item{min-width:160px}.ant-layout.dark .ant-dropdown-menu,.ant-layout.realdark .ant-dropdown-menu,.ant-pro-layout.dark .ant-dropdown-menu,.ant-pro-layout.realdark .ant-dropdown-menu,body.dark .ant-dropdown-menu,body.realdark .ant-dropdown-menu{background-color:#1f1f1f;border:1px solid #303030;-webkit-box-shadow:0 4px 12px rgba(0,0,0,.3);box-shadow:0 4px 12px rgba(0,0,0,.3)}.ant-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item,.ant-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item,.ant-pro-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item,.ant-pro-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item,body.dark .ant-dropdown-menu .ant-dropdown-menu-item,body.realdark .ant-dropdown-menu .ant-dropdown-menu-item{color:hsla(0,0%,100%,.85)}.ant-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item.ant-dropdown-menu-item-selected,.ant-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item:hover,.ant-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item.ant-dropdown-menu-item-selected,.ant-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item:hover,.ant-pro-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item.ant-dropdown-menu-item-selected,.ant-pro-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item:hover,.ant-pro-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item.ant-dropdown-menu-item-selected,.ant-pro-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item:hover,body.dark .ant-dropdown-menu .ant-dropdown-menu-item.ant-dropdown-menu-item-selected,body.dark .ant-dropdown-menu .ant-dropdown-menu-item:hover,body.realdark .ant-dropdown-menu .ant-dropdown-menu-item.ant-dropdown-menu-item-selected,body.realdark .ant-dropdown-menu .ant-dropdown-menu-item:hover{background-color:#262626;color:#1890ff}.ant-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item .anticon,.ant-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item .anticon,.ant-pro-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item .anticon,.ant-pro-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item .anticon,body.dark .ant-dropdown-menu .ant-dropdown-menu-item .anticon,body.realdark .ant-dropdown-menu .ant-dropdown-menu-item .anticon{color:hsla(0,0%,100%,.85)}.ant-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item-divider,.ant-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item-divider,.ant-pro-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item-divider,.ant-pro-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item-divider,body.dark .ant-dropdown-menu .ant-dropdown-menu-item-divider,body.realdark .ant-dropdown-menu .ant-dropdown-menu-item-divider{background-color:#303030}.notice-icon-wrapper[data-v-7e99442e]{display:inline-block;vertical-align:top}.header-notice[data-v-7e99442e]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;height:64px;line-height:64px;-webkit-transition:all .3s;transition:all .3s;cursor:pointer;padding:0 12px;vertical-align:top}.header-notice[data-v-7e99442e]:hover{background:rgba(0,0,0,.04)}.header-notice span[data-v-7e99442e]{vertical-align:initial}@media (max-width:768px){.header-notice[data-v-7e99442e]{padding:0 8px}}.notice-header[data-v-7e99442e]{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;padding:12px 16px;border-bottom:1px solid #f0f0f0}.notice-header .notice-title[data-v-7e99442e]{font-weight:500;font-size:14px}.notice-header .notice-action[data-v-7e99442e]{font-size:12px;color:#1890ff;cursor:pointer}.notice-header .notice-action[data-v-7e99442e]:hover{color:#40a9ff}.notice-list[data-v-7e99442e]{max-height:400px;overflow-y:auto}.notice-item[data-v-7e99442e]{display:-webkit-box;display:-ms-flexbox;display:flex;padding:12px 16px;cursor:pointer;-webkit-transition:background .3s;transition:background .3s}.notice-item[data-v-7e99442e]:hover{background:#f5f5f5}.notice-item.unread[data-v-7e99442e]{background:#e6f7ff}.notice-item.unread[data-v-7e99442e]:hover{background:#bae7ff}.notice-item .notice-item-icon[data-v-7e99442e]{-ms-flex-negative:0;flex-shrink:0;width:32px;height:32px;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;background:#f0f0f0;border-radius:50%;margin-right:12px;font-size:16px}.notice-item .notice-item-content[data-v-7e99442e]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.notice-item .notice-item-content .notice-item-title[data-v-7e99442e]{font-weight:500;font-size:13px;color:rgba(0,0,0,.85);margin-bottom:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.notice-item .notice-item-content .notice-item-desc[data-v-7e99442e]{font-size:12px;color:rgba(0,0,0,.45);line-height:1.5;margin-bottom:4px}.notice-item .notice-item-content .notice-item-time[data-v-7e99442e]{font-size:11px;color:rgba(0,0,0,.25)}.notice-empty[data-v-7e99442e]{padding:48px 0}.notice-footer[data-v-7e99442e]{text-align:center;padding:12px;border-top:1px solid #f0f0f0}.notice-footer a[data-v-7e99442e]{color:#1890ff;cursor:pointer}.notice-footer a[data-v-7e99442e]:hover{color:#40a9ff}.notice-detail .notice-detail-meta[data-v-7e99442e]{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}.notice-detail .notice-detail-meta .notice-detail-type[data-v-7e99442e]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.notice-detail .notice-detail-meta .notice-detail-type .type-label[data-v-7e99442e]{font-size:14px;color:rgba(0,0,0,.65)}.notice-detail .notice-detail-meta .notice-detail-time[data-v-7e99442e]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;font-size:13px;color:rgba(0,0,0,.45)}.notice-detail .notice-detail-content .message-body[data-v-7e99442e]{font-size:14px;line-height:1.8;color:rgba(0,0,0,.85);max-height:300px;overflow-y:auto;padding:8px 0}.notice-detail .notice-detail-content .message-body h2[data-v-7e99442e],.notice-detail .notice-detail-content .message-body h3[data-v-7e99442e],.notice-detail .notice-detail-content .message-body h4[data-v-7e99442e]{margin:12px 0 8px;font-weight:600}.notice-detail .notice-detail-content .message-body h2[data-v-7e99442e]{font-size:18px}.notice-detail .notice-detail-content .message-body h3[data-v-7e99442e]{font-size:16px}.notice-detail .notice-detail-content .message-body h4[data-v-7e99442e]{font-size:14px}.notice-detail .notice-detail-content .message-body li[data-v-7e99442e]{margin-left:20px;list-style:disc}.notice-detail .notice-detail-content .message-body strong[data-v-7e99442e]{font-weight:600}.notice-detail .notice-detail-content.html-report .message-body[data-v-7e99442e]{max-height:70vh;padding:0;margin:-16px -24px;overflow-y:auto}.notice-detail .notice-detail-extra .extra-title[data-v-7e99442e]{font-weight:500;font-size:14px;margin-bottom:12px;color:rgba(0,0,0,.85)}.notice-detail .notice-detail-extra .extra-item[data-v-7e99442e]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;margin-bottom:8px;font-size:13px}.notice-detail .notice-detail-extra .extra-item .label[data-v-7e99442e]{-ms-flex-negative:0;flex-shrink:0;color:rgba(0,0,0,.45);margin-right:8px}.notice-detail .notice-detail-extra .extra-item .value[data-v-7e99442e]{color:rgba(0,0,0,.85);word-break:break-word}.notice-detail .notice-detail-extra .extra-item.decision[data-v-7e99442e]{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.notice-detail .notice-detail-extra .extra-item.decision .confidence[data-v-7e99442e]{margin-left:8px;color:rgba(0,0,0,.45);font-size:12px}.notice-detail .notice-detail-actions[data-v-7e99442e]{margin-top:24px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;gap:12px}.header-notice-wrapper{top:50px!important}.header-notice-wrapper .ant-popover-inner-content{padding:0}.notice-detail-modal .ant-modal-header{border-bottom:1px solid #f0f0f0}.notice-detail-modal .ant-modal-body{padding:16px 24px}.notice-detail-modal.html-report-modal .ant-modal-body{padding:0}.ant-layout.dark .header-notice-wrapper .ant-popover-inner,.ant-layout.realdark .header-notice-wrapper .ant-popover-inner,body.dark .header-notice-wrapper .ant-popover-inner,body.realdark .header-notice-wrapper .ant-popover-inner{background:#1f1f1f}.ant-layout.dark .header-notice-wrapper .ant-popover-arrow,.ant-layout.realdark .header-notice-wrapper .ant-popover-arrow,body.dark .header-notice-wrapper .ant-popover-arrow,body.realdark .header-notice-wrapper .ant-popover-arrow{border-color:#1f1f1f}.ant-layout.dark .header-notice-wrapper .notice-header,.ant-layout.realdark .header-notice-wrapper .notice-header,body.dark .header-notice-wrapper .notice-header,body.realdark .header-notice-wrapper .notice-header{border-color:#303030}.ant-layout.dark .header-notice-wrapper .notice-header .notice-title,.ant-layout.realdark .header-notice-wrapper .notice-header .notice-title,body.dark .header-notice-wrapper .notice-header .notice-title,body.realdark .header-notice-wrapper .notice-header .notice-title{color:hsla(0,0%,100%,.85)}.ant-layout.dark .header-notice-wrapper .notice-item:hover,.ant-layout.realdark .header-notice-wrapper .notice-item:hover,body.dark .header-notice-wrapper .notice-item:hover,body.realdark .header-notice-wrapper .notice-item:hover{background:#303030}.ant-layout.dark .header-notice-wrapper .notice-item.unread,.ant-layout.realdark .header-notice-wrapper .notice-item.unread,body.dark .header-notice-wrapper .notice-item.unread,body.realdark .header-notice-wrapper .notice-item.unread{background:rgba(24,144,255,.15)}.ant-layout.dark .header-notice-wrapper .notice-item.unread:hover,.ant-layout.realdark .header-notice-wrapper .notice-item.unread:hover,body.dark .header-notice-wrapper .notice-item.unread:hover,body.realdark .header-notice-wrapper .notice-item.unread:hover{background:rgba(24,144,255,.25)}.ant-layout.dark .header-notice-wrapper .notice-item .notice-item-icon,.ant-layout.realdark .header-notice-wrapper .notice-item .notice-item-icon,body.dark .header-notice-wrapper .notice-item .notice-item-icon,body.realdark .header-notice-wrapper .notice-item .notice-item-icon{background:#303030}.ant-layout.dark .header-notice-wrapper .notice-item .notice-item-content .notice-item-title,.ant-layout.realdark .header-notice-wrapper .notice-item .notice-item-content .notice-item-title,body.dark .header-notice-wrapper .notice-item .notice-item-content .notice-item-title,body.realdark .header-notice-wrapper .notice-item .notice-item-content .notice-item-title{color:hsla(0,0%,100%,.85)}.ant-layout.dark .header-notice-wrapper .notice-item .notice-item-content .notice-item-desc,.ant-layout.realdark .header-notice-wrapper .notice-item .notice-item-content .notice-item-desc,body.dark .header-notice-wrapper .notice-item .notice-item-content .notice-item-desc,body.realdark .header-notice-wrapper .notice-item .notice-item-content .notice-item-desc{color:hsla(0,0%,100%,.45)}.ant-layout.dark .header-notice-wrapper .notice-item .notice-item-content .notice-item-time,.ant-layout.realdark .header-notice-wrapper .notice-item .notice-item-content .notice-item-time,body.dark .header-notice-wrapper .notice-item .notice-item-content .notice-item-time,body.realdark .header-notice-wrapper .notice-item .notice-item-content .notice-item-time{color:hsla(0,0%,100%,.25)}.ant-layout.dark .header-notice-wrapper .notice-footer,.ant-layout.realdark .header-notice-wrapper .notice-footer,body.dark .header-notice-wrapper .notice-footer,body.realdark .header-notice-wrapper .notice-footer{border-color:#303030}.ant-layout.dark .header-notice-wrapper .ant-empty-description,.ant-layout.realdark .header-notice-wrapper .ant-empty-description,body.dark .header-notice-wrapper .ant-empty-description,body.realdark .header-notice-wrapper .ant-empty-description{color:hsla(0,0%,100%,.45)}.ant-layout.dark .notice-detail-modal .ant-modal-content,.ant-layout.realdark .notice-detail-modal .ant-modal-content,body.dark .notice-detail-modal .ant-modal-content,body.realdark .notice-detail-modal .ant-modal-content{background:#1f1f1f}.ant-layout.dark .notice-detail-modal .ant-modal-header,.ant-layout.realdark .notice-detail-modal .ant-modal-header,body.dark .notice-detail-modal .ant-modal-header,body.realdark .notice-detail-modal .ant-modal-header{background:#1f1f1f;border-color:#303030}.ant-layout.dark .notice-detail-modal .ant-modal-header .ant-modal-title,.ant-layout.realdark .notice-detail-modal .ant-modal-header .ant-modal-title,body.dark .notice-detail-modal .ant-modal-header .ant-modal-title,body.realdark .notice-detail-modal .ant-modal-header .ant-modal-title{color:hsla(0,0%,100%,.85)}.ant-layout.dark .notice-detail-modal .ant-modal-close-x,.ant-layout.realdark .notice-detail-modal .ant-modal-close-x,body.dark .notice-detail-modal .ant-modal-close-x,body.realdark .notice-detail-modal .ant-modal-close-x{color:hsla(0,0%,100%,.45)}.ant-layout.dark .notice-detail-modal .ant-divider,.ant-layout.realdark .notice-detail-modal .ant-divider,body.dark .notice-detail-modal .ant-divider,body.realdark .notice-detail-modal .ant-divider{border-color:#303030}.ant-layout.dark .notice-detail-modal .notice-detail .notice-detail-meta .notice-detail-type .type-label,.ant-layout.realdark .notice-detail-modal .notice-detail .notice-detail-meta .notice-detail-type .type-label,body.dark .notice-detail-modal .notice-detail .notice-detail-meta .notice-detail-type .type-label,body.realdark .notice-detail-modal .notice-detail .notice-detail-meta .notice-detail-type .type-label{color:hsla(0,0%,100%,.65)}.ant-layout.dark .notice-detail-modal .notice-detail .notice-detail-meta .notice-detail-time,.ant-layout.realdark .notice-detail-modal .notice-detail .notice-detail-meta .notice-detail-time,body.dark .notice-detail-modal .notice-detail .notice-detail-meta .notice-detail-time,body.realdark .notice-detail-modal .notice-detail .notice-detail-meta .notice-detail-time{color:hsla(0,0%,100%,.45)}.ant-layout.dark .notice-detail-modal .notice-detail .notice-detail-content .message-body,.ant-layout.dark .notice-detail-modal .notice-detail .notice-detail-extra .extra-title,.ant-layout.realdark .notice-detail-modal .notice-detail .notice-detail-content .message-body,.ant-layout.realdark .notice-detail-modal .notice-detail .notice-detail-extra .extra-title,body.dark .notice-detail-modal .notice-detail .notice-detail-content .message-body,body.dark .notice-detail-modal .notice-detail .notice-detail-extra .extra-title,body.realdark .notice-detail-modal .notice-detail .notice-detail-content .message-body,body.realdark .notice-detail-modal .notice-detail .notice-detail-extra .extra-title{color:hsla(0,0%,100%,.85)}.ant-layout.dark .notice-detail-modal .notice-detail .notice-detail-extra .extra-item .label,.ant-layout.realdark .notice-detail-modal .notice-detail .notice-detail-extra .extra-item .label,body.dark .notice-detail-modal .notice-detail .notice-detail-extra .extra-item .label,body.realdark .notice-detail-modal .notice-detail .notice-detail-extra .extra-item .label{color:hsla(0,0%,100%,.45)}.ant-layout.dark .notice-detail-modal .notice-detail .notice-detail-extra .extra-item .value,.ant-layout.realdark .notice-detail-modal .notice-detail .notice-detail-extra .extra-item .value,body.dark .notice-detail-modal .notice-detail .notice-detail-extra .extra-item .value,body.realdark .notice-detail-modal .notice-detail .notice-detail-extra .extra-item .value{color:hsla(0,0%,100%,.85)}.ant-layout.dark .notice-detail-modal .notice-detail .notice-detail-extra .extra-item .confidence,.ant-layout.realdark .notice-detail-modal .notice-detail .notice-detail-extra .extra-item .confidence,body.dark .notice-detail-modal .notice-detail .notice-detail-extra .extra-item .confidence,body.realdark .notice-detail-modal .notice-detail .notice-detail-extra .extra-item .confidence{color:hsla(0,0%,100%,.45)}.ant-pro-global-header-index-right{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-negative:0;flex-shrink:0}.ant-pro-global-header-index-right .ant-pro-global-header-index-action{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;height:64px;padding:0 12px;color:rgba(0,0,0,.65);-webkit-transition:all .3s;transition:all .3s;cursor:pointer;vertical-align:top}.ant-pro-global-header-index-right .ant-pro-global-header-index-action:hover{color:#1890ff;background:rgba(0,0,0,.04)}@media (max-width:768px){.ant-pro-global-header-index-right .ant-pro-account-avatar,.ant-pro-global-header-index-right .ant-pro-drop-down,.ant-pro-global-header-index-right .ant-pro-global-header-index-action{padding:0 8px}}.ant-layout.dark .ant-pro-global-header-index-right,.ant-layout.dark .ant-pro-global-header-index-right *,.ant-layout.dark .ant-pro-global-header-index-right .ant-pro-global-header-index-action,.ant-layout.realdark .ant-pro-global-header-index-right,.ant-layout.realdark .ant-pro-global-header-index-right *,.ant-layout.realdark .ant-pro-global-header-index-right .ant-pro-global-header-index-action,.ant-pro-layout.dark .ant-pro-global-header-index-right,.ant-pro-layout.dark .ant-pro-global-header-index-right *,.ant-pro-layout.dark .ant-pro-global-header-index-right .ant-pro-global-header-index-action,.ant-pro-layout.realdark .ant-pro-global-header-index-right,.ant-pro-layout.realdark .ant-pro-global-header-index-right *,.ant-pro-layout.realdark .ant-pro-global-header-index-right .ant-pro-global-header-index-action,body.dark .ant-pro-global-header-index-right,body.dark .ant-pro-global-header-index-right *,body.dark .ant-pro-global-header-index-right .ant-pro-global-header-index-action,body.realdark .ant-pro-global-header-index-right,body.realdark .ant-pro-global-header-index-right *,body.realdark .ant-pro-global-header-index-right .ant-pro-global-header-index-action{color:hsla(0,0%,100%,.85)!important}.ant-layout.dark .ant-pro-global-header-index-right .ant-pro-global-header-index-action:hover,.ant-layout.realdark .ant-pro-global-header-index-right .ant-pro-global-header-index-action:hover,.ant-pro-layout.dark .ant-pro-global-header-index-right .ant-pro-global-header-index-action:hover,.ant-pro-layout.realdark .ant-pro-global-header-index-right .ant-pro-global-header-index-action:hover,body.dark .ant-pro-global-header-index-right .ant-pro-global-header-index-action:hover,body.realdark .ant-pro-global-header-index-right .ant-pro-global-header-index-action:hover{color:#1890ff!important;background:hsla(0,0%,100%,.08)!important}.ant-layout.dark .ant-pro-global-header-index-right .ant-pro-account-avatar .antd-pro-global-header-index-avatar,.ant-layout.realdark .ant-pro-global-header-index-right .ant-pro-account-avatar .antd-pro-global-header-index-avatar,.ant-pro-layout.dark .ant-pro-global-header-index-right .ant-pro-account-avatar .antd-pro-global-header-index-avatar,.ant-pro-layout.realdark .ant-pro-global-header-index-right .ant-pro-account-avatar .antd-pro-global-header-index-avatar,body.dark .ant-pro-global-header-index-right .ant-pro-account-avatar .antd-pro-global-header-index-avatar,body.realdark .ant-pro-global-header-index-right .ant-pro-account-avatar .antd-pro-global-header-index-avatar{background:hsla(0,0%,100%,.25)!important}.ant-layout.dark .ant-pro-global-header-index-right .ant-dropdown-trigger,.ant-layout.dark .ant-pro-global-header-index-right .ant-pro-drop-down,.ant-layout.realdark .ant-pro-global-header-index-right .ant-dropdown-trigger,.ant-layout.realdark .ant-pro-global-header-index-right .ant-pro-drop-down,.ant-pro-layout.dark .ant-pro-global-header-index-right .ant-dropdown-trigger,.ant-pro-layout.dark .ant-pro-global-header-index-right .ant-pro-drop-down,.ant-pro-layout.realdark .ant-pro-global-header-index-right .ant-dropdown-trigger,.ant-pro-layout.realdark .ant-pro-global-header-index-right .ant-pro-drop-down,body.dark .ant-pro-global-header-index-right .ant-dropdown-trigger,body.dark .ant-pro-global-header-index-right .ant-pro-drop-down,body.realdark .ant-pro-global-header-index-right .ant-dropdown-trigger,body.realdark .ant-pro-global-header-index-right .ant-pro-drop-down{color:hsla(0,0%,100%,.85)!important}.ant-layout.dark .ant-pro-global-header-index-right .ant-dropdown-trigger:hover,.ant-layout.dark .ant-pro-global-header-index-right .ant-pro-drop-down:hover,.ant-layout.realdark .ant-pro-global-header-index-right .ant-dropdown-trigger:hover,.ant-layout.realdark .ant-pro-global-header-index-right .ant-pro-drop-down:hover,.ant-pro-layout.dark .ant-pro-global-header-index-right .ant-dropdown-trigger:hover,.ant-pro-layout.dark .ant-pro-global-header-index-right .ant-pro-drop-down:hover,.ant-pro-layout.realdark .ant-pro-global-header-index-right .ant-dropdown-trigger:hover,.ant-pro-layout.realdark .ant-pro-global-header-index-right .ant-pro-drop-down:hover,body.dark .ant-pro-global-header-index-right .ant-dropdown-trigger:hover,body.dark .ant-pro-global-header-index-right .ant-pro-drop-down:hover,body.realdark .ant-pro-global-header-index-right .ant-dropdown-trigger:hover,body.realdark .ant-pro-global-header-index-right .ant-pro-drop-down:hover{color:#1890ff!important;background:hsla(0,0%,100%,.08)!important}.ant-layout.dark .ant-pro-global-header-index-right .ant-dropdown-trigger .anticon,.ant-layout.dark .ant-pro-global-header-index-right .ant-pro-drop-down .anticon,.ant-layout.realdark .ant-pro-global-header-index-right .ant-dropdown-trigger .anticon,.ant-layout.realdark .ant-pro-global-header-index-right .ant-pro-drop-down .anticon,.ant-pro-layout.dark .ant-pro-global-header-index-right .ant-dropdown-trigger .anticon,.ant-pro-layout.dark .ant-pro-global-header-index-right .ant-pro-drop-down .anticon,.ant-pro-layout.realdark .ant-pro-global-header-index-right .ant-dropdown-trigger .anticon,.ant-pro-layout.realdark .ant-pro-global-header-index-right .ant-pro-drop-down .anticon,body.dark .ant-pro-global-header-index-right .ant-dropdown-trigger .anticon,body.dark .ant-pro-global-header-index-right .ant-pro-drop-down .anticon,body.realdark .ant-pro-global-header-index-right .ant-dropdown-trigger .anticon,body.realdark .ant-pro-global-header-index-right .ant-pro-drop-down .anticon{color:hsla(0,0%,100%,.85)!important}.setting-drawer-index-item[data-v-e773bc98]{margin-bottom:24px}.setting-drawer-index-item .setting-drawer-index-title[data-v-e773bc98]{font-size:14px;color:rgba(0,0,0,.85);line-height:22px;margin-bottom:12px}[data-v-940007f2] .ant-drawer-handle,[data-v-940007f2] .setting-drawer-index-handle{display:none!important}.setting-drawer-index-content .setting-drawer-index-blockChecbox[data-v-940007f2]{display:-webkit-box;display:-ms-flexbox;display:flex}.setting-drawer-index-content .setting-drawer-index-blockChecbox .setting-drawer-index-item[data-v-940007f2]{margin-right:16px;position:relative;border-radius:4px;cursor:pointer}.setting-drawer-index-content .setting-drawer-index-blockChecbox .setting-drawer-index-item img[data-v-940007f2]{width:48px}.setting-drawer-index-content .setting-drawer-index-blockChecbox .setting-drawer-index-item .setting-drawer-index-selectIcon[data-v-940007f2]{position:absolute;top:0;right:0;width:100%;padding-top:15px;padding-left:24px;height:100%;color:#1890ff;font-size:14px;font-weight:700}.setting-drawer-index-content .setting-drawer-theme-color-colorBlock[data-v-940007f2]{width:20px;height:20px;border-radius:2px;float:left;cursor:pointer;margin-right:8px;padding-left:0;padding-right:0;text-align:center;color:#fff;font-weight:700}.setting-drawer-index-content .setting-drawer-theme-color-colorBlock i[data-v-940007f2]{font-size:14px}:global .ant-layout .ant-layout-footer,:global .ant-layout-footer,:global .ant-pro-layout .ant-layout-footer,:global footer.ant-layout-footer{display:none!important;height:0!important;padding:0!important;margin:0!important;border:none!important;min-height:0!important;visibility:hidden!important;overflow:hidden!important}:global .ant-layout.dark .ant-layout-header,:global .ant-layout.realdark .ant-layout-header,:global .ant-pro-layout.dark .ant-layout-header,:global .ant-pro-layout.realdark .ant-layout-header,:global body.dark .ant-layout-header,:global body.realdark .ant-layout-header{background:#111!important;border-bottom:1px solid #1c1c1c!important;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05),0 1px 4px rgba(0,0,0,.2)!important;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05),0 1px 4px rgba(0,0,0,.2)!important;color:hsla(0,0%,100%,.85)!important}:global .ant-layout.dark .ant-layout-header *,:global .ant-layout.realdark .ant-layout-header *,:global .ant-pro-layout.dark .ant-layout-header *,:global .ant-pro-layout.realdark .ant-layout-header *,:global body.dark .ant-layout-header *,:global body.realdark .ant-layout-header *{color:hsla(0,0%,100%,.85)!important}:global .ant-layout.dark .ant-layout-header .anticon,:global .ant-layout.realdark .ant-layout-header .anticon,:global .ant-pro-layout.dark .ant-layout-header .anticon,:global .ant-pro-layout.realdark .ant-layout-header .anticon,:global body.dark .ant-layout-header .anticon,:global body.realdark .ant-layout-header .anticon{color:hsla(0,0%,100%,.85)!important}:global .ant-layout.dark .ant-layout-header .anticon:hover,:global .ant-layout.realdark .ant-layout-header .anticon:hover,:global .ant-pro-layout.dark .ant-layout-header .anticon:hover,:global .ant-pro-layout.realdark .ant-layout-header .anticon:hover,:global body.dark .ant-layout-header .anticon:hover,:global body.realdark .ant-layout-header .anticon:hover{color:#1890ff!important;background:hsla(0,0%,100%,.08)!important;border-radius:4px}:global .ant-layout.dark .ant-layout-header a,:global .ant-layout.realdark .ant-layout-header a,:global .ant-pro-layout.dark .ant-layout-header a,:global .ant-pro-layout.realdark .ant-layout-header a,:global body.dark .ant-layout-header a,:global body.realdark .ant-layout-header a{color:hsla(0,0%,100%,.85)!important}:global .ant-layout.dark .ant-layout-header a:hover,:global .ant-layout.realdark .ant-layout-header a:hover,:global .ant-pro-layout.dark .ant-layout-header a:hover,:global .ant-pro-layout.realdark .ant-layout-header a:hover,:global body.dark .ant-layout-header a:hover,:global body.realdark .ant-layout-header a:hover{color:#1890ff!important}:global .ant-layout.dark .ant-layout-header .ant-tooltip-open .anticon,:global .ant-layout.realdark .ant-layout-header .ant-tooltip-open .anticon,:global .ant-pro-layout.dark .ant-layout-header .ant-tooltip-open .anticon,:global .ant-pro-layout.realdark .ant-layout-header .ant-tooltip-open .anticon,:global body.dark .ant-layout-header .ant-tooltip-open .anticon,:global body.realdark .ant-layout-header .ant-tooltip-open .anticon{color:hsla(0,0%,100%,.85)!important}:global .ant-layout.light .ant-layout-header,:global .ant-pro-layout.light .ant-layout-header,:global body.light .ant-layout-header{background:#fff!important;border-bottom:1px solid #e8e8e8!important;-webkit-box-shadow:0 1px 4px rgba(0,21,41,.08)!important;box-shadow:0 1px 4px rgba(0,21,41,.08)!important;color:rgba(0,0,0,.85)!important}:global .ant-layout.dark .ant-layout-content,:global .ant-layout.realdark .ant-layout-content,:global .ant-pro-layout.dark .ant-layout-content,:global .ant-pro-layout.realdark .ant-layout-content,:global body.dark .ant-layout-content,:global body.realdark .ant-layout-content{background:#141414!important;color:hsla(0,0%,100%,.85)!important}:global .ant-layout.light .ant-layout-content,:global .ant-pro-layout.light .ant-layout-content,:global body.light .ant-layout-content{background:#f0f2f5!important;color:rgba(0,0,0,.85)!important}:global .ant-layout.dark .ant-pro-global-header,:global .ant-layout.realdark .ant-pro-global-header,:global .ant-pro-layout.dark .ant-layout-header .ant-pro-global-header,:global .ant-pro-layout.dark .ant-pro-global-header,:global .ant-pro-layout.realdark .ant-layout-header .ant-pro-global-header,:global .ant-pro-layout.realdark .ant-pro-global-header,:global body.dark .ant-layout-header .ant-pro-global-header,:global body.dark .ant-pro-global-header,:global body.realdark .ant-layout-header .ant-pro-global-header,:global body.realdark .ant-pro-global-header{background:#111!important;border-bottom:none!important;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important;color:hsla(0,0%,100%,.85)!important}:global .ant-layout.dark .ant-pro-global-header *,:global .ant-layout.realdark .ant-pro-global-header *,:global .ant-pro-layout.dark .ant-layout-header .ant-pro-global-header *,:global .ant-pro-layout.dark .ant-pro-global-header *,:global .ant-pro-layout.realdark .ant-layout-header .ant-pro-global-header *,:global .ant-pro-layout.realdark .ant-pro-global-header *,:global body.dark .ant-layout-header .ant-pro-global-header *,:global body.dark .ant-pro-global-header *,:global body.realdark .ant-layout-header .ant-pro-global-header *,:global body.realdark .ant-pro-global-header *{color:hsla(0,0%,100%,.85)!important}:global .ant-layout.dark .ant-pro-global-header .ant-pro-global-header-logo,:global .ant-layout.realdark .ant-pro-global-header .ant-pro-global-header-logo,:global .ant-pro-layout.dark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo,:global .ant-pro-layout.dark .ant-pro-global-header .ant-pro-global-header-logo,:global .ant-pro-layout.realdark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo,:global .ant-pro-layout.realdark .ant-pro-global-header .ant-pro-global-header-logo,:global body.dark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo,:global body.dark .ant-pro-global-header .ant-pro-global-header-logo,:global body.realdark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo,:global body.realdark .ant-pro-global-header .ant-pro-global-header-logo{background:transparent!important;color:hsla(0,0%,100%,.85)!important}:global .ant-layout.dark .ant-pro-global-header .ant-pro-global-header-logo h1,:global .ant-layout.realdark .ant-pro-global-header .ant-pro-global-header-logo h1,:global .ant-pro-layout.dark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo h1,:global .ant-pro-layout.dark .ant-pro-global-header .ant-pro-global-header-logo h1,:global .ant-pro-layout.realdark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo h1,:global .ant-pro-layout.realdark .ant-pro-global-header .ant-pro-global-header-logo h1,:global body.dark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo h1,:global body.dark .ant-pro-global-header .ant-pro-global-header-logo h1,:global body.realdark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo h1,:global body.realdark .ant-pro-global-header .ant-pro-global-header-logo h1{color:hsla(0,0%,100%,.85)!important}:global .ant-layout.dark .ant-pro-global-header .ant-pro-global-header-logo img,:global .ant-layout.realdark .ant-pro-global-header .ant-pro-global-header-logo img,:global .ant-pro-layout.dark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo img,:global .ant-pro-layout.dark .ant-pro-global-header .ant-pro-global-header-logo img,:global .ant-pro-layout.realdark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo img,:global .ant-pro-layout.realdark .ant-pro-global-header .ant-pro-global-header-logo img,:global body.dark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo img,:global body.dark .ant-pro-global-header .ant-pro-global-header-logo img,:global body.realdark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo img,:global body.realdark .ant-pro-global-header .ant-pro-global-header-logo img{opacity:.9}:global .ant-layout.dark .ant-pro-global-header .ant-pro-global-header-logo *,:global .ant-layout.realdark .ant-pro-global-header .ant-pro-global-header-logo *,:global .ant-pro-layout.dark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo *,:global .ant-pro-layout.dark .ant-pro-global-header .ant-pro-global-header-logo *,:global .ant-pro-layout.realdark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo *,:global .ant-pro-layout.realdark .ant-pro-global-header .ant-pro-global-header-logo *,:global body.dark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo *,:global body.dark .ant-pro-global-header .ant-pro-global-header-logo *,:global body.realdark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo *,:global body.realdark .ant-pro-global-header .ant-pro-global-header-logo *{color:hsla(0,0%,100%,.85)!important}:global .ant-pro-global-header-content{background:transparent!important;color:hsla(0,0%,100%,.85)!important}:global .ant-pro-global-header-content *{color:hsla(0,0%,100%,.85)!important}:global .ant-pro-global-header-content .anticon{color:hsla(0,0%,100%,.85)!important}:global .ant-pro-global-header-content .anticon:hover{color:#1890ff!important;background:hsla(0,0%,100%,.08)!important;border-radius:4px}:global .ant-pro-global-header-content .ant-tooltip-open .anticon{color:hsla(0,0%,100%,.85)!important}:global .ant-pro-global-header-index-right{background:transparent!important;color:hsla(0,0%,100%,.85)!important}:global .ant-pro-global-header-index-right *{color:hsla(0,0%,100%,.85)!important}:global .ant-pro-global-header-index-right .ant-pro-global-header-index-action{color:hsla(0,0%,100%,.85)!important}:global .ant-pro-global-header-index-right .ant-pro-global-header-index-action:hover{color:#1890ff!important;background:hsla(0,0%,100%,.08)!important}:global .ant-pro-global-header-index-right .ant-pro-global-header-index-action .anticon{color:hsla(0,0%,100%,.85)!important}:global .ant-pro-global-header-index-right .ant-pro-account-avatar{color:hsla(0,0%,100%,.85)!important}:global .ant-pro-global-header-index-right .ant-pro-account-avatar span{color:hsla(0,0%,100%,.85)!important}:global .ant-pro-global-header-index-right .ant-pro-account-avatar .antd-pro-global-header-index-avatar{background:hsla(0,0%,100%,.25)!important}:global .ant-pro-global-header-index-right .ant-dropdown-trigger,:global .ant-pro-global-header-index-right .ant-pro-drop-down{color:hsla(0,0%,100%,.85)!important}:global .ant-pro-global-header-index-right .ant-dropdown-trigger:hover,:global .ant-pro-global-header-index-right .ant-pro-drop-down:hover{color:#1890ff!important;background:hsla(0,0%,100%,.08)!important}:global .ant-pro-global-header-index-right .ant-dropdown-trigger .anticon,:global .ant-pro-global-header-index-right .ant-pro-drop-down .anticon{color:hsla(0,0%,100%,.85)!important}:global a{color:hsla(0,0%,100%,.85)!important}:global a:hover{color:#1890ff!important}:global .anticon{color:hsla(0,0%,100%,.85)!important}:global .anticon:hover{color:#1890ff!important}:global .ant-layout.light .ant-pro-global-header,:global .ant-pro-layout.light .ant-layout-header .ant-pro-global-header,:global .ant-pro-layout.light .ant-pro-global-header,:global body.light .ant-layout-header .ant-pro-global-header,:global body.light .ant-pro-global-header{background:#fff!important;border-bottom:1px solid #e8e8e8!important;color:rgba(0,0,0,.85)!important}:global(.ant-pro-layout).dark :global(.ant-layout),:global(.ant-pro-layout).realdark :global(.ant-layout){background-color:#0a0a0a!important}:global(.ant-pro-layout).dark :global(.ant-layout-header),:global(.ant-pro-layout).realdark :global(.ant-layout-header){background:#111!important;border-bottom:1px solid #1c1c1c!important;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important;color:hsla(0,0%,100%,.85)!important}:global(.ant-pro-layout).dark :global(.ant-layout-header) :global(.ant-pro-global-header),:global(.ant-pro-layout).realdark :global(.ant-layout-header) :global(.ant-pro-global-header){background:#111!important;border-bottom:none!important;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important;color:hsla(0,0%,100%,.85)!important}:global(.ant-pro-layout).dark :global(.ant-layout-header) :global(.ant-pro-global-header) *,:global(.ant-pro-layout).realdark :global(.ant-layout-header) :global(.ant-pro-global-header) *{color:hsla(0,0%,100%,.85)!important}:global(.ant-pro-layout).dark :global(.ant-layout-content),:global(.ant-pro-layout).realdark :global(.ant-layout-content){background:#141414!important;color:hsla(0,0%,100%,.85)!important}:global(.ant-pro-layout).dark :global(.ant-pro-basicLayout-content),:global(.ant-pro-layout).realdark :global(.ant-pro-basicLayout-content){background:#141414!important;color:hsla(0,0%,100%,.85)!important}:global(.ant-pro-layout).dark :global(.ant-layout-sider),:global(.ant-pro-layout).dark :global(.ant-pro-sider),:global(.ant-pro-layout).dark :global(.ant-pro-sider-menu-sider),:global(.ant-pro-layout).realdark :global(.ant-layout-sider),:global(.ant-pro-layout).realdark :global(.ant-pro-sider),:global(.ant-pro-layout).realdark :global(.ant-pro-sider-menu-sider){background:#0a0a0a!important}:global(.ant-pro-layout).dark :global(.ant-layout-sider) :global(.ant-layout-sider-children),:global(.ant-pro-layout).dark :global(.ant-pro-sider) :global(.ant-layout-sider-children),:global(.ant-pro-layout).dark :global(.ant-pro-sider-menu-sider) :global(.ant-layout-sider-children),:global(.ant-pro-layout).realdark :global(.ant-layout-sider) :global(.ant-layout-sider-children),:global(.ant-pro-layout).realdark :global(.ant-pro-sider) :global(.ant-layout-sider-children),:global(.ant-pro-layout).realdark :global(.ant-pro-sider-menu-sider) :global(.ant-layout-sider-children){background:#0a0a0a!important}:global(.ant-pro-layout).dark :global(.ant-menu-dark .ant-menu-inline.ant-menu-sub),:global(.ant-pro-layout).dark :global(.ant-menu-dark),:global(.ant-pro-layout).dark :global(.ant-menu.ant-menu-dark),:global(.ant-pro-layout).realdark :global(.ant-menu-dark .ant-menu-inline.ant-menu-sub),:global(.ant-pro-layout).realdark :global(.ant-menu-dark),:global(.ant-pro-layout).realdark :global(.ant-menu.ant-menu-dark){background:#0a0a0a!important}:global(.ant-pro-layout).dark :global(.ant-menu-dark .ant-menu-sub),:global(.ant-pro-layout).realdark :global(.ant-menu-dark .ant-menu-sub){background:#111!important}:global(.ant-pro-layout).dark :global(.ant-menu-dark .ant-menu-item-selected),:global(.ant-pro-layout).realdark :global(.ant-menu-dark .ant-menu-item-selected){background:rgba(24,144,255,.25)!important}:global(.ant-pro-layout).dark :global(.ant-menu-dark .ant-menu-item:hover),:global(.ant-pro-layout).dark :global(.ant-menu-dark .ant-menu-submenu-title:hover),:global(.ant-pro-layout).realdark :global(.ant-menu-dark .ant-menu-item:hover),:global(.ant-pro-layout).realdark :global(.ant-menu-dark .ant-menu-submenu-title:hover){background:hsla(0,0%,100%,.06)!important}:global(.ant-pro-layout).dark :global(.ant-layout-sider-trigger),:global(.ant-pro-layout).realdark :global(.ant-layout-sider-trigger){background:#111!important;border-top:1px solid #1c1c1c;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05);box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)}:global(.ant-pro-layout).light :global(.ant-layout){background-color:#f0f2f5!important}:global(.ant-pro-layout).light :global(.ant-layout-header){background:#fff!important;border-bottom:1px solid #e8e8e8!important;color:rgba(0,0,0,.85)!important}:global(.ant-pro-layout).light :global(.ant-layout-content){background:#f0f2f5!important;color:rgba(0,0,0,.85)!important}:global(.ant-pro-layout).light :global(.ant-pro-basicLayout-content){background:#f0f2f5!important;color:rgba(0,0,0,.85)!important}.ant-pro-global-header-index-right{margin-right:8px}.ant-pro-global-header-index-right.ant-pro-global-header-index-dark .ant-pro-global-header-index-action{color:#030303}.ant-pro-global-header-index-right.ant-pro-global-header-index-dark .ant-pro-global-header-index-action:hover{background:#1890ff}.ant-pro-global-header-index-right.ant-pro-global-header-index-dark .ant-pro-account-avatar{color:hsla(0,0%,100%,.85)}.ant-pro-global-header-index-right.ant-pro-global-header-index-dark .ant-pro-account-avatar .antd-pro-global-header-index-avatar{background:hsla(0,0%,100%,.25)!important}.ant-pro-global-header-index-right.ant-pro-global-header-index-dark .ant-pro-account-avatar span,.ant-pro-global-header-index-right.ant-pro-global-header-index-dark .ant-pro-drop-down{color:hsla(0,0%,100%,.85)}.ant-pro-global-header-index-right.ant-pro-global-header-index-dark .ant-pro-drop-down:hover{color:#1890ff;background:hsla(0,0%,100%,.08)}.ant-pro-global-header-index-right .ant-pro-account-avatar .antd-pro-global-header-index-avatar{margin:20px 0;margin-right:8px;color:#1890ff;vertical-align:top;background:rgb(255 255 3%)}.ant-pro-global-header-index-right .menu .anticon{margin-right:8px}.ant-pro-global-header-index-right .menu .ant-dropdown-menu-item{min-width:100px}:global .ant-pro-layout.dark .ant-dropdown-menu,:global .ant-pro-layout.realdark .ant-dropdown-menu{background:#1c1c1c!important;border:1px solid #2a2a2a!important;-webkit-box-shadow:0 4px 12px rgba(0,0,0,.4)!important;box-shadow:0 4px 12px rgba(0,0,0,.4)!important}:global .ant-pro-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item,:global .ant-pro-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item{color:hsla(0,0%,100%,.85)!important}:global .ant-pro-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item:hover,:global .ant-pro-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item:hover{background:#252525!important;color:#1890ff!important}:global .ant-pro-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item-divider,:global .ant-pro-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item-divider{background:#2a2a2a!important}:global body.dark .ant-layout-sider,:global body.dark .ant-layout-sider-dark,:global body.dark .ant-pro-sider-menu-sider,:global body.dark .ant-pro-sider-menu-sider.ant-layout-sider-dark,:global body.realdark .ant-layout-sider,:global body.realdark .ant-layout-sider-dark,:global body.realdark .ant-pro-sider-menu-sider,:global body.realdark .ant-pro-sider-menu-sider.ant-layout-sider-dark{background:#0a0a0a!important}:global body.dark .ant-layout-sider-children,:global body.realdark .ant-layout-sider-children{background:#0a0a0a!important}:global body.dark .ant-menu-dark,:global body.dark .ant-menu-dark .ant-menu-inline.ant-menu-sub,:global body.dark .ant-menu.ant-menu-dark,:global body.dark ul.ant-menu.ant-menu-dark.ant-menu-root,:global body.realdark .ant-menu-dark,:global body.realdark .ant-menu-dark .ant-menu-inline.ant-menu-sub,:global body.realdark .ant-menu.ant-menu-dark,:global body.realdark ul.ant-menu.ant-menu-dark.ant-menu-root{background:#0a0a0a!important}:global body.dark .ant-menu-dark .ant-menu-sub,:global body.dark .ant-menu.ant-menu-dark .ant-menu-sub,:global body.realdark .ant-menu-dark .ant-menu-sub,:global body.realdark .ant-menu.ant-menu-dark .ant-menu-sub{background:#111!important}:global body.dark .ant-menu-dark .ant-menu-item-selected,:global body.realdark .ant-menu-dark .ant-menu-item-selected{background:rgba(24,144,255,.25)!important}:global body.dark .ant-pro-sider-menu-logo,:global body.realdark .ant-pro-sider-menu-logo{background:#0a0a0a!important}:global body.dark .ant-layout-sider-trigger,:global body.realdark .ant-layout-sider-trigger{background:#111!important;border-top:1px solid #1c1c1c;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important}:global body.dark .ant-layout-header,:global body.realdark .ant-layout-header{background:#111!important;border-bottom:1px solid #1c1c1c!important;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important}:global body.dark .ant-pro-global-header,:global body.realdark .ant-pro-global-header{background:#111!important;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important}@media (max-width:768px){:global .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo,:global .ant-pro-global-header-logo,:global .ant-pro-layout .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo,:global body .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo{padding:0!important;padding-left:0!important;padding-right:0!important;padding-top:0!important;padding-bottom:0!important}}.ant-pro-sider-menu-sider.light .ant-menu-light{height:60vh!important}.basic-layout-wrapper .ant-layout-footer{display:none!important;height:0!important;padding:0!important;margin:0!important;border:none!important}.basic-layout-wrapper{position:relative}.basic-layout-wrapper .custom-menu-footer{position:fixed;bottom:0;left:0;z-index:100;width:256px;background:#111;border-top:1px solid #1c1c1c;-webkit-transition:left .3s cubic-bezier(.78,.14,.15,.86),width .3s cubic-bezier(.78,.14,.15,.86),max-width .3s cubic-bezier(.78,.14,.15,.86),opacity .3s cubic-bezier(.78,.14,.15,.86);transition:left .3s cubic-bezier(.78,.14,.15,.86),width .3s cubic-bezier(.78,.14,.15,.86),max-width .3s cubic-bezier(.78,.14,.15,.86),opacity .3s cubic-bezier(.78,.14,.15,.86);max-width:256px;display:block;opacity:1}.basic-layout-wrapper .custom-menu-footer.collapsed{width:80px;max-width:80px}@media (max-width:768px){.basic-layout-wrapper .custom-menu-footer{z-index:1001}.basic-layout-wrapper .custom-menu-footer:not(.drawer-open){display:none!important;opacity:0}.basic-layout-wrapper .custom-menu-footer.drawer-animating{opacity:0;-webkit-transition:opacity .1s ease-out;transition:opacity .1s ease-out}.basic-layout-wrapper .custom-menu-footer.drawer-open:not(.drawer-animating){opacity:1;-webkit-transition:left .3s cubic-bezier(.78,.14,.15,.86),width .3s cubic-bezier(.78,.14,.15,.86),max-width .3s cubic-bezier(.78,.14,.15,.86),opacity .3s cubic-bezier(.78,.14,.15,.86) .1s;transition:left .3s cubic-bezier(.78,.14,.15,.86),width .3s cubic-bezier(.78,.14,.15,.86),max-width .3s cubic-bezier(.78,.14,.15,.86),opacity .3s cubic-bezier(.78,.14,.15,.86) .1s}}.basic-layout-wrapper .custom-menu-footer .menu-footer-content{padding:12px 16px;font-size:11px;color:inherit;max-height:none;overflow:visible;scrollbar-width:thin;scrollbar-color:hsla(0,0%,100%,.2) transparent}.basic-layout-wrapper .custom-menu-footer .menu-footer-content::-webkit-scrollbar{width:4px}.basic-layout-wrapper .custom-menu-footer .menu-footer-content::-webkit-scrollbar-track{background:transparent}.basic-layout-wrapper .custom-menu-footer .menu-footer-content::-webkit-scrollbar-thumb{background:hsla(0,0%,100%,.2);border-radius:2px}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section{margin-bottom:12px;text-align:center}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section:last-child{margin-bottom:0}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .section-title{font-size:11px;font-weight:500;margin-bottom:6px;opacity:.8;color:inherit}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .section-links{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;gap:4px;-ms-flex-wrap:wrap;flex-wrap:wrap;font-size:10px;opacity:.7}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .section-links a{cursor:pointer;color:inherit;text-decoration:underline;-webkit-transition:opacity .2s;transition:opacity .2s}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .section-links a:hover{opacity:1}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .section-links .separator{opacity:.5;margin:0 2px}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .social-icons{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:8px;margin-top:6px}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .social-icons .social-icon{width:15px;height:15px;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;border-radius:4px;cursor:pointer;opacity:.7;-webkit-transition:all .2s;transition:all .2s;background:hsla(0,0%,100%,.05);text-decoration:none;overflow:hidden}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .social-icons .social-icon:hover{opacity:1;background:hsla(0,0%,100%,.1);-webkit-transform:translateY(-2px);transform:translateY(-2px)}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .social-icons .social-icon .social-icon-svg{width:15x;height:15px;color:currentColor}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .social-icons .social-icon .anticon{font-size:16px}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .social-icons .social-icon .social-logo{width:15px;height:15px;-o-object-fit:contain;object-fit:contain}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .social-icons .social-icon .social-icon-text{font-size:10px;font-weight:700}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section.copyright{margin-top:12px;padding-top:12px;border-top:1px solid #2a2a2a;opacity:.6;font-size:10px}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section.version{margin-top:4px;font-size:9px;opacity:.4;text-align:center;letter-spacing:1px}.basic-layout-wrapper .custom-menu-footer .menu-footer-content-collapsed{text-align:center;padding:16px;font-size:12px;opacity:.6;cursor:pointer;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}.basic-layout-wrapper .custom-menu-footer .menu-footer-content-collapsed .anticon{font-size:16px}.basic-layout-wrapper .custom-menu-footer .menu-footer-content-collapsed:hover{opacity:1}.basic-layout-wrapper ::v-deep .ant-pro-layout .ant-pro-sider-collapsed~.custom-menu-footer,.basic-layout-wrapper ::v-deep .ant-pro-layout.ant-pro-sider-collapsed~.custom-menu-footer{width:80px}.basic-layout-wrapper .ant-layout-sider-children{padding-bottom:calc(var(--menu-footer-height, 220px) + 12px);overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.15) transparent}.basic-layout-wrapper .ant-layout-sider-children::-webkit-scrollbar{width:6px}.basic-layout-wrapper .ant-layout-sider-children::-webkit-scrollbar-track{background:transparent}.basic-layout-wrapper .ant-layout-sider-children::-webkit-scrollbar-thumb{background:rgba(0,0,0,.15);border-radius:3px}.ant-pro-layout.dark .basic-layout-wrapper .ant-layout-sider-children,.ant-pro-layout.realdark .basic-layout-wrapper .ant-layout-sider-children,body.dark .basic-layout-wrapper .ant-layout-sider-children,body.realdark .basic-layout-wrapper .ant-layout-sider-children{scrollbar-color:hsla(0,0%,100%,.25) transparent}.ant-pro-layout.dark .basic-layout-wrapper .ant-layout-sider-children::-webkit-scrollbar-thumb,.ant-pro-layout.realdark .basic-layout-wrapper .ant-layout-sider-children::-webkit-scrollbar-thumb,body.dark .basic-layout-wrapper .ant-layout-sider-children::-webkit-scrollbar-thumb,body.realdark .basic-layout-wrapper .ant-layout-sider-children::-webkit-scrollbar-thumb{background:hsla(0,0%,100%,.25)}.basic-layout-wrapper .ant-pro-sider{height:100vh;-ms-flex-direction:column;flex-direction:column}.basic-layout-wrapper .ant-pro-sider,.basic-layout-wrapper .ant-pro-sider .ant-layout-sider-children{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal}.basic-layout-wrapper .ant-pro-sider .ant-layout-sider-children{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;min-height:0;-ms-flex-direction:column;flex-direction:column}.basic-layout-wrapper .ant-pro-sider .ant-menu,.basic-layout-wrapper .ant-pro-sider .ant-menu-root,.basic-layout-wrapper .ant-pro-sider .ant-pro-sider-menu{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;min-height:0;max-height:calc(100vh - var(--menu-footer-height, 220px) - 24px);overflow-y:auto!important;overflow-x:hidden;-webkit-overflow-scrolling:touch}.basic-layout-wrapper.dark .ant-layout-header,.basic-layout-wrapper.realdark .ant-layout-header{background:#111!important;border-bottom:1px solid #1c1c1c!important;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important}.basic-layout-wrapper.dark .ant-pro-global-header,.basic-layout-wrapper.realdark .ant-pro-global-header{background:#111!important;border-bottom:none!important;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important;color:hsla(0,0%,100%,.85)!important}.basic-layout-wrapper.dark .ant-pro-global-header .ant-pro-global-header-trigger,.basic-layout-wrapper.realdark .ant-pro-global-header .ant-pro-global-header-trigger{color:hsla(0,0%,100%,.85)!important}.basic-layout-wrapper.dark .ant-pro-global-header .ant-pro-global-header-trigger:hover,.basic-layout-wrapper.realdark .ant-pro-global-header .ant-pro-global-header-trigger:hover{background:hsla(0,0%,100%,.06)!important}.basic-layout-wrapper.dark .ant-pro-global-header .action,.basic-layout-wrapper.realdark .ant-pro-global-header .action{color:hsla(0,0%,100%,.85)!important}.basic-layout-wrapper.dark .ant-pro-global-header .action:hover,.basic-layout-wrapper.realdark .ant-pro-global-header .action:hover{background:hsla(0,0%,100%,.06)!important}.basic-layout-wrapper.dark .ant-layout,.basic-layout-wrapper.dark .ant-pro-basicLayout-content,.basic-layout-wrapper.realdark .ant-layout,.basic-layout-wrapper.realdark .ant-pro-basicLayout-content{background-color:#141414!important}@media (max-width:768px){.ant-drawer.ant-drawer-open .ant-drawer-content-wrapper{overflow:visible}.ant-drawer.ant-drawer-open .ant-drawer-content,.ant-drawer.ant-drawer-open .ant-drawer-wrapper-body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:100%;overflow:visible}.ant-drawer.ant-drawer-open .ant-drawer-body{overflow-y:auto!important;overflow-x:hidden!important;padding-bottom:var(--footer-height,280px)!important;-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:hsla(0,0%,100%,.2) transparent;min-height:0;-webkit-box-flex:1;-ms-flex:1;flex:1}.ant-drawer.ant-drawer-open .ant-drawer-body::-webkit-scrollbar{width:4px}.ant-drawer.ant-drawer-open .ant-drawer-body::-webkit-scrollbar-track{background:transparent}.ant-drawer.ant-drawer-open .ant-drawer-body::-webkit-scrollbar-thumb{background:hsla(0,0%,100%,.2);border-radius:2px}.ant-drawer.ant-drawer-open .ant-drawer-body::-webkit-scrollbar-thumb:hover{background:hsla(0,0%,100%,.3)}}.ant-pro-multi-tab{margin:-23px -24px 24px;background:#fff}.topmenu .ant-pro-multi-tab-wrapper{max-width:1200px;margin:0 auto}.topmenu.content-width-Fluid .ant-pro-multi-tab-wrapper{max-width:100%;margin:0 auto}body,html{width:100%;height:100%}input::-ms-clear,input::-ms-reveal{display:none}*,:after,:before{-webkit-box-sizing:border-box;box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:rgba(0,0,0,0)}@-ms-viewport{width:device-width}article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;color:rgba(0,0,0,.65);font-size:14px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;font-variant:tabular-nums;line-height:1.5;background-color:#fff;-webkit-font-feature-settings:"tnum";font-feature-settings:"tnum"}[tabindex="-1"]:focus{outline:none!important}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5em;color:rgba(0,0,0,.85);font-weight:500}p{margin-top:0;margin-bottom:1em}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;border-bottom:0;cursor:help}address{margin-bottom:1em;font-style:normal;line-height:inherit}input[type=number],input[type=password],input[type=text],textarea{-webkit-appearance:none}dl,ol,ul{margin-top:0;margin-bottom:1em}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:500}dd{margin-bottom:.5em;margin-left:0}blockquote{margin:0 0 1em}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#1890ff;text-decoration:none;background-color:transparent;outline:none;cursor:pointer;-webkit-transition:color .3s;transition:color .3s;-webkit-text-decoration-skip:objects}a:hover{color:#40a9ff}a:active{color:#096dd9}a:active,a:hover{text-decoration:none;outline:0}a[disabled]{color:rgba(0,0,0,.25);cursor:not-allowed;pointer-events:none}code,kbd,pre,samp{font-size:1em;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace}pre{margin-top:0;margin-bottom:1em;overflow:auto}figure{margin:0 0 1em}img{vertical-align:middle;border-style:none}svg:not(:root){overflow:hidden}[role=button],a,area,button,input:not([type=range]),label,select,summary,textarea{-ms-touch-action:manipulation;touch-action:manipulation}table{border-collapse:collapse}caption{padding-top:.75em;padding-bottom:.3em;color:rgba(0,0,0,.45);text-align:left;caption-side:bottom}th{text-align:inherit}button,input,optgroup,select,textarea{margin:0;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;margin:0;padding:0;border:0}legend{display:block;width:100%;max-width:100%;margin-bottom:.5em;padding:0;color:inherit;font-size:1.5em;line-height:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item}template{display:none}[hidden]{display:none!important}mark{padding:.2em;background-color:#feffe6}::-moz-selection{color:#fff;background:#1890ff}::selection{color:#fff;background:#1890ff}.clearfix{zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}.anticon{display:inline-block;color:inherit;font-style:normal;line-height:0;text-align:center;text-transform:none;vertical-align:-.125em;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.anticon>*{line-height:1}.anticon svg{display:inline-block}.anticon:before{display:none}.anticon .anticon-icon{display:block}.anticon[tabindex]{cursor:pointer}.anticon-spin,.anticon-spin:before{display:inline-block;-webkit-animation:loadingCircle 1s linear infinite;animation:loadingCircle 1s linear infinite}.fade-appear,.fade-enter,.fade-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.fade-appear.fade-appear-active,.fade-enter.fade-enter-active{-webkit-animation-name:antFadeIn;animation-name:antFadeIn;-webkit-animation-play-state:running;animation-play-state:running}.fade-leave.fade-leave-active{-webkit-animation-name:antFadeOut;animation-name:antFadeOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.fade-appear,.fade-enter{opacity:0}.fade-appear,.fade-enter,.fade-leave{-webkit-animation-timing-function:linear;animation-timing-function:linear}@-webkit-keyframes antFadeIn{0%{opacity:0}to{opacity:1}}@keyframes antFadeIn{0%{opacity:0}to{opacity:1}}@-webkit-keyframes antFadeOut{0%{opacity:1}to{opacity:0}}@keyframes antFadeOut{0%{opacity:1}to{opacity:0}}.move-up-appear,.move-up-enter,.move-up-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.move-up-appear.move-up-appear-active,.move-up-enter.move-up-enter-active{-webkit-animation-name:antMoveUpIn;animation-name:antMoveUpIn;-webkit-animation-play-state:running;animation-play-state:running}.move-up-leave.move-up-leave-active{-webkit-animation-name:antMoveUpOut;animation-name:antMoveUpOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.move-up-appear,.move-up-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.move-up-leave{-webkit-animation-timing-function:cubic-bezier(.6,.04,.98,.34);animation-timing-function:cubic-bezier(.6,.04,.98,.34)}.move-down-appear,.move-down-enter,.move-down-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.move-down-appear.move-down-appear-active,.move-down-enter.move-down-enter-active{-webkit-animation-name:antMoveDownIn;animation-name:antMoveDownIn;-webkit-animation-play-state:running;animation-play-state:running}.move-down-leave.move-down-leave-active{-webkit-animation-name:antMoveDownOut;animation-name:antMoveDownOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.move-down-appear,.move-down-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.move-down-leave{-webkit-animation-timing-function:cubic-bezier(.6,.04,.98,.34);animation-timing-function:cubic-bezier(.6,.04,.98,.34)}.move-left-appear,.move-left-enter,.move-left-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.move-left-appear.move-left-appear-active,.move-left-enter.move-left-enter-active{-webkit-animation-name:antMoveLeftIn;animation-name:antMoveLeftIn;-webkit-animation-play-state:running;animation-play-state:running}.move-left-leave.move-left-leave-active{-webkit-animation-name:antMoveLeftOut;animation-name:antMoveLeftOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.move-left-appear,.move-left-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.move-left-leave{-webkit-animation-timing-function:cubic-bezier(.6,.04,.98,.34);animation-timing-function:cubic-bezier(.6,.04,.98,.34)}.move-right-appear,.move-right-enter,.move-right-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.move-right-appear.move-right-appear-active,.move-right-enter.move-right-enter-active{-webkit-animation-name:antMoveRightIn;animation-name:antMoveRightIn;-webkit-animation-play-state:running;animation-play-state:running}.move-right-leave.move-right-leave-active{-webkit-animation-name:antMoveRightOut;animation-name:antMoveRightOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.move-right-appear,.move-right-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.move-right-leave{-webkit-animation-timing-function:cubic-bezier(.6,.04,.98,.34);animation-timing-function:cubic-bezier(.6,.04,.98,.34)}@-webkit-keyframes antMoveDownIn{0%{-webkit-transform:translateY(100%);transform:translateY(100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}to{-webkit-transform:translateY(0);transform:translateY(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@keyframes antMoveDownIn{0%{-webkit-transform:translateY(100%);transform:translateY(100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}to{-webkit-transform:translateY(0);transform:translateY(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@-webkit-keyframes antMoveDownOut{0%{-webkit-transform:translateY(0);transform:translateY(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}to{-webkit-transform:translateY(100%);transform:translateY(100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}}@keyframes antMoveDownOut{0%{-webkit-transform:translateY(0);transform:translateY(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}to{-webkit-transform:translateY(100%);transform:translateY(100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}}@-webkit-keyframes antMoveLeftIn{0%{-webkit-transform:translateX(-100%);transform:translateX(-100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}to{-webkit-transform:translateX(0);transform:translateX(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@keyframes antMoveLeftIn{0%{-webkit-transform:translateX(-100%);transform:translateX(-100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}to{-webkit-transform:translateX(0);transform:translateX(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@-webkit-keyframes antMoveLeftOut{0%{-webkit-transform:translateX(0);transform:translateX(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}to{-webkit-transform:translateX(-100%);transform:translateX(-100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}}@keyframes antMoveLeftOut{0%{-webkit-transform:translateX(0);transform:translateX(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}to{-webkit-transform:translateX(-100%);transform:translateX(-100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}}@-webkit-keyframes antMoveRightIn{0%{-webkit-transform:translateX(100%);transform:translateX(100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}to{-webkit-transform:translateX(0);transform:translateX(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@keyframes antMoveRightIn{0%{-webkit-transform:translateX(100%);transform:translateX(100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}to{-webkit-transform:translateX(0);transform:translateX(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@-webkit-keyframes antMoveRightOut{0%{-webkit-transform:translateX(0);transform:translateX(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}to{-webkit-transform:translateX(100%);transform:translateX(100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}}@keyframes antMoveRightOut{0%{-webkit-transform:translateX(0);transform:translateX(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}to{-webkit-transform:translateX(100%);transform:translateX(100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}}@-webkit-keyframes antMoveUpIn{0%{-webkit-transform:translateY(-100%);transform:translateY(-100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}to{-webkit-transform:translateY(0);transform:translateY(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@keyframes antMoveUpIn{0%{-webkit-transform:translateY(-100%);transform:translateY(-100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}to{-webkit-transform:translateY(0);transform:translateY(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@-webkit-keyframes antMoveUpOut{0%{-webkit-transform:translateY(0);transform:translateY(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}to{-webkit-transform:translateY(-100%);transform:translateY(-100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}}@keyframes antMoveUpOut{0%{-webkit-transform:translateY(0);transform:translateY(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}to{-webkit-transform:translateY(-100%);transform:translateY(-100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}}@-webkit-keyframes loadingCircle{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes loadingCircle{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}[ant-click-animating-without-extra-node=true],[ant-click-animating=true]{position:relative}html{--antd-wave-shadow-color:#1890ff}.ant-click-animating-node,[ant-click-animating-without-extra-node=true]:after{position:absolute;top:0;right:0;bottom:0;left:0;display:block;border-radius:inherit;-webkit-box-shadow:0 0 0 0 #1890ff;box-shadow:0 0 0 0 #1890ff;-webkit-box-shadow:0 0 0 0 var(--antd-wave-shadow-color);box-shadow:0 0 0 0 var(--antd-wave-shadow-color);opacity:.2;-webkit-animation:fadeEffect 2s cubic-bezier(.08,.82,.17,1),waveEffect .4s cubic-bezier(.08,.82,.17,1);animation:fadeEffect 2s cubic-bezier(.08,.82,.17,1),waveEffect .4s cubic-bezier(.08,.82,.17,1);-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;content:"";pointer-events:none}@-webkit-keyframes waveEffect{to{-webkit-box-shadow:0 0 0 #1890ff;box-shadow:0 0 0 #1890ff;-webkit-box-shadow:0 0 0 6px var(--antd-wave-shadow-color);box-shadow:0 0 0 6px var(--antd-wave-shadow-color)}}@keyframes waveEffect{to{-webkit-box-shadow:0 0 0 #1890ff;box-shadow:0 0 0 #1890ff;-webkit-box-shadow:0 0 0 6px var(--antd-wave-shadow-color);box-shadow:0 0 0 6px var(--antd-wave-shadow-color)}}@-webkit-keyframes fadeEffect{to{opacity:0}}@keyframes fadeEffect{to{opacity:0}}.slide-up-appear,.slide-up-enter,.slide-up-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.slide-up-appear.slide-up-appear-active,.slide-up-enter.slide-up-enter-active{-webkit-animation-name:antSlideUpIn;animation-name:antSlideUpIn;-webkit-animation-play-state:running;animation-play-state:running}.slide-up-leave.slide-up-leave-active{-webkit-animation-name:antSlideUpOut;animation-name:antSlideUpOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.slide-up-appear,.slide-up-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.23,1,.32,1);animation-timing-function:cubic-bezier(.23,1,.32,1)}.slide-up-leave{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06)}.slide-down-appear,.slide-down-enter,.slide-down-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.slide-down-appear.slide-down-appear-active,.slide-down-enter.slide-down-enter-active{-webkit-animation-name:antSlideDownIn;animation-name:antSlideDownIn;-webkit-animation-play-state:running;animation-play-state:running}.slide-down-leave.slide-down-leave-active{-webkit-animation-name:antSlideDownOut;animation-name:antSlideDownOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.slide-down-appear,.slide-down-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.23,1,.32,1);animation-timing-function:cubic-bezier(.23,1,.32,1)}.slide-down-leave{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06)}.slide-left-appear,.slide-left-enter,.slide-left-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.slide-left-appear.slide-left-appear-active,.slide-left-enter.slide-left-enter-active{-webkit-animation-name:antSlideLeftIn;animation-name:antSlideLeftIn;-webkit-animation-play-state:running;animation-play-state:running}.slide-left-leave.slide-left-leave-active{-webkit-animation-name:antSlideLeftOut;animation-name:antSlideLeftOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.slide-left-appear,.slide-left-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.23,1,.32,1);animation-timing-function:cubic-bezier(.23,1,.32,1)}.slide-left-leave{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06)}.slide-right-appear,.slide-right-enter,.slide-right-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.slide-right-appear.slide-right-appear-active,.slide-right-enter.slide-right-enter-active{-webkit-animation-name:antSlideRightIn;animation-name:antSlideRightIn;-webkit-animation-play-state:running;animation-play-state:running}.slide-right-leave.slide-right-leave-active{-webkit-animation-name:antSlideRightOut;animation-name:antSlideRightOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.slide-right-appear,.slide-right-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.23,1,.32,1);animation-timing-function:cubic-bezier(.23,1,.32,1)}.slide-right-leave{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06)}@-webkit-keyframes antSlideUpIn{0%{-webkit-transform:scaleY(.8);transform:scaleY(.8);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}to{-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@keyframes antSlideUpIn{0%{-webkit-transform:scaleY(.8);transform:scaleY(.8);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}to{-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@-webkit-keyframes antSlideUpOut{0%{-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}to{-webkit-transform:scaleY(.8);transform:scaleY(.8);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}}@keyframes antSlideUpOut{0%{-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}to{-webkit-transform:scaleY(.8);transform:scaleY(.8);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}}@-webkit-keyframes antSlideDownIn{0%{-webkit-transform:scaleY(.8);transform:scaleY(.8);-webkit-transform-origin:100% 100%;transform-origin:100% 100%;opacity:0}to{-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:100% 100%;transform-origin:100% 100%;opacity:1}}@keyframes antSlideDownIn{0%{-webkit-transform:scaleY(.8);transform:scaleY(.8);-webkit-transform-origin:100% 100%;transform-origin:100% 100%;opacity:0}to{-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:100% 100%;transform-origin:100% 100%;opacity:1}}@-webkit-keyframes antSlideDownOut{0%{-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:100% 100%;transform-origin:100% 100%;opacity:1}to{-webkit-transform:scaleY(.8);transform:scaleY(.8);-webkit-transform-origin:100% 100%;transform-origin:100% 100%;opacity:0}}@keyframes antSlideDownOut{0%{-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:100% 100%;transform-origin:100% 100%;opacity:1}to{-webkit-transform:scaleY(.8);transform:scaleY(.8);-webkit-transform-origin:100% 100%;transform-origin:100% 100%;opacity:0}}@-webkit-keyframes antSlideLeftIn{0%{-webkit-transform:scaleX(.8);transform:scaleX(.8);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}to{-webkit-transform:scaleX(1);transform:scaleX(1);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@keyframes antSlideLeftIn{0%{-webkit-transform:scaleX(.8);transform:scaleX(.8);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}to{-webkit-transform:scaleX(1);transform:scaleX(1);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@-webkit-keyframes antSlideLeftOut{0%{-webkit-transform:scaleX(1);transform:scaleX(1);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}to{-webkit-transform:scaleX(.8);transform:scaleX(.8);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}}@keyframes antSlideLeftOut{0%{-webkit-transform:scaleX(1);transform:scaleX(1);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}to{-webkit-transform:scaleX(.8);transform:scaleX(.8);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}}@-webkit-keyframes antSlideRightIn{0%{-webkit-transform:scaleX(.8);transform:scaleX(.8);-webkit-transform-origin:100% 0;transform-origin:100% 0;opacity:0}to{-webkit-transform:scaleX(1);transform:scaleX(1);-webkit-transform-origin:100% 0;transform-origin:100% 0;opacity:1}}@keyframes antSlideRightIn{0%{-webkit-transform:scaleX(.8);transform:scaleX(.8);-webkit-transform-origin:100% 0;transform-origin:100% 0;opacity:0}to{-webkit-transform:scaleX(1);transform:scaleX(1);-webkit-transform-origin:100% 0;transform-origin:100% 0;opacity:1}}@-webkit-keyframes antSlideRightOut{0%{-webkit-transform:scaleX(1);transform:scaleX(1);-webkit-transform-origin:100% 0;transform-origin:100% 0;opacity:1}to{-webkit-transform:scaleX(.8);transform:scaleX(.8);-webkit-transform-origin:100% 0;transform-origin:100% 0;opacity:0}}@keyframes antSlideRightOut{0%{-webkit-transform:scaleX(1);transform:scaleX(1);-webkit-transform-origin:100% 0;transform-origin:100% 0;opacity:1}to{-webkit-transform:scaleX(.8);transform:scaleX(.8);-webkit-transform-origin:100% 0;transform-origin:100% 0;opacity:0}}.swing-appear,.swing-enter{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.swing-appear.swing-appear-active,.swing-enter.swing-enter-active{-webkit-animation-name:antSwingIn;animation-name:antSwingIn;-webkit-animation-play-state:running;animation-play-state:running}@-webkit-keyframes antSwingIn{0%,to{-webkit-transform:translateX(0);transform:translateX(0)}20%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}40%{-webkit-transform:translateX(10px);transform:translateX(10px)}60%{-webkit-transform:translateX(-5px);transform:translateX(-5px)}80%{-webkit-transform:translateX(5px);transform:translateX(5px)}}@keyframes antSwingIn{0%,to{-webkit-transform:translateX(0);transform:translateX(0)}20%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}40%{-webkit-transform:translateX(10px);transform:translateX(10px)}60%{-webkit-transform:translateX(-5px);transform:translateX(-5px)}80%{-webkit-transform:translateX(5px);transform:translateX(5px)}}.zoom-appear,.zoom-enter,.zoom-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.zoom-appear.zoom-appear-active,.zoom-enter.zoom-enter-active{-webkit-animation-name:antZoomIn;animation-name:antZoomIn;-webkit-animation-play-state:running;animation-play-state:running}.zoom-leave.zoom-leave-active{-webkit-animation-name:antZoomOut;animation-name:antZoomOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.zoom-appear,.zoom-enter{-webkit-transform:scale(0);transform:scale(0);opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.zoom-leave{-webkit-animation-timing-function:cubic-bezier(.78,.14,.15,.86);animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.zoom-big-appear,.zoom-big-enter,.zoom-big-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.zoom-big-appear.zoom-big-appear-active,.zoom-big-enter.zoom-big-enter-active{-webkit-animation-name:antZoomBigIn;animation-name:antZoomBigIn;-webkit-animation-play-state:running;animation-play-state:running}.zoom-big-leave.zoom-big-leave-active{-webkit-animation-name:antZoomBigOut;animation-name:antZoomBigOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.zoom-big-appear,.zoom-big-enter{-webkit-transform:scale(0);transform:scale(0);opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.zoom-big-leave{-webkit-animation-timing-function:cubic-bezier(.78,.14,.15,.86);animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.zoom-big-fast-appear,.zoom-big-fast-enter,.zoom-big-fast-leave{-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.zoom-big-fast-appear.zoom-big-fast-appear-active,.zoom-big-fast-enter.zoom-big-fast-enter-active{-webkit-animation-name:antZoomBigIn;animation-name:antZoomBigIn;-webkit-animation-play-state:running;animation-play-state:running}.zoom-big-fast-leave.zoom-big-fast-leave-active{-webkit-animation-name:antZoomBigOut;animation-name:antZoomBigOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.zoom-big-fast-appear,.zoom-big-fast-enter{-webkit-transform:scale(0);transform:scale(0);opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.zoom-big-fast-leave{-webkit-animation-timing-function:cubic-bezier(.78,.14,.15,.86);animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.zoom-up-appear,.zoom-up-enter,.zoom-up-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.zoom-up-appear.zoom-up-appear-active,.zoom-up-enter.zoom-up-enter-active{-webkit-animation-name:antZoomUpIn;animation-name:antZoomUpIn;-webkit-animation-play-state:running;animation-play-state:running}.zoom-up-leave.zoom-up-leave-active{-webkit-animation-name:antZoomUpOut;animation-name:antZoomUpOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.zoom-up-appear,.zoom-up-enter{-webkit-transform:scale(0);transform:scale(0);opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.zoom-up-leave{-webkit-animation-timing-function:cubic-bezier(.78,.14,.15,.86);animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.zoom-down-appear,.zoom-down-enter,.zoom-down-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.zoom-down-appear.zoom-down-appear-active,.zoom-down-enter.zoom-down-enter-active{-webkit-animation-name:antZoomDownIn;animation-name:antZoomDownIn;-webkit-animation-play-state:running;animation-play-state:running}.zoom-down-leave.zoom-down-leave-active{-webkit-animation-name:antZoomDownOut;animation-name:antZoomDownOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.zoom-down-appear,.zoom-down-enter{-webkit-transform:scale(0);transform:scale(0);opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.zoom-down-leave{-webkit-animation-timing-function:cubic-bezier(.78,.14,.15,.86);animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.zoom-left-appear,.zoom-left-enter,.zoom-left-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.zoom-left-appear.zoom-left-appear-active,.zoom-left-enter.zoom-left-enter-active{-webkit-animation-name:antZoomLeftIn;animation-name:antZoomLeftIn;-webkit-animation-play-state:running;animation-play-state:running}.zoom-left-leave.zoom-left-leave-active{-webkit-animation-name:antZoomLeftOut;animation-name:antZoomLeftOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.zoom-left-appear,.zoom-left-enter{-webkit-transform:scale(0);transform:scale(0);opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.zoom-left-leave{-webkit-animation-timing-function:cubic-bezier(.78,.14,.15,.86);animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.zoom-right-appear,.zoom-right-enter,.zoom-right-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.zoom-right-appear.zoom-right-appear-active,.zoom-right-enter.zoom-right-enter-active{-webkit-animation-name:antZoomRightIn;animation-name:antZoomRightIn;-webkit-animation-play-state:running;animation-play-state:running}.zoom-right-leave.zoom-right-leave-active{-webkit-animation-name:antZoomRightOut;animation-name:antZoomRightOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.zoom-right-appear,.zoom-right-enter{-webkit-transform:scale(0);transform:scale(0);opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.zoom-right-leave{-webkit-animation-timing-function:cubic-bezier(.78,.14,.15,.86);animation-timing-function:cubic-bezier(.78,.14,.15,.86)}@-webkit-keyframes antZoomIn{0%{-webkit-transform:scale(.2);transform:scale(.2);opacity:0}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes antZoomIn{0%{-webkit-transform:scale(.2);transform:scale(.2);opacity:0}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@-webkit-keyframes antZoomOut{0%{-webkit-transform:scale(1);transform:scale(1)}to{-webkit-transform:scale(.2);transform:scale(.2);opacity:0}}@keyframes antZoomOut{0%{-webkit-transform:scale(1);transform:scale(1)}to{-webkit-transform:scale(.2);transform:scale(.2);opacity:0}}@-webkit-keyframes antZoomBigIn{0%{-webkit-transform:scale(.8);transform:scale(.8);opacity:0}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes antZoomBigIn{0%{-webkit-transform:scale(.8);transform:scale(.8);opacity:0}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@-webkit-keyframes antZoomBigOut{0%{-webkit-transform:scale(1);transform:scale(1)}to{-webkit-transform:scale(.8);transform:scale(.8);opacity:0}}@keyframes antZoomBigOut{0%{-webkit-transform:scale(1);transform:scale(1)}to{-webkit-transform:scale(.8);transform:scale(.8);opacity:0}}@-webkit-keyframes antZoomUpIn{0%{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:50% 0;transform-origin:50% 0;opacity:0}to{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:50% 0;transform-origin:50% 0}}@keyframes antZoomUpIn{0%{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:50% 0;transform-origin:50% 0;opacity:0}to{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:50% 0;transform-origin:50% 0}}@-webkit-keyframes antZoomUpOut{0%{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:50% 0;transform-origin:50% 0}to{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:50% 0;transform-origin:50% 0;opacity:0}}@keyframes antZoomUpOut{0%{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:50% 0;transform-origin:50% 0}to{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:50% 0;transform-origin:50% 0;opacity:0}}@-webkit-keyframes antZoomLeftIn{0%{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:0 50%;transform-origin:0 50%;opacity:0}to{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:0 50%;transform-origin:0 50%}}@keyframes antZoomLeftIn{0%{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:0 50%;transform-origin:0 50%;opacity:0}to{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:0 50%;transform-origin:0 50%}}@-webkit-keyframes antZoomLeftOut{0%{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:0 50%;transform-origin:0 50%}to{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:0 50%;transform-origin:0 50%;opacity:0}}@keyframes antZoomLeftOut{0%{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:0 50%;transform-origin:0 50%}to{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:0 50%;transform-origin:0 50%;opacity:0}}@-webkit-keyframes antZoomRightIn{0%{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:100% 50%;transform-origin:100% 50%;opacity:0}to{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:100% 50%;transform-origin:100% 50%}}@keyframes antZoomRightIn{0%{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:100% 50%;transform-origin:100% 50%;opacity:0}to{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:100% 50%;transform-origin:100% 50%}}@-webkit-keyframes antZoomRightOut{0%{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:100% 50%;transform-origin:100% 50%}to{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:100% 50%;transform-origin:100% 50%;opacity:0}}@keyframes antZoomRightOut{0%{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:100% 50%;transform-origin:100% 50%}to{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:100% 50%;transform-origin:100% 50%;opacity:0}}@-webkit-keyframes antZoomDownIn{0%{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:50% 100%;transform-origin:50% 100%;opacity:0}to{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:50% 100%;transform-origin:50% 100%}}@keyframes antZoomDownIn{0%{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:50% 100%;transform-origin:50% 100%;opacity:0}to{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:50% 100%;transform-origin:50% 100%}}@-webkit-keyframes antZoomDownOut{0%{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:50% 100%;transform-origin:50% 100%}to{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:50% 100%;transform-origin:50% 100%;opacity:0}}@keyframes antZoomDownOut{0%{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:50% 100%;transform-origin:50% 100%}to{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:50% 100%;transform-origin:50% 100%;opacity:0}}.ant-motion-collapse-legacy{overflow:hidden}.ant-motion-collapse,.ant-motion-collapse-legacy-active{-webkit-transition:height .15s cubic-bezier(.645,.045,.355,1),opacity .15s cubic-bezier(.645,.045,.355,1)!important;transition:height .15s cubic-bezier(.645,.045,.355,1),opacity .15s cubic-bezier(.645,.045,.355,1)!important}.ant-motion-collapse{overflow:hidden}#nprogress{pointer-events:none}#nprogress .bar{position:fixed;top:0;left:0;z-index:1031;width:100%;height:2px;background:#1890ff}#nprogress .peg{position:absolute;right:0;display:block;width:100px;height:100%;opacity:1;-webkit-transform:rotate(3deg) translateY(-4px);transform:rotate(3deg) translateY(-4px);-webkit-box-shadow:0 0 10px #1890ff,0 0 5px #1890ff;box-shadow:0 0 10px #1890ff,0 0 5px #1890ff}#nprogress .spinner{position:fixed;top:15px;right:15px;z-index:1031;display:block}#nprogress .spinner-icon{width:18px;height:18px;-webkit-box-sizing:border-box;box-sizing:border-box;border:2px solid transparent;border-top-color:#1890ff;border-left-color:#1890ff;border-radius:50%;-webkit-animation:nprogress-spinner .4s linear infinite;animation:nprogress-spinner .4s linear infinite}.nprogress-custom-parent{position:relative;overflow:hidden}.nprogress-custom-parent #nprogress .bar,.nprogress-custom-parent #nprogress .spinner{position:absolute}@-webkit-keyframes nprogress-spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes nprogress-spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}#app,#root,body,html{height:100%}.colorWeak{-webkit-filter:invert(80%);filter:invert(80%)}.ant-layout.layout-basic{height:100vh;min-height:100vh}canvas{display:block}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility}ol,ul{list-style:none}.table-alert{margin-bottom:16px}.table-operator{margin-bottom:18px}.table-operator button{margin-right:8px}.table-page-search-wrapper .ant-form-inline .ant-form-item{display:-webkit-box;display:-ms-flexbox;display:flex;margin-right:0;margin-bottom:24px}.table-page-search-wrapper .ant-form-inline .ant-form-item .ant-form-item-control-wrapper{-webkit-box-flex:1;-ms-flex:1 1;flex:1 1;display:inline-block;vertical-align:middle}.table-page-search-wrapper .ant-form-inline .ant-form-item>.ant-form-item-label{width:auto;padding-right:8px;line-height:32px}.table-page-search-wrapper .ant-form-inline .ant-form-item .ant-form-item-control{height:32px;line-height:32px}.table-page-search-wrapper .table-page-search-submitButtons{display:block;margin-bottom:24px;white-space:nowrap}@media (max-width:480px){.ant-table{width:100%;overflow-x:auto}.ant-table-tbody>tr>td,.ant-table-tbody>tr>th,.ant-table-thead>tr>td,.ant-table-thead>tr>th{white-space:pre}.ant-table-tbody>tr>td>span,.ant-table-tbody>tr>th>span,.ant-table-thead>tr>td>span,.ant-table-thead>tr>th>span{display:block}}#webpack-dev-server-client-overlay,#webpack-hot-middleware-client-overlay,.webpack-dev-server-client-overlay{display:none!important;pointer-events:none!important;visibility:hidden!important}@media (max-width:768px){.ant-pro-global-header-logo{padding:0!important;padding-left:0!important;padding-right:0!important;padding-top:0!important;padding-bottom:0!important}}body.dark .ant-layout-sider,body.dark .ant-layout-sider-children,body.dark .ant-layout-sider-dark,body.dark .ant-menu-dark,body.dark .ant-menu-dark .ant-menu-inline.ant-menu-sub,body.dark .ant-menu.ant-menu-dark,body.dark .ant-pro-sider-menu-logo,body.dark .ant-pro-sider-menu-sider,body.dark .ant-pro-sider-menu-sider.ant-layout-sider-dark,body.dark aside.ant-layout-sider.ant-layout-sider-dark,body.dark ul.ant-menu.ant-menu-dark.ant-menu-root.ant-menu-inline,body.realdark .ant-layout-sider,body.realdark .ant-layout-sider-children,body.realdark .ant-layout-sider-dark,body.realdark .ant-menu-dark,body.realdark .ant-menu-dark .ant-menu-inline.ant-menu-sub,body.realdark .ant-menu.ant-menu-dark,body.realdark .ant-pro-sider-menu-logo,body.realdark .ant-pro-sider-menu-sider,body.realdark .ant-pro-sider-menu-sider.ant-layout-sider-dark,body.realdark aside.ant-layout-sider.ant-layout-sider-dark,body.realdark ul.ant-menu.ant-menu-dark.ant-menu-root.ant-menu-inline{background:#0a0a0a!important}body.dark .ant-menu-dark .ant-menu-sub,body.dark .ant-menu.ant-menu-dark .ant-menu-sub,body.realdark .ant-menu-dark .ant-menu-sub,body.realdark .ant-menu.ant-menu-dark .ant-menu-sub{background:#111!important}body.dark .ant-layout-sider-trigger,body.realdark .ant-layout-sider-trigger{border-top:1px solid #1c1c1c}body.dark .ant-layout-header,body.dark .ant-layout-sider-trigger,body.realdark .ant-layout-header,body.realdark .ant-layout-sider-trigger{background:#111!important;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important}body.dark .ant-layout-header,body.realdark .ant-layout-header{border-bottom:1px solid #1c1c1c!important}body.dark .ant-pro-global-header,body.realdark .ant-pro-global-header{background:#111!important;border-bottom:none!important;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important}body.dark .ant-layout,body.realdark .ant-layout{background:#0a0a0a!important}body.dark .ant-layout-content,body.dark .ant-pro-basicLayout-content,body.realdark .ant-layout-content,body.realdark .ant-pro-basicLayout-content{background:#141414!important}body.dark .ant-card,body.realdark .ant-card{background:#1c1c1c!important;border-color:#2a2a2a!important;color:hsla(0,0%,100%,.85)}body.dark .ant-card .ant-card-head,body.realdark .ant-card .ant-card-head{background:#1c1c1c!important;border-bottom-color:#2a2a2a!important;color:hsla(0,0%,100%,.85)!important}body.dark .ant-card .ant-card-body,body.realdark .ant-card .ant-card-body{color:hsla(0,0%,100%,.85)}body.dark .ant-table,body.realdark .ant-table{background:#1c1c1c!important;color:hsla(0,0%,100%,.85)}body.dark .ant-table .ant-table-thead>tr>th,body.realdark .ant-table .ant-table-thead>tr>th{background:#141414!important;border-bottom-color:#2a2a2a!important;color:hsla(0,0%,100%,.85)!important}body.dark .ant-table .ant-table-tbody>tr>td,body.realdark .ant-table .ant-table-tbody>tr>td{border-bottom-color:#2a2a2a!important;color:hsla(0,0%,100%,.85)}body.dark .ant-table .ant-table-tbody>tr:hover>td,body.realdark .ant-table .ant-table-tbody>tr:hover>td{background:#252525!important}body.dark .ant-table .ant-table-placeholder,body.realdark .ant-table .ant-table-placeholder{background:#1c1c1c!important;color:#666!important}body.dark .ant-pagination-item,body.realdark .ant-pagination-item{background:#1c1c1c!important;border-color:#2a2a2a!important}body.dark .ant-pagination-item a,body.realdark .ant-pagination-item a{color:hsla(0,0%,100%,.85)!important}body.dark .ant-pagination-item-active,body.realdark .ant-pagination-item-active{border-color:#1890ff!important}body.dark .ant-input,body.dark .ant-input-number,body.dark .ant-pagination-next .ant-pagination-item-link,body.dark .ant-pagination-prev .ant-pagination-item-link,body.dark .ant-select-selection,body.realdark .ant-input,body.realdark .ant-input-number,body.realdark .ant-pagination-next .ant-pagination-item-link,body.realdark .ant-pagination-prev .ant-pagination-item-link,body.realdark .ant-select-selection{background:#1c1c1c!important;border-color:#2a2a2a!important;color:hsla(0,0%,100%,.85)!important}body.dark .ant-input::-webkit-input-placeholder,body.realdark .ant-input::-webkit-input-placeholder{color:#555!important}body.dark .ant-input::-moz-placeholder,body.realdark .ant-input::-moz-placeholder{color:#555!important}body.dark .ant-input:-ms-input-placeholder,body.realdark .ant-input:-ms-input-placeholder{color:#555!important}body.dark .ant-input::-ms-input-placeholder,body.realdark .ant-input::-ms-input-placeholder{color:#555!important}body.dark .ant-input::placeholder,body.realdark .ant-input::placeholder{color:#555!important}body.dark .ant-form-item-label>label,body.realdark .ant-form-item-label>label{color:hsla(0,0%,100%,.85)!important}body.dark .ant-input-clear-icon,body.dark .ant-input-clear-icon .anticon,body.dark .ant-input-number-handler-down-inner,body.dark .ant-input-number-handler-up-inner,body.dark .ant-input-number-handler-wrap,body.dark .ant-input-suffix .anticon,body.dark .ant-select-arrow,body.dark .ant-select-clear,body.realdark .ant-input-clear-icon,body.realdark .ant-input-clear-icon .anticon,body.realdark .ant-input-number-handler-down-inner,body.realdark .ant-input-number-handler-up-inner,body.realdark .ant-input-number-handler-wrap,body.realdark .ant-input-suffix .anticon,body.realdark .ant-select-arrow,body.realdark .ant-select-clear{color:#8b949e!important}body.dark .ant-input-clear-icon:hover,body.dark .ant-input-number-handler:hover .ant-input-number-handler-down-inner,body.dark .ant-input-number-handler:hover .ant-input-number-handler-up-inner,body.dark .ant-input-suffix .anticon:hover,body.dark .ant-select-arrow:hover,body.dark .ant-select-clear:hover,body.realdark .ant-input-clear-icon:hover,body.realdark .ant-input-number-handler:hover .ant-input-number-handler-down-inner,body.realdark .ant-input-number-handler:hover .ant-input-number-handler-up-inner,body.realdark .ant-input-suffix .anticon:hover,body.realdark .ant-select-arrow:hover,body.realdark .ant-select-clear:hover{color:#58a6ff!important}body.dark .ant-btn-default,body.realdark .ant-btn-default{background:#1c1c1c!important;border-color:#2a2a2a!important;color:hsla(0,0%,100%,.85)!important}body.dark .ant-btn-default:hover,body.realdark .ant-btn-default:hover{border-color:#1890ff!important;color:#1890ff!important}body.dark .ant-page-header,body.realdark .ant-page-header{background:transparent!important}body.dark .ant-breadcrumb-link,body.dark .ant-breadcrumb-separator,body.dark .ant-breadcrumb>span,body.realdark .ant-breadcrumb-link,body.realdark .ant-breadcrumb-separator,body.realdark .ant-breadcrumb>span{color:hsla(0,0%,100%,.45)!important}body.dark .ant-page-header-heading-title,body.realdark .ant-page-header-heading-title{color:hsla(0,0%,100%,.85)!important}body.dark .ant-tabs-bar,body.realdark .ant-tabs-bar{border-bottom-color:#2a2a2a!important}body.dark .ant-tabs-tab,body.realdark .ant-tabs-tab{color:#888!important}body.dark .ant-tabs-tab:hover,body.realdark .ant-tabs-tab:hover{color:#d4d4d4!important}body.dark .ant-tabs-tab-active,body.realdark .ant-tabs-tab-active{color:#1890ff!important}body.dark .ant-modal-content,body.realdark .ant-modal-content{background:#1c1c1c!important}body.dark .ant-modal-content .ant-modal-header,body.realdark .ant-modal-content .ant-modal-header{background:#1c1c1c!important;border-bottom-color:#2a2a2a!important}body.dark .ant-modal-content .ant-modal-body,body.dark .ant-modal-content .ant-modal-header .ant-modal-title,body.realdark .ant-modal-content .ant-modal-body,body.realdark .ant-modal-content .ant-modal-header .ant-modal-title{color:hsla(0,0%,100%,.85)!important}body.dark .ant-modal-content .ant-modal-footer,body.realdark .ant-modal-content .ant-modal-footer{border-top-color:#2a2a2a!important;background:#1c1c1c!important}body.dark .ant-modal-content .ant-modal-close-x,body.realdark .ant-modal-content .ant-modal-close-x{color:#888!important}body.dark .ant-select-dropdown,body.realdark .ant-select-dropdown{background:#1c1c1c!important}body.dark .ant-select-dropdown .ant-select-dropdown-menu-item,body.realdark .ant-select-dropdown .ant-select-dropdown-menu-item{color:hsla(0,0%,100%,.85)!important}body.dark .ant-select-dropdown .ant-select-dropdown-menu-item-active,body.dark .ant-select-dropdown .ant-select-dropdown-menu-item:hover,body.realdark .ant-select-dropdown .ant-select-dropdown-menu-item-active,body.realdark .ant-select-dropdown .ant-select-dropdown-menu-item:hover{background:#252525!important}body.dark .ant-select-dropdown .ant-select-dropdown-menu-item-selected,body.realdark .ant-select-dropdown .ant-select-dropdown-menu-item-selected{background:rgba(24,144,255,.1)!important;color:#1890ff!important}.basic-layout-wrapper.dark .ant-layout-header,.basic-layout-wrapper.realdark .ant-layout-header,body.dark .basic-layout-wrapper .ant-layout-header,body.realdark .basic-layout-wrapper .ant-layout-header{background:#111!important;background-color:#111!important;border-bottom:1px solid #1c1c1c!important;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.06)!important;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.06)!important}.basic-layout-wrapper.dark .ant-pro-global-header,.basic-layout-wrapper.realdark .ant-pro-global-header,body.dark .basic-layout-wrapper .ant-pro-global-header,body.realdark .basic-layout-wrapper .ant-pro-global-header{background:#111!important;background-color:#111!important;border-bottom:none!important;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.06)!important;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.06)!important}.basic-layout-wrapper.dark .ant-pro-basicLayout-content,.basic-layout-wrapper.dark .ant-pro-page-header-wrap,.basic-layout-wrapper.dark .ant-pro-page-header-wrap-children-content,.basic-layout-wrapper.realdark .ant-pro-basicLayout-content,.basic-layout-wrapper.realdark .ant-pro-page-header-wrap,.basic-layout-wrapper.realdark .ant-pro-page-header-wrap-children-content,body.dark .basic-layout-wrapper .ant-pro-page-header-wrap,body.dark .basic-layout-wrapper .ant-pro-page-header-wrap-children-content,body.realdark .basic-layout-wrapper .ant-pro-page-header-wrap,body.realdark .basic-layout-wrapper .ant-pro-page-header-wrap-children-content{background:#141414!important;background-color:#141414!important}.basic-layout-wrapper.dark .custom-menu-footer,.basic-layout-wrapper.realdark .custom-menu-footer,body.dark .basic-layout-wrapper .custom-menu-footer,body.realdark .basic-layout-wrapper .custom-menu-footer{background:#111!important;background-color:#111!important;border-top:1px solid #1c1c1c!important;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.06)!important;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.06)!important;color:hsla(0,0%,100%,.88)!important}.basic-layout-wrapper.dark .custom-menu-footer .menu-footer-content .footer-section,.basic-layout-wrapper.realdark .custom-menu-footer .menu-footer-content .footer-section{padding:4px 2px!important;margin-bottom:6px!important;border-radius:0!important;background:transparent!important;-webkit-box-shadow:none!important;box-shadow:none!important;opacity:1!important}.basic-layout-wrapper.dark .custom-menu-footer .menu-footer-content .footer-section:hover,.basic-layout-wrapper.realdark .custom-menu-footer .menu-footer-content .footer-section:hover{background:transparent!important}.basic-layout-wrapper.dark .custom-menu-footer .footer-section .section-title,.basic-layout-wrapper.realdark .custom-menu-footer .footer-section .section-title{color:hsla(0,0%,100%,.5)!important;opacity:1!important;text-transform:uppercase!important;letter-spacing:.5px!important;font-size:9px!important}.basic-layout-wrapper.dark .custom-menu-footer .footer-section .section-links,.basic-layout-wrapper.realdark .custom-menu-footer .footer-section .section-links{opacity:1!important}.basic-layout-wrapper.dark .custom-menu-footer .footer-section .section-links a,.basic-layout-wrapper.realdark .custom-menu-footer .footer-section .section-links a{color:hsla(0,0%,100%,.68)!important}.basic-layout-wrapper.dark .custom-menu-footer .footer-section.copyright,.basic-layout-wrapper.realdark .custom-menu-footer .footer-section.copyright{color:hsla(0,0%,100%,.45)!important;border-top-color:#1c1c1c!important;background:transparent!important;-webkit-box-shadow:none!important;box-shadow:none!important}.basic-layout-wrapper.dark .custom-menu-footer .footer-section.version,.basic-layout-wrapper.realdark .custom-menu-footer .footer-section.version{color:hsla(0,0%,100%,.35)!important}.basic-layout-wrapper.dark .custom-menu-footer .social-icon,.basic-layout-wrapper.realdark .custom-menu-footer .social-icon{background:hsla(0,0%,100%,.08)!important;color:hsla(0,0%,100%,.75)!important}.basic-layout-wrapper.light .custom-menu-footer{background:#fff!important;background-color:#fff!important;border-top-color:#e8e8e8!important;-webkit-box-shadow:none!important;box-shadow:none!important;color:rgba(0,0,0,.85)!important}.basic-layout-wrapper.light .custom-menu-footer .footer-section .section-links{opacity:.75}body.dark .ant-modal-wrap [class*=billing],body.dark .ant-modal-wrap [class*=billing] .ant-steps-item-description,body.dark .ant-modal-wrap [class*=billing] .ant-steps-item-title,body.dark .ant-modal-wrap [class*=checkout],body.dark .ant-modal-wrap [class*=payment],body.dark .ant-modal-wrap [class*=payment] .ant-steps-item-description,body.dark .ant-modal-wrap [class*=payment] .ant-steps-item-title,body.dark .ant-modal-wrap [class*=recharge],body.dark .ant-modal-wrap [class*=usdt],body.dark .ant-modal-wrap [class*=usdt] .ant-steps-item-description,body.dark .ant-modal-wrap [class*=usdt] .ant-steps-item-title,body.realdark .ant-modal-wrap [class*=billing],body.realdark .ant-modal-wrap [class*=billing] .ant-steps-item-description,body.realdark .ant-modal-wrap [class*=billing] .ant-steps-item-title,body.realdark .ant-modal-wrap [class*=checkout],body.realdark .ant-modal-wrap [class*=payment],body.realdark .ant-modal-wrap [class*=payment] .ant-steps-item-description,body.realdark .ant-modal-wrap [class*=payment] .ant-steps-item-title,body.realdark .ant-modal-wrap [class*=recharge],body.realdark .ant-modal-wrap [class*=usdt],body.realdark .ant-modal-wrap [class*=usdt] .ant-steps-item-description,body.realdark .ant-modal-wrap [class*=usdt] .ant-steps-item-title{color:#d4d4d4!important}body.dark .ant-modal-wrap [class*=billing] .ant-descriptions-item-content,body.dark .ant-modal-wrap [class*=billing] .ant-statistic-content,body.dark .ant-modal-wrap [class*=payment] .ant-descriptions-item-content,body.dark .ant-modal-wrap [class*=payment] .ant-statistic-content,body.dark .ant-modal-wrap [class*=usdt] .ant-descriptions-item-content,body.dark .ant-modal-wrap [class*=usdt] .ant-statistic-content,body.realdark .ant-modal-wrap [class*=billing] .ant-descriptions-item-content,body.realdark .ant-modal-wrap [class*=billing] .ant-statistic-content,body.realdark .ant-modal-wrap [class*=payment] .ant-descriptions-item-content,body.realdark .ant-modal-wrap [class*=payment] .ant-statistic-content,body.realdark .ant-modal-wrap [class*=usdt] .ant-descriptions-item-content,body.realdark .ant-modal-wrap [class*=usdt] .ant-statistic-content{color:#e5e5e5!important} \ No newline at end of file diff --git a/frontend/dist/css/theme-colors-e1bf67d0.css b/frontend/dist/css/theme-colors-6550dbc0.css similarity index 81% rename from frontend/dist/css/theme-colors-e1bf67d0.css rename to frontend/dist/css/theme-colors-6550dbc0.css index 4fd89cf..62153fb 100644 --- a/frontend/dist/css/theme-colors-e1bf67d0.css +++ b/frontend/dist/css/theme-colors-6550dbc0.css @@ -39,61 +39,79 @@ body.dark .ant-pagination-item-active,body.realdark .ant-pagination-item-active{ body.dark .ant-btn-default:hover,body.realdark .ant-btn-default:hover{border-color:#1890ff!important;color:#1890ff!important} body.dark .ant-tabs-tab-active,body.realdark .ant-tabs-tab-active{color:#1890ff!important} body.dark .ant-select-dropdown .ant-select-dropdown-menu-item-selected,body.realdark .ant-select-dropdown .ant-select-dropdown-menu-item-selected{background:rgba(24,144,255,.1)!important;color:#1890ff!important} -.fast-analysis-report .loading-container .loading-content-pro .loading-header .loading-icon-pro[data-v-75da11ec]{color:#1890ff} -.fast-analysis-report .loading-container .loading-content-pro .progress-wrapper .progress-text[data-v-75da11ec]{color:#1890ff} -.fast-analysis-report .loading-container .loading-content-pro .current-step[data-v-75da11ec]{color:#1890ff} -.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item.active[data-v-75da11ec]{background:#e6f7ff;color:#1890ff} -.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item.active .step-dot[data-v-75da11ec]{background:#1890ff;-webkit-box-shadow:0 0 0 3px rgba(24,144,255,.2);box-shadow:0 0 0 3px rgba(24,144,255,.2)} -.fast-analysis-report .result-container .decision-card[data-v-75da11ec]{border-left:6px solid #1890ff} -.fast-analysis-report .result-container .decision-card .consensus-strip[data-v-75da11ec]{background:rgba(24,144,255,.06);border:1px solid rgba(24,144,255,.2)} -.fast-analysis-report .result-container .decision-card .consensus-strip .consensus-strip-title[data-v-75da11ec]{color:#1890ff} -.fast-analysis-report .result-container .price-info-row .price-card.current[data-v-75da11ec]{border-top:3px solid #1890ff} -.fast-analysis-report .result-container .scores-row .score-item .score-header .anticon[data-v-75da11ec]{color:#1890ff} -.fast-analysis-report .result-container .scores-row .score-item.overall[data-v-75da11ec]{background:linear-gradient(135deg,#e6f7ff,#fff);border:1px solid #91d5ff} -.fast-analysis-report .result-container .detailed-analysis .analysis-card[data-v-75da11ec]{border-left:4px solid #1890ff} -.fast-analysis-report .result-container .detailed-analysis .analysis-card.technical[data-v-75da11ec]{border-left-color:#1890ff} -.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-header.technical .anticon[data-v-75da11ec]{color:#1890ff} -.fast-analysis-report .result-container .analysis-details .detail-section .detail-list li[data-v-75da11ec]:before{color:#1890ff} -.fast-analysis-report .result-container .indicators-section .section-title .anticon[data-v-75da11ec]{color:#1890ff} -.fast-analysis-report.theme-dark .decision-card[data-v-75da11ec]{border-left-color:#1890ff} -.fast-analysis-report.theme-dark .decision-card .consensus-strip[data-v-75da11ec]{background:rgba(24,144,255,.12);border-color:rgba(24,144,255,.35)} -.fast-analysis-report.theme-dark .decision-card .consensus-strip .consensus-strip-title[data-v-75da11ec]{color:#69c0ff} -.fast-analysis-report.theme-dark .detailed-analysis .analysis-card.technical[data-v-75da11ec]{border-left-color:#1890ff} -.fast-analysis-report.theme-dark .detail-section .indicators-methodology .anticon[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .indicators-methodology .anticon[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .indicators-methodology .anticon[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .indicators-methodology .anticon[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .indicators-methodology .anticon[data-v-75da11ec]{color:#69c0ff} -.left-panel .heatmap-box .box-header[data-v-5cbe52d9] .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{background:var(--primary-color,#1890ff);border-color:var(--primary-color,#1890ff)} -.left-panel .calendar-box .box-header .box-title .anticon[data-v-5cbe52d9]{color:var(--primary-color,#1890ff)} -.right-panel .analysis-toolbar .analyze-button[data-v-5cbe52d9]{background:var(--primary-color,#1890ff);border-color:var(--primary-color,#1890ff)} -.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card.active[data-v-5cbe52d9]{background:rgba(24,144,255,.08);border-color:#1890ff} -.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card-hover-actions .wl-hover-btn[data-v-5cbe52d9]:hover{color:#1890ff;background:rgba(24,144,255,.1)} -.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card.active .wl-card-hover-actions[data-v-5cbe52d9]{background:-webkit-gradient(linear,left top,right top,from(transparent),color-stop(30%,rgba(24,144,255,.06)));background:linear-gradient(90deg,transparent,rgba(24,144,255,.06) 30%)} -.ai-analysis-container.theme-dark .placeholder-hero .hero-badge[data-v-5cbe52d9]{background:rgba(24,144,255,.1);border-color:rgba(24,144,255,.2)} -.ai-analysis-container.theme-dark .placeholder-hero .hstat[data-v-5cbe52d9]:hover{border-color:#1890ff;-webkit-box-shadow:0 4px 16px rgba(24,144,255,.12);box-shadow:0 4px 16px rgba(24,144,255,.12)} -.ai-analysis-container.theme-dark .placeholder-hero .hstat-icon[data-v-5cbe52d9]{background:linear-gradient(135deg,rgba(24,144,255,.12),rgba(114,46,209,.08))} -.ai-analysis-container.theme-dark .placeholder-hero .hero-cta .ant-btn-primary[data-v-5cbe52d9]{-webkit-box-shadow:0 4px 14px rgba(24,144,255,.35);box-shadow:0 4px 14px rgba(24,144,255,.35)} -.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip.active[data-v-5cbe52d9],.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip[data-v-5cbe52d9]:hover{border-color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08)} -.ai-analysis-container.theme-dark .hero-cta .ant-btn[data-v-5cbe52d9]:not(.ant-btn-primary):hover{border-color:#1890ff;color:#1890ff} -.ai-analysis-container.theme-dark .panel-header-icon[data-v-5cbe52d9]:hover{color:#1890ff;background:rgba(24,144,255,.08)} -.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip.active[data-v-5cbe52d9],.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip[data-v-5cbe52d9]:hover{border-color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08)} -.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-tabs-tab-active{color:#1890ff!important} -.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-tabs-ink-bar{background-color:#1890ff} -.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-btn-default:hover{border-color:#1890ff;color:#1890ff} -.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-alert{background:rgba(24,144,255,.06)} -.hero-bg-circle.c1[data-v-5cbe52d9]{background:radial-gradient(circle,rgba(24,144,255,.1) 0,transparent 70%)} -.hero-bg-grid[data-v-5cbe52d9]{background-image:linear-gradient(rgba(24,144,255,.03) 1px,transparent 0),linear-gradient(90deg,rgba(24,144,255,.03) 1px,transparent 0)} -.hero-badge[data-v-5cbe52d9]{color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08);border:1px solid rgba(24,144,255,.2)} -.hstat[data-v-5cbe52d9]:hover{border-color:var(--primary-color,#1890ff);-webkit-box-shadow:0 4px 16px rgba(24,144,255,.1);box-shadow:0 4px 16px rgba(24,144,255,.1)} -.hstat-icon[data-v-5cbe52d9]{background:linear-gradient(135deg,rgba(24,144,255,.1),rgba(114,46,209,.08));color:var(--primary-color,#1890ff)} -.hero-cta .ant-btn-primary[data-v-5cbe52d9]{-webkit-box-shadow:0 4px 14px rgba(24,144,255,.3);box-shadow:0 4px 14px rgba(24,144,255,.3)} -.panel-header-icon[data-v-5cbe52d9]:hover{color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08)} -.wl-card.active[data-v-5cbe52d9]{background:linear-gradient(135deg,#e6f7ff,#f0f5ff);border-color:#91d5ff} -.wl-card.active .wl-card-hover-actions[data-v-5cbe52d9]{background:-webkit-gradient(linear,left top,right top,from(transparent),color-stop(30%,#e6f7ff));background:linear-gradient(90deg,transparent,#e6f7ff 30%)} -.wl-hover-btn[data-v-5cbe52d9]:hover{color:var(--primary-color,#1890ff);background:#e6f7ff} +.fast-analysis-report .loading-container .loading-content-pro .loading-header .loading-icon-pro[data-v-03feb1fa]{color:var(--primary-color,#1890ff)} +.fast-analysis-report .loading-container .loading-content-pro .progress-wrapper .progress-text[data-v-03feb1fa]{color:var(--primary-color,#1890ff)} +.fast-analysis-report .loading-container .loading-content-pro .current-step[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 6%,transparent);color:var(--primary-color,#1890ff)} +.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item.active[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 6%,transparent);color:var(--primary-color,#1890ff)} +.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item.active .step-dot[data-v-03feb1fa]{background:var(--primary-color,#1890ff);-webkit-box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color,#1890ff) 15%,transparent);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color,#1890ff) 15%,transparent)} +.fast-analysis-report .result-container .decision-card[data-v-03feb1fa]:after{background:var(--primary-color,#1890ff)} +.fast-analysis-report .result-container .decision-card .consensus-strip[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 4%,transparent)} +.fast-analysis-report .result-container .decision-card .consensus-strip .consensus-strip-title[data-v-03feb1fa]{color:var(--primary-color,#1890ff)} +.fast-analysis-report .result-container .price-info-row .price-card.entry .price-label[data-v-03feb1fa]{color:var(--primary-color,#1890ff)} +.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-header .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)} +.fast-analysis-report .result-container .scores-row .score-item .score-header .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)} +.fast-analysis-report .result-container .scores-row .score-item.overall[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 3%,transparent)} +.fast-analysis-report .result-container .scores-row .score-item.overall .score-header .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)} +.fast-analysis-report .result-container .detailed-analysis .analysis-card.fundamental[data-v-03feb1fa]:before{background:var(--primary-color,#1890ff)} +.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-header.fundamental .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)} +.fast-analysis-report .result-container .indicators-section .section-title .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)} +.fast-analysis-report .result-container .indicators-section .indicators-methodology .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)} +.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap .indicators-pro-title .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)} +.fast-analysis-report.theme-dark .loading-container .loading-content-pro .loading-icon-pro[data-v-03feb1fa],.fast-analysis-report.theme-dark .loading-container .loading-content-pro .progress-wrapper .progress-text[data-v-03feb1fa]{color:var(--primary-color,#1890ff)} +.fast-analysis-report.theme-dark .loading-container .loading-content-pro .current-step[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 8%,transparent);color:var(--primary-color,#1890ff)} +.fast-analysis-report.theme-dark .loading-container .loading-content-pro .steps-list .step-item.active[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 8%,transparent);color:var(--primary-color,#1890ff)} +.fast-analysis-report.theme-dark .loading-container .loading-content-pro .steps-list .step-item.active .step-dot[data-v-03feb1fa]{background:var(--primary-color,#1890ff);-webkit-box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color,#1890ff) 15%,transparent);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color,#1890ff) 15%,transparent)} +.fast-analysis-report.theme-dark .result-container .decision-card .consensus-strip[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 5%,transparent)} +.fast-analysis-report.theme-dark .result-container .decision-card .consensus-strip .consensus-strip-title[data-v-03feb1fa]{color:var(--primary-color,#1890ff)} +.fast-analysis-report.theme-dark .result-container .price-info-row .price-card.entry .price-label[data-v-03feb1fa]{color:var(--primary-color,#1890ff)} +.fast-analysis-report.theme-dark .result-container .trend-outlook-card .trend-outlook-header .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)} +.fast-analysis-report.theme-dark .result-container .scores-row .score-item .score-header .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)} +.fast-analysis-report.theme-dark .result-container .scores-row .score-item.overall[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 4%,transparent)} +.fast-analysis-report.theme-dark .result-container .indicators-section .section-title .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)} +.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-methodology .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)} +.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap .indicators-pro-title .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)} +.fast-analysis-report.theme-dark .result-container .feedback-section .ant-btn[data-v-03feb1fa]:hover{border-color:color-mix(in srgb,var(--primary-color,#1890ff) 30%,transparent);color:var(--primary-color,#1890ff)} +.left-panel .calendar-box .box-header .box-title .anticon[data-v-06c771c0]{color:var(--primary-color,#1890ff)} +.right-panel .analysis-toolbar .analyze-button[data-v-06c771c0]{background:var(--primary-color,#1890ff);border-color:var(--primary-color,#1890ff)} +.ai-analysis-container.theme-dark .watchlist-panel .batch-bar .ant-btn[data-v-06c771c0]:not(.ant-btn-primary):hover{border-color:var(--primary-color,#1890ff);color:var(--primary-color,#1890ff)} +.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card.active[data-v-06c771c0]{background:color-mix(in srgb,var(--primary-color,#1890ff) 8%,transparent);border-color:color-mix(in srgb,var(--primary-color,#1890ff) 28%,transparent)} +.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card-hover-actions .wl-hover-btn[data-v-06c771c0]:hover{color:var(--primary-color,#1890ff);background:color-mix(in srgb,var(--primary-color,#1890ff) 12%,transparent)} +.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card.active .wl-card-hover-actions[data-v-06c771c0]{background:linear-gradient(90deg,transparent 0,color-mix(in srgb,var(--primary-color,#1890ff) 6%,transparent) 30%)} +.ai-analysis-container.theme-dark .placeholder-hero .hero-badge[data-v-06c771c0]{background:color-mix(in srgb,var(--primary-color,#1890ff) 10%,transparent);border-color:color-mix(in srgb,var(--primary-color,#1890ff) 25%,transparent);color:var(--primary-color,#1890ff)} +.ai-analysis-container.theme-dark .placeholder-hero .hstat[data-v-06c771c0]:hover{border-color:color-mix(in srgb,var(--primary-color,#1890ff) 35%,transparent);-webkit-box-shadow:0 4px 16px color-mix(in srgb,var(--primary-color,#1890ff) 12%,transparent);box-shadow:0 4px 16px color-mix(in srgb,var(--primary-color,#1890ff) 12%,transparent)} +.ai-analysis-container.theme-dark .placeholder-hero .hstat-icon[data-v-06c771c0]{background:color-mix(in srgb,var(--primary-color,#1890ff) 12%,transparent);color:var(--primary-color,#1890ff)} +.ai-analysis-container.theme-dark .placeholder-hero .hero-cta .ant-btn-primary[data-v-06c771c0]{-webkit-box-shadow:0 4px 14px color-mix(in srgb,var(--primary-color,#1890ff) 35%,transparent);box-shadow:0 4px 14px color-mix(in srgb,var(--primary-color,#1890ff) 35%,transparent)} +.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip.active[data-v-06c771c0],.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip[data-v-06c771c0]:hover{border-color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08)} +.ai-analysis-container.theme-dark .right-panel .analysis-toolbar .history-button[data-v-06c771c0]:hover{border-color:color-mix(in srgb,var(--primary-color,#1890ff) 45%,transparent);color:var(--primary-color,#1890ff)} +.ai-analysis-container.theme-dark .hero-cta .ant-btn[data-v-06c771c0]:not(.ant-btn-primary):hover{border-color:#1890ff;color:#1890ff} +.ai-analysis-container.theme-dark .panel-header-icon[data-v-06c771c0]:hover{color:var(--primary-color,#1890ff);background:color-mix(in srgb,var(--primary-color,#1890ff) 10%,transparent)} +.ai-analysis-container.theme-dark .batch-bar .ant-btn[data-v-06c771c0]:not(.ant-btn-primary):hover{border-color:var(--primary-color,#1890ff)!important;color:var(--primary-color,#1890ff)!important} +.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip.active[data-v-06c771c0],.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip[data-v-06c771c0]:hover{border-color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08)} +.ai-analysis-container.theme-dark[data-v-06c771c0] .ant-tabs-tab-active{color:#1890ff!important} +.ai-analysis-container.theme-dark[data-v-06c771c0] .ant-tabs-ink-bar{background-color:#1890ff} +.ai-analysis-container.theme-dark[data-v-06c771c0] .ant-btn-default:hover{border-color:#1890ff;color:#1890ff} +.ai-analysis-container.theme-dark[data-v-06c771c0] .ant-alert{background:rgba(24,144,255,.06)} +.hero-bg-circle.c1[data-v-06c771c0]{background:radial-gradient(circle,rgba(24,144,255,.1) 0,transparent 70%)} +.hero-bg-grid[data-v-06c771c0]{background-image:linear-gradient(rgba(24,144,255,.03) 1px,transparent 0),linear-gradient(90deg,rgba(24,144,255,.03) 1px,transparent 0)} +.hero-badge[data-v-06c771c0]{color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08);border:1px solid rgba(24,144,255,.2)} +.hstat[data-v-06c771c0]:hover{border-color:var(--primary-color,#1890ff);-webkit-box-shadow:0 4px 16px rgba(24,144,255,.1);box-shadow:0 4px 16px rgba(24,144,255,.1)} +.hstat-icon[data-v-06c771c0]{background:linear-gradient(135deg,rgba(24,144,255,.1),rgba(114,46,209,.08));color:var(--primary-color,#1890ff)} +.hero-cta .ant-btn-primary[data-v-06c771c0]{-webkit-box-shadow:0 4px 14px rgba(24,144,255,.3);box-shadow:0 4px 14px rgba(24,144,255,.3)} +.panel-header-icon[data-v-06c771c0]:hover{color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08)} +.batch-bar .ant-btn-primary[data-v-06c771c0]{-webkit-box-shadow:0 1px 2px color-mix(in srgb,var(--primary-color,#1890ff) 20%,transparent);box-shadow:0 1px 2px color-mix(in srgb,var(--primary-color,#1890ff) 20%,transparent)} +.wl-card.active[data-v-06c771c0]{background:linear-gradient(135deg,color-mix(in srgb,var(--primary-color,#1890ff) 6%,#fff) 0,color-mix(in srgb,var(--primary-color,#1890ff) 4%,#fff) 100%);border-color:color-mix(in srgb,var(--primary-color,#1890ff) 28%,transparent);-webkit-box-shadow:0 1px 4px color-mix(in srgb,var(--primary-color,#1890ff) 10%,transparent);box-shadow:0 1px 4px color-mix(in srgb,var(--primary-color,#1890ff) 10%,transparent)} +.wl-card.active .wl-card-hover-actions[data-v-06c771c0]{background:-webkit-gradient(linear,left top,right top,from(transparent),color-stop(30%,#e6f7ff));background:linear-gradient(90deg,transparent,#e6f7ff 30%)} +.wl-hover-btn[data-v-06c771c0]:hover{color:var(--primary-color,#1890ff);background:#e6f7ff} +.task-item-actions .ant-btn.ant-btn-primary[data-v-06c771c0]{background:var(--primary-color,#1890ff);border-color:var(--primary-color,#1890ff)} +.task-item-actions .ant-btn.ant-btn-primary[data-v-06c771c0]:hover{-webkit-box-shadow:0 2px 6px color-mix(in srgb,var(--primary-color,#1890ff) 25%,transparent);box-shadow:0 2px 6px color-mix(in srgb,var(--primary-color,#1890ff) 25%,transparent)} .qd-dark-modal .ant-modal-footer .ant-btn-default:hover{border-color:#1890ff;color:#1890ff} .qd-dark-modal .ant-tabs-tab-active{color:#1890ff!important} .qd-dark-modal .ant-tag-blue{background:rgba(24,144,255,.1);border-color:rgba(24,144,255,.3);color:#1890ff} .qd-dark-modal .ant-alert{background:rgba(24,144,255,.06)} .qd-dark-modal .ant-alert-info .ant-alert-icon{color:#1890ff} .qd-dark-modal .batch-symbols-preview .ant-tag{background:rgba(24,144,255,.1);border-color:rgba(24,144,255,.3);color:#1890ff} +.qd-dark-drawer .task-item-actions .ant-btn.ant-btn-primary{background:var(--primary-color,#1890ff);border-color:var(--primary-color,#1890ff)} +.qd-dark-drawer .task-item-actions .ant-btn.ant-btn-default:hover{border-color:var(--primary-color,#1890ff);color:var(--primary-color,#1890ff)} .qd-dark-drawer .ant-btn-default:hover{border-color:#1890ff;color:#1890ff} .qd-dark-modal .ant-select-dropdown .ant-select-dropdown-menu-item-selected,body.colorWeak .ant-select-dropdown .ant-select-dropdown-menu-item-selected{background:rgba(24,144,255,.1);color:#1890ff} .qt-header .qt-header-left .qt-icon[data-v-0d547552]{color:#1890ff} @@ -101,10 +119,6 @@ body.dark .ant-select-dropdown .ant-select-dropdown-menu-item-selected,body.real .theme-dark[data-v-0d547552] .ant-slider-track{background:#1890ff} .polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-value.ai-prob[data-v-67e891d2]{color:#1890ff} .polymarket-analysis-modal .result-section .analysis-result .recommendation-section .rec-card .rec-value[data-v-67e891d2]{color:#1890ff} -.ai-asset-analysis-page .opp-section .opp-card .opp-action[data-v-443699fa]{color:#1890ff} -.ai-asset-analysis-page .opp-section .opp-card .opp-trade-btn[data-v-443699fa]{background:linear-gradient(135deg,#1890ff,#722ed1)} -.ai-asset-analysis-page .qt-floating-btn[data-v-443699fa]{background:linear-gradient(135deg,#1890ff,#722ed1);-webkit-box-shadow:0 4px 16px rgba(24,144,255,.4);box-shadow:0 4px 16px rgba(24,144,255,.4)} -.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content .polymarket-placeholder .placeholder-icon[data-v-443699fa]{color:#1890ff} .code-section .section-header .section-title[data-v-4fea1865]:before{background:#1890ff} .code-section .section-header .section-actions[data-v-4fea1865] .ant-btn-link{color:#1890ff} .code-section .section-header .section-actions[data-v-4fea1865] .ant-btn-link:hover{color:#40a9ff} @@ -219,32 +233,33 @@ body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover . .theme-dark .position-checkbox-item[data-v-398d904c]:hover{background:rgba(24,144,255,.1)} .theme-dark .alert-symbol-info .current-price-info[data-v-398d904c]{background:linear-gradient(135deg,rgba(24,144,255,.15),rgba(114,46,209,.1))} .theme-dark .alert-symbol-info .current-price-info .price[data-v-398d904c]{color:#40a9ff} -.user-manage-page .page-header .page-title .anticon[data-v-f0405968]{color:#1890ff} -.user-manage-page .address-text[data-v-f0405968],.user-manage-page .hash-text[data-v-f0405968]{color:#1890ff} -.user-manage-page.theme-dark .manage-tabs[data-v-f0405968] .ant-tabs-tab-active{color:#1890ff} -.user-manage-page .current-credits-info .value[data-v-f0405968],.user-manage-page .current-vip-info .value[data-v-f0405968]{color:#1890ff} -.profile-page .page-header .page-title .anticon[data-v-6dceb76a]{color:#1890ff} -.profile-page .profile-card .profile-info .info-item .anticon[data-v-6dceb76a]{color:#1890ff} -.profile-page.theme-dark .edit-card[data-v-6dceb76a] .ant-tabs-tab-active{color:#1890ff} -.profile-page.theme-dark .edit-card[data-v-6dceb76a] .ant-input-password:focus,.profile-page.theme-dark .edit-card[data-v-6dceb76a] .ant-input-password:hover,.profile-page.theme-dark .edit-card[data-v-6dceb76a] .ant-input:focus,.profile-page.theme-dark .edit-card[data-v-6dceb76a] .ant-input:hover{border-color:#1890ff} -.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-checkbox-checked .ant-checkbox-inner,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-radio-checked .ant-radio-inner,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-checkbox-checked .ant-checkbox-inner,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-radio-checked .ant-radio-inner,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-checkbox-checked .ant-checkbox-inner,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-radio-checked .ant-radio-inner{background-color:#1890ff;border-color:#1890ff} -.profile-page.theme-dark[data-v-6dceb76a] .ant-pagination .ant-pagination-item:hover{border-color:#1890ff} -.profile-page.theme-dark[data-v-6dceb76a] .ant-pagination .ant-pagination-item-active{background:#1890ff;border-color:#1890ff} -.profile-page.theme-dark[data-v-6dceb76a] .ant-btn.ant-btn-default:hover{border-color:#1890ff;color:#1890ff} +.user-manage-page .page-header .page-title .anticon[data-v-0b8bb4d8]{color:#1890ff} +.user-manage-page .address-text[data-v-0b8bb4d8],.user-manage-page .hash-text[data-v-0b8bb4d8]{color:#1890ff} +.user-manage-page.theme-dark .manage-tabs[data-v-0b8bb4d8] .ant-tabs-tab-active{color:#1890ff} +.user-manage-page .current-credits-info .value[data-v-0b8bb4d8],.user-manage-page .current-vip-info .value[data-v-0b8bb4d8]{color:#1890ff} +.profile-page .page-header .page-title .anticon[data-v-4224bd2a]{color:#1890ff} +.profile-page .profile-card .profile-info .info-item .anticon[data-v-4224bd2a]{color:#1890ff} +.profile-page.theme-dark .edit-card[data-v-4224bd2a] .ant-tabs-tab-active{color:#1890ff} +.profile-page.theme-dark .edit-card[data-v-4224bd2a] .ant-input-password:focus,.profile-page.theme-dark .edit-card[data-v-4224bd2a] .ant-input-password:hover,.profile-page.theme-dark .edit-card[data-v-4224bd2a] .ant-input:focus,.profile-page.theme-dark .edit-card[data-v-4224bd2a] .ant-input:hover{border-color:#1890ff} +.profile-page.theme-dark[data-v-4224bd2a] .ant-table-wrapper .ant-tag-blue{background:rgba(24,144,255,.25);border-color:#1890ff;color:#69c0ff} +.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-checkbox-checked .ant-checkbox-inner,.profile-page.theme-dark .notification-settings-form[data-v-4224bd2a] .ant-radio-checked .ant-radio-inner,.profile-page.theme-dark .password-form[data-v-4224bd2a] .ant-checkbox-checked .ant-checkbox-inner,.profile-page.theme-dark .password-form[data-v-4224bd2a] .ant-radio-checked .ant-radio-inner,.profile-page.theme-dark .profile-form[data-v-4224bd2a] .ant-checkbox-checked .ant-checkbox-inner,.profile-page.theme-dark .profile-form[data-v-4224bd2a] .ant-radio-checked .ant-radio-inner{background-color:#1890ff;border-color:#1890ff} +.profile-page.theme-dark[data-v-4224bd2a] .ant-pagination .ant-pagination-item:hover{border-color:#1890ff} +.profile-page.theme-dark[data-v-4224bd2a] .ant-pagination .ant-pagination-item-active{background:#1890ff;border-color:#1890ff} +.profile-page.theme-dark[data-v-4224bd2a] .ant-btn.ant-btn-default:hover{border-color:#1890ff;color:#1890ff} .billing-page .plan-card.highlight[data-v-714c882a]{border:1px solid rgba(24,144,255,.35)} .usdt-checkout .checkout-body .info-section .addr-box .copy-btn:hover,.usdt-checkout .checkout-body .info-section .amt-box .copy-btn:hover{background:rgba(24,144,255,.08);color:#1890ff} body.dark .usdt-checkout .checkout-body .info-section .addr-box .copy-btn:hover,body.dark .usdt-checkout .checkout-body .info-section .amt-box .copy-btn:hover,body.realdark .usdt-checkout .checkout-body .info-section .addr-box .copy-btn:hover,body.realdark .usdt-checkout .checkout-body .info-section .amt-box .copy-btn:hover{background:rgba(24,144,255,.15);color:#40a9ff} -.settings-page .settings-header .page-title .anticon[data-v-f144964c]{color:#1890ff} -.settings-page .openrouter-balance-card .ant-card[data-v-f144964c]{background:linear-gradient(135deg,#e6f7ff,#f0f5ff);border:1px solid #91d5ff} -.settings-page .openrouter-balance-card .balance-header .balance-title[data-v-f144964c]{color:#1890ff} -.settings-page .settings-collapse[data-v-f144964c] .ant-collapse-item .ant-collapse-header .ant-collapse-arrow{color:#1890ff} -.settings-page .settings-collapse[data-v-f144964c] .ant-collapse-item .ant-collapse-header .panel-header .panel-icon-left{color:#1890ff} -.settings-page .settings-form[data-v-f144964c] .ant-form-item-label .form-label-with-tooltip .help-icon:hover{color:#1890ff} -.settings-page .settings-form[data-v-f144964c] .ant-form-item-label .form-label-with-tooltip .api-link{color:#1890ff;background:rgba(24,144,255,.08)} -.settings-page .settings-form[data-v-f144964c] .ant-form-item-label .form-label-with-tooltip .api-link:hover{background:rgba(24,144,255,.15)} -.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-form-item-label .form-label-with-tooltip .api-link{background:rgba(24,144,255,.15)} -.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-form-item-label .form-label-with-tooltip .api-link:hover{background:rgba(24,144,255,.25)} -.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-input-number:focus,.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-input-number:hover,.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-input-password:focus,.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-input-password:hover,.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-input:focus,.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-input:hover,.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-select-selection:focus,.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-select-selection:hover{border-color:#1890ff} +.settings-page .settings-header .page-title .anticon[data-v-15e1ba02]{color:#1890ff} +.settings-page .openrouter-balance-card .ant-card[data-v-15e1ba02]{background:linear-gradient(135deg,#e6f7ff,#f0f5ff);border:1px solid #91d5ff} +.settings-page .openrouter-balance-card .balance-header .balance-title[data-v-15e1ba02]{color:#1890ff} +.settings-page .settings-collapse[data-v-15e1ba02] .ant-collapse-item .ant-collapse-header .ant-collapse-arrow{color:#1890ff} +.settings-page .settings-collapse[data-v-15e1ba02] .ant-collapse-item .ant-collapse-header .panel-header .panel-icon-left{color:#1890ff} +.settings-page .settings-form[data-v-15e1ba02] .ant-form-item-label .form-label-with-tooltip .help-icon:hover{color:#1890ff} +.settings-page .settings-form[data-v-15e1ba02] .ant-form-item-label .form-label-with-tooltip .api-link{color:#1890ff;background:rgba(24,144,255,.08)} +.settings-page .settings-form[data-v-15e1ba02] .ant-form-item-label .form-label-with-tooltip .api-link:hover{background:rgba(24,144,255,.15)} +.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-form-item-label .form-label-with-tooltip .api-link{background:rgba(24,144,255,.15)} +.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-form-item-label .form-label-with-tooltip .api-link:hover{background:rgba(24,144,255,.25)} +.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input-number:focus,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input-number:hover,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input-password:focus,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input-password:hover,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input:focus,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input:hover,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-select-selection:focus,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-select-selection:hover{border-color:#1890ff} .turnstile-container .turnstile-error a[data-v-20437450]{color:#1890ff} .main .login-method-switch a[data-v-de9678f6]:hover{color:#1890ff} .main .login-method-switch a.active[data-v-de9678f6]{color:#1890ff;border-bottom-color:#1890ff} diff --git a/frontend/dist/index.html b/frontend/dist/index.html index cca8f9b..d818958 100644 --- a/frontend/dist/index.html +++ b/frontend/dist/index.html @@ -421,4 +421,4 @@ .brand-text { font-size: 20px; } - }

Landing

QuantDinger
\ No newline at end of file + }

Landing

QuantDinger
\ No newline at end of file diff --git a/frontend/dist/js/127-legacy.18ffff11.js b/frontend/dist/js/127-legacy.18ffff11.js deleted file mode 100644 index 4197d05..0000000 --- a/frontend/dist/js/127-legacy.18ffff11.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self["webpackChunkvue_antd_pro"]=self["webpackChunkvue_antd_pro"]||[]).push([[127],{16127:function(e,t,a){a.r(t),a.d(t,{default:function(){return v}});a(62010);var r=function(){var e=this,t=e._self._c;return t("div",{staticClass:"profile-page",class:{"theme-dark":e.isDarkTheme}},[t("div",{staticClass:"page-header"},[t("h2",{staticClass:"page-title"},[t("a-icon",{attrs:{type:"user"}}),t("span",[e._v(e._s(e.$t("profile.title")||"My Profile"))])],1),t("p",{staticClass:"page-desc"},[e._v(e._s(e.$t("profile.description")||"Manage your account settings and preferences"))])]),t("a-row",{staticClass:"profile-cards-row",attrs:{gutter:24}},[t("a-col",{staticClass:"profile-card-col",attrs:{xs:24,md:8}},[t("a-card",{staticClass:"profile-card",attrs:{bordered:!1}},[t("div",{staticClass:"avatar-section"},[t("a-avatar",{attrs:{size:100,src:e.profile.avatar||"/avatar2.jpg"}}),t("h3",{staticClass:"username"},[e._v(e._s(e.profile.nickname||e.profile.username))]),t("p",{staticClass:"user-role"},[t("a-tag",{attrs:{color:e.getRoleColor(e.profile.role)}},[e._v(" "+e._s(e.getRoleLabel(e.profile.role))+" ")]),e.isVip?t("a-tag",{attrs:{color:"gold"}},[t("a-icon",{attrs:{type:"crown"}}),e._v(" VIP ")],1):e._e()],1)],1),t("a-divider"),t("div",{staticClass:"profile-info"},[t("div",{staticClass:"info-item"},[t("a-icon",{attrs:{type:"user"}}),t("span",{staticClass:"label"},[e._v(e._s(e.$t("profile.username")||"Username")+":")]),t("span",{staticClass:"value"},[e._v(e._s(e.profile.username))])],1),t("div",{staticClass:"info-item"},[t("a-icon",{attrs:{type:"mail"}}),t("span",{staticClass:"label"},[e._v(e._s(e.$t("profile.email")||"Email")+":")]),t("span",{staticClass:"value"},[e._v(e._s(e.profile.email||"-"))])],1),t("div",{staticClass:"info-item"},[t("a-icon",{attrs:{type:"calendar"}}),t("span",{staticClass:"label"},[e._v(e._s(e.$t("profile.lastLogin")||"Last Login")+":")]),t("span",{staticClass:"value"},[e._v(e._s(e.formatTime(e.profile.last_login_at)||"-"))])],1)])],1)],1),t("a-col",{staticClass:"right-cards-col",attrs:{xs:24,md:16}},[t("a-row",{staticClass:"right-cards-row",attrs:{gutter:16}},[t("a-col",{attrs:{xs:24,md:12}},[t("a-card",{staticClass:"credits-card",attrs:{bordered:!1}},[t("div",{staticClass:"credits-header"},[t("h3",{staticClass:"credits-title"},[t("a-icon",{attrs:{type:"wallet"}}),e._v(" "+e._s(e.$t("profile.credits.title")||"我的积分")+" ")],1)]),t("div",{staticClass:"credits-body"},[t("div",{staticClass:"credits-amount"},[t("span",{staticClass:"amount-value"},[e._v(e._s(e.formatCredits(e.billing.credits)))]),t("span",{staticClass:"amount-label"},[e._v(e._s(e.$t("profile.credits.unit")||"积分"))])]),e.billing.vip_expires_at?t("div",{staticClass:"vip-status"},[t("a-icon",{style:{color:e.isVip?"#faad14":"#999"},attrs:{type:"crown"}}),e.isVip?t("span",{staticClass:"vip-active"},[e._v(" "+e._s(e.$t("profile.credits.vipExpires")||"VIP有效期至")+": "+e._s(e.formatDate(e.billing.vip_expires_at))+" ")]):t("span",{staticClass:"vip-expired"},[e._v(" "+e._s(e.$t("profile.credits.vipExpired")||"VIP已过期")+" ")])],1):e.billing.is_vip?e._e():t("div",{staticClass:"vip-status"},[t("span",{staticClass:"no-vip"},[e._v(e._s(e.$t("profile.credits.noVip")||"非VIP用户"))])])]),t("a-divider"),t("div",{staticClass:"credits-actions"},[t("a-button",{attrs:{type:"primary",icon:"shopping"},on:{click:e.handleRecharge}},[e._v(" "+e._s(e.$t("profile.credits.recharge")||"开通/充值")+" ")])],1),e.billing.billing_enabled?t("div",{staticClass:"credits-hint"},[t("a-icon",{attrs:{type:"info-circle"}}),t("span",[e._v(e._s(e.$t("profile.credits.hint")||"使用AI分析/回测/监控等功能会消耗积分;VIP仅可免费使用VIP免费指标。"))])],1):e._e()],1)],1),t("a-col",{attrs:{xs:24,md:12}},[t("a-card",{staticClass:"referral-card",attrs:{bordered:!1}},[t("div",{staticClass:"referral-header"},[t("h3",{staticClass:"referral-title"},[t("a-icon",{attrs:{type:"team"}}),e._v(" "+e._s(e.$t("profile.referral.title")||"邀请好友")+" ")],1)]),t("div",{staticClass:"referral-body"},[t("div",{staticClass:"referral-stats"},[t("div",{staticClass:"stat-item"},[t("span",{staticClass:"stat-value"},[e._v(e._s(e.referralData.total||0))]),t("span",{staticClass:"stat-label"},[e._v(e._s(e.$t("profile.referral.totalInvited")||"已邀请"))])]),e.referralData.referral_bonus>0?t("div",{staticClass:"stat-item"},[t("span",{staticClass:"stat-value"},[e._v("+"+e._s(e.referralData.referral_bonus))]),t("span",{staticClass:"stat-label"},[e._v(e._s(e.$t("profile.referral.bonusPerInvite")||"每邀请获得"))])]):e._e()]),t("a-divider",{staticStyle:{margin:"12px 0"}}),t("div",{staticClass:"referral-link-section"},[t("div",{staticClass:"link-label"},[e._v(e._s(e.$t("profile.referral.yourLink")||"您的邀请链接"))]),t("div",{staticClass:"link-box"},[t("a-input",{attrs:{value:e.referralLink,readonly:"",size:"small"}},[t("a-tooltip",{attrs:{slot:"suffix",title:e.$t("profile.referral.copyLink")||"复制链接"},slot:"suffix"},[t("a-icon",{staticStyle:{cursor:"pointer"},attrs:{type:"copy"},on:{click:e.copyReferralLink}})],1)],1)],1)]),e.referralData.register_bonus>0?t("div",{staticClass:"referral-hint"},[t("a-icon",{attrs:{type:"gift"}}),t("span",[e._v(e._s(e.$t("profile.referral.newUserBonus")||"新用户注册获得")+" "+e._s(e.referralData.register_bonus)+" "+e._s(e.$t("profile.credits.unit")||"积分"))])],1):e._e()],1)])],1)],1)],1)],1),t("a-row",{staticStyle:{"margin-top":"24px"},attrs:{gutter:24}},[t("a-col",{attrs:{xs:24}},[t("a-card",{staticClass:"edit-card",attrs:{bordered:!1}},[t("a-tabs",{model:{value:e.activeTab,callback:function(t){e.activeTab=t},expression:"activeTab"}},[t("a-tab-pane",{key:"basic",attrs:{tab:e.$t("profile.basicInfo")||"Basic Info"}},[t("a-form",{staticClass:"profile-form",attrs:{form:e.profileForm,layout:"vertical"}},[t("a-form-item",{attrs:{label:e.$t("profile.nickname")||"Nickname"}},[t("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["nickname",{initialValue:e.profile.nickname}],expression:"['nickname', { initialValue: profile.nickname }]"}],attrs:{placeholder:e.$t("profile.nicknamePlaceholder")||"Enter your nickname"}},[t("a-icon",{attrs:{slot:"prefix",type:"smile"},slot:"prefix"})],1)],1),t("a-form-item",{attrs:{label:e.$t("profile.email")||"Email"}},[t("a-input",{attrs:{value:e.profile.email||"-",disabled:""}},[t("a-icon",{attrs:{slot:"prefix",type:"mail"},slot:"prefix"}),t("a-tooltip",{attrs:{slot:"suffix",title:e.$t("profile.emailCannotChange")||"Email cannot be changed after registration"},slot:"suffix"},[t("a-icon",{staticStyle:{color:"rgba(0,0,0,.45)"},attrs:{type:"info-circle"}})],1)],1)],1),t("a-form-item",[t("a-button",{attrs:{type:"primary",loading:e.saving},on:{click:e.handleSaveProfile}},[t("a-icon",{attrs:{type:"save"}}),e._v(" "+e._s(e.$t("common.save")||"Save")+" ")],1)],1)],1)],1),t("a-tab-pane",{key:"password",attrs:{tab:e.$t("profile.changePassword")||"Change Password"}},[t("a-form",{staticClass:"password-form",attrs:{form:e.passwordForm,layout:"vertical"}},[t("a-alert",{staticStyle:{"margin-bottom":"24px"},attrs:{message:e.$t("profile.passwordHintNew")||"For security, email verification is required to change password. Password must be at least 8 characters with uppercase, lowercase, and number.",type:"info",showIcon:""}}),t("a-form-item",{attrs:{label:e.$t("profile.verificationCode")||"Verification Code"}},[t("a-row",{attrs:{gutter:12}},[t("a-col",{attrs:{span:16}},[t("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["code",{rules:[{required:!0,message:e.$t("profile.codeRequired")||"Please enter verification code"}]}],expression:"['code', {\n rules: [{ required: true, message: $t('profile.codeRequired') || 'Please enter verification code' }]\n }]"}],attrs:{placeholder:e.$t("profile.codePlaceholder")||"Enter verification code"}},[t("a-icon",{attrs:{slot:"prefix",type:"safety-certificate"},slot:"prefix"})],1)],1),t("a-col",{attrs:{span:8}},[t("a-button",{attrs:{block:"",loading:e.sendingPwdCode,disabled:e.sendingPwdCode||e.pwdCodeCountdown>0||!e.profile.email},on:{click:e.handleSendPwdCode}},[e._v(" "+e._s(e.pwdCodeCountdown>0?"".concat(e.pwdCodeCountdown,"s"):e.$t("profile.sendCode")||"Send Code")+" ")])],1)],1),e.profile.email?t("div",{staticClass:"email-hint"},[e._v(" "+e._s(e.$t("profile.codeWillSendTo")||"Code will be sent to")+": "+e._s(e.profile.email)+" ")]):t("div",{staticClass:"email-hint email-warning"},[e._v(" "+e._s(e.$t("profile.noEmailWarning")||"Please set your email first in Basic Info tab")+" ")])],1),t("a-form-item",{attrs:{label:e.$t("profile.newPassword")||"New Password"}},[t("a-input-password",{directives:[{name:"decorator",rawName:"v-decorator",value:["new_password",{rules:[{required:!0,message:e.$t("profile.newPasswordRequired")||"Please enter new password"},{validator:e.validateNewPassword}]}],expression:"['new_password', {\n rules: [\n { required: true, message: $t('profile.newPasswordRequired') || 'Please enter new password' },\n { validator: validateNewPassword }\n ]\n }]"}],attrs:{placeholder:e.$t("profile.newPasswordPlaceholder")||"Enter new password"}},[t("a-icon",{attrs:{slot:"prefix",type:"lock"},slot:"prefix"})],1)],1),t("a-form-item",{attrs:{label:e.$t("profile.confirmPassword")||"Confirm Password"}},[t("a-input-password",{directives:[{name:"decorator",rawName:"v-decorator",value:["confirm_password",{rules:[{required:!0,message:e.$t("profile.confirmPasswordRequired")||"Please confirm password"},{validator:e.validateConfirmPassword}]}],expression:"['confirm_password', {\n rules: [\n { required: true, message: $t('profile.confirmPasswordRequired') || 'Please confirm password' },\n { validator: validateConfirmPassword }\n ]\n }]"}],attrs:{placeholder:e.$t("profile.confirmPasswordPlaceholder")||"Confirm new password"}},[t("a-icon",{attrs:{slot:"prefix",type:"lock"},slot:"prefix"})],1)],1),t("a-form-item",[t("a-button",{attrs:{type:"primary",loading:e.changingPassword,disabled:!e.profile.email},on:{click:e.handleChangePassword}},[t("a-icon",{attrs:{type:"key"}}),e._v(" "+e._s(e.$t("profile.changePassword")||"Change Password")+" ")],1)],1)],1)],1),t("a-tab-pane",{key:"credits",attrs:{tab:e.$t("profile.creditsLog")||"消费记录"}},[t("a-table",{attrs:{columns:e.creditsLogColumns,dataSource:e.creditsLog,loading:e.creditsLogLoading,pagination:e.creditsLogPagination,rowKey:function(e){return e.id},size:"small"},on:{change:e.handleCreditsLogChange},scopedSlots:e._u([{key:"action",fn:function(a){return[t("a-tag",{attrs:{color:e.getActionColor(a)}},[e._v(" "+e._s(e.getActionLabel(a))+" ")])]}},{key:"amount",fn:function(a){return[t("span",{class:a>=0?"amount-positive":"amount-negative"},[e._v(" "+e._s(a>=0?"+":"")+e._s(a)+" ")])]}},{key:"created_at",fn:function(t){return[e._v(" "+e._s(e.formatTime(t))+" ")]}}])})],1),t("a-tab-pane",{key:"notifications",attrs:{tab:e.$t("profile.notifications.title")||"通知设置"}},[t("div",{staticClass:"notification-settings-form"},[t("a-alert",{staticStyle:{"margin-bottom":"24px"},attrs:{message:e.$t("profile.notifications.hint")||"配置您的默认通知方式,在创建资产监控和预警时将自动使用这些设置",type:"info",showIcon:""}}),t("a-form",{staticStyle:{"max-width":"600px"},attrs:{form:e.notificationForm,layout:"vertical"}},[t("a-form-item",{attrs:{label:e.$t("profile.notifications.defaultChannels")||"默认通知渠道"}},[t("a-checkbox-group",{directives:[{name:"decorator",rawName:"v-decorator",value:["default_channels",{initialValue:e.notificationSettings.default_channels||["browser"]}],expression:"['default_channels', { initialValue: notificationSettings.default_channels || ['browser'] }]"}]},[t("a-row",{attrs:{gutter:16}},[t("a-col",{attrs:{span:8}},[t("a-checkbox",{attrs:{value:"browser"}},[t("a-icon",{attrs:{type:"bell"}}),e._v(" "+e._s(e.$t("profile.notifications.browser")||"站内通知")+" ")],1)],1),t("a-col",{attrs:{span:8}},[t("a-checkbox",{attrs:{value:"telegram"}},[t("a-icon",{attrs:{type:"send"}}),e._v(" Telegram ")],1)],1),t("a-col",{attrs:{span:8}},[t("a-checkbox",{attrs:{value:"email"}},[t("a-icon",{attrs:{type:"mail"}}),e._v(" "+e._s(e.$t("profile.notifications.email")||"邮件")+" ")],1)],1)],1),t("a-row",{staticStyle:{"margin-top":"8px"},attrs:{gutter:16}},[t("a-col",{attrs:{span:8}},[t("a-checkbox",{attrs:{value:"phone"}},[t("a-icon",{attrs:{type:"phone"}}),e._v(" "+e._s(e.$t("profile.notifications.phone")||"短信")+" ")],1)],1),t("a-col",{attrs:{span:8}},[t("a-checkbox",{attrs:{value:"discord"}},[t("a-icon",{attrs:{type:"message"}}),e._v(" Discord ")],1)],1),t("a-col",{attrs:{span:8}},[t("a-checkbox",{attrs:{value:"webhook"}},[t("a-icon",{attrs:{type:"api"}}),e._v(" Webhook ")],1)],1)],1)],1)],1),t("a-form-item",{attrs:{label:e.$t("profile.notifications.telegramBotToken")||"Telegram Bot Token"}},[t("a-input-password",{directives:[{name:"decorator",rawName:"v-decorator",value:["telegram_bot_token",{initialValue:e.notificationSettings.telegram_bot_token}],expression:"['telegram_bot_token', { initialValue: notificationSettings.telegram_bot_token }]"}],attrs:{placeholder:e.$t("profile.notifications.telegramBotTokenPlaceholder")||"请输入您的 Telegram Bot Token"}},[t("a-icon",{attrs:{slot:"prefix",type:"robot"},slot:"prefix"})],1),t("div",{staticClass:"field-hint"},[t("a-icon",{attrs:{type:"info-circle"}}),t("span",[e._v(" "+e._s(e.$t("profile.notifications.telegramBotTokenHint")||"通过 @BotFather 创建机器人获取 Token")+" "),t("a",{attrs:{href:"https://t.me/BotFather",target:"_blank",rel:"noopener noreferrer"}},[e._v("@BotFather")])])],1)],1),t("a-form-item",{attrs:{label:e.$t("profile.notifications.telegramChatId")||"Telegram Chat ID"}},[t("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["telegram_chat_id",{initialValue:e.notificationSettings.telegram_chat_id}],expression:"['telegram_chat_id', { initialValue: notificationSettings.telegram_chat_id }]"}],attrs:{placeholder:e.$t("profile.notifications.telegramPlaceholder")||"请输入您的 Telegram Chat ID(如 123456789)"}},[t("a-icon",{attrs:{slot:"prefix",type:"message"},slot:"prefix"})],1),t("div",{staticClass:"field-hint"},[t("a-icon",{attrs:{type:"info-circle"}}),t("span",[e._v(e._s(e.$t("profile.notifications.telegramHint")||"发送 /start 给 @userinfobot 可获取您的 Chat ID"))])],1)],1),t("a-form-item",{attrs:{label:e.$t("profile.notifications.notifyEmail")||"通知邮箱"}},[t("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["email",{initialValue:e.notificationSettings.email||e.profile.email}],expression:"['email', { initialValue: notificationSettings.email || profile.email }]"}],attrs:{placeholder:e.$t("profile.notifications.emailPlaceholder")||"接收通知的邮箱地址"}},[t("a-icon",{attrs:{slot:"prefix",type:"mail"},slot:"prefix"})],1),t("div",{staticClass:"field-hint"},[t("a-icon",{attrs:{type:"info-circle"}}),t("span",[e._v(e._s(e.$t("profile.notifications.emailHint")||"默认使用账户邮箱,可设置其他邮箱接收通知"))])],1)],1),t("a-form-item",{attrs:{label:e.$t("profile.notifications.phone")||"手机号(短信通知)"}},[t("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["phone",{initialValue:e.notificationSettings.phone}],expression:"['phone', { initialValue: notificationSettings.phone }]"}],attrs:{placeholder:e.$t("profile.notifications.phonePlaceholder")||"请输入手机号(如 +8613800138000)"}},[t("a-icon",{attrs:{slot:"prefix",type:"phone"},slot:"prefix"})],1),t("div",{staticClass:"field-hint"},[t("a-icon",{attrs:{type:"info-circle"}}),t("span",[e._v(e._s(e.$t("profile.notifications.phoneHint")||"需要管理员配置 Twilio 服务后才能使用短信通知"))])],1)],1),t("a-form-item",{attrs:{label:e.$t("profile.notifications.discordWebhook")||"Discord Webhook"}},[t("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["discord_webhook",{initialValue:e.notificationSettings.discord_webhook}],expression:"['discord_webhook', { initialValue: notificationSettings.discord_webhook }]"}],attrs:{placeholder:e.$t("profile.notifications.discordPlaceholder")||"https://discord.com/api/webhooks/..."}},[t("a-icon",{attrs:{slot:"prefix",type:"message"},slot:"prefix"})],1),t("div",{staticClass:"field-hint"},[t("a-icon",{attrs:{type:"info-circle"}}),t("span",[e._v(e._s(e.$t("profile.notifications.discordHint")||"在 Discord 服务器设置中创建 Webhook"))])],1)],1),t("a-form-item",{attrs:{label:e.$t("profile.notifications.webhookUrl")||"Webhook URL"}},[t("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["webhook_url",{initialValue:e.notificationSettings.webhook_url}],expression:"['webhook_url', { initialValue: notificationSettings.webhook_url }]"}],attrs:{placeholder:e.$t("profile.notifications.webhookPlaceholder")||"https://your-server.com/webhook"}},[t("a-icon",{attrs:{slot:"prefix",type:"api"},slot:"prefix"})],1),t("div",{staticClass:"field-hint"},[t("a-icon",{attrs:{type:"info-circle"}}),t("span",[e._v(e._s(e.$t("profile.notifications.webhookHint")||"自定义 Webhook 地址,将以 POST JSON 方式推送通知"))])],1)],1),t("a-form-item",{attrs:{label:e.$t("profile.notifications.webhookToken")||"Webhook Token(可选)"}},[t("a-input-password",{directives:[{name:"decorator",rawName:"v-decorator",value:["webhook_token",{initialValue:e.notificationSettings.webhook_token}],expression:"['webhook_token', { initialValue: notificationSettings.webhook_token }]"}],attrs:{placeholder:e.$t("profile.notifications.webhookTokenPlaceholder")||"用于验证请求的 Bearer Token"}},[t("a-icon",{attrs:{slot:"prefix",type:"key"},slot:"prefix"})],1),t("div",{staticClass:"field-hint"},[t("a-icon",{attrs:{type:"info-circle"}}),t("span",[e._v(e._s(e.$t("profile.notifications.webhookTokenHint")||"将作为 Authorization: Bearer Token 发送到 Webhook"))])],1)],1),t("a-form-item",[t("a-button",{attrs:{type:"primary",loading:e.savingNotifications},on:{click:e.handleSaveNotifications}},[t("a-icon",{attrs:{type:"save"}}),e._v(" "+e._s(e.$t("common.save")||"保存")+" ")],1),t("a-button",{staticStyle:{"margin-left":"12px"},attrs:{loading:e.testingNotification},on:{click:e.handleTestNotification}},[t("a-icon",{attrs:{type:"experiment"}}),e._v(" "+e._s(e.$t("profile.notifications.testBtn")||"发送测试通知")+" ")],1)],1)],1)],1)]),t("a-tab-pane",{key:"exchange",attrs:{tab:e.$t("profile.exchange.title")||"交易所配置"}},[t("div",{staticClass:"exchange-config-section"},[t("a-alert",{staticStyle:{"margin-bottom":"16px"},attrs:{message:e.$t("profile.exchange.hint"),type:"info",showIcon:""}}),t("div",{staticStyle:{"margin-bottom":"16px","text-align":"right"}},[t("a-button",{attrs:{type:"primary",icon:"plus"},on:{click:function(t){e.showAddExchangeModal=!0}}},[e._v(" "+e._s(e.$t("profile.exchange.addAccount"))+" ")])],1),t("a-table",{attrs:{columns:e.exchangeColumns,dataSource:e.exchangeCredentials,loading:e.exchangeLoading,rowKey:function(e){return e.id},size:"small"},scopedSlots:e._u([{key:"exchange_id",fn:function(a){return[t("span",{staticStyle:{"text-transform":"capitalize","font-weight":"500"}},[e._v(e._s(e.getExchangeDisplayName(a)))])]}},{key:"api_key_hint",fn:function(a,r){return[t("span",{staticClass:"credential-hint"},[e._v(e._s(a||r.name||"-"))])]}},{key:"created_at",fn:function(t){return[e._v(" "+e._s(e.formatTime(t))+" ")]}},{key:"action",fn:function(a,r){return[t("a-popconfirm",{attrs:{title:e.$t("profile.exchange.deleteConfirm"),okText:e.$t("common.confirm"),cancelText:e.$t("common.cancel")},on:{confirm:function(t){return e.handleDeleteCredential(r.id)}}},[t("a-button",{attrs:{type:"danger",size:"small",ghost:"",icon:"delete"}},[e._v(" "+e._s(e.$t("common.delete"))+" ")])],1)]}}])}),e.exchangeLoading||0!==e.exchangeCredentials.length?e._e():t("a-empty",{staticStyle:{"margin-top":"20px"}},[t("span",{attrs:{slot:"description"},slot:"description"},[e._v(e._s(e.$t("profile.exchange.noAccounts")))])])],1)]),t("a-tab-pane",{key:"referrals",attrs:{tab:e.$t("profile.referral.listTab")||"邀请列表"}},[t("a-table",{attrs:{columns:e.referralColumns,dataSource:e.referralData.list||[],loading:e.referralLoading,pagination:e.referralPagination,rowKey:function(e){return e.id},size:"small"},on:{change:e.handleReferralChange},scopedSlots:e._u([{key:"user",fn:function(a,r){return[t("div",{staticClass:"referral-user-cell"},[t("a-avatar",{attrs:{size:32,src:r.avatar||"/avatar2.jpg"}}),t("div",{staticClass:"user-info"},[t("span",{staticClass:"nickname"},[e._v(e._s(r.nickname||r.username))]),t("span",{staticClass:"username"},[e._v("@"+e._s(r.username))])])],1)]}},{key:"created_at",fn:function(t){return[e._v(" "+e._s(e.formatTime(t))+" ")]}}])}),e.referralLoading||e.referralData.list&&0!==e.referralData.list.length?e._e():t("a-empty",[t("span",{attrs:{slot:"description"},slot:"description"},[e._v(e._s(e.$t("profile.referral.noReferrals")||"暂无邀请记录"))]),t("a-button",{attrs:{type:"primary"},on:{click:e.copyReferralLink}},[e._v(" "+e._s(e.$t("profile.referral.shareNow")||"立即分享邀请")+" ")])],1)],1)],1)],1)],1)],1),t("a-modal",{attrs:{title:e.$t("profile.exchange.addTitle"),visible:e.showAddExchangeModal,confirmLoading:e.savingExchange,okText:e.$t("common.save"),cancelText:e.$t("common.cancel"),maskClosable:!1,width:"520px"},on:{ok:e.handleSaveExchange,cancel:function(t){e.showAddExchangeModal=!1}}},[t("a-form",{attrs:{form:e.exchangeForm,layout:"vertical"}},[t("a-form-item",{attrs:{label:e.$t("profile.exchange.selectExchange")}},[t("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["exchange_id",{rules:[{required:!0,message:e.$t("profile.exchange.selectExchange")}]}],expression:"['exchange_id', { rules: [{ required: true, message: $t('profile.exchange.selectExchange') }] }]"}],attrs:{placeholder:e.$t("profile.exchange.selectExchange")},on:{change:e.handleExchangeTypeChange}},[t("a-select-opt-group",{attrs:{label:e.$t("profile.exchange.typeCrypto")}},e._l(e.cryptoExchangeList,function(a){return t("a-select-option",{key:a.id,attrs:{value:a.id}},[e._v(" "+e._s(a.name)+" ")])}),1),t("a-select-opt-group",{attrs:{label:e.$t("profile.exchange.typeIBKR")}},[t("a-select-option",{attrs:{value:"ibkr"}},[e._v("Interactive Brokers (IBKR)")])],1),t("a-select-opt-group",{attrs:{label:e.$t("profile.exchange.typeMT5")}},[t("a-select-option",{attrs:{value:"mt5"}},[e._v("MetaTrader 5")])],1)],1)],1),t("a-form-item",{attrs:{label:e.$t("profile.exchange.accountName")}},[t("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["name"],expression:"['name']"}],attrs:{placeholder:e.$t("profile.exchange.accountNamePlaceholder")}})],1),"crypto"===e.addExchangeType?[t("a-form-item",{attrs:{label:e.$t("profile.exchange.apiKey")}},[t("a-input-password",{directives:[{name:"decorator",rawName:"v-decorator",value:["api_key",{rules:[{required:!0,message:"API Key is required"}]}],expression:"['api_key', { rules: [{ required: true, message: 'API Key is required' }] }]"}],attrs:{placeholder:"API Key",autocomplete:"new-password"}})],1),t("a-form-item",{attrs:{label:e.$t("profile.exchange.secretKey")}},[t("a-input-password",{directives:[{name:"decorator",rawName:"v-decorator",value:["secret_key",{rules:[{required:!0,message:"Secret Key is required"}]}],expression:"['secret_key', { rules: [{ required: true, message: 'Secret Key is required' }] }]"}],attrs:{placeholder:"Secret Key",autocomplete:"new-password"}})],1),e.addExchangeNeedsPassphrase?t("a-form-item",{attrs:{label:e.$t("profile.exchange.passphrase")}},[t("a-input-password",{directives:[{name:"decorator",rawName:"v-decorator",value:["passphrase"],expression:"['passphrase']"}],attrs:{placeholder:"Passphrase",autocomplete:"new-password"}})],1):e._e(),e.addExchangeShowDemo?t("a-form-item",[t("a-checkbox",{directives:[{name:"decorator",rawName:"v-decorator",value:["enable_demo_trading",{valuePropName:"checked",initialValue:!1}],expression:"['enable_demo_trading', { valuePropName: 'checked', initialValue: false }]"}]},[e._v(" "+e._s(e.$t("profile.exchange.demoTrading"))+" ")])],1):e._e()]:e._e(),"ibkr"===e.addExchangeType?[t("a-alert",{staticStyle:{"margin-bottom":"16px"},attrs:{type:"warning",showIcon:"",message:e.$t("profile.exchange.localDeploymentRequired"),description:e.$t("profile.exchange.localDeploymentHint")}}),t("a-form-item",{attrs:{label:e.$t("profile.exchange.ibkrHost")}},[t("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["ibkr_host",{initialValue:"127.0.0.1"}],expression:"['ibkr_host', { initialValue: '127.0.0.1' }]"}],attrs:{placeholder:"127.0.0.1"}})],1),t("a-form-item",{attrs:{label:e.$t("profile.exchange.ibkrPort")}},[t("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["ibkr_port",{initialValue:7497}],expression:"['ibkr_port', { initialValue: 7497 }]"}],staticStyle:{width:"100%"},attrs:{min:1,max:65535}}),t("div",{staticClass:"field-hint"},[t("a-icon",{attrs:{type:"info-circle"}}),t("span",[e._v(e._s(e.$t("profile.exchange.ibkrPortHint")))])],1)],1),t("a-form-item",{attrs:{label:e.$t("profile.exchange.ibkrClientId")}},[t("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["ibkr_client_id",{initialValue:1}],expression:"['ibkr_client_id', { initialValue: 1 }]"}],staticStyle:{width:"100%"},attrs:{min:1,max:999}})],1),t("a-form-item",{attrs:{label:e.$t("profile.exchange.ibkrAccount")}},[t("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["ibkr_account"],expression:"['ibkr_account']"}],attrs:{placeholder:"DU123456"}})],1)]:e._e(),"mt5"===e.addExchangeType?[t("a-alert",{staticStyle:{"margin-bottom":"16px"},attrs:{type:"warning",showIcon:"",message:e.$t("profile.exchange.localDeploymentRequired"),description:e.$t("profile.exchange.localDeploymentHint")}}),t("a-form-item",{attrs:{label:e.$t("profile.exchange.mt5Server")}},[t("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["mt5_server",{rules:[{required:!0,message:"Server is required"}]}],expression:"['mt5_server', { rules: [{ required: true, message: 'Server is required' }] }]"}],attrs:{placeholder:"MetaQuotes-Demo"}})],1),t("a-form-item",{attrs:{label:e.$t("profile.exchange.mt5Login")}},[t("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["mt5_login",{rules:[{required:!0,message:"Login is required"}]}],expression:"['mt5_login', { rules: [{ required: true, message: 'Login is required' }] }]"}],staticStyle:{width:"100%"},attrs:{min:1,placeholder:"12345678"}})],1),t("a-form-item",{attrs:{label:e.$t("profile.exchange.mt5Password")}},[t("a-input-password",{directives:[{name:"decorator",rawName:"v-decorator",value:["mt5_password",{rules:[{required:!0,message:"Password is required"}]}],expression:"['mt5_password', { rules: [{ required: true, message: 'Password is required' }] }]"}],attrs:{placeholder:"Password",autocomplete:"new-password"}})],1),t("a-form-item",{attrs:{label:e.$t("profile.exchange.mt5TerminalPath")}},[t("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["mt5_terminal_path"],expression:"['mt5_terminal_path']"}],attrs:{placeholder:"C:\\Program Files\\MetaTrader 5\\terminal64.exe"}}),t("div",{staticClass:"field-hint"},[t("a-icon",{attrs:{type:"info-circle"}}),t("span",[e._v(e._s(e.$t("profile.exchange.mt5TerminalPathHint")))])],1)],1)]:e._e(),e.addExchangeType?t("a-form-item",[t("a-button",{attrs:{block:"",loading:e.testingExchange},on:{click:e.handleTestExchangeConnection}},[t("a-icon",{attrs:{type:"api"}}),e._v(" "+e._s(e.$t("profile.exchange.testConnection"))+" ")],1),e.exchangeTestResult?t("div",{staticClass:"test-result-msg",class:e.exchangeTestResult.success?"success":"error"},[t("a-icon",{attrs:{type:e.exchangeTestResult.success?"check-circle":"close-circle"}}),e._v(" "+e._s(e.exchangeTestResult.message)+" ")],1):e._e()],1):e._e()],2)],1)],1)},i=[],n=a(76338),o=a(81127),s=a(56252),l=(a(28706),a(74423),a(62062),a(2892),a(26099),a(27495),a(21699),a(47764),a(62953),a(84841)),c=a(53003),d=a(42430),u=a(36911),p=a(55434),f={name:"Profile",mixins:[p.t],data:function(){return{loading:!1,saving:!1,changingPassword:!1,sendingPwdCode:!1,pwdCodeCountdown:0,pwdCodeTimer:null,activeTab:"basic",profile:{id:null,username:"",nickname:"",email:"",avatar:"",role:"user",last_login_at:null},creditsLog:[],creditsLogLoading:!1,creditsLogPagination:{current:1,pageSize:10,total:0},referralData:{list:[],total:0,referral_code:"",referral_bonus:0,register_bonus:0},referralLoading:!1,referralPagination:{current:1,pageSize:10,total:0},billing:{credits:0,is_vip:!1,vip_expires_at:null,billing_enabled:!1,feature_costs:{}},rechargeTelegramUrl:"https://t.me/your_support_bot",notificationSettings:{default_channels:["browser"],telegram_bot_token:"",telegram_chat_id:"",email:"",phone:"",discord_webhook:"",webhook_url:"",webhook_token:""},savingNotifications:!1,testingNotification:!1,exchangeCredentials:[],exchangeLoading:!1,showAddExchangeModal:!1,savingExchange:!1,testingExchange:!1,exchangeTestResult:null,addExchangeType:"",selectedExchangeId:"",cryptoExchangeList:[{id:"binance",name:"Binance"},{id:"okx",name:"OKX"},{id:"bitget",name:"Bitget"},{id:"bybit",name:"Bybit"},{id:"coinbaseexchange",name:"Coinbase"},{id:"kraken",name:"Kraken"},{id:"kucoin",name:"KuCoin"},{id:"gate",name:"Gate.io"},{id:"bitfinex",name:"Bitfinex"}]}},computed:{isDarkTheme:function(){return"dark"===this.navTheme||"realdark"===this.navTheme},isVip:function(){if(!this.billing.vip_expires_at)return!1;var e=new Date(this.billing.vip_expires_at);return e>new Date},creditsLogColumns:function(){return[{title:this.$t("profile.creditsLog.time")||"时间",dataIndex:"created_at",width:160,scopedSlots:{customRender:"created_at"}},{title:this.$t("profile.creditsLog.action")||"类型",dataIndex:"action",width:100,scopedSlots:{customRender:"action"}},{title:this.$t("profile.creditsLog.amount")||"变动",dataIndex:"amount",width:100,scopedSlots:{customRender:"amount"}},{title:this.$t("profile.creditsLog.balance")||"余额",dataIndex:"balance_after",width:100},{title:this.$t("profile.creditsLog.remark")||"备注",dataIndex:"remark",ellipsis:!0}]},referralColumns:function(){return[{title:this.$t("profile.referral.user")||"用户",dataIndex:"username",scopedSlots:{customRender:"user"}},{title:this.$t("profile.referral.registerTime")||"注册时间",dataIndex:"created_at",width:180,scopedSlots:{customRender:"created_at"}}]},referralLink:function(){var e=window.location.origin+window.location.pathname,t=this.referralData.referral_code||this.profile.id;return"".concat(e,"#/user/login?ref=").concat(t)},exchangeColumns:function(){return[{title:this.$t("profile.exchange.colExchange")||"Exchange",dataIndex:"exchange_id",width:140,scopedSlots:{customRender:"exchange_id"}},{title:this.$t("profile.exchange.colName")||"Name",dataIndex:"name",width:140,customRender:function(e){return e||"-"}},{title:this.$t("profile.exchange.colHint")||"Connection Info",dataIndex:"api_key_hint",scopedSlots:{customRender:"api_key_hint"}},{title:this.$t("profile.exchange.colCreatedAt")||"Created At",dataIndex:"created_at",width:180,scopedSlots:{customRender:"created_at"}},{title:this.$t("profile.exchange.colActions")||"Actions",width:120,scopedSlots:{customRender:"action"}}]},addExchangeNeedsPassphrase:function(){var e=["okx","bitget","kucoin"];return e.includes(this.selectedExchangeId)},addExchangeShowDemo:function(){return"binance"===this.selectedExchangeId}},watch:{activeTab:function(e){"credits"===e&&0===this.creditsLog.length&&this.loadCreditsLog(),"referrals"!==e||this.referralData.list&&0!==this.referralData.list.length||this.loadReferrals(),"notifications"!==e||this.notificationSettings.telegram_chat_id||this.notificationSettings.discord_webhook||this.loadNotificationSettings(),"exchange"===e&&0===this.exchangeCredentials.length&&this.loadExchangeCredentials()}},beforeCreate:function(){this.profileForm=this.$form.createForm(this,{name:"profile"}),this.passwordForm=this.$form.createForm(this,{name:"password"}),this.notificationForm=this.$form.createForm(this,{name:"notification"}),this.exchangeForm=this.$form.createForm(this,{name:"exchange"})},mounted:function(){this.loadProfile(),this.loadReferrals()},beforeDestroy:function(){this.pwdCodeTimer&&clearInterval(this.pwdCodeTimer)},methods:{loadProfile:function(){var e=this;return(0,s.A)((0,o.A)().m(function t(){var a;return(0,o.A)().w(function(t){while(1)switch(t.p=t.n){case 0:return e.loading=!0,t.p=1,t.n=2,(0,l.E$)();case 2:a=t.v,1===a.code?(e.profile=a.data,a.data.billing&&(e.billing=a.data.billing),a.data.notification_settings&&(e.notificationSettings={default_channels:a.data.notification_settings.default_channels||["browser"],telegram_bot_token:a.data.notification_settings.telegram_bot_token||"",telegram_chat_id:a.data.notification_settings.telegram_chat_id||"",email:a.data.notification_settings.email||a.data.email||"",phone:a.data.notification_settings.phone||"",discord_webhook:a.data.notification_settings.discord_webhook||"",webhook_url:a.data.notification_settings.webhook_url||"",webhook_token:a.data.notification_settings.webhook_token||""}),e.$nextTick(function(){e.profileForm.setFieldsValue({nickname:e.profile.nickname,email:e.profile.email})})):e.$message.error(a.msg||"Failed to load profile"),t.n=4;break;case 3:t.p=3,t.v,e.$message.error("Failed to load profile");case 4:return t.p=4,e.loading=!1,t.f(4);case 5:return t.a(2)}},t,null,[[1,3,4,5]])}))()},loadRechargeUrl:function(){var e=this;return(0,s.A)((0,o.A)().m(function t(){var a;return(0,o.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if("admin"!==e.profile.role){t.n=4;break}return t.p=1,t.n=2,(0,c.YT)();case 2:a=t.v,1===a.code&&a.data&&a.data.billing&&(e.rechargeTelegramUrl=a.data.billing.RECHARGE_TELEGRAM_URL||e.rechargeTelegramUrl),t.n=4;break;case 3:t.p=3,t.v;case 4:return t.a(2)}},t,null,[[1,3]])}))()},handleRecharge:function(){this.$router.push("/billing")},formatCredits:function(e){return e||0===e?Number(e).toLocaleString("en-US",{minimumFractionDigits:0,maximumFractionDigits:2}):"0"},formatDate:function(e){if(!e)return"";var t=new Date(e);return t.toLocaleDateString()},handleSaveProfile:function(){var e=this;this.profileForm.validateFields(function(){var t=(0,s.A)((0,o.A)().m(function t(a,r){var i;return(0,o.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(!a){t.n=1;break}return t.a(2);case 1:return e.saving=!0,t.p=2,t.n=3,(0,l.r7)(r);case 3:i=t.v,1===i.code?(e.$message.success(i.msg||"Profile updated successfully"),e.loadProfile()):e.$message.error(i.msg||"Update failed"),t.n=5;break;case 4:t.p=4,t.v,e.$message.error("Update failed");case 5:return t.p=5,e.saving=!1,t.f(5);case 6:return t.a(2)}},t,null,[[2,4,5,6]])}));return function(e,a){return t.apply(this,arguments)}}())},validateConfirmPassword:function(e,t,a){var r=this.passwordForm.getFieldValue("new_password");t&&t!==r?a(this.$t("profile.passwordMismatch")||"Passwords do not match"):a()},handleSendPwdCode:function(){var e=this;return(0,s.A)((0,o.A)().m(function t(){var r,i,n,s,l;return(0,o.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(e.profile.email){t.n=1;break}return e.$message.error(e.$t("profile.noEmailWarning")||"Please set your email first"),t.a(2);case 1:return e.sendingPwdCode=!0,t.p=2,t.n=3,a.e(824).then(a.bind(a,95824));case 3:return r=t.v,i=r.sendVerificationCode,t.n=4,i({email:e.profile.email,type:"change_password"});case 4:n=t.v,1===n.code?(e.$message.success(e.$t("profile.codeSent")||"Verification code sent"),e.startPwdCodeCountdown()):e.$message.error(n.msg||"Failed to send code"),t.n=6;break;case 5:t.p=5,l=t.v,e.$message.error((null===(s=l.response)||void 0===s||null===(s=s.data)||void 0===s?void 0:s.msg)||"Failed to send code");case 6:return t.p=6,e.sendingPwdCode=!1,t.f(6);case 7:return t.a(2)}},t,null,[[2,5,6,7]])}))()},startPwdCodeCountdown:function(){var e=this;this.pwdCodeCountdown=60,this.pwdCodeTimer=setInterval(function(){e.pwdCodeCountdown--,e.pwdCodeCountdown<=0&&(clearInterval(e.pwdCodeTimer),e.pwdCodeTimer=null)},1e3)},validateNewPassword:function(e,t,a){t?t.length<8?a(new Error(this.$t("user.register.pwdMinLength")||"At least 8 characters")):/[A-Z]/.test(t)?/[a-z]/.test(t)?/[0-9]/.test(t)?a():a(new Error(this.$t("user.register.pwdNumber")||"At least one number")):a(new Error(this.$t("user.register.pwdLowercase")||"At least one lowercase letter")):a(new Error(this.$t("user.register.pwdUppercase")||"At least one uppercase letter")):a()},handleChangePassword:function(){var e=this;this.passwordForm.validateFields(function(){var t=(0,s.A)((0,o.A)().m(function t(r,i){var n,s,l,c,d;return(0,o.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(!r){t.n=1;break}return t.a(2);case 1:return e.changingPassword=!0,t.p=2,t.n=3,a.e(824).then(a.bind(a,95824));case 3:return n=t.v,s=n.changePassword,t.n=4,s({code:i.code,new_password:i.new_password});case 4:l=t.v,1===l.code?(e.$message.success(l.msg||"Password changed successfully"),e.passwordForm.resetFields()):e.$message.error(l.msg||"Change password failed"),t.n=6;break;case 5:t.p=5,d=t.v,e.$message.error((null===(c=d.response)||void 0===c||null===(c=c.data)||void 0===c?void 0:c.msg)||"Change password failed");case 6:return t.p=6,e.changingPassword=!1,t.f(6);case 7:return t.a(2)}},t,null,[[2,5,6,7]])}));return function(e,a){return t.apply(this,arguments)}}())},getRoleColor:function(e){var t={admin:"red",manager:"orange",user:"blue",viewer:"default"};return t[e]||"default"},getRoleLabel:function(e){var t={admin:this.$t("userManage.roleAdmin")||"Admin",manager:this.$t("userManage.roleManager")||"Manager",user:this.$t("userManage.roleUser")||"User",viewer:this.$t("userManage.roleViewer")||"Viewer"};return t[e]||e},formatTime:function(e){if(!e)return"";var t=new Date("number"===typeof e?1e3*e:e);return t.toLocaleString()},loadCreditsLog:function(){var e=this;return(0,s.A)((0,o.A)().m(function t(){var a;return(0,o.A)().w(function(t){while(1)switch(t.p=t.n){case 0:return e.creditsLogLoading=!0,t.p=1,t.n=2,(0,l.v9)({page:e.creditsLogPagination.current,page_size:e.creditsLogPagination.pageSize});case 2:a=t.v,1===a.code&&(e.creditsLog=a.data.items||[],e.creditsLogPagination.total=a.data.total||0),t.n=4;break;case 3:t.p=3,t.v,e.$message.error("Failed to load credits log");case 4:return t.p=4,e.creditsLogLoading=!1,t.f(4);case 5:return t.a(2)}},t,null,[[1,3,4,5]])}))()},handleCreditsLogChange:function(e){this.creditsLogPagination.current=e.current,this.loadCreditsLog()},loadReferrals:function(){var e=this;return(0,s.A)((0,o.A)().m(function t(){var a;return(0,o.A)().w(function(t){while(1)switch(t.p=t.n){case 0:return e.referralLoading=!0,t.p=1,t.n=2,(0,l.rx)({page:e.referralPagination.current,page_size:e.referralPagination.pageSize});case 2:a=t.v,1===a.code&&(e.referralData={list:a.data.list||[],total:a.data.total||0,referral_code:a.data.referral_code||"",referral_bonus:a.data.referral_bonus||0,register_bonus:a.data.register_bonus||0},e.referralPagination.total=a.data.total||0),t.n=4;break;case 3:t.p=3,t.v,e.$message.error("Failed to load referral data");case 4:return t.p=4,e.referralLoading=!1,t.f(4);case 5:return t.a(2)}},t,null,[[1,3,4,5]])}))()},handleReferralChange:function(e){this.referralPagination.current=e.current,this.loadReferrals()},copyReferralLink:function(){var e=this,t=this.referralLink;navigator.clipboard?navigator.clipboard.writeText(t).then(function(){e.$message.success(e.$t("profile.referral.linkCopied")||"邀请链接已复制")}).catch(function(){e.fallbackCopy(t)}):this.fallbackCopy(t)},fallbackCopy:function(e){var t=document.createElement("textarea");t.value=e,document.body.appendChild(t),t.select();try{document.execCommand("copy"),this.$message.success(this.$t("profile.referral.linkCopied")||"邀请链接已复制")}catch(a){this.$message.error("Copy failed")}document.body.removeChild(t)},getActionColor:function(e){var t={consume:"red",recharge:"green",admin_adjust:"blue",refund:"orange",vip_grant:"gold",vip_revoke:"default",register_bonus:"cyan",referral_bonus:"purple",indicator_purchase:"volcano",indicator_sale:"lime"};return t[e]||"default"},getActionLabel:function(e){var t={consume:this.$t("profile.creditsLog.actionConsume")||"消费",recharge:this.$t("profile.creditsLog.actionRecharge")||"充值",admin_adjust:this.$t("profile.creditsLog.actionAdjust")||"调整",refund:this.$t("profile.creditsLog.actionRefund")||"退款",vip_grant:this.$t("profile.creditsLog.actionVipGrant")||"VIP授予",vip_revoke:this.$t("profile.creditsLog.actionVipRevoke")||"VIP取消",register_bonus:this.$t("profile.creditsLog.actionRegisterBonus")||"注册奖励",referral_bonus:this.$t("profile.creditsLog.actionReferralBonus")||"邀请奖励",indicator_purchase:this.$t("profile.creditsLog.actionIndicatorPurchase")||"购买指标",indicator_sale:this.$t("profile.creditsLog.actionIndicatorSale")||"出售指标"};return t[e]||e},loadExchangeCredentials:function(){var e=this;return(0,s.A)((0,o.A)().m(function t(){var a;return(0,o.A)().w(function(t){while(1)switch(t.p=t.n){case 0:return e.exchangeLoading=!0,t.p=1,t.n=2,(0,d.IA)();case 2:a=t.v,1===a.code&&a.data&&(e.exchangeCredentials=a.data.items||[]),t.n=4;break;case 3:t.p=3,t.v,e.$message.error("Failed to load exchange accounts");case 4:return t.p=4,e.exchangeLoading=!1,t.f(4);case 5:return t.a(2)}},t,null,[[1,3,4,5]])}))()},handleExchangeTypeChange:function(e){this.selectedExchangeId=e,this.exchangeTestResult=null;var t=this.cryptoExchangeList.map(function(e){return e.id});t.includes(e)?this.addExchangeType="crypto":this.addExchangeType="ibkr"===e?"ibkr":"mt5"===e?"mt5":""},getExchangeDisplayName:function(e){var t={binance:"Binance",okx:"OKX",bitget:"Bitget",bybit:"Bybit",coinbaseexchange:"Coinbase",kraken:"Kraken",kucoin:"KuCoin",gate:"Gate.io",bitfinex:"Bitfinex",ibkr:"IBKR",mt5:"MetaTrader 5"};return t[e]||e},handleSaveExchange:function(){var e=this;this.exchangeForm.validateFields(function(){var t=(0,s.A)((0,o.A)().m(function t(a,r){var i,s,l;return(0,o.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(!a){t.n=1;break}return t.a(2);case 1:return e.savingExchange=!0,t.p=2,i=(0,n.A)({},r),t.n=3,(0,d.PR)(i);case 3:s=t.v,1===s.code?(e.$message.success(e.$t("profile.exchange.saveSuccess")),e.showAddExchangeModal=!1,e.exchangeForm.resetFields(),e.addExchangeType="",e.selectedExchangeId="",e.exchangeTestResult=null,e.loadExchangeCredentials()):e.$message.error(s.msg||e.$t("profile.exchange.saveFailed")),t.n=5;break;case 4:t.p=4,l=t.v,e.$message.error(l.message||e.$t("profile.exchange.saveFailed"));case 5:return t.p=5,e.savingExchange=!1,t.f(5);case 6:return t.a(2)}},t,null,[[2,4,5,6]])}));return function(e,a){return t.apply(this,arguments)}}())},handleDeleteCredential:function(e){var t=this;return(0,s.A)((0,o.A)().m(function a(){var r;return(0,o.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return a.p=0,a.n=1,(0,d.kI)(e);case 1:r=a.v,1===r.code?(t.$message.success(t.$t("profile.exchange.deleteSuccess")),t.loadExchangeCredentials()):t.$message.error(r.msg||"Delete failed"),a.n=3;break;case 2:a.p=2,a.v,t.$message.error("Delete failed");case 3:return a.a(2)}},a,null,[[0,2]])}))()},handleTestExchangeConnection:function(){var e=this;return(0,s.A)((0,o.A)().m(function t(){var a,r,i,s,l;return(0,o.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(a=e.exchangeForm.getFieldsValue(),r=a.exchange_id,r){t.n=1;break}return t.a(2);case 1:return e.testingExchange=!0,e.exchangeTestResult=null,t.p=2,i=(0,n.A)({},a),t.n=3,(0,u.kv)(i);case 3:s=t.v,1===s.code?e.exchangeTestResult={success:!0,message:e.$t("profile.exchange.testSuccess")}:e.exchangeTestResult={success:!1,message:"".concat(e.$t("profile.exchange.testFailed"),": ").concat(s.msg||"Unknown error")},t.n=5;break;case 4:t.p=4,l=t.v,e.exchangeTestResult={success:!1,message:"".concat(e.$t("profile.exchange.testFailed"),": ").concat(l.message||"Network error")};case 5:return t.p=5,e.testingExchange=!1,t.f(5);case 6:return t.a(2)}},t,null,[[2,4,5,6]])}))()},loadNotificationSettings:function(){var e=this;return(0,s.A)((0,o.A)().m(function t(){var a;return(0,o.A)().w(function(t){while(1)switch(t.p=t.n){case 0:return t.p=0,t.n=1,(0,l.vF)();case 1:a=t.v,1===a.code&&a.data&&(e.notificationSettings={default_channels:a.data.default_channels||["browser"],telegram_bot_token:a.data.telegram_bot_token||"",telegram_chat_id:a.data.telegram_chat_id||"",email:a.data.email||e.profile.email||"",phone:a.data.phone||"",discord_webhook:a.data.discord_webhook||"",webhook_url:a.data.webhook_url||"",webhook_token:a.data.webhook_token||""},e.$nextTick(function(){e.notificationForm.setFieldsValue({default_channels:e.notificationSettings.default_channels,telegram_bot_token:e.notificationSettings.telegram_bot_token,telegram_chat_id:e.notificationSettings.telegram_chat_id,email:e.notificationSettings.email,phone:e.notificationSettings.phone,discord_webhook:e.notificationSettings.discord_webhook,webhook_url:e.notificationSettings.webhook_url,webhook_token:e.notificationSettings.webhook_token})})),t.n=3;break;case 2:t.p=2,t.v;case 3:return t.a(2)}},t,null,[[0,2]])}))()},handleSaveNotifications:function(){var e=this;this.notificationForm.validateFields(function(){var t=(0,s.A)((0,o.A)().m(function t(a,r){var i;return(0,o.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(!a){t.n=1;break}return t.a(2);case 1:return e.savingNotifications=!0,t.p=2,t.n=3,(0,l.Gl)({default_channels:r.default_channels||["browser"],telegram_bot_token:r.telegram_bot_token||"",telegram_chat_id:r.telegram_chat_id||"",email:r.email||"",phone:r.phone||"",discord_webhook:r.discord_webhook||"",webhook_url:r.webhook_url||"",webhook_token:r.webhook_token||""});case 3:i=t.v,1===i.code?(e.$message.success(e.$t("profile.notifications.saveSuccess")||"通知设置保存成功"),e.notificationSettings=i.data||e.notificationSettings):e.$message.error(i.msg||"保存失败"),t.n=5;break;case 4:t.p=4,t.v,e.$message.error("保存失败");case 5:return t.p=5,e.savingNotifications=!1,t.f(5);case 6:return t.a(2)}},t,null,[[2,4,5,6]])}));return function(e,a){return t.apply(this,arguments)}}())},handleTestNotification:function(){var e=this;return(0,s.A)((0,o.A)().m(function t(){var a,r,i;return(0,o.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(a=e.notificationForm.getFieldsValue(),r=a.default_channels||[],0!==r.length){t.n=1;break}return e.$message.warning(e.$t("profile.notifications.selectChannel")||"请至少选择一个通知渠道"),t.a(2);case 1:if(!r.includes("telegram")){t.n=3;break}if(a.telegram_bot_token){t.n=2;break}return e.$message.warning(e.$t("profile.notifications.fillTelegramToken")||"请填写 Telegram Bot Token"),t.a(2);case 2:if(a.telegram_chat_id){t.n=3;break}return e.$message.warning(e.$t("profile.notifications.fillTelegram")||"请填写 Telegram Chat ID"),t.a(2);case 3:if(!r.includes("email")||a.email){t.n=4;break}return e.$message.warning(e.$t("profile.notifications.fillEmail")||"请填写通知邮箱"),t.a(2);case 4:return e.testingNotification=!0,t.p=5,t.n=6,(0,l.Gl)({default_channels:r,telegram_bot_token:a.telegram_bot_token||"",telegram_chat_id:a.telegram_chat_id||"",email:a.email||"",phone:a.phone||"",discord_webhook:a.discord_webhook||"",webhook_url:a.webhook_url||"",webhook_token:a.webhook_token||""});case 6:if(i=t.v,1===i.code){t.n=7;break}return e.$message.error(i.msg||"保存设置失败"),t.a(2);case 7:e.$message.info(e.$t("profile.notifications.testSent")||"测试通知已发送,请检查您的通知渠道"),t.n=9;break;case 8:t.p=8,t.v,e.$message.error("发送测试通知失败");case 9:return t.p=9,e.testingNotification=!1,t.f(9);case 10:return t.a(2)}},t,null,[[5,8,9,10]])}))()}}},m=f,h=a(845),g=(0,h.A)(m,r,i,!1,null,"6dceb76a",null),v=g.exports},42430:function(e,t,a){a.d(t,{IA:function(){return o},PR:function(){return s},kI:function(){return l}});var r=a(76338),i=a(75769),n={list:"/api/credentials/list",get:"/api/credentials/get",create:"/api/credentials/create",delete:"/api/credentials/delete"};function o(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,i.Ay)({url:n.list,method:"get",params:e})}function s(e){return(0,i.Ay)({url:n.create,method:"post",data:e})}function l(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return(0,i.Ay)({url:n.delete,method:"delete",params:(0,r.A)({id:e},t)})}},53003:function(e,t,a){a.d(t,{DZ:function(){return o},YT:function(){return n},_d:function(){return s},lo:function(){return i}});a(76338);var r=a(75769);function i(){return(0,r.Ay)({url:"/api/settings/schema",method:"get"})}function n(){return(0,r.Ay)({url:"/api/settings/values",method:"get"})}function o(e){return(0,r.Ay)({url:"/api/settings/save",method:"post",data:e})}function s(){return(0,r.Ay)({url:"/api/settings/openrouter-balance",method:"get"})}},84841:function(e,t,a){a.d(t,{DK:function(){return _},E$:function(){return d},Gl:function(){return f},O0:function(){return c},TK:function(){return o},aU:function(){return i},cw:function(){return l},d$:function(){return b},hG:function(){return s},kg:function(){return n},nY:function(){return v},r7:function(){return u},rx:function(){return h},v9:function(){return m},vF:function(){return p},vi:function(){return w},wq:function(){return g}});var r=a(75769);function i(e){return(0,r.Ay)({url:"/api/users/list",method:"get",params:e})}function n(e){return(0,r.Ay)({url:"/api/users/create",method:"post",data:e})}function o(e,t){return(0,r.Ay)({url:"/api/users/update",method:"put",params:{id:e},data:t})}function s(e){return(0,r.Ay)({url:"/api/users/delete",method:"delete",params:{id:e}})}function l(e){return(0,r.Ay)({url:"/api/users/reset-password",method:"post",data:e})}function c(){return(0,r.Ay)({url:"/api/users/roles",method:"get"})}function d(){return(0,r.Ay)({url:"/api/users/profile",method:"get"})}function u(e){return(0,r.Ay)({url:"/api/users/profile/update",method:"put",data:e})}function p(){return(0,r.Ay)({url:"/api/users/notification-settings",method:"get"})}function f(e){return(0,r.Ay)({url:"/api/users/notification-settings",method:"put",data:e})}function m(e){return(0,r.Ay)({url:"/api/users/my-credits-log",method:"get",params:e})}function h(e){return(0,r.Ay)({url:"/api/users/my-referrals",method:"get",params:e})}function g(e){return(0,r.Ay)({url:"/api/users/set-credits",method:"post",data:e})}function v(e){return(0,r.Ay)({url:"/api/users/set-vip",method:"post",data:e})}function _(e){return(0,r.Ay)({url:"/api/users/system-strategies",method:"get",params:e})}function w(e){return(0,r.Ay)({url:"/api/users/admin-orders",method:"get",params:e})}function b(e){return(0,r.Ay)({url:"/api/users/admin-ai-stats",method:"get",params:e})}}}]); \ No newline at end of file diff --git a/frontend/dist/js/159.70e0a0a9.js b/frontend/dist/js/159.70e0a0a9.js new file mode 100644 index 0000000..1dbfcad --- /dev/null +++ b/frontend/dist/js/159.70e0a0a9.js @@ -0,0 +1 @@ +"use strict";(self["webpackChunkvue_antd_pro"]=self["webpackChunkvue_antd_pro"]||[]).push([[159],{17692:function(t,a,s){s.r(a),s.d(a,{default:function(){return R}});var e=function(){var t=this,a=t._self._c;return a("div",{staticClass:"ai-asset-analysis-page",class:{"theme-dark":t.isDarkTheme}},[t.opportunities.length>0?a("div",{staticClass:"radar-section"},[a("div",{staticClass:"radar-header"},[a("div",{staticClass:"radar-header-left"},[a("h2",{staticClass:"radar-title"},[t._v(t._s(t.$t("aiAssetAnalysis.opportunities.title")))]),a("p",{staticClass:"radar-subtitle"},[t._v(t._s(t.$t("aiAssetAnalysis.opportunities.updateHint")))])]),a("a-button",{staticClass:"radar-refresh-btn",attrs:{size:"small",loading:t.oppLoading},on:{click:function(a){return t.loadOpportunities(!0)}}},[a("a-icon",{attrs:{type:"sync"}}),t._v(" "+t._s(t.$t("common.refresh")||"Refresh")+" ")],1)],1),a("div",{staticClass:"radar-carousel",on:{mouseenter:function(a){t.oppHover=!0},mouseleave:function(a){t.oppHover=!1}}},[a("div",{staticClass:"radar-track",class:{paused:t.oppHover},style:t.oppTrackStyle},t._l(t.carouselItems,function(s,e){return a("div",{key:"opp-"+e,staticClass:"radar-card",class:[s.impact,{"is-prediction":"PredictionMarket"===s.market}],on:{click:function(a){return t.analyzeOpportunity(s)}}},[a("div",{staticClass:"rc-head"},[a("span",{staticClass:"rc-symbol",class:{"rc-prediction-title":"PredictionMarket"===s.market}},[t._v(" "+t._s("PredictionMarket"===s.market&&s.name||s.symbol)+" ")]),a("span",{staticClass:"rc-market",class:"rc-market-"+(s.market||"").toLowerCase()},[t._v(" "+t._s(t.getMarketLabel(s.market))+" ")])]),"PredictionMarket"!==s.market?a("div",{staticClass:"rc-metrics"},[a("div",{staticClass:"rc-metric"},[a("span",{staticClass:"rc-metric-label"},[t._v(t._s(t.$i18n&&"zh-CN"===t.$i18n.locale?"当前价格":"Price"))]),a("span",{staticClass:"rc-metric-value"},[t._v("$"+t._s(t.formatOppPrice(s.price)))])]),a("div",{staticClass:"rc-metric"},[a("span",{staticClass:"rc-metric-label"},[t._v(t._s(t.$i18n&&"zh-CN"===t.$i18n.locale?"24h涨跌":"24h Change"))]),a("span",{staticClass:"rc-metric-value",class:s.change_24h>=0?"rc-up":"rc-down"},[t._v(" "+t._s(s.change_24h>=0?"+":"")+t._s((s.change_24h||0).toFixed(2))+"% ")])]),a("div",{staticClass:"rc-metric"},[a("span",{staticClass:"rc-metric-label"},[t._v(t._s(t.$i18n&&"zh-CN"===t.$i18n.locale?"信号":"Signal"))]),a("span",{staticClass:"rc-metric-value rc-signal-val",class:"rc-signal-"+(s.signal||"")},[t._v(" "+t._s(t.getSignalLabel(s.signal))+" ")])])]):a("div",{staticClass:"rc-metrics"},[a("div",{staticClass:"rc-metric"},[a("span",{staticClass:"rc-metric-label"},[t._v(t._s(t.$i18n&&"zh-CN"===t.$i18n.locale?"市场概率":"Probability"))]),a("span",{staticClass:"rc-metric-value"},[t._v(t._s((s.price||0).toFixed(1))+"%")])]),s.ai_analysis?a("div",{staticClass:"rc-metric"},[a("span",{staticClass:"rc-metric-label"},[t._v(t._s(t.$i18n&&"zh-CN"===t.$i18n.locale?"机会评分":"Score"))]),a("span",{staticClass:"rc-metric-value rc-up"},[t._v(t._s(s.ai_analysis.opportunity_score.toFixed(0)))])]):t._e(),s.ai_analysis?a("div",{staticClass:"rc-metric"},[a("span",{staticClass:"rc-metric-label"},[t._v(t._s(t.$i18n&&"zh-CN"===t.$i18n.locale?"建议":"Rec."))]),a("span",{staticClass:"rc-metric-value",class:"YES"===s.ai_analysis.recommendation?"rc-up":"NO"===s.ai_analysis.recommendation?"rc-down":""},[t._v(" "+t._s(t.getRecommendationLabel(s.ai_analysis.recommendation))+" ")])]):t._e()]),a("div",{staticClass:"rc-footer"},[a("span",{staticClass:"rc-reason"},[t._v(t._s(t.getReasonText(s)))]),"Crypto"===s.market?a("span",{staticClass:"rc-cta",on:{click:function(a){return a.stopPropagation(),t.openQuickTradeFromOpp(s)}}},[a("a-icon",{attrs:{type:"transaction"}}),t._v(" "+t._s(t.$t("quickTrade.tradeNow"))+" ")],1):t._e()])])}),0)])]):t._e(),a("a-tooltip",{attrs:{title:t.$t("quickTrade.openPanel"),placement:"left"}},[!t.showQuickTrade&&t.currentAnalysisSymbol?a("div",{staticClass:"qt-floating-btn",on:{click:t.openQuickTradeFromCurrent}},[a("a-icon",{attrs:{type:"thunderbolt",theme:"filled"}})],1):t._e()]),a("quick-trade-panel",{attrs:{visible:t.showQuickTrade,symbol:t.qtSymbol,"preset-side":t.qtSide,"preset-price":t.qtPrice,source:t.qtSource,"market-type":"swap"},on:{close:function(a){t.showQuickTrade=!1},"order-success":t.onQuickTradeSuccess,"update:symbol":t.handleQuickTradeSymbolChange}}),a("a-card",{staticClass:"workspace-card",attrs:{bordered:!1}},[a("a-tabs",{staticClass:"workspace-tabs",attrs:{size:"large"},model:{value:t.activeTab,callback:function(a){t.activeTab=a},expression:"activeTab"}},[a("a-tab-pane",{key:"quick"},[a("span",{attrs:{slot:"tab"},slot:"tab"},[a("a-icon",{attrs:{type:"thunderbolt"}}),t._v(" "+t._s(t.$t("aiAssetAnalysis.tabs.quick"))+" ")],1),a("div",{staticClass:"tab-body"},["quick"===t.activeTab?a("AnalysisView",{attrs:{embedded:!0,"preset-symbol":t.presetSymbol,"auto-analyze-signal":t.autoAnalyzeSignal},on:{"symbol-change":t.onAnalysisSymbolChange}}):t._e()],1)]),a("a-tab-pane",{key:"polymarket"},[a("span",{attrs:{slot:"tab"},slot:"tab"},[a("a-icon",{attrs:{type:"radar-chart"}}),t._v(" "+t._s(t.$t("aiAssetAnalysis.tabs.polymarket"))+" ")],1),a("div",{staticClass:"tab-body"},[a("div",{staticClass:"polymarket-tab-content"},[a("div",{staticClass:"polymarket-placeholder"},[a("div",{staticClass:"placeholder-icon"},[a("a-icon",{attrs:{type:"radar-chart"}})],1),a("h3",[t._v(t._s(t.$t("polymarket.analysis.title")))]),a("p",[t._v(t._s(t.$t("polymarket.analysis.description")))]),a("a-button",{staticStyle:{"margin-top":"16px"},attrs:{type:"primary",size:"large",icon:"thunderbolt"},on:{click:function(a){t.showPolymarketModal=!0}}},[t._v(" "+t._s(t.$t("polymarket.analysis.startAnalysis"))+" ")])],1)])])])],1)],1),a("PolymarketAnalysisModal",{attrs:{visible:t.showPolymarketModal},on:{close:function(a){t.showPolymarketModal=!1}}})],1)},i=[],n=s(81127),r=s(56252),o=s(2403),l=s(76338),c=(s(74423),s(95353)),u=s(37855),d=s(44146),y=s(62611),p=function(){var t=this,a=t._self._c;return a("a-modal",{attrs:{visible:t.visible,title:t.$t("polymarket.analysis.title"),width:900,footer:null,wrapClassName:t.isDarkTheme?"qd-dark-modal":"",maskClosable:!1},on:{cancel:t.handleClose}},[a("div",{staticClass:"polymarket-analysis-modal",class:{"theme-dark":t.isDarkTheme}},[a("a-tabs",{attrs:{"default-active-key":"analyze"},on:{change:t.handleTabChange}},[a("a-tab-pane",{key:"analyze",attrs:{tab:t.$t("polymarket.analysis.tabAnalyze")}},[t.analysisResult?t._e():a("div",{staticClass:"input-section"},[a("a-alert",{staticStyle:{"margin-bottom":"16px"},attrs:{message:t.$t("polymarket.analysis.inputHint"),type:"info","show-icon":""}}),a("a-textarea",{attrs:{placeholder:t.$t("polymarket.analysis.inputPlaceholder"),rows:3,disabled:t.analyzing},on:{pressEnter:t.handleAnalyze},model:{value:t.inputText,callback:function(a){t.inputText=a},expression:"inputText"}}),a("div",{staticClass:"input-actions"},[a("a-button",{staticStyle:{width:"100%","margin-top":"12px"},attrs:{type:"primary",size:"large",icon:"thunderbolt",loading:t.analyzing,disabled:!t.inputText.trim()},on:{click:t.handleAnalyze}},[t._v(" "+t._s(t.$t("polymarket.analysis.analyzeButton"))+" ")])],1)],1),t.analysisResult?a("div",{staticClass:"result-section"},[a("div",{staticClass:"market-info"},[a("h3",[t._v(t._s(t.analysisResult.market.question))]),a("div",{staticClass:"market-meta"},[a("a-tag",{attrs:{color:t.getStatusColor(t.analysisResult.market.status)}},[t._v(" "+t._s(t.analysisResult.market.status)+" ")]),a("span",{staticClass:"meta-item"},[a("a-icon",{attrs:{type:"percentage"}}),t._v(" "+t._s(t.analysisResult.market.current_probability)+"% ")],1),t.analysisResult.market.volume_24h?a("span",{staticClass:"meta-item"},[a("a-icon",{attrs:{type:"dollar"}}),t._v(" "+t._s(t.formatVolume(t.analysisResult.market.volume_24h))+" ")],1):t._e(),t.analysisResult.market.polymarket_url?a("a-button",{attrs:{type:"link",size:"small",icon:"link",href:t.analysisResult.market.polymarket_url,target:"_blank"}},[t._v(" "+t._s(t.$t("polymarket.analysis.viewOnPolymarket"))+" ")]):t._e()],1)]),a("div",{staticClass:"analysis-result"},[a("a-divider",[t._v(t._s(t.$t("polymarket.analysis.aiAnalysis")))]),a("div",{staticClass:"probability-comparison"},[a("div",{staticClass:"prob-item"},[a("div",{staticClass:"prob-label"},[t._v(t._s(t.$t("polymarket.analysis.marketProbability")))]),a("div",{staticClass:"prob-value"},[t._v(t._s(t.analysisResult.analysis.market_probability)+"%")])]),a("div",{staticClass:"prob-item"},[a("div",{staticClass:"prob-label"},[t._v(t._s(t.$t("polymarket.analysis.aiPredictedProbability")))]),a("div",{staticClass:"prob-value ai-prob"},[t._v(t._s(t.analysisResult.analysis.ai_predicted_probability)+"%")])]),a("div",{staticClass:"prob-item"},[a("div",{staticClass:"prob-label"},[t._v(t._s(t.$t("polymarket.analysis.divergence")))]),a("div",{staticClass:"prob-value",class:t.getDivergenceClass(t.analysisResult.analysis.divergence)},[t._v(" "+t._s(t.analysisResult.analysis.divergence>=0?"+":"")+t._s(t.analysisResult.analysis.divergence.toFixed(2))+"% ")])])]),a("div",{staticClass:"recommendation-section"},[a("a-row",{attrs:{gutter:16}},[a("a-col",{attrs:{span:8}},[a("div",{staticClass:"rec-card"},[a("div",{staticClass:"rec-label"},[t._v(t._s(t.$t("polymarket.analysis.recommendation")))]),a("a-tag",{staticStyle:{"font-size":"16px",padding:"4px 12px"},attrs:{color:t.getRecommendationColor(t.analysisResult.analysis.recommendation)}},[t._v(" "+t._s(t.getRecommendationLabel(t.analysisResult.analysis.recommendation))+" ")])],1)]),a("a-col",{attrs:{span:8}},[a("div",{staticClass:"rec-card"},[a("div",{staticClass:"rec-label"},[t._v(t._s(t.$t("polymarket.analysis.confidenceScore")))]),a("div",{staticClass:"rec-value"},[t._v(t._s(t.analysisResult.analysis.confidence_score.toFixed(0)))])])]),a("a-col",{attrs:{span:8}},[a("div",{staticClass:"rec-card"},[a("div",{staticClass:"rec-label"},[t._v(t._s(t.$t("polymarket.analysis.opportunityScore")))]),a("div",{staticClass:"rec-value"},[t._v(t._s(t.analysisResult.analysis.opportunity_score.toFixed(0)))])])])],1)],1),t.analysisResult.analysis.reasoning?a("div",{staticClass:"reasoning-section"},[a("h4",[t._v(t._s(t.$t("polymarket.analysis.reasoning")))]),a("p",{staticClass:"reasoning-text"},[t._v(t._s(t.analysisResult.analysis.reasoning))])]):t._e(),t.analysisResult.analysis.key_factors&&t.analysisResult.analysis.key_factors.length>0?a("div",{staticClass:"key-factors-section"},[a("h4",[t._v(t._s(t.$t("polymarket.analysis.keyFactors")))]),t._l(t.analysisResult.analysis.key_factors,function(s,e){return a("a-tag",{key:e,staticStyle:{margin:"4px"},attrs:{color:"blue"}},[t._v(" "+t._s(s)+" ")])})],2):t._e(),t.analysisResult.credits_charged>0?a("div",{staticClass:"billing-info"},[a("a-alert",{staticStyle:{"margin-top":"16px"},attrs:{message:t.$t("polymarket.analysis.creditsCharged",{credits:t.analysisResult.credits_charged}),type:"success","show-icon":""}}),void 0!==t.analysisResult.remaining_credits?a("div",{staticStyle:{"margin-top":"8px","text-align":"right"},style:{color:t.isDarkTheme?"rgba(255,255,255,0.75)":"rgba(0,0,0,0.65)"}},[t._v(" "+t._s(t.$t("polymarket.analysis.remainingCredits",{credits:t.analysisResult.remaining_credits.toFixed(0)}))+" ")]):t._e()],1):t._e()],1),a("div",{staticClass:"result-actions"},[a("a-button",{staticStyle:{"margin-right":"8px"},on:{click:t.handleNewAnalysis}},[t._v(" "+t._s(t.$t("polymarket.analysis.newAnalysis"))+" ")]),a("a-button",{attrs:{type:"primary"},on:{click:t.handleClose}},[t._v(" "+t._s(t.$t("common.close"))+" ")])],1)]):t._e(),t.analyzing?a("div",{staticClass:"loading-section"},[a("a-spin",{attrs:{size:"large"}}),a("p",{style:{marginTop:"16px",color:t.isDarkTheme?"rgba(255,255,255,0.75)":"rgba(0,0,0,0.65)"}},[t._v(" "+t._s(t.$t("polymarket.analysis.analyzing"))+" ")])],1):t._e()]),a("a-tab-pane",{key:"history",attrs:{tab:t.$t("polymarket.analysis.tabHistory")}},[a("div",{staticClass:"history-section"},[a("a-spin",{attrs:{spinning:t.historyLoading}},[a("a-table",{attrs:{columns:t.historyColumns,"data-source":t.historyList,pagination:t.historyPagination,"row-key":function(t){return t.id},size:"small"},on:{change:t.handleHistoryTableChange},scopedSlots:t._u([{key:"market_title",fn:function(s,e){return[a("a-button",{staticStyle:{padding:"0"},attrs:{type:"link"},on:{click:function(a){return t.viewHistoryItem(e)}}},[t._v(" "+t._s(s)+" ")])]}},{key:"recommendation",fn:function(s){return[a("a-tag",{attrs:{color:t.getRecommendationColor(s)}},[t._v(" "+t._s(t.getRecommendationLabel(s))+" ")])]}},{key:"created_at",fn:function(a){return[t._v(" "+t._s(t.formatDateTime(a))+" ")]}}])})],1)],1)])],1)],1)])},m=[],h=s(75769),v="/api/polymarket";function _(t){return(0,h.Ay)({url:"".concat(v,"/analyze"),method:"post",data:t,timeout:12e4})}function k(t){return(0,h.Ay)({url:"".concat(v,"/history"),method:"get",params:t})}var g={name:"PolymarketAnalysisModal",props:{visible:{type:Boolean,default:!1}},data:function(){var t=this;return{inputText:"",analyzing:!1,analysisResult:null,activeTab:"analyze",historyLoading:!1,historyList:[],historyPagination:{current:1,pageSize:20,total:0,showSizeChanger:!0,showTotal:function(a){return t.$t("polymarket.analysis.historyTotal",{total:a})}},historyColumns:[]}},computed:(0,l.A)((0,l.A)({},(0,c.aH)({navTheme:function(t){return t.app.theme}})),{},{isDarkTheme:function(){return"dark"===this.navTheme||"realdark"===this.navTheme}}),methods:{handleAnalyze:function(){var t=this;this.inputText.trim()?(this.analyzing=!0,this.analysisResult=null,_({input:this.inputText.trim(),language:this.$i18n.locale||"zh-CN"}).then(function(a){1===a.code?(t.analysisResult=a.data,t.$message.success(t.$t("polymarket.analysis.success"))):"Insufficient credits"===a.msg?(t.$message.error(t.$t("polymarket.analysis.insufficientCredits")),t.$router.push("/billing")):t.$message.error(a.msg||t.$t("polymarket.analysis.failed"))}).catch(function(a){a.response&&a.response.data&&"Insufficient credits"===a.response.data.msg?(t.$message.error(t.$t("polymarket.analysis.insufficientCredits")),t.$router.push("/billing")):t.$message.error(t.$t("polymarket.analysis.failed"))}).finally(function(){t.analyzing=!1})):this.$message.warning(this.$t("polymarket.analysis.inputRequired"))},handleNewAnalysis:function(){this.inputText="",this.analysisResult=null},handleClose:function(){var t=this;this.$emit("close"),setTimeout(function(){t.inputText="",t.analysisResult=null,t.analyzing=!1},300)},getStatusColor:function(t){var a={active:"green",closed:"default",resolved:"blue"};return a[t]||"default"},getRecommendationColor:function(t){var a={YES:"green",NO:"red",HOLD:"orange"};return a[t]||"default"},getRecommendationLabel:function(t){var a={YES:this.$t("polymarket.analysis.recommendationYes"),NO:this.$t("polymarket.analysis.recommendationNo"),HOLD:this.$t("polymarket.analysis.recommendationHold")};return a[t]||t},getDivergenceClass:function(t){return t>5?"divergence-positive":t<-5?"divergence-negative":"divergence-neutral"},formatVolume:function(t){return t>=1e6?"$".concat((t/1e6).toFixed(2),"M"):t>=1e3?"$".concat((t/1e3).toFixed(2),"K"):"$".concat(t.toFixed(2))},handleTabChange:function(t){this.activeTab=t,"history"===t&&0===this.historyList.length&&this.loadHistory()},loadHistory:function(){var t=this;return(0,r.A)((0,n.A)().m(function a(){var s;return(0,n.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return t.historyLoading=!0,a.p=1,a.n=2,k({page:t.historyPagination.current,page_size:t.historyPagination.pageSize});case 2:s=a.v,1===s.code&&s.data&&(t.historyList=s.data.items||[],t.historyPagination.total=s.data.total||0),a.n=4;break;case 3:a.p=3,a.v,t.$message.error(t.$t("polymarket.analysis.loadHistoryFailed"));case 4:return a.p=4,t.historyLoading=!1,a.f(4);case 5:return a.a(2)}},a,null,[[1,3,4,5]])}))()},handleHistoryTableChange:function(t){this.historyPagination.current=t.current,this.historyPagination.pageSize=t.pageSize,this.loadHistory()},viewHistoryItem:function(t){this.activeTab="analyze",this.analysisResult={market:{question:t.market_title,market_id:t.market_id,polymarket_url:t.market_url,current_probability:t.market_probability,status:"active"},analysis:{ai_predicted_probability:t.ai_predicted_probability,market_probability:t.market_probability,recommendation:t.recommendation,opportunity_score:t.opportunity_score,confidence_score:t.confidence_score}}},formatDateTime:function(t){if(!t)return"";var a=new Date(t);return a.toLocaleString("zh-CN"===this.$i18n.locale?"zh-CN":"en-US")}},mounted:function(){this.historyColumns=[{title:this.$t("polymarket.analysis.historyMarket"),dataIndex:"market_title",key:"market_title",scopedSlots:{customRender:"market_title"}},{title:this.$t("polymarket.analysis.historyRecommendation"),dataIndex:"recommendation",key:"recommendation",width:120,scopedSlots:{customRender:"recommendation"}},{title:this.$t("polymarket.analysis.historyOpportunityScore"),dataIndex:"opportunity_score",key:"opportunity_score",width:120,align:"right"},{title:this.$t("polymarket.analysis.historyCreatedAt"),dataIndex:"created_at",key:"created_at",width:180,scopedSlots:{customRender:"created_at"}}]}},b=g,f=s(845),C=(0,f.A)(b,p,m,!1,null,"67e891d2",null),$=C.exports,S={name:"AIAssetAnalysis",components:{AnalysisView:u["default"],QuickTradePanel:y.A,PolymarketAnalysisModal:$},data:function(){return{activeTab:"quick",opportunities:[],oppLoading:!1,oppHover:!1,presetSymbol:"",autoAnalyzeSignal:0,showQuickTrade:!1,qtSymbol:"",qtSide:"",qtPrice:0,qtSource:"ai_radar",currentAnalysisSymbol:"",currentAnalysisMarket:"",showPolymarketModal:!1}},computed:(0,l.A)((0,l.A)({},(0,c.aH)({navTheme:function(t){return t.app.theme}})),{},{isDarkTheme:function(){return"dark"===this.navTheme||"realdark"===this.navTheme},carouselItems:function(){return 0===this.opportunities.length?[]:[].concat((0,o.A)(this.opportunities),(0,o.A)(this.opportunities))},oppTrackStyle:function(){var t=3*this.opportunities.length;return{animationDuration:t+"s"}}}),created:function(){this.loadOpportunities()},methods:{loadOpportunities:function(){var t=arguments,a=this;return(0,r.A)((0,n.A)().m(function s(){var e,i,r;return(0,n.A)().w(function(s){while(1)switch(s.p=s.n){case 0:return e=t.length>0&&void 0!==t[0]&&t[0],a.oppLoading=!0,s.p=1,i=e?{force:!0}:{},s.n=2,(0,d.r9)(i);case 2:r=s.v,r&&1===r.code&&Array.isArray(r.data)&&(a.opportunities=r.data.slice(0,20)),s.n=4;break;case 3:s.p=3,s.v;case 4:return s.p=4,a.oppLoading=!1,s.f(4);case 5:return s.a(2)}},s,null,[[1,3,4,5]])}))()},getSignalColor:function(t){var a={overbought:"volcano",oversold:"green",bullish_momentum:"cyan",bearish_momentum:"red"};return a[t]||"default"},getSignalLabel:function(t){var a="aiAssetAnalysis.opportunities.signal.".concat(t),s=this.$t(a);return s!==a?s:t},getMarketTagColor:function(t){var a={Crypto:"purple",USStock:"green",Forex:"gold",PredictionMarket:"cyan"};return a[t]||"default"},getMarketLabel:function(t){var a="aiAssetAnalysis.opportunities.market.".concat(t),s=this.$t(a);return s!==a?s:t},getReasonText:function(t){var a=(t.market||"Crypto").toLowerCase(),s=t.signal||"",e="aiAssetAnalysis.opportunities.reason.".concat(a,".").concat(s),i=this.$t(e);if(i===e)return t.reason||"";var n=Math.abs(t.change_24h||0).toFixed(1),r=Math.abs(t.change_7d||0).toFixed(1);return i.replace("{change}",n).replace("{change7d}",r)},formatOppPrice:function(t){return t?t>=1e4?(t/1e3).toFixed(1)+"K":t>=1?t.toFixed(2):t.toFixed(4):"--"},analyzeOpportunity:function(t){var a=this;if("PredictionMarket"===t.market)return this.activeTab="polymarket",void(this.showPolymarketModal=!0);this.activeTab="quick";var s=t.market||"Crypto";this.presetSymbol="".concat(s,":").concat(t.symbol),this.$nextTick(function(){a.autoAnalyzeSignal++})},getRecommendationColor:function(t){var a={YES:"green",NO:"red",HOLD:"default"};return a[t]||"default"},getRecommendationLabel:function(t){return this.$t("polymarket.recommendation.".concat(t))||t},onAnalysisSymbolChange:function(t){if(!t)return this.currentAnalysisSymbol="",void(this.currentAnalysisMarket="");var a=t.split(":"),s=a.length>1?a[0]:"Crypto",e=a.length>1?a[1]:a[0];this.currentAnalysisMarket=s,this.currentAnalysisSymbol="Crypto"===s?e:""},openQuickTradeFromCurrent:function(){this.currentAnalysisSymbol&&(this.qtSymbol=this.currentAnalysisSymbol,this.qtSide="",this.qtPrice=0,this.qtSource="ai_analysis",this.showQuickTrade=!0)},openQuickTradeFromOpp:function(t){if("Crypto"===t.market){this.qtSymbol=t.symbol||"";var a=(t.signal||"").toLowerCase();a.includes("oversold")||a.includes("bullish")?this.qtSide="buy":a.includes("overbought")||a.includes("bearish")?this.qtSide="sell":this.qtSide="",this.qtPrice=t.price||0,this.qtSource="ai_radar",this.showQuickTrade=!0}},onQuickTradeSuccess:function(){this.$message.success(this.$t("quickTrade.orderSuccess"))},handleQuickTradeSymbolChange:function(t){t&&(this.qtSymbol=t)}}},T=S,A=(0,f.A)(T,e,i,!1,null,"0d0a10d6",null),R=A.exports}}]); \ No newline at end of file diff --git a/frontend/dist/js/170-legacy.6fed9f9b.js b/frontend/dist/js/170-legacy.6fed9f9b.js new file mode 100644 index 0000000..f8664bd --- /dev/null +++ b/frontend/dist/js/170-legacy.6fed9f9b.js @@ -0,0 +1 @@ +"use strict";(self["webpackChunkvue_antd_pro"]=self["webpackChunkvue_antd_pro"]||[]).push([[170],{88170:function(e,t,a){a.r(t),a.d(t,{default:function(){return v}});a(62010);var r=function(){var e=this,t=e._self._c;return t("div",{staticClass:"profile-page",class:{"theme-dark":e.isDarkTheme}},[t("div",{staticClass:"page-header"},[t("h2",{staticClass:"page-title"},[t("a-icon",{attrs:{type:"user"}}),t("span",[e._v(e._s(e.$t("profile.title")||"My Profile"))])],1),t("p",{staticClass:"page-desc"},[e._v(e._s(e.$t("profile.description")||"Manage your account settings and preferences"))])]),t("a-row",{staticClass:"profile-cards-row",attrs:{gutter:24}},[t("a-col",{staticClass:"profile-card-col",attrs:{xs:24,md:8}},[t("a-card",{staticClass:"profile-card",attrs:{bordered:!1}},[t("div",{staticClass:"avatar-section"},[t("a-avatar",{attrs:{size:100,src:e.profile.avatar||"/avatar2.jpg"}}),t("h3",{staticClass:"username"},[e._v(e._s(e.profile.nickname||e.profile.username))]),t("p",{staticClass:"user-role"},[t("a-tag",{attrs:{color:e.getRoleColor(e.profile.role)}},[e._v(" "+e._s(e.getRoleLabel(e.profile.role))+" ")]),e.isVip?t("a-tag",{attrs:{color:"gold"}},[t("a-icon",{attrs:{type:"crown"}}),e._v(" VIP ")],1):e._e()],1)],1),t("a-divider"),t("div",{staticClass:"profile-info"},[t("div",{staticClass:"info-item"},[t("a-icon",{attrs:{type:"user"}}),t("span",{staticClass:"label"},[e._v(e._s(e.$t("profile.username")||"Username")+":")]),t("span",{staticClass:"value"},[e._v(e._s(e.profile.username))])],1),t("div",{staticClass:"info-item"},[t("a-icon",{attrs:{type:"mail"}}),t("span",{staticClass:"label"},[e._v(e._s(e.$t("profile.email")||"Email")+":")]),t("span",{staticClass:"value"},[e._v(e._s(e.profile.email||"-"))])],1),t("div",{staticClass:"info-item"},[t("a-icon",{attrs:{type:"calendar"}}),t("span",{staticClass:"label"},[e._v(e._s(e.$t("profile.lastLogin")||"Last Login")+":")]),t("span",{staticClass:"value"},[e._v(e._s(e.formatTime(e.profile.last_login_at)||"-"))])],1)])],1)],1),t("a-col",{staticClass:"right-cards-col",attrs:{xs:24,md:16}},[t("a-row",{staticClass:"right-cards-row",attrs:{gutter:16}},[t("a-col",{attrs:{xs:24,md:12}},[t("a-card",{staticClass:"credits-card",attrs:{bordered:!1}},[t("div",{staticClass:"credits-header"},[t("h3",{staticClass:"credits-title"},[t("a-icon",{attrs:{type:"wallet"}}),e._v(" "+e._s(e.$t("profile.credits.title")||"我的积分")+" ")],1)]),t("div",{staticClass:"credits-body"},[t("div",{staticClass:"credits-amount"},[t("span",{staticClass:"amount-value"},[e._v(e._s(e.formatCredits(e.billing.credits)))]),t("span",{staticClass:"amount-label"},[e._v(e._s(e.$t("profile.credits.unit")||"积分"))])]),e.billing.vip_expires_at?t("div",{staticClass:"vip-status"},[t("a-icon",{style:{color:e.isVip?"#faad14":"#999"},attrs:{type:"crown"}}),e.isVip?t("span",{staticClass:"vip-active"},[e._v(" "+e._s(e.$t("profile.credits.vipExpires")||"VIP有效期至")+": "+e._s(e.formatDate(e.billing.vip_expires_at))+" ")]):t("span",{staticClass:"vip-expired"},[e._v(" "+e._s(e.$t("profile.credits.vipExpired")||"VIP已过期")+" ")])],1):e.billing.is_vip?e._e():t("div",{staticClass:"vip-status"},[t("span",{staticClass:"no-vip"},[e._v(e._s(e.$t("profile.credits.noVip")||"非VIP用户"))])])]),t("a-divider"),t("div",{staticClass:"credits-actions"},[t("a-button",{attrs:{type:"primary",icon:"shopping"},on:{click:e.handleRecharge}},[e._v(" "+e._s(e.$t("profile.credits.recharge")||"开通/充值")+" ")])],1),e.billing.billing_enabled?t("div",{staticClass:"credits-hint"},[t("a-icon",{attrs:{type:"info-circle"}}),t("span",[e._v(e._s(e.$t("profile.credits.hint")||"使用AI分析/回测/监控等功能会消耗积分;VIP仅可免费使用VIP免费指标。"))])],1):e._e()],1)],1),t("a-col",{attrs:{xs:24,md:12}},[t("a-card",{staticClass:"referral-card",attrs:{bordered:!1}},[t("div",{staticClass:"referral-header"},[t("h3",{staticClass:"referral-title"},[t("a-icon",{attrs:{type:"team"}}),e._v(" "+e._s(e.$t("profile.referral.title")||"邀请好友")+" ")],1)]),t("div",{staticClass:"referral-body"},[t("div",{staticClass:"referral-stats"},[t("div",{staticClass:"stat-item"},[t("span",{staticClass:"stat-value"},[e._v(e._s(e.referralData.total||0))]),t("span",{staticClass:"stat-label"},[e._v(e._s(e.$t("profile.referral.totalInvited")||"已邀请"))])]),e.referralData.referral_bonus>0?t("div",{staticClass:"stat-item"},[t("span",{staticClass:"stat-value"},[e._v("+"+e._s(e.referralData.referral_bonus))]),t("span",{staticClass:"stat-label"},[e._v(e._s(e.$t("profile.referral.bonusPerInvite")||"每邀请获得"))])]):e._e()]),t("a-divider",{staticStyle:{margin:"12px 0"}}),t("div",{staticClass:"referral-link-section"},[t("div",{staticClass:"link-label"},[e._v(e._s(e.$t("profile.referral.yourLink")||"您的邀请链接"))]),t("div",{staticClass:"link-box"},[t("a-input",{attrs:{value:e.referralLink,readonly:"",size:"small"}},[t("a-tooltip",{attrs:{slot:"suffix",title:e.$t("profile.referral.copyLink")||"复制链接"},slot:"suffix"},[t("a-icon",{staticStyle:{cursor:"pointer"},attrs:{type:"copy"},on:{click:e.copyReferralLink}})],1)],1)],1)]),e.referralData.register_bonus>0?t("div",{staticClass:"referral-hint"},[t("a-icon",{attrs:{type:"gift"}}),t("span",[e._v(e._s(e.$t("profile.referral.newUserBonus")||"新用户注册获得")+" "+e._s(e.referralData.register_bonus)+" "+e._s(e.$t("profile.credits.unit")||"积分"))])],1):e._e()],1)])],1)],1)],1)],1),t("a-row",{staticStyle:{"margin-top":"24px"},attrs:{gutter:24}},[t("a-col",{attrs:{xs:24}},[t("a-card",{staticClass:"edit-card",attrs:{bordered:!1}},[t("a-tabs",{model:{value:e.activeTab,callback:function(t){e.activeTab=t},expression:"activeTab"}},[t("a-tab-pane",{key:"basic",attrs:{tab:e.$t("profile.basicInfo")||"Basic Info"}},[t("a-form",{staticClass:"profile-form",attrs:{form:e.profileForm,layout:"vertical"}},[t("a-form-item",{attrs:{label:e.$t("profile.nickname")||"Nickname"}},[t("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["nickname",{initialValue:e.profile.nickname}],expression:"['nickname', { initialValue: profile.nickname }]"}],attrs:{placeholder:e.$t("profile.nicknamePlaceholder")||"Enter your nickname"}},[t("a-icon",{attrs:{slot:"prefix",type:"smile"},slot:"prefix"})],1)],1),t("a-form-item",{attrs:{label:e.$t("profile.email")||"Email"}},[t("a-input",{attrs:{value:e.profile.email||"-",disabled:""}},[t("a-icon",{attrs:{slot:"prefix",type:"mail"},slot:"prefix"}),t("a-tooltip",{attrs:{slot:"suffix",title:e.$t("profile.emailCannotChange")||"Email cannot be changed after registration"},slot:"suffix"},[t("a-icon",{staticStyle:{color:"rgba(0,0,0,.45)"},attrs:{type:"info-circle"}})],1)],1)],1),t("a-form-item",[t("a-button",{attrs:{type:"primary",loading:e.saving},on:{click:e.handleSaveProfile}},[t("a-icon",{attrs:{type:"save"}}),e._v(" "+e._s(e.$t("common.save")||"Save")+" ")],1)],1)],1)],1),t("a-tab-pane",{key:"password",attrs:{tab:e.$t("profile.changePassword")||"Change Password"}},[t("a-form",{staticClass:"password-form",attrs:{form:e.passwordForm,layout:"vertical"}},[t("a-alert",{staticStyle:{"margin-bottom":"24px"},attrs:{message:e.$t("profile.passwordHintNew")||"For security, email verification is required to change password. Password must be at least 8 characters with uppercase, lowercase, and number.",type:"info",showIcon:""}}),t("a-form-item",{attrs:{label:e.$t("profile.verificationCode")||"Verification Code"}},[t("a-row",{attrs:{gutter:12}},[t("a-col",{attrs:{span:16}},[t("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["code",{rules:[{required:!0,message:e.$t("profile.codeRequired")||"Please enter verification code"}]}],expression:"['code', {\n rules: [{ required: true, message: $t('profile.codeRequired') || 'Please enter verification code' }]\n }]"}],attrs:{placeholder:e.$t("profile.codePlaceholder")||"Enter verification code"}},[t("a-icon",{attrs:{slot:"prefix",type:"safety-certificate"},slot:"prefix"})],1)],1),t("a-col",{attrs:{span:8}},[t("a-button",{attrs:{block:"",loading:e.sendingPwdCode,disabled:e.sendingPwdCode||e.pwdCodeCountdown>0||!e.profile.email},on:{click:e.handleSendPwdCode}},[e._v(" "+e._s(e.pwdCodeCountdown>0?"".concat(e.pwdCodeCountdown,"s"):e.$t("profile.sendCode")||"Send Code")+" ")])],1)],1),e.profile.email?t("div",{staticClass:"email-hint"},[e._v(" "+e._s(e.$t("profile.codeWillSendTo")||"Code will be sent to")+": "+e._s(e.profile.email)+" ")]):t("div",{staticClass:"email-hint email-warning"},[e._v(" "+e._s(e.$t("profile.noEmailWarning")||"Please set your email first in Basic Info tab")+" ")])],1),t("a-form-item",{attrs:{label:e.$t("profile.newPassword")||"New Password"}},[t("a-input-password",{directives:[{name:"decorator",rawName:"v-decorator",value:["new_password",{rules:[{required:!0,message:e.$t("profile.newPasswordRequired")||"Please enter new password"},{validator:e.validateNewPassword}]}],expression:"['new_password', {\n rules: [\n { required: true, message: $t('profile.newPasswordRequired') || 'Please enter new password' },\n { validator: validateNewPassword }\n ]\n }]"}],attrs:{placeholder:e.$t("profile.newPasswordPlaceholder")||"Enter new password"}},[t("a-icon",{attrs:{slot:"prefix",type:"lock"},slot:"prefix"})],1)],1),t("a-form-item",{attrs:{label:e.$t("profile.confirmPassword")||"Confirm Password"}},[t("a-input-password",{directives:[{name:"decorator",rawName:"v-decorator",value:["confirm_password",{rules:[{required:!0,message:e.$t("profile.confirmPasswordRequired")||"Please confirm password"},{validator:e.validateConfirmPassword}]}],expression:"['confirm_password', {\n rules: [\n { required: true, message: $t('profile.confirmPasswordRequired') || 'Please confirm password' },\n { validator: validateConfirmPassword }\n ]\n }]"}],attrs:{placeholder:e.$t("profile.confirmPasswordPlaceholder")||"Confirm new password"}},[t("a-icon",{attrs:{slot:"prefix",type:"lock"},slot:"prefix"})],1)],1),t("a-form-item",[t("a-button",{attrs:{type:"primary",loading:e.changingPassword,disabled:!e.profile.email},on:{click:e.handleChangePassword}},[t("a-icon",{attrs:{type:"key"}}),e._v(" "+e._s(e.$t("profile.changePassword")||"Change Password")+" ")],1)],1)],1)],1),t("a-tab-pane",{key:"credits",attrs:{tab:e.$t("profile.creditsLog")||"消费记录"}},[t("a-table",{attrs:{columns:e.creditsLogColumns,dataSource:e.creditsLog,loading:e.creditsLogLoading,pagination:e.creditsLogPagination,rowKey:function(e){return e.id},size:"small"},on:{change:e.handleCreditsLogChange},scopedSlots:e._u([{key:"action",fn:function(a){return[t("a-tag",{attrs:{color:e.getActionColor(a)}},[e._v(" "+e._s(e.getActionLabel(a))+" ")])]}},{key:"amount",fn:function(a){return[t("span",{class:a>=0?"amount-positive":"amount-negative"},[e._v(" "+e._s(a>=0?"+":"")+e._s(a)+" ")])]}},{key:"created_at",fn:function(t){return[e._v(" "+e._s(e.formatCreditsLogTime(t))+" ")]}}])})],1),t("a-tab-pane",{key:"notifications",attrs:{tab:e.$t("profile.notifications.title")||"通知设置"}},[t("div",{staticClass:"notification-settings-form"},[t("a-alert",{staticStyle:{"margin-bottom":"24px"},attrs:{message:e.$t("profile.notifications.hint")||"配置您的默认通知方式,在创建资产监控和预警时将自动使用这些设置",type:"info",showIcon:""}}),t("a-form",{staticStyle:{"max-width":"600px"},attrs:{form:e.notificationForm,layout:"vertical"}},[t("a-form-item",{attrs:{label:e.$t("profile.notifications.defaultChannels")||"默认通知渠道"}},[t("a-checkbox-group",{directives:[{name:"decorator",rawName:"v-decorator",value:["default_channels",{initialValue:e.notificationSettings.default_channels||["browser"]}],expression:"['default_channels', { initialValue: notificationSettings.default_channels || ['browser'] }]"}]},[t("a-row",{attrs:{gutter:16}},[t("a-col",{attrs:{span:8}},[t("a-checkbox",{attrs:{value:"browser"}},[t("a-icon",{attrs:{type:"bell"}}),e._v(" "+e._s(e.$t("profile.notifications.browser")||"站内通知")+" ")],1)],1),t("a-col",{attrs:{span:8}},[t("a-checkbox",{attrs:{value:"telegram"}},[t("a-icon",{attrs:{type:"send"}}),e._v(" Telegram ")],1)],1),t("a-col",{attrs:{span:8}},[t("a-checkbox",{attrs:{value:"email"}},[t("a-icon",{attrs:{type:"mail"}}),e._v(" "+e._s(e.$t("profile.notifications.email")||"邮件")+" ")],1)],1)],1),t("a-row",{staticStyle:{"margin-top":"8px"},attrs:{gutter:16}},[t("a-col",{attrs:{span:8}},[t("a-checkbox",{attrs:{value:"phone"}},[t("a-icon",{attrs:{type:"phone"}}),e._v(" "+e._s(e.$t("profile.notifications.phone")||"短信")+" ")],1)],1),t("a-col",{attrs:{span:8}},[t("a-checkbox",{attrs:{value:"discord"}},[t("a-icon",{attrs:{type:"message"}}),e._v(" Discord ")],1)],1),t("a-col",{attrs:{span:8}},[t("a-checkbox",{attrs:{value:"webhook"}},[t("a-icon",{attrs:{type:"api"}}),e._v(" Webhook ")],1)],1)],1)],1)],1),t("a-form-item",{attrs:{label:e.$t("profile.notifications.telegramBotToken")||"Telegram Bot Token"}},[t("a-input-password",{directives:[{name:"decorator",rawName:"v-decorator",value:["telegram_bot_token",{initialValue:e.notificationSettings.telegram_bot_token}],expression:"['telegram_bot_token', { initialValue: notificationSettings.telegram_bot_token }]"}],attrs:{placeholder:e.$t("profile.notifications.telegramBotTokenPlaceholder")||"请输入您的 Telegram Bot Token"}},[t("a-icon",{attrs:{slot:"prefix",type:"robot"},slot:"prefix"})],1),t("div",{staticClass:"field-hint"},[t("a-icon",{attrs:{type:"info-circle"}}),t("span",[e._v(" "+e._s(e.$t("profile.notifications.telegramBotTokenHint")||"通过 @BotFather 创建机器人获取 Token")+" "),t("a",{attrs:{href:"https://t.me/BotFather",target:"_blank",rel:"noopener noreferrer"}},[e._v("@BotFather")])])],1)],1),t("a-form-item",{attrs:{label:e.$t("profile.notifications.telegramChatId")||"Telegram Chat ID"}},[t("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["telegram_chat_id",{initialValue:e.notificationSettings.telegram_chat_id}],expression:"['telegram_chat_id', { initialValue: notificationSettings.telegram_chat_id }]"}],attrs:{placeholder:e.$t("profile.notifications.telegramPlaceholder")||"请输入您的 Telegram Chat ID(如 123456789)"}},[t("a-icon",{attrs:{slot:"prefix",type:"message"},slot:"prefix"})],1),t("div",{staticClass:"field-hint"},[t("a-icon",{attrs:{type:"info-circle"}}),t("span",[e._v(e._s(e.$t("profile.notifications.telegramHint")||"发送 /start 给 @userinfobot 可获取您的 Chat ID"))])],1)],1),t("a-form-item",{attrs:{label:e.$t("profile.notifications.notifyEmail")||"通知邮箱"}},[t("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["email",{initialValue:e.notificationSettings.email||e.profile.email}],expression:"['email', { initialValue: notificationSettings.email || profile.email }]"}],attrs:{placeholder:e.$t("profile.notifications.emailPlaceholder")||"接收通知的邮箱地址"}},[t("a-icon",{attrs:{slot:"prefix",type:"mail"},slot:"prefix"})],1),t("div",{staticClass:"field-hint"},[t("a-icon",{attrs:{type:"info-circle"}}),t("span",[e._v(e._s(e.$t("profile.notifications.emailHint")||"默认使用账户邮箱,可设置其他邮箱接收通知"))])],1)],1),t("a-form-item",{attrs:{label:e.$t("profile.notifications.phone")||"手机号(短信通知)"}},[t("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["phone",{initialValue:e.notificationSettings.phone}],expression:"['phone', { initialValue: notificationSettings.phone }]"}],attrs:{placeholder:e.$t("profile.notifications.phonePlaceholder")||"请输入手机号(如 +8613800138000)"}},[t("a-icon",{attrs:{slot:"prefix",type:"phone"},slot:"prefix"})],1),t("div",{staticClass:"field-hint"},[t("a-icon",{attrs:{type:"info-circle"}}),t("span",[e._v(e._s(e.$t("profile.notifications.phoneHint")||"需要管理员配置 Twilio 服务后才能使用短信通知"))])],1)],1),t("a-form-item",{attrs:{label:e.$t("profile.notifications.discordWebhook")||"Discord Webhook"}},[t("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["discord_webhook",{initialValue:e.notificationSettings.discord_webhook}],expression:"['discord_webhook', { initialValue: notificationSettings.discord_webhook }]"}],attrs:{placeholder:e.$t("profile.notifications.discordPlaceholder")||"https://discord.com/api/webhooks/..."}},[t("a-icon",{attrs:{slot:"prefix",type:"message"},slot:"prefix"})],1),t("div",{staticClass:"field-hint"},[t("a-icon",{attrs:{type:"info-circle"}}),t("span",[e._v(e._s(e.$t("profile.notifications.discordHint")||"在 Discord 服务器设置中创建 Webhook"))])],1)],1),t("a-form-item",{attrs:{label:e.$t("profile.notifications.webhookUrl")||"Webhook URL"}},[t("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["webhook_url",{initialValue:e.notificationSettings.webhook_url}],expression:"['webhook_url', { initialValue: notificationSettings.webhook_url }]"}],attrs:{placeholder:e.$t("profile.notifications.webhookPlaceholder")||"https://your-server.com/webhook"}},[t("a-icon",{attrs:{slot:"prefix",type:"api"},slot:"prefix"})],1),t("div",{staticClass:"field-hint"},[t("a-icon",{attrs:{type:"info-circle"}}),t("span",[e._v(e._s(e.$t("profile.notifications.webhookHint")||"自定义 Webhook 地址,将以 POST JSON 方式推送通知"))])],1)],1),t("a-form-item",{attrs:{label:e.$t("profile.notifications.webhookToken")||"Webhook Token(可选)"}},[t("a-input-password",{directives:[{name:"decorator",rawName:"v-decorator",value:["webhook_token",{initialValue:e.notificationSettings.webhook_token}],expression:"['webhook_token', { initialValue: notificationSettings.webhook_token }]"}],attrs:{placeholder:e.$t("profile.notifications.webhookTokenPlaceholder")||"用于验证请求的 Bearer Token"}},[t("a-icon",{attrs:{slot:"prefix",type:"key"},slot:"prefix"})],1),t("div",{staticClass:"field-hint"},[t("a-icon",{attrs:{type:"info-circle"}}),t("span",[e._v(e._s(e.$t("profile.notifications.webhookTokenHint")||"将作为 Authorization: Bearer Token 发送到 Webhook"))])],1)],1),t("a-form-item",[t("a-button",{attrs:{type:"primary",loading:e.savingNotifications},on:{click:e.handleSaveNotifications}},[t("a-icon",{attrs:{type:"save"}}),e._v(" "+e._s(e.$t("common.save")||"保存")+" ")],1),t("a-button",{staticStyle:{"margin-left":"12px"},attrs:{loading:e.testingNotification},on:{click:e.handleTestNotification}},[t("a-icon",{attrs:{type:"experiment"}}),e._v(" "+e._s(e.$t("profile.notifications.testBtn")||"发送测试通知")+" ")],1)],1)],1)],1)]),t("a-tab-pane",{key:"exchange",attrs:{tab:e.$t("profile.exchange.title")||"交易所配置"}},[t("div",{staticClass:"exchange-config-section"},[t("a-alert",{staticStyle:{"margin-bottom":"16px"},attrs:{message:e.$t("profile.exchange.hint"),type:"info",showIcon:""}}),t("div",{staticStyle:{"margin-bottom":"16px","text-align":"right"}},[t("a-button",{attrs:{type:"primary",icon:"plus"},on:{click:e.openAddExchangeModal}},[e._v(" "+e._s(e.$t("profile.exchange.addAccount"))+" ")])],1),t("a-table",{attrs:{columns:e.exchangeColumns,dataSource:e.exchangeCredentials,loading:e.exchangeLoading,rowKey:function(e){return e.id},locale:{emptyText:e.$t("profile.exchange.noAccounts")||"暂无交易所账户,请点击上方按钮添加"},size:"small"},scopedSlots:e._u([{key:"exchange_id",fn:function(a){return[t("span",{staticStyle:{"text-transform":"capitalize","font-weight":"500"}},[e._v(e._s(e.getExchangeDisplayName(a)))])]}},{key:"api_key_hint",fn:function(a,r){return[t("span",{staticClass:"credential-hint"},[e._v(e._s(a||r.name||"-"))])]}},{key:"created_at",fn:function(t){return[e._v(" "+e._s(e.formatTime(t))+" ")]}},{key:"action",fn:function(a,r){return[t("a-popconfirm",{attrs:{title:e.$t("profile.exchange.deleteConfirm"),okText:e.$t("common.confirm"),cancelText:e.$t("common.cancel")},on:{confirm:function(t){return e.handleDeleteCredential(r.id)}}},[t("a-button",{attrs:{type:"danger",size:"small",ghost:"",icon:"delete"}},[e._v(" "+e._s(e.$t("common.delete"))+" ")])],1)]}}])})],1)]),t("a-tab-pane",{key:"referrals",attrs:{tab:e.$t("profile.referral.listTab")||"邀请列表"}},[t("a-table",{attrs:{columns:e.referralColumns,dataSource:e.referralData.list||[],loading:e.referralLoading,pagination:e.referralPagination,rowKey:function(e){return e.id},locale:{emptyText:e.$t("profile.referral.noReferrals")||"暂无邀请记录"},size:"small"},on:{change:e.handleReferralChange},scopedSlots:e._u([{key:"user",fn:function(a,r){return[t("div",{staticClass:"referral-user-cell"},[t("a-avatar",{attrs:{size:32,src:r.avatar||"/avatar2.jpg"}}),t("div",{staticClass:"user-info"},[t("span",{staticClass:"nickname"},[e._v(e._s(r.nickname||r.username))]),t("span",{staticClass:"username"},[e._v("@"+e._s(r.username))])])],1)]}},{key:"created_at",fn:function(t){return[e._v(" "+e._s(e.formatTime(t))+" ")]}}])})],1)],1)],1)],1)],1),t("a-modal",{attrs:{title:e.$t("profile.exchange.addTitle"),visible:e.showAddExchangeModal,"wrap-class-name":e.exchangeModalWrapClass,confirmLoading:e.savingExchange,okText:e.$t("common.save"),cancelText:e.$t("common.cancel"),maskClosable:!1,width:"520px"},on:{ok:e.handleSaveExchange,cancel:function(t){e.showAddExchangeModal=!1}}},[t("a-form",{staticClass:"exchange-account-form",attrs:{form:e.exchangeForm,layout:"vertical"}},[t("a-form-item",{attrs:{label:e.$t("profile.exchange.selectExchange")}},[t("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["exchange_id",{rules:[{required:!0,message:e.$t("profile.exchange.selectExchange")}]}],expression:"['exchange_id', { rules: [{ required: true, message: $t('profile.exchange.selectExchange') }] }]"}],attrs:{placeholder:e.$t("profile.exchange.selectExchange"),"dropdown-class-name":e.isDarkTheme?"profile-exchange-select-dropdown-dark":"","get-popup-container":e.getExchangeSelectPopupContainer},on:{change:e.handleExchangeTypeChange}},[t("a-select-opt-group",{attrs:{label:e.$t("profile.exchange.typeCrypto")}},e._l(e.cryptoExchangeList,function(a){return t("a-select-option",{key:a.id,attrs:{value:a.id}},[e._v(" "+e._s(a.name)+" ")])}),1),t("a-select-opt-group",{attrs:{label:e.$t("profile.exchange.typeIBKR")}},[t("a-select-option",{attrs:{value:"ibkr"}},[e._v("Interactive Brokers (IBKR)")])],1),t("a-select-opt-group",{attrs:{label:e.$t("profile.exchange.typeMT5")}},[t("a-select-option",{attrs:{value:"mt5"}},[e._v("MetaTrader 5")])],1)],1)],1),t("a-form-item",{attrs:{label:e.$t("profile.exchange.accountName")}},[t("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["name"],expression:"['name']"}],attrs:{placeholder:e.$t("profile.exchange.accountNamePlaceholder")}})],1),"crypto"===e.addExchangeType?t("a-form-item",{attrs:{label:e.$t("profile.exchange.whitelistIpLabel")}},[t("div",{staticClass:"egress-ip-block"},[e.egressIpLoading?t("a-spin",{attrs:{size:"small"}}):[t("div",{staticClass:"egress-ip-line"},[t("span",{staticClass:"egress-ip-kind"},[e._v(e._s(e.$t("profile.exchange.whitelistIpv4")))]),t("code",{staticClass:"egress-ip-value"},[e._v(e._s(e.egressServerIpv4||"—"))]),t("a-button",{staticClass:"egress-ip-action",attrs:{type:"link",size:"small",disabled:!e.egressServerIpv4},on:{click:function(t){return e.copyEgressIp("v4")}}},[e._v(" "+e._s(e.$t("profile.exchange.whitelistIpCopy"))+" ")])],1),t("div",{staticClass:"egress-ip-line"},[t("span",{staticClass:"egress-ip-kind"},[e._v(e._s(e.$t("profile.exchange.whitelistIpv6")))]),t("code",{staticClass:"egress-ip-value"},[e._v(e._s(e.egressServerIpv6||"—"))]),t("a-button",{staticClass:"egress-ip-action",attrs:{type:"link",size:"small",disabled:!e.egressServerIpv6},on:{click:function(t){return e.copyEgressIp("v6")}}},[e._v(" "+e._s(e.$t("profile.exchange.whitelistIpCopy"))+" ")])],1),t("div",{staticClass:"egress-ip-row egress-ip-refresh-row"},[t("a-button",{staticClass:"egress-ip-action",attrs:{type:"link",size:"small"},on:{click:e.fetchEgressIp}},[e._v(" "+e._s(e.$t("profile.exchange.whitelistIpRefresh"))+" ")])],1)]],2),t("div",{staticClass:"field-hint egress-ip-hint"},[e._v(e._s(e.$t("profile.exchange.whitelistIpHint")))])]):e._e(),"crypto"===e.addExchangeType?[t("a-form-item",{attrs:{label:e.$t("profile.exchange.apiKey")}},[t("a-input-password",{directives:[{name:"decorator",rawName:"v-decorator",value:["api_key",{rules:[{required:!0,message:"API Key is required"}]}],expression:"['api_key', { rules: [{ required: true, message: 'API Key is required' }] }]"}],attrs:{placeholder:"API Key",autocomplete:"new-password"}})],1),t("a-form-item",{attrs:{label:e.$t("profile.exchange.secretKey")}},[t("a-input-password",{directives:[{name:"decorator",rawName:"v-decorator",value:["secret_key",{rules:[{required:!0,message:"Secret Key is required"}]}],expression:"['secret_key', { rules: [{ required: true, message: 'Secret Key is required' }] }]"}],attrs:{placeholder:"Secret Key",autocomplete:"new-password"}})],1),e.addExchangeNeedsPassphrase?t("a-form-item",{attrs:{label:e.$t("profile.exchange.passphrase")}},[t("a-input-password",{directives:[{name:"decorator",rawName:"v-decorator",value:["passphrase"],expression:"['passphrase']"}],attrs:{placeholder:"Passphrase",autocomplete:"new-password"}})],1):e._e(),e.addExchangeShowDemo?t("a-form-item",[t("a-checkbox",{directives:[{name:"decorator",rawName:"v-decorator",value:["enable_demo_trading",{valuePropName:"checked",initialValue:!1}],expression:"['enable_demo_trading', { valuePropName: 'checked', initialValue: false }]"}],staticClass:"exchange-demo-checkbox"},[t("span",{staticClass:"exchange-demo-checkbox-label"},[e._v(e._s(e.$t("profile.exchange.demoTrading")))])]),t("div",{staticClass:"field-hint exchange-demo-hint"},[e._v(e._s(e.$t("profile.exchange.demoTradingHint")))])],1):e._e()]:e._e(),"ibkr"===e.addExchangeType?[t("a-alert",{staticStyle:{"margin-bottom":"16px"},attrs:{type:"warning",showIcon:"",message:e.$t("profile.exchange.localDeploymentRequired"),description:e.$t("profile.exchange.localDeploymentHint")}}),t("a-form-item",{attrs:{label:e.$t("profile.exchange.ibkrHost")}},[t("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["ibkr_host",{initialValue:"127.0.0.1"}],expression:"['ibkr_host', { initialValue: '127.0.0.1' }]"}],attrs:{placeholder:"127.0.0.1"}})],1),t("a-form-item",{attrs:{label:e.$t("profile.exchange.ibkrPort")}},[t("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["ibkr_port",{initialValue:7497}],expression:"['ibkr_port', { initialValue: 7497 }]"}],staticStyle:{width:"100%"},attrs:{min:1,max:65535}}),t("div",{staticClass:"field-hint"},[t("a-icon",{attrs:{type:"info-circle"}}),t("span",[e._v(e._s(e.$t("profile.exchange.ibkrPortHint")))])],1)],1),t("a-form-item",{attrs:{label:e.$t("profile.exchange.ibkrClientId")}},[t("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["ibkr_client_id",{initialValue:1}],expression:"['ibkr_client_id', { initialValue: 1 }]"}],staticStyle:{width:"100%"},attrs:{min:1,max:999}})],1),t("a-form-item",{attrs:{label:e.$t("profile.exchange.ibkrAccount")}},[t("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["ibkr_account"],expression:"['ibkr_account']"}],attrs:{placeholder:"DU123456"}})],1)]:e._e(),"mt5"===e.addExchangeType?[t("a-alert",{staticStyle:{"margin-bottom":"16px"},attrs:{type:"warning",showIcon:"",message:e.$t("profile.exchange.localDeploymentRequired"),description:e.$t("profile.exchange.localDeploymentHint")}}),t("a-form-item",{attrs:{label:e.$t("profile.exchange.mt5Server")}},[t("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["mt5_server",{rules:[{required:!0,message:"Server is required"}]}],expression:"['mt5_server', { rules: [{ required: true, message: 'Server is required' }] }]"}],attrs:{placeholder:"MetaQuotes-Demo"}})],1),t("a-form-item",{attrs:{label:e.$t("profile.exchange.mt5Login")}},[t("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["mt5_login",{rules:[{required:!0,message:"Login is required"}]}],expression:"['mt5_login', { rules: [{ required: true, message: 'Login is required' }] }]"}],staticStyle:{width:"100%"},attrs:{min:1,placeholder:"12345678"}})],1),t("a-form-item",{attrs:{label:e.$t("profile.exchange.mt5Password")}},[t("a-input-password",{directives:[{name:"decorator",rawName:"v-decorator",value:["mt5_password",{rules:[{required:!0,message:"Password is required"}]}],expression:"['mt5_password', { rules: [{ required: true, message: 'Password is required' }] }]"}],attrs:{placeholder:"Password",autocomplete:"new-password"}})],1),t("a-form-item",{attrs:{label:e.$t("profile.exchange.mt5TerminalPath")}},[t("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["mt5_terminal_path"],expression:"['mt5_terminal_path']"}],attrs:{placeholder:"C:\\Program Files\\MetaTrader 5\\terminal64.exe"}}),t("div",{staticClass:"field-hint"},[t("a-icon",{attrs:{type:"info-circle"}}),t("span",[e._v(e._s(e.$t("profile.exchange.mt5TerminalPathHint")))])],1)],1)]:e._e(),e.addExchangeType?t("a-form-item",[t("a-button",{attrs:{block:"",loading:e.testingExchange},on:{click:e.handleTestExchangeConnection}},[t("a-icon",{attrs:{type:"api"}}),e._v(" "+e._s(e.$t("profile.exchange.testConnection"))+" ")],1),e.exchangeTestResult?t("div",{staticClass:"test-result-msg",class:e.exchangeTestResult.success?"success":"error"},[t("a-icon",{attrs:{type:e.exchangeTestResult.success?"check-circle":"close-circle"}}),e._v(" "+e._s(e.exchangeTestResult.message)+" ")],1):e._e()],1):e._e()],2)],1)],1)},i=[],n=a(76338),s=a(81127),o=a(56252),l=(a(28706),a(2008),a(74423),a(48598),a(62062),a(2892),a(79432),a(26099),a(27495),a(99449),a(21699),a(47764),a(25440),a(42762),a(62953),a(84841)),c=a(53003),d=a(42430),u=a(36911),p=a(55434),f={name:"Profile",mixins:[p.t],data:function(){return{loading:!1,saving:!1,changingPassword:!1,sendingPwdCode:!1,pwdCodeCountdown:0,pwdCodeTimer:null,activeTab:"basic",profile:{id:null,username:"",nickname:"",email:"",avatar:"",role:"user",last_login_at:null},creditsLog:[],creditsLogLoading:!1,creditsLogPagination:{current:1,pageSize:10,total:0},referralData:{list:[],total:0,referral_code:"",referral_bonus:0,register_bonus:0},referralLoading:!1,referralPagination:{current:1,pageSize:10,total:0},billing:{credits:0,is_vip:!1,vip_expires_at:null,billing_enabled:!1,feature_costs:{}},rechargeTelegramUrl:"https://t.me/your_support_bot",notificationSettings:{default_channels:["browser"],telegram_bot_token:"",telegram_chat_id:"",email:"",phone:"",discord_webhook:"",webhook_url:"",webhook_token:""},savingNotifications:!1,testingNotification:!1,exchangeCredentials:[],exchangeLoading:!1,showAddExchangeModal:!1,savingExchange:!1,testingExchange:!1,exchangeTestResult:null,addExchangeType:"",selectedExchangeId:"",egressServerIpv4:"",egressServerIpv6:"",egressIpLoading:!1,cryptoExchangeList:[{id:"binance",name:"Binance"},{id:"okx",name:"OKX"},{id:"bitget",name:"Bitget"},{id:"bybit",name:"Bybit"},{id:"coinbaseexchange",name:"Coinbase"},{id:"kraken",name:"Kraken"},{id:"kucoin",name:"KuCoin"},{id:"gate",name:"Gate.io"},{id:"bitfinex",name:"Bitfinex"}]}},computed:{isDarkTheme:function(){return"dark"===this.navTheme||"realdark"===this.navTheme},exchangeModalWrapClass:function(){var e="profile-exchange-modal";return this.isDarkTheme?"".concat(e," ").concat(e,"--dark"):e},isVip:function(){if(!this.billing.vip_expires_at)return!1;var e=new Date(this.billing.vip_expires_at);return e>new Date},creditsLogColumns:function(){return[{title:this.$t("profile.creditsLog.time")||"时间",dataIndex:"created_at",width:160,scopedSlots:{customRender:"created_at"}},{title:this.$t("profile.creditsLog.action")||"类型",dataIndex:"action",width:100,scopedSlots:{customRender:"action"}},{title:this.$t("profile.creditsLog.amount")||"变动",dataIndex:"amount",width:100,scopedSlots:{customRender:"amount"}},{title:this.$t("profile.creditsLog.balance")||"余额",dataIndex:"balance_after",width:100},{title:this.$t("profile.creditsLog.remark")||"备注",dataIndex:"remark",ellipsis:!0}]},referralColumns:function(){return[{title:this.$t("profile.referral.user")||"用户",dataIndex:"username",scopedSlots:{customRender:"user"}},{title:this.$t("profile.referral.registerTime")||"注册时间",dataIndex:"created_at",width:180,scopedSlots:{customRender:"created_at"}}]},referralLink:function(){var e=window.location.origin+window.location.pathname,t=this.referralData.referral_code||this.profile.id;return"".concat(e,"#/user/login?ref=").concat(t)},exchangeColumns:function(){return[{title:this.$t("profile.exchange.colExchange")||"Exchange",dataIndex:"exchange_id",width:140,scopedSlots:{customRender:"exchange_id"}},{title:this.$t("profile.exchange.colName")||"Name",dataIndex:"name",width:140,customRender:function(e){return e||"-"}},{title:this.$t("profile.exchange.colHint")||"Connection Info",dataIndex:"api_key_hint",scopedSlots:{customRender:"api_key_hint"}},{title:this.$t("profile.exchange.colCreatedAt")||"Created At",dataIndex:"created_at",width:180,scopedSlots:{customRender:"created_at"}},{title:this.$t("profile.exchange.colActions")||"Actions",width:120,scopedSlots:{customRender:"action"}}]},addExchangeNeedsPassphrase:function(){var e=["okx","bitget","kucoin"];return e.includes(this.selectedExchangeId)},addExchangeShowDemo:function(){return"crypto"===this.addExchangeType&&!!this.selectedExchangeId}},watch:{showAddExchangeModal:function(e){e&&this.fetchEgressIp()},activeTab:function(e){"credits"===e&&0===this.creditsLog.length&&this.loadCreditsLog(),"referrals"!==e||this.referralData.list&&0!==this.referralData.list.length||this.loadReferrals(),"notifications"!==e||this.notificationSettings.telegram_chat_id||this.notificationSettings.discord_webhook||this.loadNotificationSettings(),"exchange"===e&&0===this.exchangeCredentials.length&&this.loadExchangeCredentials()}},beforeCreate:function(){this.profileForm=this.$form.createForm(this,{name:"profile"}),this.passwordForm=this.$form.createForm(this,{name:"password"}),this.notificationForm=this.$form.createForm(this,{name:"notification"}),this.exchangeForm=this.$form.createForm(this,{name:"exchange"})},mounted:function(){this.loadProfile(),this.loadReferrals()},beforeDestroy:function(){this.pwdCodeTimer&&clearInterval(this.pwdCodeTimer)},methods:{loadProfile:function(){var e=this;return(0,o.A)((0,s.A)().m(function t(){var a;return(0,s.A)().w(function(t){while(1)switch(t.p=t.n){case 0:return e.loading=!0,t.p=1,t.n=2,(0,l.E$)();case 2:a=t.v,1===a.code?(e.profile=a.data,a.data.billing&&(e.billing=a.data.billing),a.data.notification_settings&&(e.notificationSettings={default_channels:a.data.notification_settings.default_channels||["browser"],telegram_bot_token:a.data.notification_settings.telegram_bot_token||"",telegram_chat_id:a.data.notification_settings.telegram_chat_id||"",email:a.data.notification_settings.email||a.data.email||"",phone:a.data.notification_settings.phone||"",discord_webhook:a.data.notification_settings.discord_webhook||"",webhook_url:a.data.notification_settings.webhook_url||"",webhook_token:a.data.notification_settings.webhook_token||""}),e.$nextTick(function(){e.profileForm.setFieldsValue({nickname:e.profile.nickname,email:e.profile.email})})):e.$message.error(a.msg||"Failed to load profile"),t.n=4;break;case 3:t.p=3,t.v,e.$message.error("Failed to load profile");case 4:return t.p=4,e.loading=!1,t.f(4);case 5:return t.a(2)}},t,null,[[1,3,4,5]])}))()},loadRechargeUrl:function(){var e=this;return(0,o.A)((0,s.A)().m(function t(){var a;return(0,s.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if("admin"!==e.profile.role){t.n=4;break}return t.p=1,t.n=2,(0,c.YT)();case 2:a=t.v,1===a.code&&a.data&&a.data.billing&&(e.rechargeTelegramUrl=a.data.billing.RECHARGE_TELEGRAM_URL||e.rechargeTelegramUrl),t.n=4;break;case 3:t.p=3,t.v;case 4:return t.a(2)}},t,null,[[1,3]])}))()},handleRecharge:function(){this.$router.push("/billing")},formatCredits:function(e){return e||0===e?Number(e).toLocaleString("en-US",{minimumFractionDigits:0,maximumFractionDigits:2}):"0"},formatDate:function(e){if(!e)return"";var t=new Date(e);return t.toLocaleDateString()},handleSaveProfile:function(){var e=this;this.profileForm.validateFields(function(){var t=(0,o.A)((0,s.A)().m(function t(a,r){var i;return(0,s.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(!a){t.n=1;break}return t.a(2);case 1:return e.saving=!0,t.p=2,t.n=3,(0,l.r7)(r);case 3:i=t.v,1===i.code?(e.$message.success(i.msg||"Profile updated successfully"),e.loadProfile()):e.$message.error(i.msg||"Update failed"),t.n=5;break;case 4:t.p=4,t.v,e.$message.error("Update failed");case 5:return t.p=5,e.saving=!1,t.f(5);case 6:return t.a(2)}},t,null,[[2,4,5,6]])}));return function(e,a){return t.apply(this,arguments)}}())},validateConfirmPassword:function(e,t,a){var r=this.passwordForm.getFieldValue("new_password");t&&t!==r?a(this.$t("profile.passwordMismatch")||"Passwords do not match"):a()},handleSendPwdCode:function(){var e=this;return(0,o.A)((0,s.A)().m(function t(){var r,i,n,o,l;return(0,s.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(e.profile.email){t.n=1;break}return e.$message.error(e.$t("profile.noEmailWarning")||"Please set your email first"),t.a(2);case 1:return e.sendingPwdCode=!0,t.p=2,t.n=3,a.e(824).then(a.bind(a,95824));case 3:return r=t.v,i=r.sendVerificationCode,t.n=4,i({email:e.profile.email,type:"change_password"});case 4:n=t.v,1===n.code?(e.$message.success(e.$t("profile.codeSent")||"Verification code sent"),e.startPwdCodeCountdown()):e.$message.error(n.msg||"Failed to send code"),t.n=6;break;case 5:t.p=5,l=t.v,e.$message.error((null===(o=l.response)||void 0===o||null===(o=o.data)||void 0===o?void 0:o.msg)||"Failed to send code");case 6:return t.p=6,e.sendingPwdCode=!1,t.f(6);case 7:return t.a(2)}},t,null,[[2,5,6,7]])}))()},startPwdCodeCountdown:function(){var e=this;this.pwdCodeCountdown=60,this.pwdCodeTimer=setInterval(function(){e.pwdCodeCountdown--,e.pwdCodeCountdown<=0&&(clearInterval(e.pwdCodeTimer),e.pwdCodeTimer=null)},1e3)},validateNewPassword:function(e,t,a){t?t.length<8?a(new Error(this.$t("user.register.pwdMinLength")||"At least 8 characters")):/[A-Z]/.test(t)?/[a-z]/.test(t)?/[0-9]/.test(t)?a():a(new Error(this.$t("user.register.pwdNumber")||"At least one number")):a(new Error(this.$t("user.register.pwdLowercase")||"At least one lowercase letter")):a(new Error(this.$t("user.register.pwdUppercase")||"At least one uppercase letter")):a()},handleChangePassword:function(){var e=this;this.passwordForm.validateFields(function(){var t=(0,o.A)((0,s.A)().m(function t(r,i){var n,o,l,c,d;return(0,s.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(!r){t.n=1;break}return t.a(2);case 1:return e.changingPassword=!0,t.p=2,t.n=3,a.e(824).then(a.bind(a,95824));case 3:return n=t.v,o=n.changePassword,t.n=4,o({code:i.code,new_password:i.new_password});case 4:l=t.v,1===l.code?(e.$message.success(l.msg||"Password changed successfully"),e.passwordForm.resetFields()):e.$message.error(l.msg||"Change password failed"),t.n=6;break;case 5:t.p=5,d=t.v,e.$message.error((null===(c=d.response)||void 0===c||null===(c=c.data)||void 0===c?void 0:c.msg)||"Change password failed");case 6:return t.p=6,e.changingPassword=!1,t.f(6);case 7:return t.a(2)}},t,null,[[2,5,6,7]])}));return function(e,a){return t.apply(this,arguments)}}())},getRoleColor:function(e){var t={admin:"red",manager:"orange",user:"blue",viewer:"default"};return t[e]||"default"},getRoleLabel:function(e){var t={admin:this.$t("userManage.roleAdmin")||"Admin",manager:this.$t("userManage.roleManager")||"Manager",user:this.$t("userManage.roleUser")||"User",viewer:this.$t("userManage.roleViewer")||"Viewer"};return t[e]||e},formatTime:function(e){if(!e)return"";var t=new Date("number"===typeof e?1e3*e:e);return t.toLocaleString()},formatCreditsLogTime:function(e){if(!e)return"";if("string"===typeof e){var t=e.trim();if(t.endsWith("Z")&&t.includes("T"))return t.replace("T"," ").replace("Z","")}return this.formatTime(e)},loadCreditsLog:function(){var e=this;return(0,o.A)((0,s.A)().m(function t(){var a;return(0,s.A)().w(function(t){while(1)switch(t.p=t.n){case 0:return e.creditsLogLoading=!0,t.p=1,t.n=2,(0,l.v9)({page:e.creditsLogPagination.current,page_size:e.creditsLogPagination.pageSize});case 2:a=t.v,1===a.code&&(e.creditsLog=a.data.items||[],e.creditsLogPagination.total=a.data.total||0),t.n=4;break;case 3:t.p=3,t.v,e.$message.error("Failed to load credits log");case 4:return t.p=4,e.creditsLogLoading=!1,t.f(4);case 5:return t.a(2)}},t,null,[[1,3,4,5]])}))()},handleCreditsLogChange:function(e){this.creditsLogPagination.current=e.current,this.loadCreditsLog()},loadReferrals:function(){var e=this;return(0,o.A)((0,s.A)().m(function t(){var a;return(0,s.A)().w(function(t){while(1)switch(t.p=t.n){case 0:return e.referralLoading=!0,t.p=1,t.n=2,(0,l.rx)({page:e.referralPagination.current,page_size:e.referralPagination.pageSize});case 2:a=t.v,1===a.code&&(e.referralData={list:a.data.list||[],total:a.data.total||0,referral_code:a.data.referral_code||"",referral_bonus:a.data.referral_bonus||0,register_bonus:a.data.register_bonus||0},e.referralPagination.total=a.data.total||0),t.n=4;break;case 3:t.p=3,t.v,e.$message.error("Failed to load referral data");case 4:return t.p=4,e.referralLoading=!1,t.f(4);case 5:return t.a(2)}},t,null,[[1,3,4,5]])}))()},handleReferralChange:function(e){this.referralPagination.current=e.current,this.loadReferrals()},copyReferralLink:function(){var e=this,t=this.referralLink;navigator.clipboard?navigator.clipboard.writeText(t).then(function(){e.$message.success(e.$t("profile.referral.linkCopied")||"邀请链接已复制")}).catch(function(){e.fallbackCopy(t)}):this.fallbackCopy(t)},fallbackCopy:function(e){var t=document.createElement("textarea");t.value=e,document.body.appendChild(t),t.select();try{document.execCommand("copy"),this.$message.success(this.$t("profile.referral.linkCopied")||"邀请链接已复制")}catch(a){this.$message.error("Copy failed")}document.body.removeChild(t)},getActionColor:function(e){var t={consume:"red",recharge:"green",admin_adjust:"blue",refund:"orange",vip_grant:"gold",vip_revoke:"default",register_bonus:"cyan",referral_bonus:"purple",indicator_purchase:"volcano",indicator_sale:"lime"};return t[e]||"default"},getActionLabel:function(e){var t={consume:this.$t("profile.creditsLog.actionConsume")||"消费",recharge:this.$t("profile.creditsLog.actionRecharge")||"充值",admin_adjust:this.$t("profile.creditsLog.actionAdjust")||"调整",refund:this.$t("profile.creditsLog.actionRefund")||"退款",vip_grant:this.$t("profile.creditsLog.actionVipGrant")||"VIP授予",vip_revoke:this.$t("profile.creditsLog.actionVipRevoke")||"VIP取消",register_bonus:this.$t("profile.creditsLog.actionRegisterBonus")||"注册奖励",referral_bonus:this.$t("profile.creditsLog.actionReferralBonus")||"邀请奖励",indicator_purchase:this.$t("profile.creditsLog.actionIndicatorPurchase")||"购买指标",indicator_sale:this.$t("profile.creditsLog.actionIndicatorSale")||"出售指标"};return t[e]||e},loadExchangeCredentials:function(){var e=this;return(0,o.A)((0,s.A)().m(function t(){var a;return(0,s.A)().w(function(t){while(1)switch(t.p=t.n){case 0:return e.exchangeLoading=!0,t.p=1,t.n=2,(0,d.IA)();case 2:a=t.v,1===a.code&&a.data&&(e.exchangeCredentials=a.data.items||[]),t.n=4;break;case 3:t.p=3,t.v,e.$message.error("Failed to load exchange accounts");case 4:return t.p=4,e.exchangeLoading=!1,t.f(4);case 5:return t.a(2)}},t,null,[[1,3,4,5]])}))()},getExchangeSelectPopupContainer:function(){return document.body},openAddExchangeModal:function(){this.showAddExchangeModal=!0},fetchEgressIp:function(){var e=this;return(0,o.A)((0,s.A)().m(function t(){var a,r,i,n;return(0,s.A)().w(function(t){while(1)switch(t.p=t.n){case 0:return e.egressIpLoading=!0,e.egressServerIpv4="",e.egressServerIpv6="",t.p=1,t.n=2,(0,d.N6)();case 2:a=t.v,1===a.code&&a.data&&(r=null!=a.data.ipv4?String(a.data.ipv4).trim():"",i=null!=a.data.ipv6?String(a.data.ipv6).trim():"",e.egressServerIpv4=r,e.egressServerIpv6=i,r||i||!a.data.ip||(n=String(a.data.ip).trim(),n.includes(":")?e.egressServerIpv6=n:e.egressServerIpv4=n)),t.n=4;break;case 3:t.p=3,t.v,e.egressServerIpv4="",e.egressServerIpv6="";case 4:return t.p=4,e.egressIpLoading=!1,t.f(4);case 5:return t.a(2)}},t,null,[[1,3,4,5]])}))()},copyEgressIp:function(e){var t=this,a="v6"===e?this.egressServerIpv6:this.egressServerIpv4;if(a){var r=function(){return t.$message.success(t.$t("profile.exchange.whitelistIpCopied"))};navigator.clipboard&&navigator.clipboard.writeText?navigator.clipboard.writeText(a).then(r).catch(function(){return t._fallbackCopyText(a,r)}):this._fallbackCopyText(a,r)}},_fallbackCopyText:function(e,t){try{var a=document.createElement("textarea");a.value=e,a.style.position="fixed",a.style.left="-9999px",document.body.appendChild(a),a.select(),document.execCommand("copy"),document.body.removeChild(a),t&&t()}catch(r){this.$message.error(this.$t("profile.exchange.whitelistIpCopyFail"))}},handleExchangeTypeChange:function(e){this.selectedExchangeId=e,this.exchangeTestResult=null;var t=this.cryptoExchangeList.map(function(e){return e.id});t.includes(e)?this.addExchangeType="crypto":this.addExchangeType="ibkr"===e?"ibkr":"mt5"===e?"mt5":""},getExchangeDisplayName:function(e){var t={binance:"Binance",okx:"OKX",bitget:"Bitget",bybit:"Bybit",coinbaseexchange:"Coinbase",kraken:"Kraken",kucoin:"KuCoin",gate:"Gate.io",bitfinex:"Bitfinex",ibkr:"IBKR",mt5:"MetaTrader 5"};return t[e]||e},handleSaveExchange:function(){var e=this;this.exchangeForm.validateFields(function(){var t=(0,o.A)((0,s.A)().m(function t(a,r){var i,o,l;return(0,s.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(!a){t.n=1;break}return t.a(2);case 1:return e.savingExchange=!0,t.p=2,i=(0,n.A)({},r),t.n=3,(0,d.PR)(i);case 3:o=t.v,1===o.code?(e.$message.success(e.$t("profile.exchange.saveSuccess")),e.showAddExchangeModal=!1,e.exchangeForm.resetFields(),e.addExchangeType="",e.selectedExchangeId="",e.exchangeTestResult=null,e.loadExchangeCredentials()):e.$message.error(o.msg||e.$t("profile.exchange.saveFailed")),t.n=5;break;case 4:t.p=4,l=t.v,e.$message.error(l.message||e.$t("profile.exchange.saveFailed"));case 5:return t.p=5,e.savingExchange=!1,t.f(5);case 6:return t.a(2)}},t,null,[[2,4,5,6]])}));return function(e,a){return t.apply(this,arguments)}}())},handleDeleteCredential:function(e){var t=this;return(0,o.A)((0,s.A)().m(function a(){var r;return(0,s.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return a.p=0,a.n=1,(0,d.kI)(e);case 1:r=a.v,1===r.code?(t.$message.success(t.$t("profile.exchange.deleteSuccess")),t.loadExchangeCredentials()):t.$message.error(r.msg||"Delete failed"),a.n=3;break;case 2:a.p=2,a.v,t.$message.error("Delete failed");case 3:return a.a(2)}},a,null,[[0,2]])}))()},handleTestExchangeConnection:function(){var e=this;return(0,o.A)((0,s.A)().m(function t(){var a,r,i,o,l;return(0,s.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(a=e.exchangeForm.getFieldsValue(),r=a.exchange_id,r){t.n=1;break}return t.a(2);case 1:return e.testingExchange=!0,e.exchangeTestResult=null,t.p=2,i=(0,n.A)({},a),t.n=3,(0,u.kv)(i);case 3:o=t.v,1===o.code?e.exchangeTestResult={success:!0,message:e.$t("profile.exchange.testSuccess")}:e.exchangeTestResult={success:!1,message:"".concat(e.$t("profile.exchange.testFailed"),": ").concat(o.msg||"Unknown error")},t.n=5;break;case 4:t.p=4,l=t.v,e.exchangeTestResult={success:!1,message:"".concat(e.$t("profile.exchange.testFailed"),": ").concat(l.message||"Network error")};case 5:return t.p=5,e.testingExchange=!1,t.f(5);case 6:return t.a(2)}},t,null,[[2,4,5,6]])}))()},loadNotificationSettings:function(){var e=this;return(0,o.A)((0,s.A)().m(function t(){var a;return(0,s.A)().w(function(t){while(1)switch(t.p=t.n){case 0:return t.p=0,t.n=1,(0,l.vF)();case 1:a=t.v,1===a.code&&a.data&&(e.notificationSettings={default_channels:a.data.default_channels||["browser"],telegram_bot_token:a.data.telegram_bot_token||"",telegram_chat_id:a.data.telegram_chat_id||"",email:a.data.email||e.profile.email||"",phone:a.data.phone||"",discord_webhook:a.data.discord_webhook||"",webhook_url:a.data.webhook_url||"",webhook_token:a.data.webhook_token||""},e.$nextTick(function(){e.notificationForm.setFieldsValue({default_channels:e.notificationSettings.default_channels,telegram_bot_token:e.notificationSettings.telegram_bot_token,telegram_chat_id:e.notificationSettings.telegram_chat_id,email:e.notificationSettings.email,phone:e.notificationSettings.phone,discord_webhook:e.notificationSettings.discord_webhook,webhook_url:e.notificationSettings.webhook_url,webhook_token:e.notificationSettings.webhook_token})})),t.n=3;break;case 2:t.p=2,t.v;case 3:return t.a(2)}},t,null,[[0,2]])}))()},_mapNotifyTestError:function(e,t){var a=(t||"").trim();if("email"===e){if("missing_SMTP_HOST"===a)return this.$t("profile.notifications.errSmtpHost")||"email:服务器未配置发信 SMTP(管理员在「系统设置 → 邮件」或环境变量 SMTP_HOST/SMTP_USER 等)";if("missing_SMTP_FROM"===a)return this.$t("profile.notifications.errSmtpFrom")||"email:未配置发件人 SMTP_FROM(或 SMTP_USER)";if("missing_email_target"===a)return this.$t("profile.notifications.errEmailTarget")||"email:未填写通知邮箱且账号无邮箱"}return a?"".concat(e,": ").concat(a):""},handleSaveNotifications:function(){var e=this;this.notificationForm.validateFields(function(){var t=(0,o.A)((0,s.A)().m(function t(a,r){var i;return(0,s.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(!a){t.n=1;break}return t.a(2);case 1:return e.savingNotifications=!0,t.p=2,t.n=3,(0,l.Gl)({default_channels:r.default_channels||["browser"],telegram_bot_token:r.telegram_bot_token||"",telegram_chat_id:r.telegram_chat_id||"",email:r.email||"",phone:r.phone||"",discord_webhook:r.discord_webhook||"",webhook_url:r.webhook_url||"",webhook_token:r.webhook_token||""});case 3:i=t.v,1===i.code?(e.$message.success(e.$t("profile.notifications.saveSuccess")||"通知设置保存成功"),e.notificationSettings=i.data||e.notificationSettings):e.$message.error(i.msg||"保存失败"),t.n=5;break;case 4:t.p=4,t.v,e.$message.error("保存失败");case 5:return t.p=5,e.savingNotifications=!1,t.f(5);case 6:return t.a(2)}},t,null,[[2,4,5,6]])}));return function(e,a){return t.apply(this,arguments)}}())},handleTestNotification:function(){var e=this;return(0,o.A)((0,s.A)().m(function t(){var a,r,i,n,o,c,d;return(0,s.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(a=e.notificationForm.getFieldsValue(),r=a.default_channels||[],0!==r.length){t.n=1;break}return e.$message.warning(e.$t("profile.notifications.selectChannel")||"请至少选择一个通知渠道"),t.a(2);case 1:if(!r.includes("telegram")){t.n=3;break}if(a.telegram_bot_token){t.n=2;break}return e.$message.warning(e.$t("profile.notifications.fillTelegramToken")||"请填写 Telegram Bot Token"),t.a(2);case 2:if(a.telegram_chat_id){t.n=3;break}return e.$message.warning(e.$t("profile.notifications.fillTelegram")||"请填写 Telegram Chat ID"),t.a(2);case 3:if(!r.includes("email")||a.email){t.n=4;break}return e.$message.warning(e.$t("profile.notifications.fillEmail")||"请填写通知邮箱"),t.a(2);case 4:if(!r.includes("phone")||a.phone){t.n=5;break}return e.$message.warning(e.$t("profile.notifications.fillPhone")||"请填写手机号"),t.a(2);case 5:if(!r.includes("discord")||a.discord_webhook){t.n=6;break}return e.$message.warning(e.$t("profile.notifications.fillDiscord")||"请填写 Discord Webhook URL"),t.a(2);case 6:if(!r.includes("webhook")||a.webhook_url){t.n=7;break}return e.$message.warning(e.$t("profile.notifications.fillWebhook")||"请填写 Webhook URL"),t.a(2);case 7:return e.testingNotification=!0,t.p=8,t.n=9,(0,l.Gl)({default_channels:r,telegram_bot_token:a.telegram_bot_token||"",telegram_chat_id:a.telegram_chat_id||"",email:a.email||"",phone:a.phone||"",discord_webhook:a.discord_webhook||"",webhook_url:a.webhook_url||"",webhook_token:a.webhook_token||""});case 9:if(i=t.v,1===i.code){t.n=10;break}return e.$message.error(i.msg||"保存设置失败"),t.a(2);case 10:return t.n=11,(0,l.hl)();case 11:if(n=t.v,1===n.code){t.n=12;break}return e.$message.error(n.msg||e.$t("profile.notifications.testFailed")||"测试通知发送失败"),t.a(2);case 12:o=n.data&&n.data.results||{},c=Object.keys(o).filter(function(e){return!o[e].ok}),0===c.length?e.$message.success(e.$t("profile.notifications.testSent")||"测试通知已发送,请检查各渠道"):(d=c.map(function(t){var a=o[t]&&o[t].error||"",r=e._mapNotifyTestError(t,a);return r||(a?"".concat(t,": ").concat(a):t)}).join(";"),e.$message.warning((e.$t("profile.notifications.testPartial")||"部分渠道发送失败")+" — ".concat(d),8)),t.n=14;break;case 13:t.p=13,t.v,e.$message.error(e.$t("profile.notifications.testFailed")||"发送测试通知失败");case 14:return t.p=14,e.testingNotification=!1,t.f(14);case 15:return t.a(2)}},t,null,[[8,13,14,15]])}))()}}},g=f,m=a(845),h=(0,m.A)(g,r,i,!1,null,"4224bd2a",null),v=h.exports},42430:function(e,t,a){a.d(t,{IA:function(){return s},N6:function(){return c},PR:function(){return o},kI:function(){return l}});var r=a(76338),i=a(75769),n={list:"/api/credentials/list",get:"/api/credentials/get",create:"/api/credentials/create",delete:"/api/credentials/delete",egressIp:"/api/credentials/egress-ip"};function s(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,i.Ay)({url:n.list,method:"get",params:e})}function o(e){return(0,i.Ay)({url:n.create,method:"post",data:e})}function l(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return(0,i.Ay)({url:n.delete,method:"delete",params:(0,r.A)({id:e},t)})}function c(){return(0,i.Ay)({url:n.egressIp,method:"get"})}},53003:function(e,t,a){a.d(t,{DZ:function(){return s},YT:function(){return n},_d:function(){return o},lo:function(){return i}});a(76338);var r=a(75769);function i(){return(0,r.Ay)({url:"/api/settings/schema",method:"get"})}function n(){return(0,r.Ay)({url:"/api/settings/values",method:"get"})}function s(e){return(0,r.Ay)({url:"/api/settings/save",method:"post",data:e})}function o(){return(0,r.Ay)({url:"/api/settings/openrouter-balance",method:"get"})}},84841:function(e,t,a){a.d(t,{DK:function(){return w},E$:function(){return d},Gl:function(){return f},O0:function(){return c},TK:function(){return s},aU:function(){return i},cw:function(){return l},d$:function(){return k},hG:function(){return o},hl:function(){return g},kg:function(){return n},nY:function(){return _},r7:function(){return u},rx:function(){return h},v9:function(){return m},vF:function(){return p},vi:function(){return b},wq:function(){return v}});var r=a(75769);function i(e){return(0,r.Ay)({url:"/api/users/list",method:"get",params:e})}function n(e){return(0,r.Ay)({url:"/api/users/create",method:"post",data:e})}function s(e,t){return(0,r.Ay)({url:"/api/users/update",method:"put",params:{id:e},data:t})}function o(e){return(0,r.Ay)({url:"/api/users/delete",method:"delete",params:{id:e}})}function l(e){return(0,r.Ay)({url:"/api/users/reset-password",method:"post",data:e})}function c(){return(0,r.Ay)({url:"/api/users/roles",method:"get"})}function d(){return(0,r.Ay)({url:"/api/users/profile",method:"get"})}function u(e){return(0,r.Ay)({url:"/api/users/profile/update",method:"put",data:e})}function p(){return(0,r.Ay)({url:"/api/users/notification-settings",method:"get"})}function f(e){return(0,r.Ay)({url:"/api/users/notification-settings",method:"put",data:e})}function g(){return(0,r.Ay)({url:"/api/users/notification-settings/test",method:"post",data:{}})}function m(e){return(0,r.Ay)({url:"/api/users/my-credits-log",method:"get",params:e})}function h(e){return(0,r.Ay)({url:"/api/users/my-referrals",method:"get",params:e})}function v(e){return(0,r.Ay)({url:"/api/users/set-credits",method:"post",data:e})}function _(e){return(0,r.Ay)({url:"/api/users/set-vip",method:"post",data:e})}function w(e){return(0,r.Ay)({url:"/api/users/system-strategies",method:"get",params:e})}function b(e){return(0,r.Ay)({url:"/api/users/admin-orders",method:"get",params:e})}function k(e){return(0,r.Ay)({url:"/api/users/admin-ai-stats",method:"get",params:e})}}}]); \ No newline at end of file diff --git a/frontend/dist/js/200-legacy.5be65bce.js b/frontend/dist/js/200-legacy.5be65bce.js new file mode 100644 index 0000000..be657de --- /dev/null +++ b/frontend/dist/js/200-legacy.5be65bce.js @@ -0,0 +1 @@ +"use strict";(self["webpackChunkvue_antd_pro"]=self["webpackChunkvue_antd_pro"]||[]).push([[200],{35200:function(t,a,s){s.r(a),s.d(a,{default:function(){return D}});s(28706),s(74423),s(34782),s(62010),s(9868),s(21699);var e=function(){var t=this,a=t._self._c;return a("div",{staticClass:"ai-analysis-container",class:{"theme-dark":t.isDarkTheme,embedded:t.embedded},style:{"--primary-color":t.primaryColor}},[a("div",{staticClass:"main-content-full"},[a("div",{staticClass:"top-index-bar"},[t.loadingSentiment?[t._m(0),t._m(1),t._m(2)]:[a("div",{staticClass:"indicator-box fear-greed",class:t.getFearGreedClass(t.marketData.fearGreed)},[a("span",{staticClass:"ind-label"},[t._v(t._s(t.$t("globalMarket.fearGreedShort")))]),a("span",{staticClass:"ind-value"},[t._v(t._s(t.marketData.fearGreed||"--"))])]),a("div",{staticClass:"indicator-box vix",class:t.getVixLevel(t.marketData.vix)},[a("span",{staticClass:"ind-label"},[t._v("VIX")]),a("span",{staticClass:"ind-value"},[t._v(t._s(t.marketData.vix||"--"))])]),a("div",{staticClass:"indicator-box dxy"},[a("span",{staticClass:"ind-label"},[t._v("DXY")]),a("span",{staticClass:"ind-value"},[t._v(t._s(t.marketData.dxy||"--"))])])],a("div",{staticClass:"indices-marquee"},[t.loadingIndices?[a("div",{staticClass:"indices-loading"},[a("a-icon",{attrs:{type:"loading"}}),t._v(" "+t._s(t.$t("common.loading")||"加载中...")+" ")],1)]:t.marketData.indices.length>0?[a("div",{staticClass:"marquee-track"},[t._l(t.marketData.indices,function(s){return a("div",{key:"a-"+s.symbol,staticClass:"index-item"},[a("span",{staticClass:"idx-flag"},[t._v(t._s(s.flag))]),a("span",{staticClass:"idx-symbol"},[t._v(t._s(s.symbol))]),a("span",{staticClass:"idx-price"},[t._v(t._s(t.formatPrice(s.price)))]),a("span",{staticClass:"idx-change",class:s.change>=0?"up":"down"},[a("a-icon",{attrs:{type:s.change>=0?"caret-up":"caret-down"}}),t._v(" "+t._s(Math.abs(s.change).toFixed(2))+"% ")],1)])}),t._l(t.marketData.indices,function(s){return a("div",{key:"b-"+s.symbol,staticClass:"index-item"},[a("span",{staticClass:"idx-flag"},[t._v(t._s(s.flag))]),a("span",{staticClass:"idx-symbol"},[t._v(t._s(s.symbol))]),a("span",{staticClass:"idx-price"},[t._v(t._s(t.formatPrice(s.price)))]),a("span",{staticClass:"idx-change",class:s.change>=0?"up":"down"},[a("a-icon",{attrs:{type:s.change>=0?"caret-up":"caret-down"}}),t._v(" "+t._s(Math.abs(s.change).toFixed(2))+"% ")],1)])})],2)]:[a("div",{staticClass:"indices-empty"},[t._v("--")])]],2),a("a-button",{staticClass:"refresh-btn",attrs:{type:"link",size:"small",loading:t.loadingMarket},on:{click:t.loadMarketData}},[a("a-icon",{attrs:{type:"sync",spin:t.loadingMarket}})],1)],2),a("div",{staticClass:"main-body"},[a("div",{staticClass:"left-panel"},[a("div",{staticClass:"heatmap-box"},[a("div",{staticClass:"box-header"},[a("a-radio-group",{attrs:{size:"small","button-style":"solid"},model:{value:t.heatmapType,callback:function(a){t.heatmapType=a},expression:"heatmapType"}},[a("a-radio-button",{attrs:{value:"crypto"}},[t._v(t._s(t.$t("globalMarket.cryptoHeatmap")))]),a("a-radio-button",{attrs:{value:"commodities"}},[t._v(t._s(t.$t("globalMarket.commoditiesHeatmap")))]),a("a-radio-button",{attrs:{value:"sectors"}},[t._v(t._s(t.$t("globalMarket.sectorHeatmap")))]),a("a-radio-button",{attrs:{value:"forex"}},[t._v(t._s(t.$t("globalMarket.forexHeatmap")))])],1)],1),a("div",{staticClass:"heatmap-grid"},[t.loadingHeatmap?t._l(12,function(t){return a("div",{key:"skel-"+t,staticClass:"heat-cell skeleton-cell"},[a("span",{staticClass:"skeleton-text short"}),a("span",{staticClass:"skeleton-text"})])}):t.currentHeatmap.length>0?t._l(t.currentHeatmap.slice(0,12),function(s,e){return a("div",{key:e,staticClass:"heat-cell",style:t.getHeatmapStyle(s.value)},[a("span",{staticClass:"heat-name"},[t._v(t._s(t.getHeatmapName(s)))]),s.price?a("span",{staticClass:"heat-price"},[t._v(t._s(t.formatHeatmapPrice(s.price)))]):t._e(),a("span",{staticClass:"heat-val"},[t._v(t._s(s.value>=0?"+":"")+t._s(t.formatNum(s.value))+"%")])])}):[a("div",{staticClass:"heatmap-empty"},[t._v(t._s(t.$t("common.noData")||"暂无数据"))])]],2)]),a("div",{staticClass:"calendar-box"},[a("div",{staticClass:"box-header"},[a("span",{staticClass:"box-title"},[a("a-icon",{attrs:{type:"calendar"}}),t._v(" "+t._s(t.$t("globalMarket.calendar")))],1)]),a("div",{staticClass:"calendar-list"},[t.loadingCalendar?t._l(5,function(t){return a("div",{key:"cal-skel-"+t,staticClass:"cal-item skeleton-item"},[a("span",{staticClass:"skeleton-text short"}),a("span",{staticClass:"skeleton-text short"}),a("span",{staticClass:"skeleton-text"})])}):t.marketData.calendar.length>0?t._l(t.marketData.calendar.slice(0,10),function(s){return a("div",{key:s.id,staticClass:"cal-item",class:s.importance},[a("span",{staticClass:"cal-date"},[t._v(t._s(t.formatCalendarDate(s.date)))]),a("span",{staticClass:"cal-time"},[t._v(t._s(s.time||"--:--"))]),a("span",{staticClass:"cal-flag"},[t._v(t._s(t.getCountryFlag(s.country)))]),a("span",{staticClass:"cal-name"},[t._v(t._s(t.isZhLocale?s.name:s.name_en))]),a("span",{staticClass:"cal-impact",class:t.getImpactClass(s)},["bullish"===t.getImpactClass(s)?a("a-icon",{attrs:{type:"arrow-up"}}):"bearish"===t.getImpactClass(s)?a("a-icon",{attrs:{type:"arrow-down"}}):a("a-icon",{attrs:{type:"minus"}}),t._v(" "+t._s(s.actual||s.forecast||"--")+" ")],1)])}):[a("div",{staticClass:"cal-empty"},[t._v(t._s(t.$t("globalMarket.noEvents")))])]],2)])]),a("div",{staticClass:"right-panel"},[a("div",{staticClass:"analysis-toolbar"},[a("a-select",{staticClass:"symbol-selector",attrs:{placeholder:t.$t("dashboard.analysis.empty.selectSymbol"),size:"large","show-search":"","allow-clear":"","filter-option":t.filterSymbolOption},on:{change:t.handleSymbolChange},model:{value:t.selectedSymbol,callback:function(a){t.selectedSymbol=a},expression:"selectedSymbol"}},[t._l(t.watchlist||[],function(s){return a("a-select-option",{key:"".concat(s.market,"-").concat(s.symbol),attrs:{value:"".concat(s.market,":").concat(s.symbol)}},[a("span",{staticClass:"symbol-option"},[a("a-tag",{attrs:{color:t.getMarketColor(s.market),size:"small"}},[t._v(t._s(t.getMarketName(s.market)))]),a("strong",{staticStyle:{"margin-left":"6px"}},[t._v(t._s(s.symbol))]),s.name?a("span",{staticClass:"symbol-name"},[t._v(t._s(s.name))]):t._e()],1)])}),a("a-select-option",{key:"add-stock-option",staticClass:"add-stock-option",attrs:{value:"__add_stock_option__"}},[a("div",{staticStyle:{"text-align":"center",padding:"4px 0",color:"#1890ff"}},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"plus"}}),t._v(t._s(t.$t("dashboard.analysis.watchlist.add"))+" ")],1)])],2),a("a-button",{staticClass:"analyze-button",attrs:{type:"primary",size:"large",icon:"thunderbolt",loading:t.analyzing,disabled:!t.selectedSymbol||t.analyzing},on:{click:t.startFastAnalysis}},[t._v(" "+t._s(t.$t("fastAnalysis.startAnalysis"))+" ")]),a("a-button",{staticClass:"history-button",attrs:{size:"large",icon:"history"},on:{click:function(a){t.showHistoryModal=!0,t.loadHistoryList()}}},[t._v(" "+t._s(t.$t("fastAnalysis.history"))+" ")])],1),a("div",{staticClass:"analysis-main"},[t.analysisResult||t.analyzing||t.analysisError?t._e():a("div",{staticClass:"analysis-placeholder"},[a("div",{staticClass:"placeholder-hero"},[t._m(3),a("div",{staticClass:"hero-body"},[a("div",{staticClass:"hero-badge"},[t._v("AI-POWERED")]),a("h2",{staticClass:"hero-title"},[t._v(t._s(t.$t("aiAssetAnalysis.placeholder.title")))]),a("p",{staticClass:"hero-subtitle"},[t._v(t._s(t.$t("aiAssetAnalysis.placeholder.subtitle")))]),a("div",{staticClass:"hero-stats"},[a("div",{staticClass:"hstat"},[a("div",{staticClass:"hstat-icon"},[a("a-icon",{attrs:{type:"line-chart"}})],1),a("div",{staticClass:"hstat-body"},[a("span",{staticClass:"hstat-val"},[t._v(t._s(t.$t("aiAssetAnalysis.placeholder.feature1")))]),a("span",{staticClass:"hstat-label"},[t._v(t._s(t.$t("aiAssetAnalysis.placeholder.feature1Desc")))])])]),a("div",{staticClass:"hstat"},[a("div",{staticClass:"hstat-icon"},[a("a-icon",{attrs:{type:"dashboard"}})],1),a("div",{staticClass:"hstat-body"},[a("span",{staticClass:"hstat-val"},[t._v(t._s(t.$t("aiAssetAnalysis.placeholder.feature2")))]),a("span",{staticClass:"hstat-label"},[t._v(t._s(t.$t("aiAssetAnalysis.placeholder.feature2Desc")))])])]),a("div",{staticClass:"hstat"},[a("div",{staticClass:"hstat-icon"},[a("a-icon",{attrs:{type:"apartment"}})],1),a("div",{staticClass:"hstat-body"},[a("span",{staticClass:"hstat-val"},[t._v(t._s(t.$t("aiAssetAnalysis.placeholder.feature3")))]),a("span",{staticClass:"hstat-label"},[t._v(t._s(t.$t("aiAssetAnalysis.placeholder.feature3Desc")))])])])]),a("div",{staticClass:"hero-cta"},[a("a-button",{attrs:{type:"primary",size:"large",icon:"plus"},on:{click:function(a){t.showAddStockModal=!0}}},[t._v(" "+t._s(t.$t("dashboard.analysis.watchlist.add"))+" ")]),a("a-button",{attrs:{size:"large",icon:"thunderbolt",disabled:!t.selectedSymbol},on:{click:t.startFastAnalysis}},[t._v(" "+t._s(t.$t("fastAnalysis.startAnalysis"))+" ")])],1),a("p",{staticClass:"hero-hint"},[t._v(t._s(t.$t("aiAssetAnalysis.placeholder.quickStart")))])])])]),t.analysisResult||t.analyzing||t.analysisError?a("FastAnalysisReport",{attrs:{result:t.analysisResult,loading:t.analyzing,error:t.analysisError,"error-tone":t.analysisErrorTone},on:{retry:t.startFastAnalysis}}):t._e()],1)]),a("div",{staticClass:"watchlist-panel"},[a("div",{staticClass:"panel-header"},[a("span",{staticClass:"panel-title"},[a("a-icon",{attrs:{type:"star",theme:"filled"}}),t._v(" "+t._s(t.$t("dashboard.analysis.watchlist.title")))],1),a("span",{staticClass:"panel-header-actions"},[a("a-tooltip",{attrs:{title:t.$t("aiAssetAnalysis.tasks.manage")}},[a("a-badge",{attrs:{count:t.monitors.length,offset:[-2,2],"number-style":{fontSize:"9px",minWidth:"14px",height:"14px",lineHeight:"14px",padding:"0 3px"}}},[a("a-icon",{staticClass:"panel-header-icon",attrs:{type:"unordered-list"},on:{click:function(a){t.showTaskDrawer=!0}}})],1)],1),a("a-tooltip",{attrs:{title:t.$t("aiAssetAnalysis.batch.schedule")}},[a("a-icon",{staticClass:"panel-header-icon",attrs:{type:"schedule"},on:{click:t.toggleBatchMode}})],1),a("a-icon",{staticClass:"panel-header-icon",attrs:{type:"plus"},on:{click:function(a){t.showAddStockModal=!0}}})],1)]),t.watchlist&&t.watchlist.length>0?a("div",{staticClass:"panel-summary"},[a("div",{staticClass:"summary-chip"},[a("span",{staticClass:"sc-num"},[t._v(t._s(t.watchlist.length))]),a("span",{staticClass:"sc-label"},[t._v(t._s(t.$t("aiAssetAnalysis.watchlist.totalAssets")))])]),t.watchlistPositionCount>0?a("div",{staticClass:"summary-chip"},[a("span",{staticClass:"sc-num"},[t._v(t._s(t.watchlistPositionCount))]),a("span",{staticClass:"sc-label"},[t._v(t._s(t.$t("aiAssetAnalysis.watchlist.positionCount")))])]):t._e(),t.watchlistTaskCount>0?a("div",{staticClass:"summary-chip"},[a("span",{staticClass:"sc-num"},[t._v(t._s(t.watchlistTaskCount))]),a("span",{staticClass:"sc-label"},[t._v(t._s(t.$t("aiAssetAnalysis.watchlist.taskCount")))])]):t._e(),0!==t.watchlistTotalPnl?a("div",{staticClass:"summary-chip pnl"},[a("span",{staticClass:"sc-num",class:t.watchlistTotalPnl>=0?"up":"down"},[t._v(t._s(t.watchlistTotalPnl>=0?"+":"")+t._s(t.formatNum(t.watchlistTotalPnl)))]),a("span",{staticClass:"sc-label"},[t._v("P&L")])]):t._e()]):t._e(),t.batchMode?a("div",{staticClass:"batch-bar"},[a("a-checkbox",{staticClass:"batch-all-cb",attrs:{checked:t.batchSelectedAll,indeterminate:t.batchIndeterminate},on:{change:t.onBatchSelectAll}},[t._v(" "+t._s(t.$t("aiAssetAnalysis.batch.selectAll"))+" ")]),a("a-button",{attrs:{type:"primary",size:"small",disabled:0===t.batchSelectedKeys.length},on:{click:t.openBatchScheduleModal}},[t._v(" "+t._s(t.$t("aiAssetAnalysis.batch.schedule"))),t.batchSelectedKeys.length>0?[t._v(" "+t._s(t.batchSelectedKeys.length))]:t._e()],2),a("a-button",{attrs:{size:"small"},on:{click:t.toggleBatchMode}},[t._v(t._s(t.$t("common.cancel")))])],1):t._e(),a("div",{staticClass:"watchlist-list"},[t._l(t.watchlist||[],function(s){var e,i,n;return a("div",{key:"wl-".concat(s.market,"-").concat(s.symbol),staticClass:"wl-card",class:{active:t.selectedSymbol==="".concat(s.market,":").concat(s.symbol)},on:{click:function(a){return t.selectWatchlistItem(s)}}},[t.batchMode?a("a-checkbox",{staticClass:"wl-card-cb",attrs:{checked:t.batchSelectedKeys.includes("".concat(s.market,":").concat(s.symbol))},on:{change:function(a){return t.onBatchItemToggle(s,a)}},nativeOn:{click:function(t){t.stopPropagation()}}}):t._e(),a("div",{staticClass:"wl-card-body",class:{"with-cb":t.batchMode}},[a("div",{staticClass:"wl-row-main"},[a("span",{staticClass:"wl-symbol"},[t._v(t._s(s.symbol))]),a("span",{staticClass:"wl-market"},[t._v(t._s(t.getMarketName(s.market)))]),a("span",{staticClass:"wl-spacer"}),t.watchlistPrices["".concat(s.market,":").concat(s.symbol)]?[a("span",{staticClass:"wl-price"},[t._v(t._s(t.formatPrice(t.watchlistPrices["".concat(s.market,":").concat(s.symbol)].price)))]),a("span",{staticClass:"wl-change",class:((null===(e=t.watchlistPrices["".concat(s.market,":").concat(s.symbol)])||void 0===e?void 0:e.change)||0)>=0?"up":"down"},[t._v(" "+t._s(((null===(i=t.watchlistPrices["".concat(s.market,":").concat(s.symbol)])||void 0===i?void 0:i.change)||0)>=0?"+":"")+t._s(t.formatNum(null===(n=t.watchlistPrices["".concat(s.market,":").concat(s.symbol)])||void 0===n?void 0:n.change))+"% ")])]:t._e()],2),t.positionSummaryMap["".concat(s.market,":").concat(s.symbol)]?a("div",{staticClass:"wl-row-pnl"},[a("span",{staticClass:"wl-pnl-qty"},[t._v(t._s(t.formatNum(t.positionSummaryMap["".concat(s.market,":").concat(s.symbol)].quantity,4))+" @ "+t._s(t.formatPrice(t.positionSummaryMap["".concat(s.market,":").concat(s.symbol)].avgEntry||0)))]),a("span",{staticClass:"wl-pnl-val",class:t.positionSummaryMap["".concat(s.market,":").concat(s.symbol)].pnl>=0?"up":"down"},[t._v(" "+t._s(t.positionSummaryMap["".concat(s.market,":").concat(s.symbol)].pnl>=0?"+":"")+t._s(t.formatNum(t.positionSummaryMap["".concat(s.market,":").concat(s.symbol)].pnl||0))+" ("+t._s(t.positionSummaryMap["".concat(s.market,":").concat(s.symbol)].pnlPercent>=0?"+":"")+t._s(t.formatNum(t.positionSummaryMap["".concat(s.market,":").concat(s.symbol)].pnlPercent||0))+"%) ")])]):t._e(),t.getMonitorMeta(s)?a("div",{staticClass:"wl-row-task"},[a("span",{staticClass:"wl-task-badge",class:t.getMonitorMeta(s).activeCount>0?"active":"paused",on:{click:function(a){return a.stopPropagation(),t.toggleStockMonitor(s)}}},[a("a-icon",{attrs:{type:t.getMonitorMeta(s).activeCount>0?"sync":"pause-circle",spin:t.getMonitorMeta(s).activeCount>0}}),t._v(" "+t._s(t.getMonitorMeta(s).activeCount>0?t.$t("aiAssetAnalysis.monitor.running"):t.$t("aiAssetAnalysis.monitor.paused"))+" ")],1),t.getMonitorMeta(s).nextRunAtText?a("span",{staticClass:"wl-task-next"},[t._v(t._s(t.getMonitorMeta(s).nextRunAtText))]):t._e()]):t._e()]),a("div",{staticClass:"wl-card-hover-actions"},[a("a-tooltip",{attrs:{title:t.$t("aiAssetAnalysis.position.quickAdd")}},[a("span",{staticClass:"wl-hover-btn",on:{click:function(a){return a.stopPropagation(),t.openPositionModal(s)}}},[a("a-icon",{attrs:{type:"wallet"}})],1)]),a("a-tooltip",{attrs:{title:t.$t("aiAssetAnalysis.monitor.quickTask")}},[a("span",{staticClass:"wl-hover-btn",on:{click:function(a){return a.stopPropagation(),t.openMonitorModal(s)}}},[a("a-icon",{attrs:{type:"clock-circle"}})],1)]),a("span",{staticClass:"wl-hover-btn danger",on:{click:function(a){return a.stopPropagation(),t.removeFromWatchlist(s)}}},[a("a-icon",{attrs:{type:"delete"}})],1)],1)],1)}),t.watchlist&&0!==t.watchlist.length?t._e():a("div",{staticClass:"watchlist-empty"},[a("div",{staticClass:"we-icon"},[a("a-icon",{attrs:{type:"star"}})],1),a("p",[t._v(t._s(t.$t("dashboard.analysis.empty.noWatchlist")))]),a("a-button",{attrs:{type:"primary",size:"small",icon:"plus"},on:{click:function(a){t.showAddStockModal=!0}}},[t._v(" "+t._s(t.$t("dashboard.analysis.watchlist.add"))+" ")])],1)],2)])])]),a("a-modal",{attrs:{title:t.$t("dashboard.analysis.modal.addStock.title"),visible:t.showAddStockModal,confirmLoading:t.addingStock,width:"600px",wrapClassName:t.isDarkTheme?"qd-dark-modal":"",okText:t.$t("dashboard.analysis.modal.addStock.confirm"),cancelText:t.$t("dashboard.analysis.modal.addStock.cancel")},on:{ok:t.handleAddStock,cancel:t.handleCloseAddStockModal}},[a("div",{staticClass:"add-stock-modal-content"},[a("a-tabs",{staticClass:"market-tabs",on:{change:t.handleMarketTabChange},model:{value:t.selectedMarketTab,callback:function(a){t.selectedMarketTab=a},expression:"selectedMarketTab"}},t._l(t.marketTypes,function(s){return a("a-tab-pane",{key:s.value,attrs:{tab:t.$t(s.i18nKey||"dashboard.analysis.market.".concat(s.value))}})}),1),a("div",{staticClass:"symbol-search-section"},[a("a-input-search",{attrs:{placeholder:t.$t("dashboard.analysis.modal.addStock.searchOrInputPlaceholder"),loading:t.searchingSymbols,size:"large","allow-clear":""},on:{search:t.handleSearchOrInput,change:t.handleSymbolSearchInput},model:{value:t.symbolSearchKeyword,callback:function(a){t.symbolSearchKeyword=a},expression:"symbolSearchKeyword"}},[a("a-button",{attrs:{slot:"enterButton",type:"primary",icon:"search"},slot:"enterButton"},[t._v(" "+t._s(t.$t("dashboard.analysis.modal.addStock.search"))+" ")])],1)],1),t.symbolSearchResults.length>0?a("div",{staticClass:"search-results-section"},[a("div",{staticClass:"section-title"},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"search"}}),t._v(" "+t._s(t.$t("dashboard.analysis.modal.addStock.searchResults"))+" ")],1),a("a-list",{staticClass:"symbol-list",attrs:{"data-source":t.symbolSearchResults,loading:t.searchingSymbols,size:"small"},scopedSlots:t._u([{key:"renderItem",fn:function(s){return a("a-list-item",{staticClass:"symbol-list-item",on:{click:function(a){return t.selectSymbol(s)}}},[a("a-list-item-meta",[a("template",{slot:"title"},[a("div",{staticClass:"symbol-item-content"},[a("span",{staticClass:"symbol-code"},[t._v(t._s(s.symbol))]),a("span",{staticClass:"symbol-name"},[t._v(t._s(s.name))]),s.exchange?a("a-tag",{staticStyle:{"margin-left":"8px"},attrs:{size:"small",color:"blue"}},[t._v(" "+t._s(s.exchange)+" ")]):t._e()],1)])],2)],1)}}],null,!1,1074844145)})],1):t._e(),a("div",{staticClass:"hot-symbols-section"},[a("div",{staticClass:"section-title"},[a("a-icon",{staticStyle:{color:"#ff4d4f","margin-right":"4px"},attrs:{type:"fire"}}),t._v(" "+t._s(t.$t("dashboard.analysis.modal.addStock.hotSymbols"))+" ")],1),a("a-spin",{attrs:{spinning:t.loadingHotSymbols}},[t.hotSymbols.length>0?a("a-list",{staticClass:"symbol-list",attrs:{"data-source":t.hotSymbols,size:"small"},scopedSlots:t._u([{key:"renderItem",fn:function(s){return a("a-list-item",{staticClass:"symbol-list-item",on:{click:function(a){return t.selectSymbol(s)}}},[a("a-list-item-meta",[a("template",{slot:"title"},[a("div",{staticClass:"symbol-item-content"},[a("span",{staticClass:"symbol-code"},[t._v(t._s(s.symbol))]),a("span",{staticClass:"symbol-name"},[t._v(t._s(s.name))]),s.exchange?a("a-tag",{staticStyle:{"margin-left":"8px"},attrs:{size:"small",color:"orange"}},[t._v(" "+t._s(s.exchange)+" ")]):t._e()],1)])],2)],1)}}],null,!1,2177647935)}):a("a-empty",{attrs:{description:t.$t("dashboard.analysis.modal.addStock.noHotSymbols"),image:!1}})],1)],1),t.selectedSymbolForAdd?a("div",{staticClass:"selected-symbol-section"},[a("a-alert",{attrs:{message:t.$t("dashboard.analysis.modal.addStock.selectedSymbol"),type:"info","show-icon":"",closable:""},on:{close:function(a){t.selectedSymbolForAdd=null}}},[a("template",{slot:"description"},[a("div",{staticClass:"selected-symbol-info"},[a("a-tag",{staticStyle:{"margin-right":"8px"},attrs:{color:t.getMarketColor(t.selectedSymbolForAdd.market)}},[t._v(" "+t._s(t.$t("dashboard.analysis.market.".concat(t.selectedSymbolForAdd.market)))+" ")]),a("strong",[t._v(t._s(t.selectedSymbolForAdd.symbol))]),t.selectedSymbolForAdd.name?a("span",{staticStyle:{color:"#999","margin-left":"8px"}},[t._v(t._s(t.selectedSymbolForAdd.name))]):t._e()],1)])],2)],1):t._e()],1)]),a("a-modal",{attrs:{visible:t.showPositionModal,title:"".concat(t.$i18n&&"zh-CN"===t.$i18n.locale?"创建持仓(虚拟仓)":"Create Position (Virtual)"," - ").concat(t.targetStockForOps?t.targetStockForOps.symbol:""),wrapClassName:t.isDarkTheme?"qd-dark-modal":""},on:{ok:t.savePosition,cancel:function(a){t.showPositionModal=!1}}},[a("a-form",{attrs:{layout:"vertical"}},[a("a-form-item",{attrs:{label:t.$t("portfolio.positions.side")||"Direction"}},[a("a-select",{model:{value:t.positionForm.side,callback:function(a){t.$set(t.positionForm,"side",a)},expression:"positionForm.side"}},[a("a-select-option",{attrs:{value:"long"}},[t._v(t._s(t.$t("portfolio.positions.long")||"Long"))]),a("a-select-option",{attrs:{value:"short"}},[t._v(t._s(t.$t("portfolio.positions.short")||"Short"))])],1)],1),a("a-form-item",{attrs:{label:t.$i18n&&"zh-CN"===t.$i18n.locale?"数量":"Quantity"}},[a("a-input-number",{staticStyle:{width:"100%"},attrs:{min:0,step:.01},model:{value:t.positionForm.quantity,callback:function(a){t.$set(t.positionForm,"quantity",a)},expression:"positionForm.quantity"}})],1),a("a-form-item",{attrs:{label:t.$i18n&&"zh-CN"===t.$i18n.locale?"买入单价":"Entry Price"}},[a("a-input-number",{staticStyle:{width:"100%"},attrs:{min:0,step:.01},model:{value:t.positionForm.entryPrice,callback:function(a){t.$set(t.positionForm,"entryPrice",a)},expression:"positionForm.entryPrice"}})],1)],1)],1),a("a-modal",{attrs:{visible:t.showMonitorModal,title:"".concat(t.$t("aiAssetAnalysis.monitor.quickTask")," - ").concat(t.targetStockForOps?t.targetStockForOps.symbol:""),wrapClassName:t.isDarkTheme?"qd-dark-modal":""},on:{ok:t.saveMonitorTask,cancel:function(a){t.showMonitorModal=!1}}},[a("a-form",{attrs:{layout:"vertical"}},[a("a-form-item",{attrs:{label:t.$t("aiAssetAnalysis.batch.intervalLabel")}},[a("a-select",{staticStyle:{width:"100%"},model:{value:t.monitorForm.interval_min,callback:function(a){t.$set(t.monitorForm,"interval_min",a)},expression:"monitorForm.interval_min"}},[a("a-select-option",{attrs:{value:60}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval1h")))]),a("a-select-option",{attrs:{value:240}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval4h")))]),a("a-select-option",{attrs:{value:720}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval12h")))]),a("a-select-option",{attrs:{value:1440}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval24h")))])],1)],1),a("a-form-item",{attrs:{label:t.$t("aiAssetAnalysis.batch.notifyLabel")}},[a("a-checkbox-group",{staticStyle:{width:"100%"},model:{value:t.monitorForm.notify_channels,callback:function(a){t.$set(t.monitorForm,"notify_channels",a)},expression:"monitorForm.notify_channels"}},[a("a-row",{attrs:{gutter:8}},[a("a-col",{attrs:{span:8}},[a("a-checkbox",{attrs:{value:"email"}},[a("a-icon",{attrs:{type:"mail"}}),t._v(" Email")],1)],1),a("a-col",{attrs:{span:8}},[a("a-checkbox",{attrs:{value:"telegram"}},[a("a-icon",{attrs:{type:"send"}}),t._v(" Telegram")],1)],1),a("a-col",{attrs:{span:8}},[a("a-checkbox",{attrs:{value:"webhook"}},[a("a-icon",{attrs:{type:"api"}}),t._v(" Webhook")],1)],1)],1)],1)],1),a("a-alert",{attrs:{message:t.$t("aiAssetAnalysis.monitor.tip"),type:"info","show-icon":""}})],1)],1),a("a-modal",{attrs:{visible:t.showBatchScheduleModal,title:t.$t("aiAssetAnalysis.batch.scheduleTitle"),confirmLoading:t.batchRunning,width:"520px",wrapClassName:t.isDarkTheme?"qd-dark-modal":""},on:{ok:t.saveBatchSchedule,cancel:function(a){t.showBatchScheduleModal=!1}}},[a("div",{staticClass:"batch-modal-summary"},[a("p",[t._v(t._s(t.$t("aiAssetAnalysis.batch.scheduleDesc",{count:t.batchSelectedKeys.length})))]),a("div",{staticClass:"batch-symbols-preview"},t._l(t.batchSelectedKeys,function(s){return a("a-tag",{key:s,staticStyle:{"margin-bottom":"4px"},attrs:{color:"blue"}},[t._v(t._s(s.split(":")[1]))])}),1)]),a("a-form",{attrs:{layout:"vertical"}},[a("a-form-item",{attrs:{label:t.$t("aiAssetAnalysis.batch.intervalLabel")}},[a("a-select",{staticStyle:{width:"100%"},model:{value:t.batchScheduleForm.interval_min,callback:function(a){t.$set(t.batchScheduleForm,"interval_min",a)},expression:"batchScheduleForm.interval_min"}},[a("a-select-option",{attrs:{value:60}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval1h")))]),a("a-select-option",{attrs:{value:240}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval4h")))]),a("a-select-option",{attrs:{value:720}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval12h")))]),a("a-select-option",{attrs:{value:1440}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval24h")))])],1)],1),a("a-form-item",{attrs:{label:t.$t("aiAssetAnalysis.batch.notifyLabel")}},[a("a-checkbox-group",{staticStyle:{width:"100%"},model:{value:t.batchScheduleForm.notify_channels,callback:function(a){t.$set(t.batchScheduleForm,"notify_channels",a)},expression:"batchScheduleForm.notify_channels"}},[a("a-row",{attrs:{gutter:8}},[a("a-col",{attrs:{span:8}},[a("a-checkbox",{attrs:{value:"email"}},[a("a-icon",{attrs:{type:"mail"}}),t._v(" Email")],1)],1),a("a-col",{attrs:{span:8}},[a("a-checkbox",{attrs:{value:"telegram"}},[a("a-icon",{attrs:{type:"send"}}),t._v(" Telegram")],1)],1),a("a-col",{attrs:{span:8}},[a("a-checkbox",{attrs:{value:"webhook"}},[a("a-icon",{attrs:{type:"api"}}),t._v(" Webhook")],1)],1)],1)],1)],1)],1),a("a-alert",{staticStyle:{"margin-top":"8px"},attrs:{message:t.$t("aiAssetAnalysis.batch.scheduleTip"),type:"info","show-icon":""}})],1),a("a-drawer",{attrs:{title:t.$t("aiAssetAnalysis.tasks.manage"),visible:t.showTaskDrawer,width:"420",placement:"right",wrapClassName:t.isDarkTheme?"qd-dark-drawer":""},on:{close:function(a){t.showTaskDrawer=!1}}},[0===t.monitors.length?a("div",{staticClass:"task-drawer-empty"},[a("a-icon",{staticStyle:{"font-size":"40px",color:"#ccc"},attrs:{type:"inbox"}}),a("p",[t._v(t._s(t.$t("aiAssetAnalysis.tasks.empty")))])],1):a("div",{staticClass:"task-drawer-list"},t._l(t.monitors,function(s){return a("div",{key:s.id,staticClass:"task-item"},[a("div",{staticClass:"task-item-header"},[a("span",{staticClass:"task-item-name"},[t._v(t._s(s.name||"AI Task"))]),a("a-tag",{attrs:{color:s.is_active?"green":"default",size:"small"}},[t._v(" "+t._s(s.is_active?t.$t("aiAssetAnalysis.monitor.running"):t.$t("aiAssetAnalysis.monitor.paused"))+" ")])],1),a("div",{staticClass:"task-item-meta"},[s.config&&s.config.run_interval_minutes?a("span",[a("a-icon",{attrs:{type:"clock-circle"}}),t._v(" "+t._s(t.formatIntervalText(s.config.run_interval_minutes))+" ")],1):t._e(),s.next_run_at?a("span",[a("a-icon",{attrs:{type:"calendar"}}),t._v(" "+t._s(t._formatNextRunText(s.next_run_at))+" ")],1):t._e()]),a("div",{staticClass:"task-item-actions"},[a("a-button",{attrs:{size:"small",type:s.is_active?"default":"primary",icon:"poweroff"},on:{click:function(a){return t.handleToggleTask(s)}}},[t._v(" "+t._s(s.is_active?t.$t("aiAssetAnalysis.tasks.pause"):t.$t("aiAssetAnalysis.tasks.resume"))+" ")]),a("a-button",{attrs:{size:"small",icon:"edit"},on:{click:function(a){return t.handleEditTask(s)}}},[t._v(t._s(t.$t("aiAssetAnalysis.tasks.edit")))]),a("a-popconfirm",{attrs:{title:t.$t("aiAssetAnalysis.tasks.deleteConfirm"),okText:t.$t("common.confirm"),cancelText:t.$t("common.cancel")},on:{confirm:function(a){return t.handleDeleteTask(s)}}},[a("a-button",{attrs:{size:"small",type:"danger",icon:"delete"}},[t._v(t._s(t.$t("aiAssetAnalysis.tasks.delete")))])],1)],1)])}),0)]),a("a-modal",{attrs:{visible:t.showEditTaskModal,title:t.$t("aiAssetAnalysis.tasks.edit"),confirmLoading:t.editTaskLoading,wrapClassName:t.isDarkTheme?"qd-dark-modal":""},on:{ok:t.saveEditTask,cancel:function(a){t.showEditTaskModal=!1}}},[t.editTaskForm?a("a-form",{attrs:{layout:"vertical"}},[a("a-form-item",{attrs:{label:t.$t("aiAssetAnalysis.tasks.name")}},[a("a-input",{model:{value:t.editTaskForm.name,callback:function(a){t.$set(t.editTaskForm,"name",a)},expression:"editTaskForm.name"}})],1),a("a-form-item",{attrs:{label:t.$t("aiAssetAnalysis.batch.intervalLabel")}},[a("a-select",{staticStyle:{width:"100%"},model:{value:t.editTaskForm.interval_min,callback:function(a){t.$set(t.editTaskForm,"interval_min",a)},expression:"editTaskForm.interval_min"}},[a("a-select-option",{attrs:{value:60}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval1h")))]),a("a-select-option",{attrs:{value:240}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval4h")))]),a("a-select-option",{attrs:{value:720}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval12h")))]),a("a-select-option",{attrs:{value:1440}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval24h")))])],1)],1),a("a-form-item",{attrs:{label:t.$t("aiAssetAnalysis.batch.notifyLabel")}},[a("a-checkbox-group",{staticStyle:{width:"100%"},model:{value:t.editTaskForm.notify_channels,callback:function(a){t.$set(t.editTaskForm,"notify_channels",a)},expression:"editTaskForm.notify_channels"}},[a("a-row",{attrs:{gutter:8}},[a("a-col",{attrs:{span:8}},[a("a-checkbox",{attrs:{value:"email"}},[a("a-icon",{attrs:{type:"mail"}}),t._v(" Email")],1)],1),a("a-col",{attrs:{span:8}},[a("a-checkbox",{attrs:{value:"telegram"}},[a("a-icon",{attrs:{type:"send"}}),t._v(" Telegram")],1)],1),a("a-col",{attrs:{span:8}},[a("a-checkbox",{attrs:{value:"webhook"}},[a("a-icon",{attrs:{type:"api"}}),t._v(" Webhook")],1)],1)],1)],1)],1)],1):t._e()],1),a("a-modal",{attrs:{title:t.$t("dashboard.analysis.modal.history.title"),visible:t.showHistoryModal,footer:null,width:"800px",bodyStyle:{maxHeight:"60vh",overflowY:"auto"},wrapClassName:t.isDarkTheme?"qd-dark-modal":""},on:{cancel:function(a){t.showHistoryModal=!1}}},[a("a-spin",{attrs:{spinning:t.historyLoading}},[a("a-list",{attrs:{"data-source":t.historyList,pagination:{current:t.historyPage,pageSize:t.historyPageSize,total:t.historyTotal,onChange:function(a){t.historyPage=a,t.loadHistoryList()},showSizeChanger:!0,pageSizeOptions:["10","20","50"],onShowSizeChange:function(a,s){t.historyPageSize=s,t.historyPage=1,t.loadHistoryList()}}},scopedSlots:t._u([{key:"renderItem",fn:function(s){return a("a-list-item",{},[a("a-list-item-meta",[a("template",{slot:"title"},[a("div",{staticStyle:{display:"flex","align-items":"center","justify-content":"space-between"}},[a("div",[a("a-tag",{staticStyle:{"margin-right":"8px"},attrs:{color:t.getMarketColor(s.market)}},[t._v(" "+t._s(t.getMarketName(s.market))+" ")]),a("strong",[t._v(t._s(s.symbol))]),a("a-tag",{staticStyle:{"margin-left":"12px"},attrs:{color:"BUY"===s.decision?"green":"SELL"===s.decision?"red":"blue"}},[t._v(" "+t._s(s.decision)+" ")]),a("a-tag",{staticStyle:{"margin-left":"8px"},attrs:{color:t.getStatusColor(s.status||"completed")}},[t._v(" "+t._s(t.getStatusText(s.status||"completed"))+" ")]),a("span",{staticStyle:{color:"#999","margin-left":"8px","font-size":"12px"}},[t._v(" "+t._s(t.$t("fastAnalysis.confidence"))+": "+t._s(s.confidence)+"% ")])],1),a("div",[a("a-button",{attrs:{type:"link",size:"small",icon:"eye",disabled:"processing"===(s.status||"").toLowerCase()},on:{click:function(a){return t.viewHistoryResult(s)}}},[t._v(" "+t._s(t.$t("dashboard.analysis.modal.history.viewResult"))+" ")]),a("a-popconfirm",{attrs:{title:t.$t("dashboard.analysis.modal.history.deleteConfirm"),"ok-text":t.$t("common.confirm"),"cancel-text":t.$t("common.cancel")},on:{confirm:function(a){return t.deleteHistoryItem(s)}}},[a("a-button",{staticStyle:{color:"#ff4d4f"},attrs:{type:"link",size:"small",icon:"delete"}},[t._v(" "+t._s(t.$t("dashboard.analysis.modal.history.delete"))+" ")])],1)],1)])]),a("template",{slot:"description"},[a("div",{staticStyle:{color:"#666","font-size":"12px"}},[s.price?a("span",[t._v("$"+t._s(t.formatNumber(s.price)))]):t._e(),s.summary?a("span",{staticStyle:{"margin-left":"8px"}},[t._v(t._s(s.summary.substring(0,80))+t._s(s.summary.length>80?"...":""))]):t._e()]),s.created_at?a("div",{staticStyle:{color:"#999","font-size":"12px","margin-top":"4px"}},[t._v(" "+t._s(t.formatIsoTime(s.created_at))+" ")]):t._e()])],2)],1)}}])}),t.historyLoading||0!==t.historyList.length?t._e():a("a-empty",{attrs:{description:t.$t("dashboard.analysis.empty.noHistory")}})],1)],1)],1)},i=[function(){var t=this,a=t._self._c;return a("div",{staticClass:"indicator-box skeleton-box"},[a("span",{staticClass:"skeleton-text short"}),a("span",{staticClass:"skeleton-text"})])},function(){var t=this,a=t._self._c;return a("div",{staticClass:"indicator-box skeleton-box"},[a("span",{staticClass:"skeleton-text short"}),a("span",{staticClass:"skeleton-text"})])},function(){var t=this,a=t._self._c;return a("div",{staticClass:"indicator-box skeleton-box"},[a("span",{staticClass:"skeleton-text short"}),a("span",{staticClass:"skeleton-text"})])},function(){var t=this,a=t._self._c;return a("div",{staticClass:"hero-bg"},[a("div",{staticClass:"hero-bg-circle c1"}),a("div",{staticClass:"hero-bg-circle c2"}),a("div",{staticClass:"hero-bg-grid"})])}],n=s(44735),r=s(21560),o=s(57532),l=s(2403),c=s(15863),d=s(81127),u=s(56252),m=s(76338),h=(s(2008),s(50113),s(62062),s(2892),s(32637),s(40150),s(79432),s(26099),s(16034),s(31415),s(47764),s(42762),s(23500),s(62953),s(95353)),p=s(505),v=s(35038),y=s(24364),f=s(75769),b="/api/fast-analysis";function g(t){return(0,f.Ay)({url:"".concat(b,"/analyze"),method:"post",data:t,timeout:3e5})}function _(t){return(0,f.Ay)({url:"".concat(b,"/history/all"),method:"get",params:t})}function k(t){return(0,f.Ay)({url:"".concat(b,"/history/").concat(t),method:"delete"})}function C(t){return(0,f.Ay)({url:"".concat(b,"/feedback"),method:"post",data:t})}var A=s(44146),S=function(){var t,a,s,e,i,n,r,o,l,c,d,u,m,h,p,v,y,f,b,g,_,k,C=this,A=C._self._c;return A("div",{staticClass:"fast-analysis-report",class:{"theme-dark":C.isDarkTheme}},[C.loading?A("div",{staticClass:"loading-container"},[A("div",{staticClass:"loading-content-pro"},[A("div",{staticClass:"loading-header"},[A("a-icon",{staticClass:"loading-icon-pro",attrs:{type:"thunderbolt"}}),A("span",{staticClass:"loading-title"},[C._v(C._s(C.$t("fastAnalysis.analyzing")))])],1),A("div",{staticClass:"progress-wrapper"},[A("a-progress",{attrs:{percent:C.progressPercent,showInfo:!1,strokeColor:"#1890ff",strokeWidth:8}}),A("span",{staticClass:"progress-text"},[C._v(C._s(C.formatProgress(C.progressPercent))+"%")])],1),A("div",{staticClass:"current-step"},[A("a-icon",{attrs:{type:"loading",spin:""}}),A("span",[C._v(C._s(C.currentStepText))])],1),A("div",{staticClass:"steps-list"},[A("div",{staticClass:"step-item",class:{done:C.step>1,active:1===C.step}},[A("span",{staticClass:"step-dot"}),A("span",{staticClass:"step-text"},[C._v(C._s(C.$t("fastAnalysis.step1")||"获取实时数据"))]),C.step>1?A("a-icon",{staticClass:"step-check",attrs:{type:"check"}}):C._e()],1),A("div",{staticClass:"step-item",class:{done:C.step>2,active:2===C.step}},[A("span",{staticClass:"step-dot"}),A("span",{staticClass:"step-text"},[C._v(C._s(C.$t("fastAnalysis.step2")||"计算技术指标"))]),C.step>2?A("a-icon",{staticClass:"step-check",attrs:{type:"check"}}):C._e()],1),A("div",{staticClass:"step-item",class:{done:C.step>3,active:3===C.step}},[A("span",{staticClass:"step-dot"}),A("span",{staticClass:"step-text"},[C._v(C._s(C.$t("fastAnalysis.step3")||"AI深度分析"))]),C.step>3?A("a-icon",{staticClass:"step-check",attrs:{type:"check"}}):C._e()],1),A("div",{staticClass:"step-item",class:{done:C.step>4,active:4===C.step}},[A("span",{staticClass:"step-dot"}),A("span",{staticClass:"step-text"},[C._v(C._s(C.$t("fastAnalysis.step4")||"生成报告"))]),C.step>4?A("a-icon",{staticClass:"step-check",attrs:{type:"check"}}):C._e()],1)]),A("div",{staticClass:"loading-footer"},[A("span",{staticClass:"elapsed-time"},[C._v(C._s(C.elapsedTimeText))])])])]):C.error?A("div",{staticClass:"error-container"},[A("a-result",{attrs:{status:"warning"===C.errorTone?"warning":"error",title:C.errorTitle,"sub-title":C.error},scopedSlots:C._u([{key:"extra",fn:function(){return[A("a-button",{attrs:{type:"primary"},on:{click:function(t){return C.$emit("retry")}}},[C._v(" "+C._s(C.$t("fastAnalysis.retry"))+" ")])]},proxy:!0}])})],1):C.result?A("div",{staticClass:"result-container"},[A("div",{staticClass:"decision-card",class:C.decisionClass},[A("div",{staticClass:"decision-main"},[A("div",{staticClass:"decision-badge"},[A("a-icon",{attrs:{type:C.decisionIcon}}),A("span",{staticClass:"decision-text"},[C._v(C._s(C.result.decision))])],1),A("div",{staticClass:"confidence-ring"},[A("a-progress",{attrs:{type:"circle",percent:C.result.confidence,width:80,strokeColor:C.confidenceColor},scopedSlots:C._u([{key:"format",fn:function(t){return[A("span",{staticClass:"confidence-value"},[C._v(C._s(t)+"%")])]}}])}),A("div",{staticClass:"confidence-label"},[C._v(C._s(C.$t("fastAnalysis.confidence")))])],1)]),A("div",{staticClass:"decision-summary"},[C._v(" "+C._s(C.result.summary)+" ")]),C.consensusBlock?A("div",{staticClass:"consensus-strip"},[A("div",{staticClass:"consensus-strip-title"},[A("a-icon",{attrs:{type:"cluster"}}),C._v(" "+C._s(C.$t("fastAnalysis.consensusTitle"))+" ")],1),A("div",{staticClass:"consensus-strip-metrics"},[A("span",{staticClass:"cm-item"},[A("em",[C._v(C._s(C.$t("fastAnalysis.consensusDecision")))]),C._v(" "+C._s(C.consensusBlock.consensus_decision)+" ")]),A("span",{staticClass:"cm-item"},[A("em",[C._v(C._s(C.$t("fastAnalysis.consensusScore")))]),C._v(" "+C._s(C.formatConsensusNum(C.consensusBlock.consensus_score))+" ")]),null!=C.consensusBlock.agreement_ratio?A("span",{staticClass:"cm-item"},[A("em",[C._v(C._s(C.$t("fastAnalysis.consensusAgreement")))]),C._v(" "+C._s(C.formatAgreementPct(C.consensusBlock.agreement_ratio))+" ")]):C._e()])]):C._e()]),A("div",{staticClass:"price-info-row",class:{"hold-mode":C.isHoldDecision}},[A("div",{staticClass:"price-card current"},[A("div",{staticClass:"price-label"},[C._v(C._s(C.$t("fastAnalysis.currentPrice")))]),A("div",{staticClass:"price-value"},[C._v("$"+C._s(C.formatPrice(null===(t=C.result.market_data)||void 0===t?void 0:t.current_price)))]),A("div",{staticClass:"price-change",class:(null===(a=C.result.market_data)||void 0===a?void 0:a.change_24h)>=0?"positive":"negative"},[C._v(" "+C._s((null===(s=C.result.market_data)||void 0===s?void 0:s.change_24h)>=0?"+":"")+C._s(C.formatNumber(null===(e=C.result.market_data)||void 0===e?void 0:e.change_24h,2))+"% ")])]),C.isHoldDecision?C._e():[A("div",{staticClass:"price-card entry"},[A("div",{staticClass:"price-label"},[C._v(C._s(C.$t("fastAnalysis.entryPrice")))]),A("div",{staticClass:"price-value"},[C._v("$"+C._s(C.formatPrice(C.tradingPlan.entry_price)))])]),A("div",{staticClass:"price-card stop"},[A("div",{staticClass:"price-label"},[C._v(C._s(C.$t("fastAnalysis.stopLoss")))]),A("div",{staticClass:"price-value negative"},[C._v("$"+C._s(C.formatPrice(C.tradingPlan.stop_loss)))]),A("div",{staticClass:"price-hint"},[A("a-tooltip",{attrs:{title:C.stopLossHintText}},[A("a-icon",{attrs:{type:"info-circle"}}),C._v(" "+C._s(C.$t("fastAnalysis.atrBased"))+" ")],1)],1)]),A("div",{staticClass:"price-card target"},[A("div",{staticClass:"price-label"},[C._v(C._s(C.$t("fastAnalysis.takeProfit")))]),A("div",{staticClass:"price-value positive"},[C._v("$"+C._s(C.formatPrice(C.tradingPlan.take_profit)))]),A("div",{staticClass:"price-hint"},[A("a-tooltip",{attrs:{title:C.takeProfitHintText}},[A("a-icon",{attrs:{type:"info-circle"}}),C._v(" "+C._s(C.$t("fastAnalysis.atrBased"))+" ")],1)],1)])]],2),C.trendOutlookBlocks.length||C.trendOutlookSummaryText?A("div",{staticClass:"trend-outlook-card"},[A("div",{staticClass:"trend-outlook-header"},[A("a-icon",{attrs:{type:"calendar"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.trendOutlookTitle")))])],1),C.trendOutlookSummaryText?A("div",{staticClass:"trend-outlook-summary"},[C._v(" "+C._s(C.trendOutlookSummaryText)+" ")]):C._e(),C.trendOutlookBlocks.length?A("div",{staticClass:"trend-outlook-grid"},C._l(C.trendOutlookBlocks,function(t){return A("div",{key:t.key,staticClass:"trend-outlook-item"},[A("div",{staticClass:"to-label"},[C._v(C._s(t.label))]),A("div",{staticClass:"to-trend",class:C.outlookTrendClass(t.trend)},[C._v(" "+C._s(C.formatOutlookTrend(t.trend))+" ")]),A("div",{staticClass:"to-meta"},[A("span",{staticClass:"to-score"},[C._v(C._s(null!=t.score?t.score:"--"))]),A("span",{staticClass:"to-str"},[C._v(C._s(t.strength||"--"))])])])}),0):C._e()]):C._e(),A("div",{staticClass:"scores-row"},[A("div",{staticClass:"score-item"},[A("div",{staticClass:"score-header"},[A("a-icon",{attrs:{type:"line-chart"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.technical")))])],1),A("a-progress",{attrs:{percent:(null===(i=C.result.scores)||void 0===i?void 0:i.technical)||50,strokeColor:C.getScoreColor(null===(n=C.result.scores)||void 0===n?void 0:n.technical),showInfo:!1}}),A("div",{staticClass:"score-value"},[C._v(C._s((null===(r=C.result.scores)||void 0===r?void 0:r.technical)||50))])],1),A("div",{staticClass:"score-item"},[A("div",{staticClass:"score-header"},[A("a-icon",{attrs:{type:"bank"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.fundamental")))])],1),A("a-progress",{attrs:{percent:(null===(o=C.result.scores)||void 0===o?void 0:o.fundamental)||50,strokeColor:C.getScoreColor(null===(l=C.result.scores)||void 0===l?void 0:l.fundamental),showInfo:!1}}),A("div",{staticClass:"score-value"},[C._v(C._s((null===(c=C.result.scores)||void 0===c?void 0:c.fundamental)||50))])],1),A("div",{staticClass:"score-item"},[A("div",{staticClass:"score-header"},[A("a-icon",{attrs:{type:"heart"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.sentiment")))])],1),A("a-progress",{attrs:{percent:(null===(d=C.result.scores)||void 0===d?void 0:d.sentiment)||50,strokeColor:C.getScoreColor(null===(u=C.result.scores)||void 0===u?void 0:u.sentiment),showInfo:!1}}),A("div",{staticClass:"score-value"},[C._v(C._s((null===(m=C.result.scores)||void 0===m?void 0:m.sentiment)||50))])],1),A("div",{staticClass:"score-item overall"},[A("div",{staticClass:"score-header"},[A("a-icon",{attrs:{type:"dashboard"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.overall")))])],1),A("a-progress",{attrs:{percent:(null===(h=C.result.scores)||void 0===h?void 0:h.overall)||50,strokeColor:C.getScoreColor(null===(p=C.result.scores)||void 0===p?void 0:p.overall),showInfo:!1}}),A("div",{staticClass:"score-value"},[C._v(C._s((null===(v=C.result.scores)||void 0===v?void 0:v.overall)||50))])],1)]),C.result.detailed_analysis?A("div",{staticClass:"detailed-analysis"},[C.result.detailed_analysis.technical?A("div",{staticClass:"analysis-card technical"},[A("div",{staticClass:"analysis-card-header"},[A("a-icon",{attrs:{type:"line-chart"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.technicalAnalysis")))]),A("a-tag",{attrs:{color:C.getScoreTagColor(null===(y=C.result.scores)||void 0===y?void 0:y.technical)}},[C._v(" "+C._s((null===(f=C.result.scores)||void 0===f?void 0:f.technical)||50)+"分 ")])],1),A("div",{staticClass:"analysis-card-content"},[C._v(" "+C._s(C.result.detailed_analysis.technical)+" ")])]):C._e(),C.result.detailed_analysis.fundamental?A("div",{staticClass:"analysis-card fundamental"},[A("div",{staticClass:"analysis-card-header"},[A("a-icon",{attrs:{type:"bank"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.fundamentalAnalysis")))]),A("a-tag",{attrs:{color:C.getScoreTagColor(null===(b=C.result.scores)||void 0===b?void 0:b.fundamental)}},[C._v(" "+C._s((null===(g=C.result.scores)||void 0===g?void 0:g.fundamental)||50)+"分 ")])],1),A("div",{staticClass:"analysis-card-content"},[C._v(" "+C._s(C.result.detailed_analysis.fundamental)+" ")])]):C._e(),C.result.detailed_analysis.sentiment?A("div",{staticClass:"analysis-card sentiment"},[A("div",{staticClass:"analysis-card-header"},[A("a-icon",{attrs:{type:"heart"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.sentimentAnalysis")))]),A("a-tag",{attrs:{color:C.getScoreTagColor(null===(_=C.result.scores)||void 0===_?void 0:_.sentiment)}},[C._v(" "+C._s((null===(k=C.result.scores)||void 0===k?void 0:k.sentiment)||50)+"分 ")])],1),A("div",{staticClass:"analysis-card-content"},[C._v(" "+C._s(C.result.detailed_analysis.sentiment)+" ")])]):C._e()]):C._e(),A("div",{staticClass:"analysis-details"},[A("div",{staticClass:"detail-section reasons"},[A("div",{staticClass:"section-title"},[A("a-icon",{attrs:{type:"bulb",theme:"twoTone",twoToneColor:"#52c41a"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.keyReasons")))])],1),A("ul",{staticClass:"detail-list"},C._l(C.result.reasons,function(t,a){return A("li",{key:"r-"+a},[C._v(" "+C._s(t)+" ")])}),0)]),A("div",{staticClass:"detail-section risks"},[A("div",{staticClass:"section-title"},[A("a-icon",{attrs:{type:"warning",theme:"twoTone",twoToneColor:"#faad14"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.risks")))])],1),A("ul",{staticClass:"detail-list"},C._l(C.result.risks,function(t,a){return A("li",{key:"k-"+a},[C._v(" "+C._s(t)+" ")])}),0)])]),C.result.indicators&&Object.keys(C.result.indicators).length>0?A("div",{staticClass:"indicators-section"},[A("div",{staticClass:"section-title"},[A("a-icon",{attrs:{type:"stock"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.indicators")))]),A("a-tag",{staticClass:"indicators-pro-badge",attrs:{color:"blue"}},[C._v(C._s(C.$t("fastAnalysis.indicatorsProBadge")))])],1),A("div",{staticClass:"indicators-methodology"},[A("a-icon",{attrs:{type:"experiment"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.indicatorsProSubtitle")))])],1),A("div",{staticClass:"indicators-grid"},[C.result.indicators.rsi?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v("RSI (14)")]),A("div",{staticClass:"indicator-value",class:C.getRsiClass(C.result.indicators.rsi.value)},[C._v(" "+C._s(C.formatNumber(C.result.indicators.rsi.value,1))+" ")]),A("div",{staticClass:"indicator-signal"},[C._v(C._s(C.translateSignal(C.result.indicators.rsi.signal)))])]):C._e(),C.result.indicators.macd?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v("MACD (12,26,9)")]),A("div",{staticClass:"indicator-value",class:"bullish"===C.result.indicators.macd.signal?"bullish":"bearish"===C.result.indicators.macd.signal?"bearish":""},[C._v(" "+C._s(C.translateTrend(C.result.indicators.macd.trend))+" ")]),A("div",{staticClass:"indicator-signal"},[C._v(C._s(C.translateSignal(C.result.indicators.macd.signal)))])]):C._e(),C.result.indicators.moving_averages?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v(C._s(C.$t("fastAnalysis.maTrend")))]),A("div",{staticClass:"indicator-value",class:C.getMaTrendClass(C.result.indicators.moving_averages.trend)},[C._v(" "+C._s(C.translateTrend(C.result.indicators.moving_averages.trend))+" ")])]):C._e(),C.result.indicators.volatility&&null!=C.result.indicators.volatility.atr?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v("ATR (14)")]),A("div",{staticClass:"indicator-value",class:C.getVolatilityClass(C.result.indicators.volatility.level)},[C._v(" $"+C._s(C.formatPrice(C.result.indicators.volatility.atr))+" ")]),A("div",{staticClass:"indicator-signal"},[C._v(C._s(C.$t("fastAnalysis.atrTrueRange")))])]):C._e(),C.result.indicators.bollinger&&null!=C.result.indicators.bollinger.BB_width?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v(C._s(C.$t("fastAnalysis.bbWidth")))]),A("div",{staticClass:"indicator-value"},[C._v(C._s(C.formatNumber(C.result.indicators.bollinger.BB_width,2))+"%")]),A("div",{staticClass:"indicator-signal"},[C._v(C._s(C.$t("fastAnalysis.bbWidthHint")))])]):C._e(),null!=C.result.indicators.price_position?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v(C._s(C.$t("fastAnalysis.rangePct20")))]),A("div",{staticClass:"indicator-value"},[C._v(C._s(C.formatNumber(C.result.indicators.price_position,1))+"%")]),A("div",{staticClass:"indicator-signal"},[C._v(C._s(C.$t("fastAnalysis.rangePct20Hint")))])]):C._e(),null!=C.result.indicators.volume_ratio?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v(C._s(C.$t("fastAnalysis.volumeRatio")))]),A("div",{staticClass:"indicator-value",class:C.volumeRatioClass(C.result.indicators.volume_ratio)},[C._v(" "+C._s(C.formatNumber(C.result.indicators.volume_ratio,2))+"× ")]),A("div",{staticClass:"indicator-signal"},[C._v(C._s(C.$t("fastAnalysis.volumeRatioHint")))])]):C._e(),C.result.indicators.levels?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v(C._s(C.$t("fastAnalysis.support")))]),A("div",{staticClass:"indicator-value"},[C._v("$"+C._s(C.formatPrice(C.result.indicators.levels.support)))])]):C._e(),C.result.indicators.levels?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v(C._s(C.$t("fastAnalysis.resistance")))]),A("div",{staticClass:"indicator-value"},[C._v("$"+C._s(C.formatPrice(C.result.indicators.levels.resistance)))])]):C._e(),C.result.indicators.volatility?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v(C._s(C.$t("fastAnalysis.volatility")))]),A("div",{staticClass:"indicator-value",class:C.getVolatilityClass(C.result.indicators.volatility.level)},[C._v(" "+C._s(C.translateVolatility(C.result.indicators.volatility.level))+" ("+C._s(C.result.indicators.volatility.pct)+"%) ")])]):C._e()]),C.professionalIndicatorRows.length?A("div",{staticClass:"indicators-pro-wrap"},[A("div",{staticClass:"indicators-pro-title"},[A("a-icon",{attrs:{type:"deployment-unit"}}),C._v(" "+C._s(C.$i18n&&"zh-CN"===C.$i18n.locale?"量化参数明细":"Quant Parameters")+" ")],1),A("a-descriptions",{staticClass:"indicators-pro-desc",attrs:{bordered:"",size:"small",column:2}},C._l(C.professionalIndicatorRows,function(t){return A("a-descriptions-item",{key:t.key,attrs:{label:t.label}},[A("span",{class:t.valueClass},[C._v(C._s(t.text))])])}),1)],1):C._e()]):C._e(),A("div",{staticClass:"feedback-section"},[A("div",{staticClass:"feedback-question"},[C._v(C._s(C.$t("fastAnalysis.wasHelpful")))]),A("div",{staticClass:"feedback-buttons"},[A("a-button",{attrs:{type:"helpful"===C.userFeedback?"primary":"default",size:"small",loading:"helpful"===C.feedbackLoading},on:{click:function(t){return C.submitFeedback("helpful")}}},[A("a-icon",{attrs:{type:"like"}}),C._v(" "+C._s(C.$t("fastAnalysis.helpful"))+" ")],1),A("a-button",{attrs:{type:"not_helpful"===C.userFeedback?"danger":"default",size:"small",loading:"not_helpful"===C.feedbackLoading},on:{click:function(t){return C.submitFeedback("not_helpful")}}},[A("a-icon",{attrs:{type:"dislike"}}),C._v(" "+C._s(C.$t("fastAnalysis.notHelpful"))+" ")],1)],1),A("div",{staticClass:"analysis-meta"},[A("span",[C._v(C._s(C.$t("fastAnalysis.analysisTime"))+": "+C._s(C.result.analysis_time_ms)+"ms")]),C.result.memory_id?A("span",[C._v("ID: #"+C._s(C.result.memory_id))]):C._e()])])]):A("div",{staticClass:"empty-container"},[A("div",{staticClass:"empty-content"},[A("a-icon",{staticClass:"empty-icon",attrs:{type:"radar-chart"}}),A("div",{staticClass:"empty-title"},[C._v(C._s(C.$t("fastAnalysis.selectSymbol")))]),A("div",{staticClass:"empty-hint"},[C._v(C._s(C.$t("fastAnalysis.selectHint")))])],1)])])},w=[],$={name:"FastAnalysisReport",props:{result:{type:Object,default:null},loading:{type:Boolean,default:!1},error:{type:String,default:null},errorTone:{type:String,default:"error",validator:function(t){return["error","warning","info"].includes(t)}}},data:function(){return{userFeedback:null,feedbackLoading:null,progress:0,elapsedSeconds:0,mainTimer:null}},computed:(0,m.A)((0,m.A)({},(0,h.aH)({navTheme:function(t){return t.app.theme}})),{},{isDarkTheme:function(){return"dark"===this.navTheme||"realdark"===this.navTheme},progressPercent:function(){return Math.round(10*this.progress)/10},step:function(){return this.progress<25?1:this.progress<50?2:this.progress<75?3:4},currentStepText:function(){var t={1:this.$t("fastAnalysis.step1")||"获取实时数据",2:this.$t("fastAnalysis.step2")||"计算技术指标",3:this.$t("fastAnalysis.step3")||"AI深度分析",4:this.$t("fastAnalysis.step4")||"生成报告"};return t[this.step]||this.$t("fastAnalysis.preparing")||"准备中..."},elapsedTimeText:function(){if(this.elapsedSeconds<60)return"".concat(this.elapsedSeconds,"s");var t=Math.floor(this.elapsedSeconds/60),a=this.elapsedSeconds%60;return"".concat(t,"m ").concat(a,"s")},isHoldDecision:function(){return this.result&&"HOLD"===this.result.decision},decisionClass:function(){if(!this.result)return"";var t=this.result.decision;return"BUY"===t?"decision-buy":"SELL"===t?"decision-sell":"decision-hold"},decisionIcon:function(){if(!this.result)return"question";var t=this.result.decision;return"BUY"===t?"arrow-up":"SELL"===t?"arrow-down":"pause"},confidenceColor:function(){var t,a=(null===(t=this.result)||void 0===t?void 0:t.confidence)||50;return a>=70?"#52c41a":a>=50?"#1890ff":"#faad14"},consensusBlock:function(){var t,a=null===(t=this.result)||void 0===t?void 0:t.consensus;return a&&"object"===(0,n.A)(a)?null==a.consensus_decision&&null==a.consensus_score?null:a:null},tradingPlan:function(){var t,a,s,e,i,n,r=(null===(t=this.result)||void 0===t?void 0:t.trading_plan)||{},o=null!==(a=r.entry_price)&&void 0!==a?a:r.entryPrice,l=null!==(s=null!==(e=r.stop_loss)&&void 0!==e?e:r.stopLoss)&&void 0!==s?s:r.loss_exit_price,c=null!==(i=null!==(n=r.take_profit)&&void 0!==n?n:r.takeProfit)&&void 0!==i?i:r.profit_target_price;return{entry_price:o,stop_loss:l,take_profit:c}},trendOutlookRaw:function(){var t,a;return(null===(t=this.result)||void 0===t?void 0:t.trend_outlook)||(null===(a=this.result)||void 0===a?void 0:a.trendOutlook)||null},trendOutlookSummaryText:function(){var t,a,s=(null===(t=this.result)||void 0===t?void 0:t.trend_outlook_summary)||(null===(a=this.result)||void 0===a?void 0:a.trendOutlookSummary);return s&&String(s).trim()?String(s).trim():""},trendOutlookBlocks:function(){var t=this,a=this.trendOutlookRaw;if(!a||"object"!==(0,n.A)(a))return[];var s=[{key:"next_24h",labelKey:"fastAnalysis.outlook24h"},{key:"next_3d",labelKey:"fastAnalysis.outlook3d"},{key:"next_1w",labelKey:"fastAnalysis.outlook1w"},{key:"next_1m",labelKey:"fastAnalysis.outlook1m"}];return s.map(function(s){var e=s.key,i=s.labelKey,n=a[e]||{};return{key:e,label:t.$t(i),trend:n.trend,score:n.score,strength:n.strength}}).filter(function(t){var s=a[t.key];return s&&"object"===(0,n.A)(s)&&(null!=s.trend||null!=s.score)})},stopLossHintText:function(){var t,a=String((null===(t=this.result)||void 0===t?void 0:t.decision)||"").toUpperCase();return"SELL"===a?this.$t("fastAnalysis.stopLossHintShort"):this.$t("fastAnalysis.stopLossHint")},takeProfitHintText:function(){var t,a=String((null===(t=this.result)||void 0===t?void 0:t.decision)||"").toUpperCase();return"SELL"===a?this.$t("fastAnalysis.takeProfitHintShort"):this.$t("fastAnalysis.takeProfitHint")},professionalIndicatorRows:function(){var t,a=(null===(t=this.result)||void 0===t?void 0:t.indicators)||{},s=[],e=function(t,a,e){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"";void 0!==e&&null!==e&&""!==e&&s.push({key:t,label:a,text:String(e),valueClass:i})},i=a.macd||{};if(null!=i.value&&e("macd_dif",this.$t("fastAnalysis.macdDif"),this.formatCompactNum(i.value)),null!=i.signal_line&&e("macd_dea",this.$t("fastAnalysis.macdDea"),this.formatCompactNum(i.signal_line)),null!=i.histogram){var n=Number(i.histogram),r=n>0?"bullish":n<0?"bearish":"";e("macd_hist",this.$t("fastAnalysis.macdHist"),this.formatCompactNum(i.histogram),r)}var o=a.moving_averages||{};null!=o.ma5&&e("ma5",this.$t("fastAnalysis.ma5Label"),"$"+this.formatPrice(o.ma5)),null!=o.ma10&&e("ma10",this.$t("fastAnalysis.ma10Label"),"$"+this.formatPrice(o.ma10)),null!=o.ma20&&e("ma20",this.$t("fastAnalysis.ma20Label"),"$"+this.formatPrice(o.ma20));var l=a.bollinger||{};null!=l.BB_upper&&e("bb_u",this.$t("fastAnalysis.bbUpper"),"$"+this.formatPrice(l.BB_upper)),null!=l.BB_middle&&e("bb_m",this.$t("fastAnalysis.bbMiddle"),"$"+this.formatPrice(l.BB_middle)),null!=l.BB_lower&&e("bb_l",this.$t("fastAnalysis.bbLower"),"$"+this.formatPrice(l.BB_lower)),null!=l.BB_width&&e("bb_w",this.$t("fastAnalysis.bbWidthPct"),this.formatNumber(l.BB_width,2)+"%");var c=a.levels||{};null!=c.pivot&&e("piv",this.$t("fastAnalysis.pivotStd"),"$"+this.formatPrice(c.pivot)),null!=c.s1&&e("s1",this.$t("fastAnalysis.levelS1"),"$"+this.formatPrice(c.s1)),null!=c.r1&&e("r1",this.$t("fastAnalysis.levelR1"),"$"+this.formatPrice(c.r1)),null!=c.s2&&e("s2",this.$t("fastAnalysis.levelS2"),"$"+this.formatPrice(c.s2)),null!=c.r2&&e("r2",this.$t("fastAnalysis.levelR2"),"$"+this.formatPrice(c.r2)),null!=c.swing_high&&e("sw_h",this.$t("fastAnalysis.swingHigh20"),"$"+this.formatPrice(c.swing_high)),null!=c.swing_low&&e("sw_l",this.$t("fastAnalysis.swingLow20"),"$"+this.formatPrice(c.swing_low));var d=a.volatility||{};if(null!=d.atr){var u=null!=d.pct?this.formatNumber(d.pct,2)+"% ATR/Price":"";e("atr14",this.$t("fastAnalysis.atr14Label"),"$"+this.formatPrice(d.atr)+(u?" · "+u:""))}var m=a.trading_levels||{};return null!=m.risk_reward_ratio&&Number(m.risk_reward_ratio)>0&&e("rr",this.$t("fastAnalysis.rrLongRef"),"1 : "+this.formatNumber(m.risk_reward_ratio,2)),null!=a.current_price&&e("cref",this.$t("fastAnalysis.refClose"),"$"+this.formatPrice(a.current_price)),s},insufficientCreditsError:function(){if(!this.error)return!1;var t=String(this.error);return t.includes("积分不足")||t.toLowerCase().includes("insufficient credits")},errorTitle:function(){return"warning"===this.errorTone?this.$t("fastAnalysis.analysisInProgressTitle"):this.insufficientCreditsError?this.$t("fastAnalysis.insufficientCredits"):this.$t("fastAnalysis.error")}}),watch:{result:function(){this.userFeedback=null},loading:{handler:function(t){t?this.startProgressTimer():this.stopProgressTimer()},immediate:!0}},mounted:function(){this.loading&&this.startProgressTimer()},beforeDestroy:function(){this.stopProgressTimer()},methods:{formatPrice:function(t){if(void 0===t||null===t)return"--";var a=parseFloat(t);return isNaN(a)?"--":a<1?a.toFixed(6):a<100?a.toFixed(4):a<1e4?a.toFixed(2):a.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})},formatNumber:function(t){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2;if(void 0===t||null===t)return"--";var s=parseFloat(t);return isNaN(s)?"--":s.toFixed(a)},formatConsensusNum:function(t){if(void 0===t||null===t||""===t)return"--";var a=Number(t);return Number.isNaN(a)?"--":a.toFixed(1)},formatAgreementPct:function(t){var a=Number(t);return Number.isNaN(a)?"--":"".concat(Math.round(100*a),"%")},formatProgress:function(t){var a=parseFloat(t)||0;return a%1===0?a.toFixed(0):a.toFixed(1)},formatOutlookTrend:function(t){var a=String(t||"HOLD").toUpperCase();return"BUY"===a?this.$t("fastAnalysis.outlookBull"):"SELL"===a?this.$t("fastAnalysis.outlookBear"):this.$t("fastAnalysis.outlookNeutral")},outlookTrendClass:function(t){var a=String(t||"").toUpperCase();return"BUY"===a?"trend-bull":"SELL"===a?"trend-bear":"trend-neutral"},formatCompactNum:function(t){var a=parseFloat(t);return Number.isNaN(a)?"--":0!==a&&Math.abs(a)<1e-4?a.toExponential(2):Math.abs(a)<1?a.toFixed(6):Math.abs(a)<100?a.toFixed(4):a.toFixed(2)},volumeRatioClass:function(t){var a=parseFloat(t);return Number.isNaN(a)?"":a>=1.5?"bullish":a<=.65?"bearish":""},getScoreColor:function(t){return t>=70?"#52c41a":t>=50?"#1890ff":t>=30?"#faad14":"#ff4d4f"},getScoreTagColor:function(t){return t>=70?"green":t>=50?"blue":t>=30?"orange":"red"},getRsiClass:function(t){return t<30?"oversold":t>70?"overbought":""},getMaTrendClass:function(t){return t?t.includes("uptrend")||t.includes("strong_uptrend")?"bullish":t.includes("downtrend")||t.includes("strong_downtrend")?"bearish":"":""},getVolatilityClass:function(t){return"high"===t?"high-volatility":"low"===t?"low-volatility":""},translateSignal:function(t){if(!t)return"--";var a="fastAnalysis.signal.".concat(t),s=this.$t(a);return s===a?t:s},translateTrend:function(t){if(!t)return"--";var a="fastAnalysis.trend.".concat(t),s=this.$t(a);return s===a?t:s},translateVolatility:function(t){if(!t)return"--";var a="fastAnalysis.volatilityLevel.".concat(t),s=this.$t(a);return s===a?t:s},submitFeedback:function(t){var a=this;return(0,u.A)((0,d.A)().m(function s(){var e;return(0,d.A)().w(function(s){while(1)switch(s.p=s.n){case 0:if(null!==(e=a.result)&&void 0!==e&&e.memory_id){s.n=1;break}return a.$message.warning(a.$t("fastAnalysis.feedbackUnavailable")||"反馈功能暂不可用,请刷新后重试"),s.a(2);case 1:return a.feedbackLoading=t,s.p=2,s.n=3,C({memory_id:a.result.memory_id,feedback:t});case 3:a.userFeedback=t,a.$message.success(a.$t("fastAnalysis.feedbackThanks")),s.n=5;break;case 4:s.p=4,s.v,a.$message.error(a.$t("fastAnalysis.feedbackFailed"));case 5:return s.p=5,a.feedbackLoading=null,s.f(5);case 6:return s.a(2)}},s,null,[[2,4,5,6]])}))()},startProgressTimer:function(){var t=this;this.stopProgressTimer(),this.progress=0,this.elapsedSeconds=0;var a=Date.now();this.mainTimer=window.setInterval(function(){t.elapsedSeconds=Math.floor((Date.now()-a)/1e3),t.progress<75?t.progress=Math.min(t.progress+1,75):t.progress<90?t.progress=Math.min(t.progress+.5,90):t.progress<95&&(t.progress=Math.min(t.progress+.2,95))},100)},stopProgressTimer:function(){this.mainTimer&&(window.clearInterval(this.mainTimer),this.mainTimer=null),this.progress=0,this.elapsedSeconds=0}}},T=$,x=s(845),M=(0,x.A)(T,S,w,!1,null,"03feb1fa",null),P=M.exports,F={name:"Analysis",props:{embedded:{type:Boolean,default:!1},presetSymbol:{type:String,default:""},autoAnalyzeSignal:{type:Number,default:0}},components:{FastAnalysisReport:P},data:function(){return{loadingMarket:!1,heatmapType:"crypto",marketData:{fearGreed:null,vix:null,dxy:null,indices:[],heatmap:{crypto:[],commodities:[],sectors:[],forex:[]},calendar:[]},loadingSentiment:!1,loadingIndices:!1,loadingHeatmap:!1,loadingCalendar:!1,watchlistPriceTimer:null,watchlistPrices:{},localUserInfo:{},loadingUserInfo:!1,userId:1,watchlist:[],loadingWatchlist:!1,showAddStockModal:!1,addingStock:!1,selectedSymbol:void 0,analyzing:!1,analysisResult:null,analysisError:null,analysisErrorTone:"error",showHistoryModal:!1,historyList:[],historyLoading:!1,historyPage:1,historyPageSize:20,historyTotal:0,currentTaskId:null,taskPollingTimer:null,taskPollingStartedAt:0,marketTypes:[],selectedMarketTab:"",symbolSearchKeyword:"",symbolSearchResults:[],searchingSymbols:!1,hotSymbols:[],loadingHotSymbols:!1,selectedSymbolForAdd:null,searchTimer:null,hasSearched:!1,positions:[],monitors:[],positionSummaryMap:{},showPositionModal:!1,showMonitorModal:!1,targetStockForOps:null,positionForm:{side:"long",quantity:null,entryPrice:null},monitorForm:{interval_min:240,notify_channels:[]},batchMode:!1,batchSelectedKeys:[],batchRunning:!1,batchProgress:0,showBatchScheduleModal:!1,batchScheduleForm:{interval_min:240,notify_channels:[]},showTaskDrawer:!1,showEditTaskModal:!1,editTaskLoading:!1,editTaskId:null,editTaskForm:{name:"",interval_min:240,notify_channels:[]}}},computed:(0,m.A)((0,m.A)((0,m.A)({},(0,h.L8)(["userInfo"])),(0,h.aH)({navTheme:function(t){return t.app.theme},primaryColor:function(t){return t.app.color||"#1890ff"}})),{},{isDarkTheme:function(){return"dark"===this.navTheme||"realdark"===this.navTheme},isZhLocale:function(){return"zh-CN"===this.$i18n.locale},currentHeatmap:function(){return this.marketData.heatmap[this.heatmapType]||[]},storeUserInfo:function(){return this.userInfo||{}},mergedUserInfo:function(){return this.localUserInfo&&this.localUserInfo.email?this.localUserInfo:this.storeUserInfo},watchlistTotalPnl:function(){return Object.values(this.positionSummaryMap).reduce(function(t,a){return t+(Number(a.pnl)||0)},0)},watchlistPositionCount:function(){return Object.values(this.positionSummaryMap).filter(function(t){return t.quantity>0}).length},watchlistTaskCount:function(){return Object.values(this.positionSummaryMap).reduce(function(t,a){return t+(a.monitorCount||0)},0)},batchSelectedAll:function(){return this.watchlist&&this.watchlist.length>0&&this.batchSelectedKeys.length===this.watchlist.length},batchIndeterminate:function(){return this.batchSelectedKeys.length>0&&this.batchSelectedKeys.length<(this.watchlist||[]).length}}),created:function(){this.loadUserInfo(),this.loadMarketTypes(),this.loadWatchlist(),this.loadPositionData(),this.loadMarketData()},mounted:function(){this.startWatchlistPriceRefresh()},beforeDestroy:function(){this.watchlistPriceTimer&&clearInterval(this.watchlistPriceTimer),this.taskPollingTimer&&(clearInterval(this.taskPollingTimer),this.taskPollingTimer=null)},methods:{stopTaskPolling:function(){this.taskPollingTimer&&(clearInterval(this.taskPollingTimer),this.taskPollingTimer=null),this.currentTaskId=null,this.taskPollingStartedAt=0},pollTaskResult:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e,i,n;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(t.currentTaskId){a.n=1;break}return a.a(2);case 1:return a.p=1,a.n=2,_({page:1,pagesize:50});case 2:if(s=a.v,s&&1===s.code&&s.data){a.n=3;break}return a.a(2);case 3:if(e=s.data.list||[],i=e.find(function(a){return Number(a.id)===Number(t.currentTaskId)}),i){a.n=4;break}return a.a(2);case 4:if(n=String(i.status||"").toLowerCase(),"completed"!==n){a.n=8;break}if(!i.full_result){a.n=5;break}t.analysisResult=i.full_result,a.n=6;break;case 5:return a.n=6,t.viewHistoryResult(i);case 6:return t.$message.success(t.$t("dashboard.analysis.message.analysisComplete")),a.n=7,t.refreshUserInfoFromServer();case 7:t.analyzing=!1,t.stopTaskPolling(),a.n=11;break;case 8:if("failed"!==n){a.n=10;break}return t.analysisError=i.error_message||t.$t("dashboard.analysis.message.analysisFailed"),t.analysisErrorTone="error",t.$message.error(t.analysisError),a.n=9,t.refreshUserInfoFromServer();case 9:t.analyzing=!1,t.stopTaskPolling(),a.n=11;break;case 10:Date.now()-t.taskPollingStartedAt>18e4&&(t.$message.warning(t.$t("fastAnalysis.analysisStillProcessing")||"任务仍在处理中,请稍后在历史记录查看"),t.analyzing=!1,t.stopTaskPolling());case 11:a.n=13;break;case 12:a.p=12,a.v;case 13:return a.a(2)}},a,null,[[1,12]])}))()},startTaskPolling:function(t){var a=this;return(0,u.A)((0,d.A)().m(function s(){return(0,d.A)().w(function(s){while(1)switch(s.n){case 0:return a.stopTaskPolling(),a.currentTaskId=Number(t),a.taskPollingStartedAt=Date.now(),s.n=1,a.pollTaskResult();case 1:a.taskPollingTimer=setInterval(function(){a.pollTaskResult()},2500);case 2:return s.a(2)}},s)}))()},filterSymbolOption:function(t,a){var s,e=(null===(s=a.componentOptions)||void 0===s||null===(s=s.propsData)||void 0===s?void 0:s.value)||"";return"__add_stock_option__"===e||e.toLowerCase().includes(t.toLowerCase())},handleSymbolChange:function(t){var a=this;if("__add_stock_option__"===t)return this.showAddStockModal=!0,void this.$nextTick(function(){a.selectedSymbol=void 0});this.selectedSymbol=t,this.analysisResult=null,this.analysisError=null,this.analysisErrorTone="error",this.$emit("symbol-change",t)},selectWatchlistItem:function(t){this.selectedSymbol="".concat(t.market,":").concat(t.symbol),this.analysisResult=null,this.analysisError=null,this.analysisErrorTone="error",this.$emit("symbol-change",this.selectedSymbol)},hasMonitorForStock:function(t){if(!t)return!1;var a="".concat(t.market,":").concat(t.symbol),s=this.positionSummaryMap[a];return!!(s&&s.monitorCount>0)},getMonitorMeta:function(t){if(!t)return null;var a="".concat(t.market,":").concat(t.symbol),s=this.positionSummaryMap[a];return!s||s.monitorCount<=0?null:{activeCount:s.activeMonitorCount||0,nextRunAtText:s.nextRunAtText||""}},getPnlBarStyle:function(t){var a=Math.abs(Number((null===t||void 0===t?void 0:t.pnlPercent)||0)),s=Math.min(100,Math.max(4,a));return{width:"".concat(s,"%")}},_formatNextRunText:function(t){if(!t)return"";try{var a=new Date(t);return Number.isNaN(a.getTime())?"":a.toLocaleString(this.isZhLocale?"zh-CN":"en-US",{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"})}catch(s){return""}},buildPositionSummary:function(){var t=this,a={},s=Array.isArray(this.positions)?this.positions:[],e=Array.isArray(this.monitors)?this.monitors:[],i=new Set,n={};s.forEach(function(t){n[Number(t.id)]="".concat(t.market,":").concat(t.symbol)}),e.forEach(function(s){var e=Array.isArray(s.position_ids)?s.position_ids:[];e.forEach(function(t){return i.add(Number(t))});var r=!!s.is_active,o=s.next_run_at||"";e.forEach(function(s){var e=n[Number(s)];e&&(a[e]||(a[e]={quantity:0,weightedEntry:0,pnl:0,marketValue:0,monitorCount:0,activeMonitorCount:0,nextRunAtText:""}),a[e].monitorCount+=1,r&&(a[e].activeMonitorCount+=1),!a[e].nextRunAtText&&o&&(a[e].nextRunAtText=t._formatNextRunText(o)))})}),s.forEach(function(t){var s="".concat(t.market,":").concat(t.symbol),e=Number(t.quantity||0),n=Number(t.entry_price||0);a[s]||(a[s]={quantity:0,weightedEntry:0,pnl:0,marketValue:0,monitorCount:0,activeMonitorCount:0,nextRunAtText:""}),a[s].quantity+=e,a[s].weightedEntry+=e*n,a[s].pnl+=Number(t.pnl||0),a[s].marketValue+=Number(t.market_value||0),i.has(Number(t.id))&&(a[s].monitorCount+=1)}),Object.keys(a).forEach(function(t){var s=a[t];s.avgEntry=s.quantity>0?s.weightedEntry/s.quantity:0;var e=s.quantity>0?s.weightedEntry:0;s.pnlPercent=e>0?s.pnl/e*100:0}),this.positionSummaryMap=a},toggleStockMonitor:function(t){var a=this;return(0,u.A)((0,d.A)().m(function s(){var e,i,n,r,o,l;return(0,d.A)().w(function(s){while(1)switch(s.p=s.n){case 0:if(e="".concat(t.market,":").concat(t.symbol),i=(a.positions||[]).filter(function(t){return"".concat(t.market,":").concat(t.symbol)===e}).map(function(t){return Number(t.id)}).filter(Boolean),0!==i.length){s.n=1;break}return s.a(2);case 1:if(n=(a.monitors||[]).filter(function(t){var a=Array.isArray(t.position_ids)?t.position_ids.map(function(t){return Number(t)}):[];return a.some(function(t){return i.includes(t)})}),0!==n.length){s.n=2;break}return s.a(2);case 2:return r=!n.some(function(t){return!!t.is_active}),s.p=3,s.n=4,Promise.all(n.map(function(t){return(0,y.sk)(t.id,{is_active:r})}));case 4:return a.$message.success(r?a.$t("aiAssetAnalysis.monitor.enabled")||"已启用任务":a.$t("aiAssetAnalysis.monitor.disabled")||"已暂停任务"),s.n=5,a.loadPositionData();case 5:s.n=7;break;case 6:s.p=6,l=s.v,a.$message.error((null===l||void 0===l||null===(o=l.response)||void 0===o||null===(o=o.data)||void 0===o?void 0:o.msg)||(null===l||void 0===l?void 0:l.message)||"Toggle monitor failed");case 7:return s.a(2)}},s,null,[[3,6]])}))()},loadPositionData:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e,i,n;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return a.p=0,a.n=1,Promise.all([(0,y.Dt)(),(0,y.w1)()]);case 1:s=a.v,e=(0,c.A)(s,2),i=e[0],n=e[1],t.positions=i&&1===i.code&&i.data||[],t.monitors=n&&1===n.code&&n.data||[],t.buildPositionSummary(),a.n=3;break;case 2:a.p=2,a.v,t.positions=[],t.monitors=[],t.positionSummaryMap={};case 3:return a.a(2)}},a,null,[[0,2]])}))()},openPositionModal:function(t){this.targetStockForOps=t;var a="".concat(t.market,":").concat(t.symbol),s=(this.positions||[]).find(function(t){return"".concat(t.market,":").concat(t.symbol)===a});if(s){var e=Number(s.quantity||0);this.positionForm={side:s.side||(e<0?"short":"long"),quantity:Math.abs(e)||null,entryPrice:Number(s.entry_price||0)||null}}else this.positionForm={side:"long",quantity:null,entryPrice:null};this.showPositionModal=!0},savePosition:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e,i,n,r,o;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(s=t.targetStockForOps,s){a.n=1;break}return a.a(2);case 1:if(e=Number(t.positionForm.quantity||0),i=Number(t.positionForm.entryPrice||0),e>0&&i>0){a.n=2;break}return t.$message.warning(t.$i18n&&"zh-CN"===t.$i18n.locale?"请输入有效的数量和买入单价":"Please enter valid quantity and entry price"),a.a(2);case 2:return a.p=2,a.n=3,(0,y.Ps)({market:s.market,symbol:s.symbol,name:s.name||s.symbol,side:t.positionForm.side||"long",quantity:e,entry_price:i});case 3:if(n=a.v,!n||1!==n.code){a.n=5;break}return t.$message.success(t.$t("portfolio.positions.add")+" OK"),t.showPositionModal=!1,a.n=4,t.loadPositionData();case 4:a.n=6;break;case 5:t.$message.error((null===n||void 0===n?void 0:n.msg)||"Add position failed");case 6:a.n=8;break;case 7:a.p=7,o=a.v,t.$message.error((null===o||void 0===o||null===(r=o.response)||void 0===r||null===(r=r.data)||void 0===r?void 0:r.msg)||(null===o||void 0===o?void 0:o.message)||"Add position failed");case 8:return a.a(2)}},a,null,[[2,7]])}))()},openMonitorModal:function(t){this.targetStockForOps=t,this.monitorForm={interval_min:240,notify_channels:[]},this.showMonitorModal=!0},saveMonitorTask:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e,i,n,r,o,l,c;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(s=t.targetStockForOps,s){a.n=1;break}return a.a(2);case 1:return e="".concat(s.market,":").concat(s.symbol),i=t.monitorForm.interval_min,n=t.monitorForm.notify_channels||[],r=(t.positions||[]).filter(function(t){return"".concat(t.market,":").concat(t.symbol)===e}).map(function(t){return Number(t.id)}).filter(Boolean),a.p=2,a.n=3,(0,y.yr)({name:"AI-".concat(s.symbol,"-").concat(i,"m"),position_ids:r,monitor_type:"ai",config:{run_interval_minutes:i,symbol:s.symbol,market:s.market},notification_config:{channels:n},is_active:!0});case 3:if(o=a.v,!o||1!==o.code){a.n=5;break}return t.$message.success(t.$t("aiAssetAnalysis.monitor.created")),t.showMonitorModal=!1,a.n=4,t.loadPositionData();case 4:a.n=6;break;case 5:t.$message.error((null===o||void 0===o?void 0:o.msg)||"Create monitor failed");case 6:a.n=8;break;case 7:a.p=7,c=a.v,t.$message.error((null===c||void 0===c||null===(l=c.response)||void 0===l||null===(l=l.data)||void 0===l?void 0:l.msg)||(null===c||void 0===c?void 0:c.message)||"Create monitor failed");case 8:return a.a(2)}},a,null,[[2,7]])}))()},toggleBatchMode:function(){this.batchMode=!this.batchMode,this.batchMode||(this.batchSelectedKeys=[])},onBatchSelectAll:function(t){t.target.checked?this.batchSelectedKeys=(this.watchlist||[]).map(function(t){return"".concat(t.market,":").concat(t.symbol)}):this.batchSelectedKeys=[]},onBatchItemToggle:function(t,a){var s="".concat(t.market,":").concat(t.symbol);a.target.checked?this.batchSelectedKeys.includes(s)||this.batchSelectedKeys.push(s):this.batchSelectedKeys=this.batchSelectedKeys.filter(function(t){return t!==s})},openBatchScheduleModal:function(){0!==this.batchSelectedKeys.length&&(this.batchScheduleForm={interval_min:240,notify_channels:[]},this.showBatchScheduleModal=!0)},saveBatchSchedule:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e,i,n,u,m,h,p;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(s=(0,l.A)(t.batchSelectedKeys),0!==s.length){a.n=1;break}return a.a(2);case 1:t.batchRunning=!0,e=t.batchScheduleForm.interval_min,i=t.batchScheduleForm.notify_channels||[],n=0,u=(0,o.A)(s),a.p=2,h=(0,d.A)().m(function a(){var s,r,o,l,u,h,p;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(s=m.value,r=s.split(":"),o=(0,c.A)(r,2),l=o[0],u=o[1],h=(t.watchlist||[]).find(function(t){return t.market===l&&t.symbol===u}),h){a.n=1;break}return a.a(2,1);case 1:return p=(t.positions||[]).filter(function(t){return"".concat(t.market,":").concat(t.symbol)===s}).map(function(t){return Number(t.id)}).filter(Boolean),a.p=2,a.n=3,(0,y.yr)({name:"AI-".concat(u,"-").concat(e,"m"),position_ids:p,monitor_type:"ai",config:{run_interval_minutes:e,symbol:u,market:l},notification_config:{channels:i},is_active:!0});case 3:n++,a.n=5;break;case 4:a.p=4,a.v;case 5:return a.a(2)}},a,null,[[2,4]])}),u.s();case 3:if((m=u.n()).done){a.n=6;break}return a.d((0,r.A)(h()),4);case 4:if(!a.v){a.n=5;break}return a.a(3,5);case 5:a.n=3;break;case 6:a.n=8;break;case 7:a.p=7,p=a.v,u.e(p);case 8:return a.p=8,u.f(),a.f(8);case 9:return t.batchRunning=!1,t.showBatchScheduleModal=!1,t.batchMode=!1,t.batchSelectedKeys=[],a.n=10,t.loadPositionData();case 10:t.$message.success(t.$t("aiAssetAnalysis.batch.done")+" (".concat(n,"/").concat(s.length,")"));case 11:return a.a(2)}},a,null,[[2,7,8,9]])}))()},formatIntervalText:function(t){return t>=1440?"".concat(Math.round(t/1440),"d"):t>=60?"".concat(Math.round(t/60),"h"):"".concat(t,"m")},handleToggleTask:function(t){var a=this;return(0,u.A)((0,d.A)().m(function s(){var e,i;return(0,d.A)().w(function(s){while(1)switch(s.p=s.n){case 0:return s.p=0,s.n=1,(0,y.sk)(t.id,{is_active:!t.is_active});case 1:return a.$message.success(t.is_active?a.$t("aiAssetAnalysis.tasks.paused"):a.$t("aiAssetAnalysis.tasks.resumed")),s.n=2,a.loadPositionData();case 2:s.n=4;break;case 3:s.p=3,i=s.v,a.$message.error((null===i||void 0===i||null===(e=i.response)||void 0===e||null===(e=e.data)||void 0===e?void 0:e.msg)||(null===i||void 0===i?void 0:i.message)||"Failed");case 4:return s.a(2)}},s,null,[[0,3]])}))()},handleEditTask:function(t){this.editTaskId=t.id,this.editTaskForm={name:t.name||"",interval_min:t.config&&t.config.run_interval_minutes||240,notify_channels:t.notification_config&&t.notification_config.channels||[]},this.showEditTaskModal=!0},saveEditTask:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(t.editTaskId){a.n=1;break}return a.a(2);case 1:return t.editTaskLoading=!0,a.p=2,a.n=3,(0,y.sk)(t.editTaskId,{name:t.editTaskForm.name,config:{run_interval_minutes:t.editTaskForm.interval_min},notification_config:{channels:t.editTaskForm.notify_channels}});case 3:return t.$message.success("OK"),t.showEditTaskModal=!1,a.n=4,t.loadPositionData();case 4:a.n=6;break;case 5:a.p=5,e=a.v,t.$message.error((null===e||void 0===e||null===(s=e.response)||void 0===s||null===(s=s.data)||void 0===s?void 0:s.msg)||(null===e||void 0===e?void 0:e.message)||"Failed");case 6:return a.p=6,t.editTaskLoading=!1,a.f(6);case 7:return a.a(2)}},a,null,[[2,5,6,7]])}))()},handleDeleteTask:function(t){var a=this;return(0,u.A)((0,d.A)().m(function s(){var e,i;return(0,d.A)().w(function(s){while(1)switch(s.p=s.n){case 0:return s.p=0,s.n=1,(0,y.ei)(t.id);case 1:return a.$message.success(a.$t("aiAssetAnalysis.tasks.deleted")),s.n=2,a.loadPositionData();case 2:s.n=4;break;case 3:s.p=3,i=s.v,a.$message.error((null===i||void 0===i||null===(e=i.response)||void 0===e||null===(e=e.data)||void 0===e?void 0:e.msg)||(null===i||void 0===i?void 0:i.message)||"Failed");case 4:return s.a(2)}},s,null,[[0,3]])}))()},loadMarketData:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){return(0,d.A)().w(function(a){while(1)switch(a.n){case 0:t.loadingMarket=!0,t.loadSentimentData(),t.loadIndicesData(),t.loadHeatmapData(),t.loadCalendarData();case 1:return a.a(2)}},a)}))()},loadSentimentData:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e,i,n;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return t.loadingSentiment=!0,a.p=1,a.n=2,(0,A.EF)();case 2:s=a.v,1===(null===s||void 0===s?void 0:s.code)&&null!==s&&void 0!==s&&s.data&&(t.marketData.fearGreed=(null===(e=s.data.fear_greed)||void 0===e?void 0:e.value)||null,t.marketData.vix=(null===(i=s.data.vix)||void 0===i?void 0:i.value)||null,t.marketData.dxy=(null===(n=s.data.dxy)||void 0===n?void 0:n.value)||null),a.n=4;break;case 3:a.p=3,a.v;case 4:return a.p=4,t.loadingSentiment=!1,t.checkAllLoaded(),a.f(4);case 5:return a.a(2)}},a,null,[[1,3,4,5]])}))()},loadIndicesData:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return t.loadingIndices=!0,a.p=1,a.n=2,(0,A.yI)();case 2:s=a.v,1===(null===s||void 0===s?void 0:s.code)&&null!==s&&void 0!==s&&s.data&&(t.marketData.indices=s.data.indices||[]),a.n=4;break;case 3:a.p=3,a.v;case 4:return a.p=4,t.loadingIndices=!1,t.checkAllLoaded(),a.f(4);case 5:return a.a(2)}},a,null,[[1,3,4,5]])}))()},loadHeatmapData:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return t.loadingHeatmap=!0,a.p=1,a.n=2,(0,A.f$)();case 2:s=a.v,1===(null===s||void 0===s?void 0:s.code)&&null!==s&&void 0!==s&&s.data&&(t.marketData.heatmap={crypto:s.data.crypto||[],commodities:s.data.commodities||[],sectors:s.data.sectors||[],forex:s.data.forex||[]}),a.n=4;break;case 3:a.p=3,a.v;case 4:return a.p=4,t.loadingHeatmap=!1,t.checkAllLoaded(),a.f(4);case 5:return a.a(2)}},a,null,[[1,3,4,5]])}))()},loadCalendarData:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return t.loadingCalendar=!0,a.p=1,a.n=2,(0,A.kF)();case 2:s=a.v,1===(null===s||void 0===s?void 0:s.code)&&(t.marketData.calendar=s.data||[]),a.n=4;break;case 3:a.p=3,a.v;case 4:return a.p=4,t.loadingCalendar=!1,t.checkAllLoaded(),a.f(4);case 5:return a.a(2)}},a,null,[[1,3,4,5]])}))()},checkAllLoaded:function(){this.loadingSentiment||this.loadingIndices||this.loadingHeatmap||this.loadingCalendar||(this.loadingMarket=!1)},getFearGreedClass:function(t){return t?t<=25?"extreme-fear":t<=45?"fear":t<=55?"neutral":t<=75?"greed":"extreme-greed":""},getVixLevel:function(t){return t?t<15?"low":t<25?"medium":"high":""},formatNum:function(t){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2;return void 0===t||null===t||isNaN(t)?"--":Number(t).toFixed(a)},getHeatmapStyle:function(t){var a=parseFloat(t)||0,s=Math.min(Math.abs(a)/5,1),e=this.isDarkTheme;if(a>=0){var i=e?a>2?"#fff":"#4ade80":a>2?"#fff":"#166534";return{background:"rgba(34, 197, 94, ".concat(.15+.6*s,")"),color:i}}var n=e?a<-2?"#fff":"#f87171":a<-2?"#fff":"#991b1b";return{background:"rgba(239, 68, 68, ".concat(.15+.6*s,")"),color:n}},getCountryFlag:function(t){var a={US:"🇺🇸",CN:"🇨🇳",EU:"🇪🇺",JP:"🇯🇵",UK:"🇬🇧",DE:"🇩🇪",AU:"🇦🇺",CA:"🇨🇦"};return a[t]||"🌍"},formatCalendarDate:function(t){if(!t)return"";try{var a=new Date(t),s=new Date,e=new Date(s);if(e.setDate(e.getDate()+1),a.toDateString()===s.toDateString())return this.isZhLocale?"今天":"Today";if(a.toDateString()===e.toDateString())return this.isZhLocale?"明天":"Tmrw";var i=a.getMonth()+1,n=a.getDate();return"".concat(i,"/").concat(n)}catch(r){return t}},formatPrice:function(t){return t?t>=1e4?(t/1e3).toFixed(1)+"K":t>=1e3?t.toFixed(0):t.toFixed(2):"--"},formatHeatmapPrice:function(t){return t?t>=1e4?"$"+(t/1e3).toFixed(1)+"K":t>=1e3?"$"+t.toFixed(0):t>=1?"$"+t.toFixed(2):"$"+t.toFixed(4):""},getHeatmapName:function(t){return"sectors"===this.heatmapType||"commodities"===this.heatmapType||"forex"===this.heatmapType?this.isZhLocale?t.name_cn||t.name:t.name_en||t.name:t.name},getImpactClass:function(t){return t.actual_impact||t.expected_impact||"neutral"},getMarketColor:function(t){var a={USStock:"green",Crypto:"purple",Forex:"gold",Futures:"cyan"};return a[t]||"default"},getCurrencySymbol:function(t){return"$"},formatCreditNum:function(t){if(void 0===t||null===t||""===t)return"--";var a=Number(t);return Number.isNaN(a)?String(t):Number.isInteger(a)?String(a):a.toFixed(2)},refreshUserInfoFromServer:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return a.p=0,a.n=1,(0,p.ug)();case 1:s=a.v,s&&1===s.code&&s.data&&(t.localUserInfo=s.data,t.userId=s.data.id,t.$store.commit("SET_INFO",s.data)),a.n=3;break;case 2:a.p=2,a.v;case 3:return a.a(2)}},a,null,[[0,2]])}))()},startFastAnalysis:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e,i,n,r,o,l,u,h,p,v,y,f,b,_,k,C;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(!t.analyzing){a.n=1;break}return a.a(2);case 1:if(t.selectedSymbol){a.n=2;break}return t.$message.warning(t.$t("dashboard.analysis.message.selectSymbol")),a.a(2);case 2:return t.analyzing=!0,t.analysisError=null,t.analysisErrorTone="error",s=t.selectedSymbol.split(":"),e=(0,c.A)(s,2),i=e[0],n=e[1],r=t.$store.getters.lang||"zh-CN",o=!1,a.p=3,a.n=4,g({market:i,symbol:n,language:r,timeframe:"1D",async_submit:!0});case 4:if(l=a.v,!l||1!==l.code||!l.data){a.n=9;break}if("processing"!==l.data.status){a.n=6;break}return o=!0,u=l.data.remaining_credits,void 0!==u&&null!==u?t.$message.success(t.$t("fastAnalysis.analysisSubmittedWithCredits",{remaining:t.formatCreditNum(u)})):t.$message.success(t.$t("fastAnalysis.analysisSubmitted")||"任务已提交,正在分析中"),a.n=5,t.startTaskPolling(l.data.task_id);case 5:a.n=7;break;case 6:h=(0,m.A)({},l.data),delete h.credits_charged,delete h.remaining_credits,t.analysisResult=h,p=l.data.remaining_credits,void 0!==p&&null!==p?t.$message.success(t.$t("fastAnalysis.analysisCompleteWithCredits",{remaining:t.formatCreditNum(p)})):t.$message.success(t.$t("dashboard.analysis.message.analysisComplete"));case 7:return a.n=8,t.refreshUserInfoFromServer();case 8:a.n=10;break;case 9:throw new Error((null===l||void 0===l?void 0:l.msg)||"分析失败");case 10:a.n=12;break;case 11:a.p=11,C=a.v,f=null===C||void 0===C||null===(v=C.response)||void 0===v?void 0:v.status,b=(null===C||void 0===C||null===(y=C.response)||void 0===y?void 0:y.data)||{},_=b.msg,k=b.data,429===f&&k&&k.in_progress?(t.analysisErrorTone="warning",t.analysisError=t.$t("fastAnalysis.analysisInProgress"),t.$message.warning(t.analysisError)):400===f&&"Insufficient credits"===_?(t.analysisError=t.$t("fastAnalysis.insufficientCreditsDetail",{required:t.formatCreditNum(null===k||void 0===k?void 0:k.required),current:t.formatCreditNum(null===k||void 0===k?void 0:k.current),shortage:t.formatCreditNum(null===k||void 0===k?void 0:k.shortage)}),t.$message.error(t.analysisError)):(t.analysisError=_||(null===C||void 0===C?void 0:C.message)||t.$t("dashboard.analysis.message.analysisFailed"),t.$message.error(t.analysisError));case 12:return a.p=12,o||(t.analyzing=!1),a.f(12);case 13:return a.a(2)}},a,null,[[3,11,12,13]])}))()},loadHistoryList:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return t.historyLoading=!0,a.p=1,a.n=2,_({page:t.historyPage,pagesize:t.historyPageSize});case 2:s=a.v,s&&1===s.code&&s.data&&(t.historyList=s.data.list||[],t.historyTotal=s.data.total||0),a.n=4;break;case 3:a.p=3,a.v,t.$message.error(t.$t("dashboard.analysis.message.loadHistoryFailed")||"加载历史记录失败");case 4:return a.p=4,t.historyLoading=!1,a.f(4);case 5:return a.a(2)}},a,null,[[1,3,4,5]])}))()},viewHistoryResult:function(t){var a=this;return(0,u.A)((0,d.A)().m(function s(){var e,i,n,r;return(0,d.A)().w(function(s){while(1)switch(s.n){case 0:if("processing"!==(t.status||"").toLowerCase()){s.n=1;break}return a.$message.info(a.$t("fastAnalysis.analysisStillProcessing")||"该任务仍在处理中,请稍后刷新历史记录"),s.a(2);case 1:if(!t.full_result){s.n=2;break}return a.analysisResult=t.full_result,a.selectedSymbol="".concat(t.market,":").concat(t.symbol),a.showHistoryModal=!1,s.a(2);case 2:e=Number(t.price)||0,i=String(t.decision||"HOLD").toUpperCase(),n=null,r=null,e>0&&("SELL"===i?(n=1.05*e,r=.95*e):"BUY"===i&&(n=.95*e,r=1.05*e)),a.analysisResult={decision:t.decision,confidence:t.confidence,summary:t.summary,market_data:{current_price:t.price,change_24h:0},trading_plan:{entry_price:t.price,stop_loss:n,take_profit:r},scores:t.scores||{},reasons:t.reasons||[],risks:[],indicators:t.indicators||{},memory_id:t.id,analysis_time_ms:0},a.selectedSymbol="".concat(t.market,":").concat(t.symbol),a.showHistoryModal=!1;case 3:return s.a(2)}},s)}))()},deleteHistoryItem:function(t){var a=this;return(0,u.A)((0,d.A)().m(function s(){var e;return(0,d.A)().w(function(s){while(1)switch(s.p=s.n){case 0:return s.p=0,s.n=1,k(t.id);case 1:e=s.v,e&&1===e.code?(a.$message.success(a.$t("dashboard.analysis.message.deleteSuccess")),a.loadHistoryList()):a.$message.error((null===e||void 0===e?void 0:e.msg)||a.$t("dashboard.analysis.message.deleteFailed")),s.n=3;break;case 2:s.p=2,s.v,a.$message.error(a.$t("dashboard.analysis.message.deleteFailed"));case 3:return s.a(2)}},s,null,[[0,2]])}))()},formatTime:function(t){if(!t)return"-";var a=new Date(1e3*t);return a.toLocaleString("zh-CN")},formatIsoTime:function(t){if(!t)return"-";var a=new Date(t);return a.toLocaleString("zh-CN")},getStatusColor:function(t){var a={pending:"orange",processing:"blue",completed:"green",failed:"red"};return a[t]||"default"},getStatusText:function(t){var a={pending:"dashboard.analysis.status.pending",processing:"dashboard.analysis.status.processing",completed:"dashboard.analysis.status.completed",failed:"dashboard.analysis.status.failed"},s=a[t];return s?this.$t(s):t},loadUserInfo:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(t.loadingUserInfo=!0,a.p=1,!t.storeUserInfo||!t.storeUserInfo.email){a.n=2;break}return t.localUserInfo=t.storeUserInfo,t.userId=t.storeUserInfo.id,t.loadingUserInfo=!1,t.loadWatchlist(),a.a(2);case 2:return a.n=3,(0,p.ug)();case 3:s=a.v,s&&1===s.code&&s.data&&(t.localUserInfo=s.data,t.userId=s.data.id,t.$store.commit("SET_INFO",s.data),t.loadWatchlist()),a.n=5;break;case 4:a.p=4,a.v;case 5:return a.p=5,t.loadingUserInfo=!1,a.f(5);case 6:return a.a(2)}},a,null,[[1,4,5,6]])}))()},loadWatchlist:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(t.userId){a.n=1;break}return a.a(2);case 1:return t.loadingWatchlist=!0,a.p=2,a.n=3,(0,v.Qo)({userid:t.userId});case 3:if(s=a.v,!s||1!==s.code||!s.data){a.n=4;break}return t.watchlist=s.data.map(function(t){return(0,m.A)((0,m.A)({},t),{},{price:0,change:0,changePercent:0})}),a.n=4,t.loadWatchlistPrices();case 4:a.n=6;break;case 5:a.p=5,a.v;case 6:return a.p=6,t.loadingWatchlist=!1,a.f(6);case 7:return a.a(2)}},a,null,[[2,5,6,7]])}))()},loadWatchlistPrices:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e,i,n;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(t.watchlist&&0!==t.watchlist.length){a.n=1;break}return a.a(2);case 1:return a.p=1,s=t.watchlist.map(function(t){return{market:t.market,symbol:t.symbol}}),a.n=2,(0,v.ms)({watchlist:s});case 2:e=a.v,e&&1===e.code&&e.data&&(i={},n={},e.data.forEach(function(t){i["".concat(t.market,"-").concat(t.symbol)]=t,n["".concat(t.market,":").concat(t.symbol)]={price:t.price||0,change:t.changePercent||0}}),t.watchlistPrices=n,t.watchlist=t.watchlist.map(function(t){var a="".concat(t.market,"-").concat(t.symbol),s=i[a];return s?(0,m.A)((0,m.A)({},t),{},{price:s.price||0,change:s.change||0,changePercent:s.changePercent||0}):t})),a.n=4;break;case 3:a.p=3,a.v;case 4:return a.a(2)}},a,null,[[1,3]])}))()},startWatchlistPriceRefresh:function(){var t=this;this.watchlistPriceTimer=setInterval(function(){t.watchlist&&t.watchlist.length>0&&t.loadWatchlistPrices()},3e4),this.watchlist&&this.watchlist.length>0&&this.loadWatchlistPrices()},handleAddStock:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e,i,n,r,o,l;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(s="",e="",i="",!t.selectedSymbolForAdd){a.n=1;break}s=t.selectedSymbolForAdd.market,e=t.selectedSymbolForAdd.symbol.toUpperCase(),i=t.selectedSymbolForAdd.name||"",a.n=4;break;case 1:if(!t.symbolSearchKeyword||!t.symbolSearchKeyword.trim()){a.n=3;break}if(t.selectedMarketTab){a.n=2;break}return t.$message.warning(t.$t("dashboard.analysis.modal.addStock.pleaseSelectMarket")),a.a(2);case 2:s=t.selectedMarketTab,e=t.symbolSearchKeyword.trim().toUpperCase(),i="",a.n=4;break;case 3:return t.$message.warning(t.$t("dashboard.analysis.modal.addStock.pleaseSelectOrEnterSymbol")),a.a(2);case 4:return t.addingStock=!0,a.p=5,a.n=6,(0,v.dp)({userid:t.userId,market:s,symbol:e,name:i});case 6:if(n=a.v,!n||1!==n.code){a.n=8;break}return t.$message.success(t.$t("dashboard.analysis.message.addStockSuccess")),t.handleCloseAddStockModal(),a.n=7,t.loadWatchlist();case 7:a.n=9;break;case 8:t.$message.error((null===n||void 0===n?void 0:n.msg)||t.$t("dashboard.analysis.message.addStockFailed"));case 9:a.n=11;break;case 10:a.p=10,l=a.v,o=(null===l||void 0===l||null===(r=l.response)||void 0===r||null===(r=r.data)||void 0===r?void 0:r.msg)||(null===l||void 0===l?void 0:l.message)||t.$t("dashboard.analysis.message.addStockFailed"),t.$message.error(o);case 11:return a.p=11,t.addingStock=!1,a.f(11);case 12:return a.a(2)}},a,null,[[5,10,11,12]])}))()},handleCloseAddStockModal:function(){this.showAddStockModal=!1,this.selectedSymbolForAdd=null,this.symbolSearchKeyword="",this.symbolSearchResults=[],this.hasSearched=!1,this.selectedMarketTab=this.marketTypes.length>0?this.marketTypes[0].value:""},handleMarketTabChange:function(t){this.selectedMarketTab=t,this.symbolSearchKeyword="",this.symbolSearchResults=[],this.selectedSymbolForAdd=null,this.hasSearched=!1,this.loadHotSymbols(t)},handleSymbolSearchInput:function(t){var a=this,s=t.target.value;if(this.symbolSearchKeyword=s,this.searchTimer&&clearTimeout(this.searchTimer),!s||""===s.trim())return this.symbolSearchResults=[],this.hasSearched=!1,void(this.selectedSymbolForAdd=null);this.searchTimer=setTimeout(function(){a.searchSymbolsInModal(s)},500)},handleSearchOrInput:function(t){t&&t.trim()&&(this.selectedMarketTab?this.symbolSearchResults.length>0||(this.hasSearched&&0===this.symbolSearchResults.length?this.handleDirectAdd():this.searchSymbolsInModal(t)):this.$message.warning(this.$t("dashboard.analysis.modal.addStock.pleaseSelectMarket")))},searchSymbolsInModal:function(t){var a=this;return(0,u.A)((0,d.A)().m(function s(){var e;return(0,d.A)().w(function(s){while(1)switch(s.p=s.n){case 0:if(t&&""!==t.trim()){s.n=1;break}return a.symbolSearchResults=[],a.hasSearched=!1,s.a(2);case 1:if(a.selectedMarketTab){s.n=2;break}return a.$message.warning(a.$t("dashboard.analysis.modal.addStock.pleaseSelectMarket")),s.a(2);case 2:return a.searchingSymbols=!0,a.hasSearched=!0,s.p=3,s.n=4,(0,v._3)({market:a.selectedMarketTab,keyword:t.trim(),limit:20});case 4:e=s.v,e&&1===e.code&&e.data&&e.data.length>0?a.symbolSearchResults=e.data:(a.symbolSearchResults=[],a.selectedSymbolForAdd={market:a.selectedMarketTab,symbol:t.trim().toUpperCase(),name:""}),s.n=6;break;case 5:s.p=5,s.v,a.symbolSearchResults=[],a.selectedSymbolForAdd={market:a.selectedMarketTab,symbol:t.trim().toUpperCase(),name:""};case 6:return s.p=6,a.searchingSymbols=!1,s.f(6);case 7:return s.a(2)}},s,null,[[3,5,6,7]])}))()},handleDirectAdd:function(){this.symbolSearchKeyword&&this.symbolSearchKeyword.trim()?this.selectedMarketTab?this.selectedSymbolForAdd={market:this.selectedMarketTab,symbol:this.symbolSearchKeyword.trim().toUpperCase(),name:""}:this.$message.warning(this.$t("dashboard.analysis.modal.addStock.pleaseSelectMarket")):this.$message.warning(this.$t("dashboard.analysis.modal.addStock.pleaseEnterSymbol"))},selectSymbol:function(t){this.selectedSymbolForAdd={market:t.market,symbol:t.symbol,name:t.name||t.symbol}},loadHotSymbols:function(t){var a=this;return(0,u.A)((0,d.A)().m(function s(){var e;return(0,d.A)().w(function(s){while(1)switch(s.p=s.n){case 0:if(t||(t=a.selectedMarketTab||(a.marketTypes.length>0?a.marketTypes[0].value:"")),t){s.n=1;break}return s.a(2);case 1:return a.loadingHotSymbols=!0,s.p=2,s.n=3,(0,v.z6)({market:t,limit:10});case 3:e=s.v,e&&1===e.code&&e.data?a.hotSymbols=e.data:a.hotSymbols=[],s.n=5;break;case 4:s.p=4,s.v,a.hotSymbols=[];case 5:return s.p=5,a.loadingHotSymbols=!1,s.f(5);case 6:return s.a(2)}},s,null,[[2,4,5,6]])}))()},removeFromWatchlist:function(t){var a=arguments,s=this;return(0,u.A)((0,d.A)().m(function e(){var i,r,o;return(0,d.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(s.userId){e.n=1;break}return e.a(2);case 1:return i="object"===(0,n.A)(t)?t.symbol:t,r="object"===(0,n.A)(t)?t.market:a[1],e.p=2,e.n=3,(0,v.mk)({userid:s.userId,symbol:i,market:r});case 3:if(o=e.v,!o||1!==o.code){e.n=5;break}return s.$message.success(s.$t("dashboard.analysis.message.removeStockSuccess")),e.n=4,s.loadWatchlist();case 4:e.n=6;break;case 5:s.$message.error((null===o||void 0===o?void 0:o.msg)||s.$t("dashboard.analysis.message.removeStockFailed"));case 6:e.n=8;break;case 7:e.p=7,e.v,s.$message.error(s.$t("dashboard.analysis.message.removeStockFailed"));case 8:return e.a(2)}},e,null,[[2,7]])}))()},getMarketName:function(t){return this.$t("dashboard.analysis.market.".concat(t))||t},formatNumber:function(t){return"string"===typeof t?t:t.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})},loadMarketTypes:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return a.p=0,a.n=1,(0,v.iO)();case 1:s=a.v,s&&1===s.code&&s.data&&Array.isArray(s.data)?t.marketTypes=s.data.map(function(t){return{value:t.value,i18nKey:t.i18nKey||"dashboard.analysis.market.".concat(t.value)}}):t.marketTypes=[{value:"USStock",i18nKey:"dashboard.analysis.market.USStock"},{value:"Crypto",i18nKey:"dashboard.analysis.market.Crypto"},{value:"Forex",i18nKey:"dashboard.analysis.market.Forex"},{value:"Futures",i18nKey:"dashboard.analysis.market.Futures"}],a.n=3;break;case 2:a.p=2,a.v,t.marketTypes=[{value:"USStock",i18nKey:"dashboard.analysis.market.USStock"},{value:"Crypto",i18nKey:"dashboard.analysis.market.Crypto"},{value:"Forex",i18nKey:"dashboard.analysis.market.Forex"},{value:"Futures",i18nKey:"dashboard.analysis.market.Futures"}];case 3:t.marketTypes.length>0&&!t.selectedMarketTab&&(t.selectedMarketTab=t.marketTypes[0].value);case 4:return a.a(2)}},a,null,[[0,2]])}))()}},watch:{presetSymbol:function(t){t&&t!==this.selectedSymbol&&(this.selectedSymbol=t,this.analysisResult=null,this.analysisError=null,this.analysisErrorTone="error")},autoAnalyzeSignal:function(t){var a=this;t&&(this.presetSymbol&&this.presetSymbol!==this.selectedSymbol&&(this.selectedSymbol=this.presetSymbol),this.$nextTick(function(){a.startFastAnalysis()}))},showAddStockModal:function(t){t?(this.marketTypes.length>0&&!this.selectedMarketTab&&(this.selectedMarketTab=this.marketTypes[0].value),this.selectedMarketTab&&this.loadHotSymbols(this.selectedMarketTab)):(this.selectedSymbolForAdd=null,this.symbolSearchKeyword="",this.symbolSearchResults=[],this.hasSearched=!1,this.searchTimer&&(clearTimeout(this.searchTimer),this.searchTimer=null))}}},N=F,I=(0,x.A)(N,e,i,!1,null,"06c771c0",null),D=I.exports},44146:function(t,a,s){s.d(a,{EF:function(){return l},f$:function(){return r},kF:function(){return o},r9:function(){return c},yI:function(){return n}});var e=s(75769),i="/api/global-market";function n(){return(0,e.Ay)({url:"".concat(i,"/overview"),method:"get"})}function r(){return(0,e.Ay)({url:"".concat(i,"/heatmap"),method:"get"})}function o(){return(0,e.Ay)({url:"".concat(i,"/calendar"),method:"get"})}function l(){return(0,e.Ay)({url:"".concat(i,"/sentiment"),method:"get"})}function c(t){return(0,e.Ay)({url:"".concat(i,"/opportunities"),method:"get",params:t})}},35038:function(t,a,s){s.d(a,{Qo:function(){return n},_3:function(){return d},dp:function(){return r},iO:function(){return c},mk:function(){return o},ms:function(){return l},z6:function(){return u}});var e=s(75769),i={GetWatchlist:"/api/market/watchlist/get",AddWatchlist:"/api/market/watchlist/add",RemoveWatchlist:"/api/market/watchlist/remove",GetWatchlistPrices:"/api/market/watchlist/prices",MultiAnalysis:"/api/analysis/multiAnalysis",CreateAnalysisTask:"/api/analysis/createTask",GetAnalysisTaskStatus:"/api/analysis/getTaskStatus",GetAnalysisHistoryList:"/api/analysis/getHistoryList",DeleteAnalysisTask:"/api/analysis/deleteTask",ReflectAnalysis:"/api/analysis/reflect",ChatMessage:"/api/ai/chat/message",GetChatHistory:"/api/ai/chat/history",SaveChatHistory:"/api/ai/chat/history/save",GetConfig:"/api/market/config",GetMenuFooterConfig:"/api/market/menuFooterConfig",GetMarketTypes:"/api/market/types",SearchSymbols:"/api/market/symbols/search",GetHotSymbols:"/api/market/symbols/hot"};function n(t){return(0,e.Ay)({url:i.GetWatchlist,method:"get",params:t})}function r(t){return(0,e.Ay)({url:i.AddWatchlist,method:"post",data:t})}function o(t){return(0,e.Ay)({url:i.RemoveWatchlist,method:"post",data:t})}function l(t){return(0,e.Ay)({url:i.GetWatchlistPrices,method:"get",params:{watchlist:JSON.stringify(t.watchlist||[])}})}function c(){return(0,e.Ay)({url:i.GetMarketTypes,method:"get"})}function d(t){return(0,e.Ay)({url:i.SearchSymbols,method:"get",params:t})}function u(t){return(0,e.Ay)({url:i.GetHotSymbols,method:"get",params:t})}},24364:function(t,a,s){s.d(a,{$p:function(){return o},Dt:function(){return i},Iw:function(){return v},Ps:function(){return n},Xg:function(){return r},_3:function(){return g},aU:function(){return h},bC:function(){return l},cg:function(){return y},ei:function(){return m},f:function(){return b},iO:function(){return _},qS:function(){return f},qu:function(){return p},sk:function(){return u},w1:function(){return c},yr:function(){return d}});var e=s(75769);function i(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,e.Ay)({url:"/api/portfolio/positions",method:"get",params:t})}function n(t){return(0,e.Ay)({url:"/api/portfolio/positions",method:"post",data:t})}function r(t,a){return(0,e.Ay)({url:"/api/portfolio/positions/".concat(t),method:"put",data:a})}function o(t){return(0,e.Ay)({url:"/api/portfolio/positions/".concat(t),method:"delete"})}function l(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,e.Ay)({url:"/api/portfolio/summary",method:"get",params:t})}function c(){return(0,e.Ay)({url:"/api/portfolio/monitors",method:"get"})}function d(t){return(0,e.Ay)({url:"/api/portfolio/monitors",method:"post",data:t})}function u(t,a){return(0,e.Ay)({url:"/api/portfolio/monitors/".concat(t),method:"put",data:a})}function m(t){return(0,e.Ay)({url:"/api/portfolio/monitors/".concat(t),method:"delete"})}function h(t){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return(0,e.Ay)({url:"/api/portfolio/monitors/".concat(t,"/run"),method:"post",data:a})}function p(){return(0,e.Ay)({url:"/api/portfolio/alerts",method:"get"})}function v(t){return(0,e.Ay)({url:"/api/portfolio/alerts",method:"post",data:t})}function y(t,a){return(0,e.Ay)({url:"/api/portfolio/alerts/".concat(t),method:"put",data:a})}function f(t){return(0,e.Ay)({url:"/api/portfolio/alerts/".concat(t),method:"delete"})}function b(){return(0,e.Ay)({url:"/api/portfolio/groups",method:"get"})}function g(t){return(0,e.Ay)({url:"/api/market/symbols/search",method:"post",data:t})}function _(){return(0,e.Ay)({url:"/api/market/types",method:"get"})}},21560:function(t,a,s){s.d(a,{A:function(){return i}});s(52675),s(89463),s(2259),s(26099),s(47764),s(62953);var e=s(44735);function i(t){if(null!=t){var a=t["function"==typeof Symbol&&Symbol.iterator||"@@iterator"],s=0;if(a)return a.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length))return{next:function(){return t&&s>=t.length&&(t=void 0),{value:t&&t[s++],done:!t}}}}throw new TypeError((0,e.A)(t)+" is not iterable")}}}]); \ No newline at end of file diff --git a/frontend/dist/js/221.965c8579.js b/frontend/dist/js/221.965c8579.js deleted file mode 100644 index d6fef97..0000000 --- a/frontend/dist/js/221.965c8579.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self["webpackChunkvue_antd_pro"]=self["webpackChunkvue_antd_pro"]||[]).push([[221],{18221:function(e,t,a){a.r(t),a.d(t,{default:function(){return v}});var r=function(){var e=this,t=e._self._c;return t("div",{staticClass:"profile-page",class:{"theme-dark":e.isDarkTheme}},[t("div",{staticClass:"page-header"},[t("h2",{staticClass:"page-title"},[t("a-icon",{attrs:{type:"user"}}),t("span",[e._v(e._s(e.$t("profile.title")||"My Profile"))])],1),t("p",{staticClass:"page-desc"},[e._v(e._s(e.$t("profile.description")||"Manage your account settings and preferences"))])]),t("a-row",{staticClass:"profile-cards-row",attrs:{gutter:24}},[t("a-col",{staticClass:"profile-card-col",attrs:{xs:24,md:8}},[t("a-card",{staticClass:"profile-card",attrs:{bordered:!1}},[t("div",{staticClass:"avatar-section"},[t("a-avatar",{attrs:{size:100,src:e.profile.avatar||"/avatar2.jpg"}}),t("h3",{staticClass:"username"},[e._v(e._s(e.profile.nickname||e.profile.username))]),t("p",{staticClass:"user-role"},[t("a-tag",{attrs:{color:e.getRoleColor(e.profile.role)}},[e._v(" "+e._s(e.getRoleLabel(e.profile.role))+" ")]),e.isVip?t("a-tag",{attrs:{color:"gold"}},[t("a-icon",{attrs:{type:"crown"}}),e._v(" VIP ")],1):e._e()],1)],1),t("a-divider"),t("div",{staticClass:"profile-info"},[t("div",{staticClass:"info-item"},[t("a-icon",{attrs:{type:"user"}}),t("span",{staticClass:"label"},[e._v(e._s(e.$t("profile.username")||"Username")+":")]),t("span",{staticClass:"value"},[e._v(e._s(e.profile.username))])],1),t("div",{staticClass:"info-item"},[t("a-icon",{attrs:{type:"mail"}}),t("span",{staticClass:"label"},[e._v(e._s(e.$t("profile.email")||"Email")+":")]),t("span",{staticClass:"value"},[e._v(e._s(e.profile.email||"-"))])],1),t("div",{staticClass:"info-item"},[t("a-icon",{attrs:{type:"calendar"}}),t("span",{staticClass:"label"},[e._v(e._s(e.$t("profile.lastLogin")||"Last Login")+":")]),t("span",{staticClass:"value"},[e._v(e._s(e.formatTime(e.profile.last_login_at)||"-"))])],1)])],1)],1),t("a-col",{staticClass:"right-cards-col",attrs:{xs:24,md:16}},[t("a-row",{staticClass:"right-cards-row",attrs:{gutter:16}},[t("a-col",{attrs:{xs:24,md:12}},[t("a-card",{staticClass:"credits-card",attrs:{bordered:!1}},[t("div",{staticClass:"credits-header"},[t("h3",{staticClass:"credits-title"},[t("a-icon",{attrs:{type:"wallet"}}),e._v(" "+e._s(e.$t("profile.credits.title")||"我的积分")+" ")],1)]),t("div",{staticClass:"credits-body"},[t("div",{staticClass:"credits-amount"},[t("span",{staticClass:"amount-value"},[e._v(e._s(e.formatCredits(e.billing.credits)))]),t("span",{staticClass:"amount-label"},[e._v(e._s(e.$t("profile.credits.unit")||"积分"))])]),e.billing.vip_expires_at?t("div",{staticClass:"vip-status"},[t("a-icon",{style:{color:e.isVip?"#faad14":"#999"},attrs:{type:"crown"}}),e.isVip?t("span",{staticClass:"vip-active"},[e._v(" "+e._s(e.$t("profile.credits.vipExpires")||"VIP有效期至")+": "+e._s(e.formatDate(e.billing.vip_expires_at))+" ")]):t("span",{staticClass:"vip-expired"},[e._v(" "+e._s(e.$t("profile.credits.vipExpired")||"VIP已过期")+" ")])],1):e.billing.is_vip?e._e():t("div",{staticClass:"vip-status"},[t("span",{staticClass:"no-vip"},[e._v(e._s(e.$t("profile.credits.noVip")||"非VIP用户"))])])]),t("a-divider"),t("div",{staticClass:"credits-actions"},[t("a-button",{attrs:{type:"primary",icon:"shopping"},on:{click:e.handleRecharge}},[e._v(" "+e._s(e.$t("profile.credits.recharge")||"开通/充值")+" ")])],1),e.billing.billing_enabled?t("div",{staticClass:"credits-hint"},[t("a-icon",{attrs:{type:"info-circle"}}),t("span",[e._v(e._s(e.$t("profile.credits.hint")||"使用AI分析/回测/监控等功能会消耗积分;VIP仅可免费使用VIP免费指标。"))])],1):e._e()],1)],1),t("a-col",{attrs:{xs:24,md:12}},[t("a-card",{staticClass:"referral-card",attrs:{bordered:!1}},[t("div",{staticClass:"referral-header"},[t("h3",{staticClass:"referral-title"},[t("a-icon",{attrs:{type:"team"}}),e._v(" "+e._s(e.$t("profile.referral.title")||"邀请好友")+" ")],1)]),t("div",{staticClass:"referral-body"},[t("div",{staticClass:"referral-stats"},[t("div",{staticClass:"stat-item"},[t("span",{staticClass:"stat-value"},[e._v(e._s(e.referralData.total||0))]),t("span",{staticClass:"stat-label"},[e._v(e._s(e.$t("profile.referral.totalInvited")||"已邀请"))])]),e.referralData.referral_bonus>0?t("div",{staticClass:"stat-item"},[t("span",{staticClass:"stat-value"},[e._v("+"+e._s(e.referralData.referral_bonus))]),t("span",{staticClass:"stat-label"},[e._v(e._s(e.$t("profile.referral.bonusPerInvite")||"每邀请获得"))])]):e._e()]),t("a-divider",{staticStyle:{margin:"12px 0"}}),t("div",{staticClass:"referral-link-section"},[t("div",{staticClass:"link-label"},[e._v(e._s(e.$t("profile.referral.yourLink")||"您的邀请链接"))]),t("div",{staticClass:"link-box"},[t("a-input",{attrs:{value:e.referralLink,readonly:"",size:"small"}},[t("a-tooltip",{attrs:{slot:"suffix",title:e.$t("profile.referral.copyLink")||"复制链接"},slot:"suffix"},[t("a-icon",{staticStyle:{cursor:"pointer"},attrs:{type:"copy"},on:{click:e.copyReferralLink}})],1)],1)],1)]),e.referralData.register_bonus>0?t("div",{staticClass:"referral-hint"},[t("a-icon",{attrs:{type:"gift"}}),t("span",[e._v(e._s(e.$t("profile.referral.newUserBonus")||"新用户注册获得")+" "+e._s(e.referralData.register_bonus)+" "+e._s(e.$t("profile.credits.unit")||"积分"))])],1):e._e()],1)])],1)],1)],1)],1),t("a-row",{staticStyle:{"margin-top":"24px"},attrs:{gutter:24}},[t("a-col",{attrs:{xs:24}},[t("a-card",{staticClass:"edit-card",attrs:{bordered:!1}},[t("a-tabs",{model:{value:e.activeTab,callback:function(t){e.activeTab=t},expression:"activeTab"}},[t("a-tab-pane",{key:"basic",attrs:{tab:e.$t("profile.basicInfo")||"Basic Info"}},[t("a-form",{staticClass:"profile-form",attrs:{form:e.profileForm,layout:"vertical"}},[t("a-form-item",{attrs:{label:e.$t("profile.nickname")||"Nickname"}},[t("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["nickname",{initialValue:e.profile.nickname}],expression:"['nickname', { initialValue: profile.nickname }]"}],attrs:{placeholder:e.$t("profile.nicknamePlaceholder")||"Enter your nickname"}},[t("a-icon",{attrs:{slot:"prefix",type:"smile"},slot:"prefix"})],1)],1),t("a-form-item",{attrs:{label:e.$t("profile.email")||"Email"}},[t("a-input",{attrs:{value:e.profile.email||"-",disabled:""}},[t("a-icon",{attrs:{slot:"prefix",type:"mail"},slot:"prefix"}),t("a-tooltip",{attrs:{slot:"suffix",title:e.$t("profile.emailCannotChange")||"Email cannot be changed after registration"},slot:"suffix"},[t("a-icon",{staticStyle:{color:"rgba(0,0,0,.45)"},attrs:{type:"info-circle"}})],1)],1)],1),t("a-form-item",[t("a-button",{attrs:{type:"primary",loading:e.saving},on:{click:e.handleSaveProfile}},[t("a-icon",{attrs:{type:"save"}}),e._v(" "+e._s(e.$t("common.save")||"Save")+" ")],1)],1)],1)],1),t("a-tab-pane",{key:"password",attrs:{tab:e.$t("profile.changePassword")||"Change Password"}},[t("a-form",{staticClass:"password-form",attrs:{form:e.passwordForm,layout:"vertical"}},[t("a-alert",{staticStyle:{"margin-bottom":"24px"},attrs:{message:e.$t("profile.passwordHintNew")||"For security, email verification is required to change password. Password must be at least 8 characters with uppercase, lowercase, and number.",type:"info",showIcon:""}}),t("a-form-item",{attrs:{label:e.$t("profile.verificationCode")||"Verification Code"}},[t("a-row",{attrs:{gutter:12}},[t("a-col",{attrs:{span:16}},[t("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["code",{rules:[{required:!0,message:e.$t("profile.codeRequired")||"Please enter verification code"}]}],expression:"['code', {\n rules: [{ required: true, message: $t('profile.codeRequired') || 'Please enter verification code' }]\n }]"}],attrs:{placeholder:e.$t("profile.codePlaceholder")||"Enter verification code"}},[t("a-icon",{attrs:{slot:"prefix",type:"safety-certificate"},slot:"prefix"})],1)],1),t("a-col",{attrs:{span:8}},[t("a-button",{attrs:{block:"",loading:e.sendingPwdCode,disabled:e.sendingPwdCode||e.pwdCodeCountdown>0||!e.profile.email},on:{click:e.handleSendPwdCode}},[e._v(" "+e._s(e.pwdCodeCountdown>0?"".concat(e.pwdCodeCountdown,"s"):e.$t("profile.sendCode")||"Send Code")+" ")])],1)],1),e.profile.email?t("div",{staticClass:"email-hint"},[e._v(" "+e._s(e.$t("profile.codeWillSendTo")||"Code will be sent to")+": "+e._s(e.profile.email)+" ")]):t("div",{staticClass:"email-hint email-warning"},[e._v(" "+e._s(e.$t("profile.noEmailWarning")||"Please set your email first in Basic Info tab")+" ")])],1),t("a-form-item",{attrs:{label:e.$t("profile.newPassword")||"New Password"}},[t("a-input-password",{directives:[{name:"decorator",rawName:"v-decorator",value:["new_password",{rules:[{required:!0,message:e.$t("profile.newPasswordRequired")||"Please enter new password"},{validator:e.validateNewPassword}]}],expression:"['new_password', {\n rules: [\n { required: true, message: $t('profile.newPasswordRequired') || 'Please enter new password' },\n { validator: validateNewPassword }\n ]\n }]"}],attrs:{placeholder:e.$t("profile.newPasswordPlaceholder")||"Enter new password"}},[t("a-icon",{attrs:{slot:"prefix",type:"lock"},slot:"prefix"})],1)],1),t("a-form-item",{attrs:{label:e.$t("profile.confirmPassword")||"Confirm Password"}},[t("a-input-password",{directives:[{name:"decorator",rawName:"v-decorator",value:["confirm_password",{rules:[{required:!0,message:e.$t("profile.confirmPasswordRequired")||"Please confirm password"},{validator:e.validateConfirmPassword}]}],expression:"['confirm_password', {\n rules: [\n { required: true, message: $t('profile.confirmPasswordRequired') || 'Please confirm password' },\n { validator: validateConfirmPassword }\n ]\n }]"}],attrs:{placeholder:e.$t("profile.confirmPasswordPlaceholder")||"Confirm new password"}},[t("a-icon",{attrs:{slot:"prefix",type:"lock"},slot:"prefix"})],1)],1),t("a-form-item",[t("a-button",{attrs:{type:"primary",loading:e.changingPassword,disabled:!e.profile.email},on:{click:e.handleChangePassword}},[t("a-icon",{attrs:{type:"key"}}),e._v(" "+e._s(e.$t("profile.changePassword")||"Change Password")+" ")],1)],1)],1)],1),t("a-tab-pane",{key:"credits",attrs:{tab:e.$t("profile.creditsLog")||"消费记录"}},[t("a-table",{attrs:{columns:e.creditsLogColumns,dataSource:e.creditsLog,loading:e.creditsLogLoading,pagination:e.creditsLogPagination,rowKey:function(e){return e.id},size:"small"},on:{change:e.handleCreditsLogChange},scopedSlots:e._u([{key:"action",fn:function(a){return[t("a-tag",{attrs:{color:e.getActionColor(a)}},[e._v(" "+e._s(e.getActionLabel(a))+" ")])]}},{key:"amount",fn:function(a){return[t("span",{class:a>=0?"amount-positive":"amount-negative"},[e._v(" "+e._s(a>=0?"+":"")+e._s(a)+" ")])]}},{key:"created_at",fn:function(t){return[e._v(" "+e._s(e.formatTime(t))+" ")]}}])})],1),t("a-tab-pane",{key:"notifications",attrs:{tab:e.$t("profile.notifications.title")||"通知设置"}},[t("div",{staticClass:"notification-settings-form"},[t("a-alert",{staticStyle:{"margin-bottom":"24px"},attrs:{message:e.$t("profile.notifications.hint")||"配置您的默认通知方式,在创建资产监控和预警时将自动使用这些设置",type:"info",showIcon:""}}),t("a-form",{staticStyle:{"max-width":"600px"},attrs:{form:e.notificationForm,layout:"vertical"}},[t("a-form-item",{attrs:{label:e.$t("profile.notifications.defaultChannels")||"默认通知渠道"}},[t("a-checkbox-group",{directives:[{name:"decorator",rawName:"v-decorator",value:["default_channels",{initialValue:e.notificationSettings.default_channels||["browser"]}],expression:"['default_channels', { initialValue: notificationSettings.default_channels || ['browser'] }]"}]},[t("a-row",{attrs:{gutter:16}},[t("a-col",{attrs:{span:8}},[t("a-checkbox",{attrs:{value:"browser"}},[t("a-icon",{attrs:{type:"bell"}}),e._v(" "+e._s(e.$t("profile.notifications.browser")||"站内通知")+" ")],1)],1),t("a-col",{attrs:{span:8}},[t("a-checkbox",{attrs:{value:"telegram"}},[t("a-icon",{attrs:{type:"send"}}),e._v(" Telegram ")],1)],1),t("a-col",{attrs:{span:8}},[t("a-checkbox",{attrs:{value:"email"}},[t("a-icon",{attrs:{type:"mail"}}),e._v(" "+e._s(e.$t("profile.notifications.email")||"邮件")+" ")],1)],1)],1),t("a-row",{staticStyle:{"margin-top":"8px"},attrs:{gutter:16}},[t("a-col",{attrs:{span:8}},[t("a-checkbox",{attrs:{value:"phone"}},[t("a-icon",{attrs:{type:"phone"}}),e._v(" "+e._s(e.$t("profile.notifications.phone")||"短信")+" ")],1)],1),t("a-col",{attrs:{span:8}},[t("a-checkbox",{attrs:{value:"discord"}},[t("a-icon",{attrs:{type:"message"}}),e._v(" Discord ")],1)],1),t("a-col",{attrs:{span:8}},[t("a-checkbox",{attrs:{value:"webhook"}},[t("a-icon",{attrs:{type:"api"}}),e._v(" Webhook ")],1)],1)],1)],1)],1),t("a-form-item",{attrs:{label:e.$t("profile.notifications.telegramBotToken")||"Telegram Bot Token"}},[t("a-input-password",{directives:[{name:"decorator",rawName:"v-decorator",value:["telegram_bot_token",{initialValue:e.notificationSettings.telegram_bot_token}],expression:"['telegram_bot_token', { initialValue: notificationSettings.telegram_bot_token }]"}],attrs:{placeholder:e.$t("profile.notifications.telegramBotTokenPlaceholder")||"请输入您的 Telegram Bot Token"}},[t("a-icon",{attrs:{slot:"prefix",type:"robot"},slot:"prefix"})],1),t("div",{staticClass:"field-hint"},[t("a-icon",{attrs:{type:"info-circle"}}),t("span",[e._v(" "+e._s(e.$t("profile.notifications.telegramBotTokenHint")||"通过 @BotFather 创建机器人获取 Token")+" "),t("a",{attrs:{href:"https://t.me/BotFather",target:"_blank",rel:"noopener noreferrer"}},[e._v("@BotFather")])])],1)],1),t("a-form-item",{attrs:{label:e.$t("profile.notifications.telegramChatId")||"Telegram Chat ID"}},[t("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["telegram_chat_id",{initialValue:e.notificationSettings.telegram_chat_id}],expression:"['telegram_chat_id', { initialValue: notificationSettings.telegram_chat_id }]"}],attrs:{placeholder:e.$t("profile.notifications.telegramPlaceholder")||"请输入您的 Telegram Chat ID(如 123456789)"}},[t("a-icon",{attrs:{slot:"prefix",type:"message"},slot:"prefix"})],1),t("div",{staticClass:"field-hint"},[t("a-icon",{attrs:{type:"info-circle"}}),t("span",[e._v(e._s(e.$t("profile.notifications.telegramHint")||"发送 /start 给 @userinfobot 可获取您的 Chat ID"))])],1)],1),t("a-form-item",{attrs:{label:e.$t("profile.notifications.notifyEmail")||"通知邮箱"}},[t("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["email",{initialValue:e.notificationSettings.email||e.profile.email}],expression:"['email', { initialValue: notificationSettings.email || profile.email }]"}],attrs:{placeholder:e.$t("profile.notifications.emailPlaceholder")||"接收通知的邮箱地址"}},[t("a-icon",{attrs:{slot:"prefix",type:"mail"},slot:"prefix"})],1),t("div",{staticClass:"field-hint"},[t("a-icon",{attrs:{type:"info-circle"}}),t("span",[e._v(e._s(e.$t("profile.notifications.emailHint")||"默认使用账户邮箱,可设置其他邮箱接收通知"))])],1)],1),t("a-form-item",{attrs:{label:e.$t("profile.notifications.phone")||"手机号(短信通知)"}},[t("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["phone",{initialValue:e.notificationSettings.phone}],expression:"['phone', { initialValue: notificationSettings.phone }]"}],attrs:{placeholder:e.$t("profile.notifications.phonePlaceholder")||"请输入手机号(如 +8613800138000)"}},[t("a-icon",{attrs:{slot:"prefix",type:"phone"},slot:"prefix"})],1),t("div",{staticClass:"field-hint"},[t("a-icon",{attrs:{type:"info-circle"}}),t("span",[e._v(e._s(e.$t("profile.notifications.phoneHint")||"需要管理员配置 Twilio 服务后才能使用短信通知"))])],1)],1),t("a-form-item",{attrs:{label:e.$t("profile.notifications.discordWebhook")||"Discord Webhook"}},[t("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["discord_webhook",{initialValue:e.notificationSettings.discord_webhook}],expression:"['discord_webhook', { initialValue: notificationSettings.discord_webhook }]"}],attrs:{placeholder:e.$t("profile.notifications.discordPlaceholder")||"https://discord.com/api/webhooks/..."}},[t("a-icon",{attrs:{slot:"prefix",type:"message"},slot:"prefix"})],1),t("div",{staticClass:"field-hint"},[t("a-icon",{attrs:{type:"info-circle"}}),t("span",[e._v(e._s(e.$t("profile.notifications.discordHint")||"在 Discord 服务器设置中创建 Webhook"))])],1)],1),t("a-form-item",{attrs:{label:e.$t("profile.notifications.webhookUrl")||"Webhook URL"}},[t("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["webhook_url",{initialValue:e.notificationSettings.webhook_url}],expression:"['webhook_url', { initialValue: notificationSettings.webhook_url }]"}],attrs:{placeholder:e.$t("profile.notifications.webhookPlaceholder")||"https://your-server.com/webhook"}},[t("a-icon",{attrs:{slot:"prefix",type:"api"},slot:"prefix"})],1),t("div",{staticClass:"field-hint"},[t("a-icon",{attrs:{type:"info-circle"}}),t("span",[e._v(e._s(e.$t("profile.notifications.webhookHint")||"自定义 Webhook 地址,将以 POST JSON 方式推送通知"))])],1)],1),t("a-form-item",{attrs:{label:e.$t("profile.notifications.webhookToken")||"Webhook Token(可选)"}},[t("a-input-password",{directives:[{name:"decorator",rawName:"v-decorator",value:["webhook_token",{initialValue:e.notificationSettings.webhook_token}],expression:"['webhook_token', { initialValue: notificationSettings.webhook_token }]"}],attrs:{placeholder:e.$t("profile.notifications.webhookTokenPlaceholder")||"用于验证请求的 Bearer Token"}},[t("a-icon",{attrs:{slot:"prefix",type:"key"},slot:"prefix"})],1),t("div",{staticClass:"field-hint"},[t("a-icon",{attrs:{type:"info-circle"}}),t("span",[e._v(e._s(e.$t("profile.notifications.webhookTokenHint")||"将作为 Authorization: Bearer Token 发送到 Webhook"))])],1)],1),t("a-form-item",[t("a-button",{attrs:{type:"primary",loading:e.savingNotifications},on:{click:e.handleSaveNotifications}},[t("a-icon",{attrs:{type:"save"}}),e._v(" "+e._s(e.$t("common.save")||"保存")+" ")],1),t("a-button",{staticStyle:{"margin-left":"12px"},attrs:{loading:e.testingNotification},on:{click:e.handleTestNotification}},[t("a-icon",{attrs:{type:"experiment"}}),e._v(" "+e._s(e.$t("profile.notifications.testBtn")||"发送测试通知")+" ")],1)],1)],1)],1)]),t("a-tab-pane",{key:"exchange",attrs:{tab:e.$t("profile.exchange.title")||"交易所配置"}},[t("div",{staticClass:"exchange-config-section"},[t("a-alert",{staticStyle:{"margin-bottom":"16px"},attrs:{message:e.$t("profile.exchange.hint"),type:"info",showIcon:""}}),t("div",{staticStyle:{"margin-bottom":"16px","text-align":"right"}},[t("a-button",{attrs:{type:"primary",icon:"plus"},on:{click:function(t){e.showAddExchangeModal=!0}}},[e._v(" "+e._s(e.$t("profile.exchange.addAccount"))+" ")])],1),t("a-table",{attrs:{columns:e.exchangeColumns,dataSource:e.exchangeCredentials,loading:e.exchangeLoading,rowKey:function(e){return e.id},size:"small"},scopedSlots:e._u([{key:"exchange_id",fn:function(a){return[t("span",{staticStyle:{"text-transform":"capitalize","font-weight":"500"}},[e._v(e._s(e.getExchangeDisplayName(a)))])]}},{key:"api_key_hint",fn:function(a,r){return[t("span",{staticClass:"credential-hint"},[e._v(e._s(a||r.name||"-"))])]}},{key:"created_at",fn:function(t){return[e._v(" "+e._s(e.formatTime(t))+" ")]}},{key:"action",fn:function(a,r){return[t("a-popconfirm",{attrs:{title:e.$t("profile.exchange.deleteConfirm"),okText:e.$t("common.confirm"),cancelText:e.$t("common.cancel")},on:{confirm:function(t){return e.handleDeleteCredential(r.id)}}},[t("a-button",{attrs:{type:"danger",size:"small",ghost:"",icon:"delete"}},[e._v(" "+e._s(e.$t("common.delete"))+" ")])],1)]}}])}),e.exchangeLoading||0!==e.exchangeCredentials.length?e._e():t("a-empty",{staticStyle:{"margin-top":"20px"}},[t("span",{attrs:{slot:"description"},slot:"description"},[e._v(e._s(e.$t("profile.exchange.noAccounts")))])])],1)]),t("a-tab-pane",{key:"referrals",attrs:{tab:e.$t("profile.referral.listTab")||"邀请列表"}},[t("a-table",{attrs:{columns:e.referralColumns,dataSource:e.referralData.list||[],loading:e.referralLoading,pagination:e.referralPagination,rowKey:function(e){return e.id},size:"small"},on:{change:e.handleReferralChange},scopedSlots:e._u([{key:"user",fn:function(a,r){return[t("div",{staticClass:"referral-user-cell"},[t("a-avatar",{attrs:{size:32,src:r.avatar||"/avatar2.jpg"}}),t("div",{staticClass:"user-info"},[t("span",{staticClass:"nickname"},[e._v(e._s(r.nickname||r.username))]),t("span",{staticClass:"username"},[e._v("@"+e._s(r.username))])])],1)]}},{key:"created_at",fn:function(t){return[e._v(" "+e._s(e.formatTime(t))+" ")]}}])}),e.referralLoading||e.referralData.list&&0!==e.referralData.list.length?e._e():t("a-empty",[t("span",{attrs:{slot:"description"},slot:"description"},[e._v(e._s(e.$t("profile.referral.noReferrals")||"暂无邀请记录"))]),t("a-button",{attrs:{type:"primary"},on:{click:e.copyReferralLink}},[e._v(" "+e._s(e.$t("profile.referral.shareNow")||"立即分享邀请")+" ")])],1)],1)],1)],1)],1)],1),t("a-modal",{attrs:{title:e.$t("profile.exchange.addTitle"),visible:e.showAddExchangeModal,confirmLoading:e.savingExchange,okText:e.$t("common.save"),cancelText:e.$t("common.cancel"),maskClosable:!1,width:"520px"},on:{ok:e.handleSaveExchange,cancel:function(t){e.showAddExchangeModal=!1}}},[t("a-form",{attrs:{form:e.exchangeForm,layout:"vertical"}},[t("a-form-item",{attrs:{label:e.$t("profile.exchange.selectExchange")}},[t("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["exchange_id",{rules:[{required:!0,message:e.$t("profile.exchange.selectExchange")}]}],expression:"['exchange_id', { rules: [{ required: true, message: $t('profile.exchange.selectExchange') }] }]"}],attrs:{placeholder:e.$t("profile.exchange.selectExchange")},on:{change:e.handleExchangeTypeChange}},[t("a-select-opt-group",{attrs:{label:e.$t("profile.exchange.typeCrypto")}},e._l(e.cryptoExchangeList,function(a){return t("a-select-option",{key:a.id,attrs:{value:a.id}},[e._v(" "+e._s(a.name)+" ")])}),1),t("a-select-opt-group",{attrs:{label:e.$t("profile.exchange.typeIBKR")}},[t("a-select-option",{attrs:{value:"ibkr"}},[e._v("Interactive Brokers (IBKR)")])],1),t("a-select-opt-group",{attrs:{label:e.$t("profile.exchange.typeMT5")}},[t("a-select-option",{attrs:{value:"mt5"}},[e._v("MetaTrader 5")])],1)],1)],1),t("a-form-item",{attrs:{label:e.$t("profile.exchange.accountName")}},[t("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["name"],expression:"['name']"}],attrs:{placeholder:e.$t("profile.exchange.accountNamePlaceholder")}})],1),"crypto"===e.addExchangeType?[t("a-form-item",{attrs:{label:e.$t("profile.exchange.apiKey")}},[t("a-input-password",{directives:[{name:"decorator",rawName:"v-decorator",value:["api_key",{rules:[{required:!0,message:"API Key is required"}]}],expression:"['api_key', { rules: [{ required: true, message: 'API Key is required' }] }]"}],attrs:{placeholder:"API Key",autocomplete:"new-password"}})],1),t("a-form-item",{attrs:{label:e.$t("profile.exchange.secretKey")}},[t("a-input-password",{directives:[{name:"decorator",rawName:"v-decorator",value:["secret_key",{rules:[{required:!0,message:"Secret Key is required"}]}],expression:"['secret_key', { rules: [{ required: true, message: 'Secret Key is required' }] }]"}],attrs:{placeholder:"Secret Key",autocomplete:"new-password"}})],1),e.addExchangeNeedsPassphrase?t("a-form-item",{attrs:{label:e.$t("profile.exchange.passphrase")}},[t("a-input-password",{directives:[{name:"decorator",rawName:"v-decorator",value:["passphrase"],expression:"['passphrase']"}],attrs:{placeholder:"Passphrase",autocomplete:"new-password"}})],1):e._e(),e.addExchangeShowDemo?t("a-form-item",[t("a-checkbox",{directives:[{name:"decorator",rawName:"v-decorator",value:["enable_demo_trading",{valuePropName:"checked",initialValue:!1}],expression:"['enable_demo_trading', { valuePropName: 'checked', initialValue: false }]"}]},[e._v(" "+e._s(e.$t("profile.exchange.demoTrading"))+" ")])],1):e._e()]:e._e(),"ibkr"===e.addExchangeType?[t("a-alert",{staticStyle:{"margin-bottom":"16px"},attrs:{type:"warning",showIcon:"",message:e.$t("profile.exchange.localDeploymentRequired"),description:e.$t("profile.exchange.localDeploymentHint")}}),t("a-form-item",{attrs:{label:e.$t("profile.exchange.ibkrHost")}},[t("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["ibkr_host",{initialValue:"127.0.0.1"}],expression:"['ibkr_host', { initialValue: '127.0.0.1' }]"}],attrs:{placeholder:"127.0.0.1"}})],1),t("a-form-item",{attrs:{label:e.$t("profile.exchange.ibkrPort")}},[t("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["ibkr_port",{initialValue:7497}],expression:"['ibkr_port', { initialValue: 7497 }]"}],staticStyle:{width:"100%"},attrs:{min:1,max:65535}}),t("div",{staticClass:"field-hint"},[t("a-icon",{attrs:{type:"info-circle"}}),t("span",[e._v(e._s(e.$t("profile.exchange.ibkrPortHint")))])],1)],1),t("a-form-item",{attrs:{label:e.$t("profile.exchange.ibkrClientId")}},[t("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["ibkr_client_id",{initialValue:1}],expression:"['ibkr_client_id', { initialValue: 1 }]"}],staticStyle:{width:"100%"},attrs:{min:1,max:999}})],1),t("a-form-item",{attrs:{label:e.$t("profile.exchange.ibkrAccount")}},[t("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["ibkr_account"],expression:"['ibkr_account']"}],attrs:{placeholder:"DU123456"}})],1)]:e._e(),"mt5"===e.addExchangeType?[t("a-alert",{staticStyle:{"margin-bottom":"16px"},attrs:{type:"warning",showIcon:"",message:e.$t("profile.exchange.localDeploymentRequired"),description:e.$t("profile.exchange.localDeploymentHint")}}),t("a-form-item",{attrs:{label:e.$t("profile.exchange.mt5Server")}},[t("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["mt5_server",{rules:[{required:!0,message:"Server is required"}]}],expression:"['mt5_server', { rules: [{ required: true, message: 'Server is required' }] }]"}],attrs:{placeholder:"MetaQuotes-Demo"}})],1),t("a-form-item",{attrs:{label:e.$t("profile.exchange.mt5Login")}},[t("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["mt5_login",{rules:[{required:!0,message:"Login is required"}]}],expression:"['mt5_login', { rules: [{ required: true, message: 'Login is required' }] }]"}],staticStyle:{width:"100%"},attrs:{min:1,placeholder:"12345678"}})],1),t("a-form-item",{attrs:{label:e.$t("profile.exchange.mt5Password")}},[t("a-input-password",{directives:[{name:"decorator",rawName:"v-decorator",value:["mt5_password",{rules:[{required:!0,message:"Password is required"}]}],expression:"['mt5_password', { rules: [{ required: true, message: 'Password is required' }] }]"}],attrs:{placeholder:"Password",autocomplete:"new-password"}})],1),t("a-form-item",{attrs:{label:e.$t("profile.exchange.mt5TerminalPath")}},[t("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["mt5_terminal_path"],expression:"['mt5_terminal_path']"}],attrs:{placeholder:"C:\\Program Files\\MetaTrader 5\\terminal64.exe"}}),t("div",{staticClass:"field-hint"},[t("a-icon",{attrs:{type:"info-circle"}}),t("span",[e._v(e._s(e.$t("profile.exchange.mt5TerminalPathHint")))])],1)],1)]:e._e(),e.addExchangeType?t("a-form-item",[t("a-button",{attrs:{block:"",loading:e.testingExchange},on:{click:e.handleTestExchangeConnection}},[t("a-icon",{attrs:{type:"api"}}),e._v(" "+e._s(e.$t("profile.exchange.testConnection"))+" ")],1),e.exchangeTestResult?t("div",{staticClass:"test-result-msg",class:e.exchangeTestResult.success?"success":"error"},[t("a-icon",{attrs:{type:e.exchangeTestResult.success?"check-circle":"close-circle"}}),e._v(" "+e._s(e.exchangeTestResult.message)+" ")],1):e._e()],1):e._e()],2)],1)],1)},i=[],n=a(76338),o=a(81127),s=a(56252),l=(a(74423),a(84841)),c=a(53003),d=a(42430),u=a(36911),p=a(55434),f={name:"Profile",mixins:[p.t],data:function(){return{loading:!1,saving:!1,changingPassword:!1,sendingPwdCode:!1,pwdCodeCountdown:0,pwdCodeTimer:null,activeTab:"basic",profile:{id:null,username:"",nickname:"",email:"",avatar:"",role:"user",last_login_at:null},creditsLog:[],creditsLogLoading:!1,creditsLogPagination:{current:1,pageSize:10,total:0},referralData:{list:[],total:0,referral_code:"",referral_bonus:0,register_bonus:0},referralLoading:!1,referralPagination:{current:1,pageSize:10,total:0},billing:{credits:0,is_vip:!1,vip_expires_at:null,billing_enabled:!1,feature_costs:{}},rechargeTelegramUrl:"https://t.me/your_support_bot",notificationSettings:{default_channels:["browser"],telegram_bot_token:"",telegram_chat_id:"",email:"",phone:"",discord_webhook:"",webhook_url:"",webhook_token:""},savingNotifications:!1,testingNotification:!1,exchangeCredentials:[],exchangeLoading:!1,showAddExchangeModal:!1,savingExchange:!1,testingExchange:!1,exchangeTestResult:null,addExchangeType:"",selectedExchangeId:"",cryptoExchangeList:[{id:"binance",name:"Binance"},{id:"okx",name:"OKX"},{id:"bitget",name:"Bitget"},{id:"bybit",name:"Bybit"},{id:"coinbaseexchange",name:"Coinbase"},{id:"kraken",name:"Kraken"},{id:"kucoin",name:"KuCoin"},{id:"gate",name:"Gate.io"},{id:"bitfinex",name:"Bitfinex"}]}},computed:{isDarkTheme:function(){return"dark"===this.navTheme||"realdark"===this.navTheme},isVip:function(){if(!this.billing.vip_expires_at)return!1;var e=new Date(this.billing.vip_expires_at);return e>new Date},creditsLogColumns:function(){return[{title:this.$t("profile.creditsLog.time")||"时间",dataIndex:"created_at",width:160,scopedSlots:{customRender:"created_at"}},{title:this.$t("profile.creditsLog.action")||"类型",dataIndex:"action",width:100,scopedSlots:{customRender:"action"}},{title:this.$t("profile.creditsLog.amount")||"变动",dataIndex:"amount",width:100,scopedSlots:{customRender:"amount"}},{title:this.$t("profile.creditsLog.balance")||"余额",dataIndex:"balance_after",width:100},{title:this.$t("profile.creditsLog.remark")||"备注",dataIndex:"remark",ellipsis:!0}]},referralColumns:function(){return[{title:this.$t("profile.referral.user")||"用户",dataIndex:"username",scopedSlots:{customRender:"user"}},{title:this.$t("profile.referral.registerTime")||"注册时间",dataIndex:"created_at",width:180,scopedSlots:{customRender:"created_at"}}]},referralLink:function(){var e=window.location.origin+window.location.pathname,t=this.referralData.referral_code||this.profile.id;return"".concat(e,"#/user/login?ref=").concat(t)},exchangeColumns:function(){return[{title:this.$t("profile.exchange.colExchange")||"Exchange",dataIndex:"exchange_id",width:140,scopedSlots:{customRender:"exchange_id"}},{title:this.$t("profile.exchange.colName")||"Name",dataIndex:"name",width:140,customRender:function(e){return e||"-"}},{title:this.$t("profile.exchange.colHint")||"Connection Info",dataIndex:"api_key_hint",scopedSlots:{customRender:"api_key_hint"}},{title:this.$t("profile.exchange.colCreatedAt")||"Created At",dataIndex:"created_at",width:180,scopedSlots:{customRender:"created_at"}},{title:this.$t("profile.exchange.colActions")||"Actions",width:120,scopedSlots:{customRender:"action"}}]},addExchangeNeedsPassphrase:function(){var e=["okx","bitget","kucoin"];return e.includes(this.selectedExchangeId)},addExchangeShowDemo:function(){return"binance"===this.selectedExchangeId}},watch:{activeTab:function(e){"credits"===e&&0===this.creditsLog.length&&this.loadCreditsLog(),"referrals"!==e||this.referralData.list&&0!==this.referralData.list.length||this.loadReferrals(),"notifications"!==e||this.notificationSettings.telegram_chat_id||this.notificationSettings.discord_webhook||this.loadNotificationSettings(),"exchange"===e&&0===this.exchangeCredentials.length&&this.loadExchangeCredentials()}},beforeCreate:function(){this.profileForm=this.$form.createForm(this,{name:"profile"}),this.passwordForm=this.$form.createForm(this,{name:"password"}),this.notificationForm=this.$form.createForm(this,{name:"notification"}),this.exchangeForm=this.$form.createForm(this,{name:"exchange"})},mounted:function(){this.loadProfile(),this.loadReferrals()},beforeDestroy:function(){this.pwdCodeTimer&&clearInterval(this.pwdCodeTimer)},methods:{loadProfile:function(){var e=this;return(0,s.A)((0,o.A)().m(function t(){var a;return(0,o.A)().w(function(t){while(1)switch(t.p=t.n){case 0:return e.loading=!0,t.p=1,t.n=2,(0,l.E$)();case 2:a=t.v,1===a.code?(e.profile=a.data,a.data.billing&&(e.billing=a.data.billing),a.data.notification_settings&&(e.notificationSettings={default_channels:a.data.notification_settings.default_channels||["browser"],telegram_bot_token:a.data.notification_settings.telegram_bot_token||"",telegram_chat_id:a.data.notification_settings.telegram_chat_id||"",email:a.data.notification_settings.email||a.data.email||"",phone:a.data.notification_settings.phone||"",discord_webhook:a.data.notification_settings.discord_webhook||"",webhook_url:a.data.notification_settings.webhook_url||"",webhook_token:a.data.notification_settings.webhook_token||""}),e.$nextTick(function(){e.profileForm.setFieldsValue({nickname:e.profile.nickname,email:e.profile.email})})):e.$message.error(a.msg||"Failed to load profile"),t.n=4;break;case 3:t.p=3,t.v,e.$message.error("Failed to load profile");case 4:return t.p=4,e.loading=!1,t.f(4);case 5:return t.a(2)}},t,null,[[1,3,4,5]])}))()},loadRechargeUrl:function(){var e=this;return(0,s.A)((0,o.A)().m(function t(){var a;return(0,o.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if("admin"!==e.profile.role){t.n=4;break}return t.p=1,t.n=2,(0,c.YT)();case 2:a=t.v,1===a.code&&a.data&&a.data.billing&&(e.rechargeTelegramUrl=a.data.billing.RECHARGE_TELEGRAM_URL||e.rechargeTelegramUrl),t.n=4;break;case 3:t.p=3,t.v;case 4:return t.a(2)}},t,null,[[1,3]])}))()},handleRecharge:function(){this.$router.push("/billing")},formatCredits:function(e){return e||0===e?Number(e).toLocaleString("en-US",{minimumFractionDigits:0,maximumFractionDigits:2}):"0"},formatDate:function(e){if(!e)return"";var t=new Date(e);return t.toLocaleDateString()},handleSaveProfile:function(){var e=this;this.profileForm.validateFields(function(){var t=(0,s.A)((0,o.A)().m(function t(a,r){var i;return(0,o.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(!a){t.n=1;break}return t.a(2);case 1:return e.saving=!0,t.p=2,t.n=3,(0,l.r7)(r);case 3:i=t.v,1===i.code?(e.$message.success(i.msg||"Profile updated successfully"),e.loadProfile()):e.$message.error(i.msg||"Update failed"),t.n=5;break;case 4:t.p=4,t.v,e.$message.error("Update failed");case 5:return t.p=5,e.saving=!1,t.f(5);case 6:return t.a(2)}},t,null,[[2,4,5,6]])}));return function(e,a){return t.apply(this,arguments)}}())},validateConfirmPassword:function(e,t,a){var r=this.passwordForm.getFieldValue("new_password");t&&t!==r?a(this.$t("profile.passwordMismatch")||"Passwords do not match"):a()},handleSendPwdCode:function(){var e=this;return(0,s.A)((0,o.A)().m(function t(){var r,i,n,s,l;return(0,o.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(e.profile.email){t.n=1;break}return e.$message.error(e.$t("profile.noEmailWarning")||"Please set your email first"),t.a(2);case 1:return e.sendingPwdCode=!0,t.p=2,t.n=3,a.e(824).then(a.bind(a,95824));case 3:return r=t.v,i=r.sendVerificationCode,t.n=4,i({email:e.profile.email,type:"change_password"});case 4:n=t.v,1===n.code?(e.$message.success(e.$t("profile.codeSent")||"Verification code sent"),e.startPwdCodeCountdown()):e.$message.error(n.msg||"Failed to send code"),t.n=6;break;case 5:t.p=5,l=t.v,e.$message.error((null===(s=l.response)||void 0===s||null===(s=s.data)||void 0===s?void 0:s.msg)||"Failed to send code");case 6:return t.p=6,e.sendingPwdCode=!1,t.f(6);case 7:return t.a(2)}},t,null,[[2,5,6,7]])}))()},startPwdCodeCountdown:function(){var e=this;this.pwdCodeCountdown=60,this.pwdCodeTimer=setInterval(function(){e.pwdCodeCountdown--,e.pwdCodeCountdown<=0&&(clearInterval(e.pwdCodeTimer),e.pwdCodeTimer=null)},1e3)},validateNewPassword:function(e,t,a){t?t.length<8?a(new Error(this.$t("user.register.pwdMinLength")||"At least 8 characters")):/[A-Z]/.test(t)?/[a-z]/.test(t)?/[0-9]/.test(t)?a():a(new Error(this.$t("user.register.pwdNumber")||"At least one number")):a(new Error(this.$t("user.register.pwdLowercase")||"At least one lowercase letter")):a(new Error(this.$t("user.register.pwdUppercase")||"At least one uppercase letter")):a()},handleChangePassword:function(){var e=this;this.passwordForm.validateFields(function(){var t=(0,s.A)((0,o.A)().m(function t(r,i){var n,s,l,c,d;return(0,o.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(!r){t.n=1;break}return t.a(2);case 1:return e.changingPassword=!0,t.p=2,t.n=3,a.e(824).then(a.bind(a,95824));case 3:return n=t.v,s=n.changePassword,t.n=4,s({code:i.code,new_password:i.new_password});case 4:l=t.v,1===l.code?(e.$message.success(l.msg||"Password changed successfully"),e.passwordForm.resetFields()):e.$message.error(l.msg||"Change password failed"),t.n=6;break;case 5:t.p=5,d=t.v,e.$message.error((null===(c=d.response)||void 0===c||null===(c=c.data)||void 0===c?void 0:c.msg)||"Change password failed");case 6:return t.p=6,e.changingPassword=!1,t.f(6);case 7:return t.a(2)}},t,null,[[2,5,6,7]])}));return function(e,a){return t.apply(this,arguments)}}())},getRoleColor:function(e){var t={admin:"red",manager:"orange",user:"blue",viewer:"default"};return t[e]||"default"},getRoleLabel:function(e){var t={admin:this.$t("userManage.roleAdmin")||"Admin",manager:this.$t("userManage.roleManager")||"Manager",user:this.$t("userManage.roleUser")||"User",viewer:this.$t("userManage.roleViewer")||"Viewer"};return t[e]||e},formatTime:function(e){if(!e)return"";var t=new Date("number"===typeof e?1e3*e:e);return t.toLocaleString()},loadCreditsLog:function(){var e=this;return(0,s.A)((0,o.A)().m(function t(){var a;return(0,o.A)().w(function(t){while(1)switch(t.p=t.n){case 0:return e.creditsLogLoading=!0,t.p=1,t.n=2,(0,l.v9)({page:e.creditsLogPagination.current,page_size:e.creditsLogPagination.pageSize});case 2:a=t.v,1===a.code&&(e.creditsLog=a.data.items||[],e.creditsLogPagination.total=a.data.total||0),t.n=4;break;case 3:t.p=3,t.v,e.$message.error("Failed to load credits log");case 4:return t.p=4,e.creditsLogLoading=!1,t.f(4);case 5:return t.a(2)}},t,null,[[1,3,4,5]])}))()},handleCreditsLogChange:function(e){this.creditsLogPagination.current=e.current,this.loadCreditsLog()},loadReferrals:function(){var e=this;return(0,s.A)((0,o.A)().m(function t(){var a;return(0,o.A)().w(function(t){while(1)switch(t.p=t.n){case 0:return e.referralLoading=!0,t.p=1,t.n=2,(0,l.rx)({page:e.referralPagination.current,page_size:e.referralPagination.pageSize});case 2:a=t.v,1===a.code&&(e.referralData={list:a.data.list||[],total:a.data.total||0,referral_code:a.data.referral_code||"",referral_bonus:a.data.referral_bonus||0,register_bonus:a.data.register_bonus||0},e.referralPagination.total=a.data.total||0),t.n=4;break;case 3:t.p=3,t.v,e.$message.error("Failed to load referral data");case 4:return t.p=4,e.referralLoading=!1,t.f(4);case 5:return t.a(2)}},t,null,[[1,3,4,5]])}))()},handleReferralChange:function(e){this.referralPagination.current=e.current,this.loadReferrals()},copyReferralLink:function(){var e=this,t=this.referralLink;navigator.clipboard?navigator.clipboard.writeText(t).then(function(){e.$message.success(e.$t("profile.referral.linkCopied")||"邀请链接已复制")}).catch(function(){e.fallbackCopy(t)}):this.fallbackCopy(t)},fallbackCopy:function(e){var t=document.createElement("textarea");t.value=e,document.body.appendChild(t),t.select();try{document.execCommand("copy"),this.$message.success(this.$t("profile.referral.linkCopied")||"邀请链接已复制")}catch(a){this.$message.error("Copy failed")}document.body.removeChild(t)},getActionColor:function(e){var t={consume:"red",recharge:"green",admin_adjust:"blue",refund:"orange",vip_grant:"gold",vip_revoke:"default",register_bonus:"cyan",referral_bonus:"purple",indicator_purchase:"volcano",indicator_sale:"lime"};return t[e]||"default"},getActionLabel:function(e){var t={consume:this.$t("profile.creditsLog.actionConsume")||"消费",recharge:this.$t("profile.creditsLog.actionRecharge")||"充值",admin_adjust:this.$t("profile.creditsLog.actionAdjust")||"调整",refund:this.$t("profile.creditsLog.actionRefund")||"退款",vip_grant:this.$t("profile.creditsLog.actionVipGrant")||"VIP授予",vip_revoke:this.$t("profile.creditsLog.actionVipRevoke")||"VIP取消",register_bonus:this.$t("profile.creditsLog.actionRegisterBonus")||"注册奖励",referral_bonus:this.$t("profile.creditsLog.actionReferralBonus")||"邀请奖励",indicator_purchase:this.$t("profile.creditsLog.actionIndicatorPurchase")||"购买指标",indicator_sale:this.$t("profile.creditsLog.actionIndicatorSale")||"出售指标"};return t[e]||e},loadExchangeCredentials:function(){var e=this;return(0,s.A)((0,o.A)().m(function t(){var a;return(0,o.A)().w(function(t){while(1)switch(t.p=t.n){case 0:return e.exchangeLoading=!0,t.p=1,t.n=2,(0,d.IA)();case 2:a=t.v,1===a.code&&a.data&&(e.exchangeCredentials=a.data.items||[]),t.n=4;break;case 3:t.p=3,t.v,e.$message.error("Failed to load exchange accounts");case 4:return t.p=4,e.exchangeLoading=!1,t.f(4);case 5:return t.a(2)}},t,null,[[1,3,4,5]])}))()},handleExchangeTypeChange:function(e){this.selectedExchangeId=e,this.exchangeTestResult=null;var t=this.cryptoExchangeList.map(function(e){return e.id});t.includes(e)?this.addExchangeType="crypto":this.addExchangeType="ibkr"===e?"ibkr":"mt5"===e?"mt5":""},getExchangeDisplayName:function(e){var t={binance:"Binance",okx:"OKX",bitget:"Bitget",bybit:"Bybit",coinbaseexchange:"Coinbase",kraken:"Kraken",kucoin:"KuCoin",gate:"Gate.io",bitfinex:"Bitfinex",ibkr:"IBKR",mt5:"MetaTrader 5"};return t[e]||e},handleSaveExchange:function(){var e=this;this.exchangeForm.validateFields(function(){var t=(0,s.A)((0,o.A)().m(function t(a,r){var i,s,l;return(0,o.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(!a){t.n=1;break}return t.a(2);case 1:return e.savingExchange=!0,t.p=2,i=(0,n.A)({},r),t.n=3,(0,d.PR)(i);case 3:s=t.v,1===s.code?(e.$message.success(e.$t("profile.exchange.saveSuccess")),e.showAddExchangeModal=!1,e.exchangeForm.resetFields(),e.addExchangeType="",e.selectedExchangeId="",e.exchangeTestResult=null,e.loadExchangeCredentials()):e.$message.error(s.msg||e.$t("profile.exchange.saveFailed")),t.n=5;break;case 4:t.p=4,l=t.v,e.$message.error(l.message||e.$t("profile.exchange.saveFailed"));case 5:return t.p=5,e.savingExchange=!1,t.f(5);case 6:return t.a(2)}},t,null,[[2,4,5,6]])}));return function(e,a){return t.apply(this,arguments)}}())},handleDeleteCredential:function(e){var t=this;return(0,s.A)((0,o.A)().m(function a(){var r;return(0,o.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return a.p=0,a.n=1,(0,d.kI)(e);case 1:r=a.v,1===r.code?(t.$message.success(t.$t("profile.exchange.deleteSuccess")),t.loadExchangeCredentials()):t.$message.error(r.msg||"Delete failed"),a.n=3;break;case 2:a.p=2,a.v,t.$message.error("Delete failed");case 3:return a.a(2)}},a,null,[[0,2]])}))()},handleTestExchangeConnection:function(){var e=this;return(0,s.A)((0,o.A)().m(function t(){var a,r,i,s,l;return(0,o.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(a=e.exchangeForm.getFieldsValue(),r=a.exchange_id,r){t.n=1;break}return t.a(2);case 1:return e.testingExchange=!0,e.exchangeTestResult=null,t.p=2,i=(0,n.A)({},a),t.n=3,(0,u.kv)(i);case 3:s=t.v,1===s.code?e.exchangeTestResult={success:!0,message:e.$t("profile.exchange.testSuccess")}:e.exchangeTestResult={success:!1,message:"".concat(e.$t("profile.exchange.testFailed"),": ").concat(s.msg||"Unknown error")},t.n=5;break;case 4:t.p=4,l=t.v,e.exchangeTestResult={success:!1,message:"".concat(e.$t("profile.exchange.testFailed"),": ").concat(l.message||"Network error")};case 5:return t.p=5,e.testingExchange=!1,t.f(5);case 6:return t.a(2)}},t,null,[[2,4,5,6]])}))()},loadNotificationSettings:function(){var e=this;return(0,s.A)((0,o.A)().m(function t(){var a;return(0,o.A)().w(function(t){while(1)switch(t.p=t.n){case 0:return t.p=0,t.n=1,(0,l.vF)();case 1:a=t.v,1===a.code&&a.data&&(e.notificationSettings={default_channels:a.data.default_channels||["browser"],telegram_bot_token:a.data.telegram_bot_token||"",telegram_chat_id:a.data.telegram_chat_id||"",email:a.data.email||e.profile.email||"",phone:a.data.phone||"",discord_webhook:a.data.discord_webhook||"",webhook_url:a.data.webhook_url||"",webhook_token:a.data.webhook_token||""},e.$nextTick(function(){e.notificationForm.setFieldsValue({default_channels:e.notificationSettings.default_channels,telegram_bot_token:e.notificationSettings.telegram_bot_token,telegram_chat_id:e.notificationSettings.telegram_chat_id,email:e.notificationSettings.email,phone:e.notificationSettings.phone,discord_webhook:e.notificationSettings.discord_webhook,webhook_url:e.notificationSettings.webhook_url,webhook_token:e.notificationSettings.webhook_token})})),t.n=3;break;case 2:t.p=2,t.v;case 3:return t.a(2)}},t,null,[[0,2]])}))()},handleSaveNotifications:function(){var e=this;this.notificationForm.validateFields(function(){var t=(0,s.A)((0,o.A)().m(function t(a,r){var i;return(0,o.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(!a){t.n=1;break}return t.a(2);case 1:return e.savingNotifications=!0,t.p=2,t.n=3,(0,l.Gl)({default_channels:r.default_channels||["browser"],telegram_bot_token:r.telegram_bot_token||"",telegram_chat_id:r.telegram_chat_id||"",email:r.email||"",phone:r.phone||"",discord_webhook:r.discord_webhook||"",webhook_url:r.webhook_url||"",webhook_token:r.webhook_token||""});case 3:i=t.v,1===i.code?(e.$message.success(e.$t("profile.notifications.saveSuccess")||"通知设置保存成功"),e.notificationSettings=i.data||e.notificationSettings):e.$message.error(i.msg||"保存失败"),t.n=5;break;case 4:t.p=4,t.v,e.$message.error("保存失败");case 5:return t.p=5,e.savingNotifications=!1,t.f(5);case 6:return t.a(2)}},t,null,[[2,4,5,6]])}));return function(e,a){return t.apply(this,arguments)}}())},handleTestNotification:function(){var e=this;return(0,s.A)((0,o.A)().m(function t(){var a,r,i;return(0,o.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(a=e.notificationForm.getFieldsValue(),r=a.default_channels||[],0!==r.length){t.n=1;break}return e.$message.warning(e.$t("profile.notifications.selectChannel")||"请至少选择一个通知渠道"),t.a(2);case 1:if(!r.includes("telegram")){t.n=3;break}if(a.telegram_bot_token){t.n=2;break}return e.$message.warning(e.$t("profile.notifications.fillTelegramToken")||"请填写 Telegram Bot Token"),t.a(2);case 2:if(a.telegram_chat_id){t.n=3;break}return e.$message.warning(e.$t("profile.notifications.fillTelegram")||"请填写 Telegram Chat ID"),t.a(2);case 3:if(!r.includes("email")||a.email){t.n=4;break}return e.$message.warning(e.$t("profile.notifications.fillEmail")||"请填写通知邮箱"),t.a(2);case 4:return e.testingNotification=!0,t.p=5,t.n=6,(0,l.Gl)({default_channels:r,telegram_bot_token:a.telegram_bot_token||"",telegram_chat_id:a.telegram_chat_id||"",email:a.email||"",phone:a.phone||"",discord_webhook:a.discord_webhook||"",webhook_url:a.webhook_url||"",webhook_token:a.webhook_token||""});case 6:if(i=t.v,1===i.code){t.n=7;break}return e.$message.error(i.msg||"保存设置失败"),t.a(2);case 7:e.$message.info(e.$t("profile.notifications.testSent")||"测试通知已发送,请检查您的通知渠道"),t.n=9;break;case 8:t.p=8,t.v,e.$message.error("发送测试通知失败");case 9:return t.p=9,e.testingNotification=!1,t.f(9);case 10:return t.a(2)}},t,null,[[5,8,9,10]])}))()}}},m=f,h=a(845),g=(0,h.A)(m,r,i,!1,null,"6dceb76a",null),v=g.exports},42430:function(e,t,a){a.d(t,{IA:function(){return o},PR:function(){return s},kI:function(){return l}});var r=a(76338),i=a(75769),n={list:"/api/credentials/list",get:"/api/credentials/get",create:"/api/credentials/create",delete:"/api/credentials/delete"};function o(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,i.Ay)({url:n.list,method:"get",params:e})}function s(e){return(0,i.Ay)({url:n.create,method:"post",data:e})}function l(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return(0,i.Ay)({url:n.delete,method:"delete",params:(0,r.A)({id:e},t)})}},53003:function(e,t,a){a.d(t,{DZ:function(){return o},YT:function(){return n},_d:function(){return s},lo:function(){return i}});var r=a(75769);function i(){return(0,r.Ay)({url:"/api/settings/schema",method:"get"})}function n(){return(0,r.Ay)({url:"/api/settings/values",method:"get"})}function o(e){return(0,r.Ay)({url:"/api/settings/save",method:"post",data:e})}function s(){return(0,r.Ay)({url:"/api/settings/openrouter-balance",method:"get"})}},84841:function(e,t,a){a.d(t,{DK:function(){return _},E$:function(){return d},Gl:function(){return f},O0:function(){return c},TK:function(){return o},aU:function(){return i},cw:function(){return l},d$:function(){return b},hG:function(){return s},kg:function(){return n},nY:function(){return v},r7:function(){return u},rx:function(){return h},v9:function(){return m},vF:function(){return p},vi:function(){return w},wq:function(){return g}});var r=a(75769);function i(e){return(0,r.Ay)({url:"/api/users/list",method:"get",params:e})}function n(e){return(0,r.Ay)({url:"/api/users/create",method:"post",data:e})}function o(e,t){return(0,r.Ay)({url:"/api/users/update",method:"put",params:{id:e},data:t})}function s(e){return(0,r.Ay)({url:"/api/users/delete",method:"delete",params:{id:e}})}function l(e){return(0,r.Ay)({url:"/api/users/reset-password",method:"post",data:e})}function c(){return(0,r.Ay)({url:"/api/users/roles",method:"get"})}function d(){return(0,r.Ay)({url:"/api/users/profile",method:"get"})}function u(e){return(0,r.Ay)({url:"/api/users/profile/update",method:"put",data:e})}function p(){return(0,r.Ay)({url:"/api/users/notification-settings",method:"get"})}function f(e){return(0,r.Ay)({url:"/api/users/notification-settings",method:"put",data:e})}function m(e){return(0,r.Ay)({url:"/api/users/my-credits-log",method:"get",params:e})}function h(e){return(0,r.Ay)({url:"/api/users/my-referrals",method:"get",params:e})}function g(e){return(0,r.Ay)({url:"/api/users/set-credits",method:"post",data:e})}function v(e){return(0,r.Ay)({url:"/api/users/set-vip",method:"post",data:e})}function _(e){return(0,r.Ay)({url:"/api/users/system-strategies",method:"get",params:e})}function w(e){return(0,r.Ay)({url:"/api/users/admin-orders",method:"get",params:e})}function b(e){return(0,r.Ay)({url:"/api/users/admin-ai-stats",method:"get",params:e})}}}]); \ No newline at end of file diff --git a/frontend/dist/js/275-legacy.de5ce964.js b/frontend/dist/js/275-legacy.de5ce964.js new file mode 100644 index 0000000..e65e972 --- /dev/null +++ b/frontend/dist/js/275-legacy.de5ce964.js @@ -0,0 +1 @@ +"use strict";(self["webpackChunkvue_antd_pro"]=self["webpackChunkvue_antd_pro"]||[]).push([[275],{54275:function(t,e,a){a.r(e),a.d(e,{default:function(){return v}});var s=function(){var t=this,e=t._self._c;return e("div",{staticClass:"user-manage-page",class:{"theme-dark":t.isDarkTheme}},[e("div",{staticClass:"page-header"},[e("h2",{staticClass:"page-title"},[e("a-icon",{attrs:{type:"team"}}),e("span",[t._v(t._s(t.$t("userManage.title")||"User Management"))])],1),e("p",{staticClass:"page-desc"},[t._v(t._s(t.$t("userManage.description")||"Manage system users, roles and permissions"))])]),e("a-tabs",{staticClass:"manage-tabs",on:{change:t.handleTabChange},model:{value:t.activeTab,callback:function(e){t.activeTab=e},expression:"activeTab"}},[e("a-tab-pane",{key:"users",attrs:{tab:t.$t("userManage.tabUsers")||"User Management"}},[e("div",{staticClass:"toolbar"},[e("div",{staticClass:"toolbar-left"},[e("a-button",{attrs:{type:"primary"},on:{click:t.showCreateModal}},[e("a-icon",{attrs:{type:"user-add"}}),t._v(" "+t._s(t.$t("userManage.createUser")||"Create User")+" ")],1),e("a-button",{on:{click:t.loadUsers}},[e("a-icon",{attrs:{type:"reload"}}),t._v(" "+t._s(t.$t("common.refresh")||"Refresh")+" ")],1)],1),e("div",{staticClass:"toolbar-right"},[e("a-input-search",{staticClass:"toolbar-search",attrs:{placeholder:t.$t("userManage.searchPlaceholder")||"Search by username/email",allowClear:""},on:{search:t.handleSearch,pressEnter:t.handleSearch},model:{value:t.searchKeyword,callback:function(e){t.searchKeyword=e},expression:"searchKeyword"}})],1)]),e("a-card",{staticClass:"user-table-card",attrs:{bordered:!1}},[e("a-table",{attrs:{columns:t.columns,dataSource:t.users,loading:t.loading,pagination:t.pagination,rowKey:function(t){return t.id},scroll:{x:1280}},on:{change:t.handleTableChange},scopedSlots:t._u([{key:"status",fn:function(a){return[e("a-tag",{attrs:{color:"active"===a?"green":"red"}},[t._v(" "+t._s("active"===a?t.$t("userManage.active")||"Active":t.$t("userManage.disabled")||"Disabled")+" ")])]}},{key:"role",fn:function(a){return[e("a-tag",{attrs:{color:t.getRoleColor(a)}},[t._v(" "+t._s(t.getRoleLabel(a))+" ")])]}},{key:"last_login_at",fn:function(a){return[a?e("span",[t._v(t._s(t.formatTime(a)))]):e("span",{staticClass:"text-muted"},[t._v(t._s(t.$t("userManage.neverLogin")||"Never"))])]}},{key:"credits",fn:function(a){return[e("span",{staticClass:"credits-value"},[t._v(t._s(t.formatCredits(a)))])]}},{key:"vip_expires_at",fn:function(a){return[a&&t.isVipActive(a)?[e("a-tag",{attrs:{color:"gold"}},[e("a-icon",{attrs:{type:"crown"}}),t._v(" "+t._s(t.formatDate(a))+" ")],1)]:e("span",{staticClass:"text-muted"},[t._v("-")])]}},{key:"action",fn:function(a,s){return[e("a-space",[e("a-tooltip",{attrs:{title:t.$t("common.edit")||"Edit"}},[e("a-button",{attrs:{type:"link",size:"small"},on:{click:function(e){return t.showEditModal(s)}}},[e("a-icon",{attrs:{type:"edit"}})],1)],1),e("a-tooltip",{attrs:{title:t.$t("userManage.adjustCredits")||"Adjust Credits"}},[e("a-button",{attrs:{type:"link",size:"small"},on:{click:function(e){return t.showCreditsModal(s)}}},[e("a-icon",{staticStyle:{color:"#722ed1"},attrs:{type:"wallet"}})],1)],1),e("a-tooltip",{attrs:{title:t.$t("userManage.setVip")||"Set VIP"}},[e("a-button",{attrs:{type:"link",size:"small"},on:{click:function(e){return t.showVipModal(s)}}},[e("a-icon",{staticStyle:{color:"#faad14"},attrs:{type:"crown"}})],1)],1),e("a-tooltip",{attrs:{title:t.$t("userManage.resetPassword")||"Reset Password"}},[e("a-button",{attrs:{type:"link",size:"small"},on:{click:function(e){return t.showResetPasswordModal(s)}}},[e("a-icon",{attrs:{type:"key"}})],1)],1),e("a-tooltip",{attrs:{title:t.$t("common.delete")||"Delete"}},[e("a-popconfirm",{attrs:{title:t.$t("userManage.confirmDelete")||"Are you sure to delete this user?"},on:{confirm:function(e){return t.handleDelete(s.id)}}},[e("a-button",{attrs:{type:"link",size:"small",disabled:s.id===t.currentUserId}},[e("a-icon",{staticStyle:{color:"#ff4d4f"},attrs:{type:"delete"}})],1)],1)],1)],1)]}}])})],1)],1),e("a-tab-pane",{key:"strategies",attrs:{tab:t.$t("systemOverview.tabTitle")||"System Overview"}},[t.strategySummary?e("div",{staticClass:"summary-cards"},[e("div",{staticClass:"summary-card"},[e("div",{staticClass:"summary-icon",staticStyle:{background:"linear-gradient(135deg, #667eea, #764ba2)"}},[e("a-icon",{attrs:{type:"fund"}})],1),e("div",{staticClass:"summary-info"},[e("div",{staticClass:"summary-value"},[t._v(t._s(t.strategySummary.total_strategies||0))]),e("div",{staticClass:"summary-label"},[t._v(t._s(t.$t("systemOverview.totalStrategies")||"Total Strategies"))])])]),e("div",{staticClass:"summary-card"},[e("div",{staticClass:"summary-icon",staticStyle:{background:"linear-gradient(135deg, #11998e, #38ef7d)"}},[e("a-icon",{attrs:{type:"play-circle"}})],1),e("div",{staticClass:"summary-info"},[e("div",{staticClass:"summary-value"},[t._v(t._s(t.strategySummary.running_strategies||0))]),e("div",{staticClass:"summary-sub"},[t._v(" "+t._s(t.$t("systemOverview.live")||"实盘")+": "+t._s(t.strategySummary.running_live_strategies||0)+" / "+t._s(t.$t("systemOverview.signal")||"仅通知")+": "+t._s(t.strategySummary.running_signal_strategies||0)+" ")]),e("div",{staticClass:"summary-label"},[t._v(t._s(t.$t("systemOverview.runningStrategies")||"Running"))])])]),e("div",{staticClass:"summary-card"},[e("div",{staticClass:"summary-icon",staticStyle:{background:"linear-gradient(135deg, #f093fb, #f5576c)"}},[e("a-icon",{attrs:{type:"dollar"}})],1),e("div",{staticClass:"summary-info"},[e("div",{staticClass:"summary-value"},[t._v(t._s(t.formatNumber(t.strategySummary.total_capital)))]),e("div",{staticClass:"summary-sub"},[t._v(" "+t._s(t.$t("systemOverview.live")||"实盘")+": "+t._s(t.formatNumber(t.strategySummary.live_capital))+" / "+t._s(t.$t("systemOverview.signal")||"仅通知")+": "+t._s(t.formatNumber(t.strategySummary.signal_capital))+" ")]),e("div",{staticClass:"summary-label"},[t._v(t._s(t.$t("systemOverview.totalCapital")||"Total Capital"))])])]),e("div",{staticClass:"summary-card"},[e("div",{staticClass:"summary-icon",style:{background:(t.strategySummary.total_pnl||0)>=0?"linear-gradient(135deg, #11998e, #38ef7d)":"linear-gradient(135deg, #ff416c, #ff4b2b)"}},[e("a-icon",{attrs:{type:"rise"}})],1),e("div",{staticClass:"summary-info"},[e("div",{staticClass:"summary-value",class:(t.strategySummary.total_pnl||0)>=0?"text-profit":"text-loss"},[t._v(" "+t._s(t.formatPnl(t.strategySummary.total_pnl))+" "),e("span",{staticClass:"roi-badge"},[t._v(t._s(t.strategySummary.total_roi||0)+"%")])]),e("div",{staticClass:"summary-sub"},[t._v(" "+t._s(t.$t("systemOverview.live")||"实盘")+": "+t._s(t.formatPnl(t.strategySummary.live_pnl))+" / "+t._s(t.$t("systemOverview.signal")||"仅通知")+": "+t._s(t.formatPnl(t.strategySummary.signal_pnl))+" ")]),e("div",{staticClass:"summary-label"},[t._v(t._s(t.$t("systemOverview.totalPnl")||"Total PnL"))])])])]):t._e(),e("div",{staticClass:"toolbar"},[e("div",{staticClass:"toolbar-left"},[e("a-button",{on:{click:t.loadSystemStrategies}},[e("a-icon",{attrs:{type:"reload"}}),t._v(" "+t._s(t.$t("common.refresh")||"Refresh")+" ")],1),e("a-select",{staticClass:"toolbar-select",on:{change:t.handleStrategyFilterChange},model:{value:t.strategyStatusFilter,callback:function(e){t.strategyStatusFilter=e},expression:"strategyStatusFilter"}},[e("a-select-option",{attrs:{value:"all"}},[t._v(t._s(t.$t("systemOverview.filterAll")||"All Status"))]),e("a-select-option",{attrs:{value:"running"}},[t._v(t._s(t.$t("systemOverview.filterRunning")||"Running"))]),e("a-select-option",{attrs:{value:"stopped"}},[t._v(t._s(t.$t("systemOverview.filterStopped")||"Stopped"))])],1)],1),e("div",{staticClass:"toolbar-right"},[e("a-input-search",{staticClass:"toolbar-search",attrs:{placeholder:t.$t("systemOverview.searchPlaceholder")||"Search strategy/symbol/user",allowClear:""},on:{search:t.handleStrategySearch,pressEnter:t.handleStrategySearch},model:{value:t.strategySearchKeyword,callback:function(e){t.strategySearchKeyword=e},expression:"strategySearchKeyword"}})],1)]),e("a-card",{staticClass:"user-table-card",attrs:{bordered:!1}},[e("a-table",{attrs:{columns:t.strategyColumns,dataSource:t.systemStrategies,loading:t.strategyLoading,pagination:t.strategyPagination,rowKey:function(t){return t.id},scroll:{x:1600}},on:{change:t.handleStrategyTableChange},scopedSlots:t._u([{key:"strategyStatus",fn:function(a){return[e("span",{staticClass:"status-cell"},[e("span",{staticClass:"status-dot",class:"running"===a?"dot-running":"dot-stopped"}),e("span",{class:"running"===a?"status-running":"status-stopped"},[t._v(" "+t._s("running"===a?t.$t("systemOverview.running")||"Running":t.$t("systemOverview.stopped")||"Stopped")+" ")])])]}},{key:"userInfo",fn:function(a,s){return[e("a-tooltip",{attrs:{title:s.nickname||s.username||"-"}},[e("span",{staticClass:"user-cell"},[e("a-avatar",{style:{backgroundColor:t.getUserColor(s.user_id),fontSize:"11px",marginRight:"6px"},attrs:{size:"small"}},[t._v(" "+t._s((s.nickname||s.username||"?").charAt(0).toUpperCase())+" ")]),e("span",{staticClass:"user-name"},[t._v(t._s(t.truncate(s.nickname||s.username||"-",8)))])],1)])]}},{key:"symbolInfo",fn:function(a,s){return[e("div",[e("span",{staticClass:"symbol-text"},[t._v(t._s(s.symbol||"-"))]),"cross_sectional"===s.cs_strategy_type?e("a-tag",{staticStyle:{"margin-left":"4px"},attrs:{color:"purple",size:"small"}},[t._v("CS")]):t._e()],1),"cross_sectional"===s.cs_strategy_type&&s.symbol_list&&s.symbol_list.length?e("div",{staticClass:"symbol-count text-muted"},[t._v(" "+t._s(s.symbol_list.length)+" "+t._s(t.$t("systemOverview.symbols")||"symbols")+" ")]):t._e()]}},{key:"capitalInfo",fn:function(a){return[e("span",[t._v(t._s(t.formatNumber(a)))])]}},{key:"pnlInfo",fn:function(a,s){return[e("div",{class:s.total_pnl>=0?"text-profit":"text-loss"},[e("span",{staticClass:"pnl-value"},[t._v(t._s(t.formatPnl(s.total_pnl)))]),e("span",{staticClass:"roi-text"},[t._v("("+t._s(s.roi>=0?"+":"")+t._s(s.roi)+"%)")])]),e("div",{staticClass:"pnl-detail text-muted"},[e("span",[t._v(t._s(t.$t("systemOverview.realized")||"Real")+": "+t._s(t.formatPnl(s.total_realized_pnl)))]),e("span",{staticStyle:{"margin-left":"8px"}},[t._v(t._s(t.$t("systemOverview.unrealized")||"Unreal")+": "+t._s(t.formatPnl(s.total_unrealized_pnl)))])])]}},{key:"positionInfo",fn:function(t,a){return[e("a-badge",{attrs:{count:a.position_count,numberStyle:{backgroundColor:a.position_count>0?"#52c41a":"#d9d9d9"}}})]}},{key:"tradeInfo",fn:function(a){return[e("span",[t._v(t._s(a||0))])]}},{key:"indicatorInfo",fn:function(a){return[a?e("a-tooltip",{attrs:{title:a}},[e("span",{staticClass:"indicator-name"},[t._v(t._s(t.truncate(a,16)))])]):e("span",{staticClass:"text-muted"},[t._v("-")])]}},{key:"exchangeInfo",fn:function(a){return[a?e("span",{staticClass:"exchange-name"},[t._v(t._s(a))]):e("span",{staticClass:"text-muted"},[t._v("-")])]}},{key:"timeframeInfo",fn:function(a){return[a?e("a-tag",{attrs:{size:"small"}},[t._v(t._s(a))]):e("span",{staticClass:"text-muted"},[t._v("-")])]}},{key:"leverageInfo",fn:function(a){return[a>1?e("span",{staticStyle:{color:"#fa8c16","font-weight":"600"}},[t._v(t._s(a)+"x")]):e("span",[t._v(t._s(a||1)+"x")])]}},{key:"createdAtInfo",fn:function(a){return[a?e("span",[t._v(t._s(t.formatTime(a)))]):e("span",{staticClass:"text-muted"},[t._v("-")])]}}])})],1)],1),e("a-tab-pane",{key:"orders",attrs:{tab:t.$t("adminOrders.tabTitle")||"Order List"}},[t.orderSummary?e("div",{staticClass:"summary-cards"},[e("div",{staticClass:"summary-card"},[e("div",{staticClass:"summary-icon",staticStyle:{background:"linear-gradient(135deg, #667eea, #764ba2)"}},[e("a-icon",{attrs:{type:"file-text"}})],1),e("div",{staticClass:"summary-info"},[e("div",{staticClass:"summary-value"},[t._v(t._s(t.orderSummary.total_orders||0))]),e("div",{staticClass:"summary-label"},[t._v(t._s(t.$t("adminOrders.totalOrders")||"Total Orders"))])])]),e("div",{staticClass:"summary-card"},[e("div",{staticClass:"summary-icon",staticStyle:{background:"linear-gradient(135deg, #11998e, #38ef7d)"}},[e("a-icon",{attrs:{type:"check-circle"}})],1),e("div",{staticClass:"summary-info"},[e("div",{staticClass:"summary-value"},[t._v(t._s(t.orderSummary.paid_orders||0))]),e("div",{staticClass:"summary-label"},[t._v(t._s(t.$t("adminOrders.paidOrders")||"Paid"))])])]),e("div",{staticClass:"summary-card"},[e("div",{staticClass:"summary-icon",staticStyle:{background:"linear-gradient(135deg, #f093fb, #f5576c)"}},[e("a-icon",{attrs:{type:"clock-circle"}})],1),e("div",{staticClass:"summary-info"},[e("div",{staticClass:"summary-value"},[t._v(t._s(t.orderSummary.pending_orders||0))]),e("div",{staticClass:"summary-label"},[t._v(t._s(t.$t("adminOrders.pendingOrders")||"Pending"))])])]),e("div",{staticClass:"summary-card"},[e("div",{staticClass:"summary-icon",staticStyle:{background:"linear-gradient(135deg, #fa709a, #fee140)"}},[e("a-icon",{attrs:{type:"dollar"}})],1),e("div",{staticClass:"summary-info"},[e("div",{staticClass:"summary-value"},[t._v(t._s(t.formatNumber(t.orderSummary.total_revenue))+" "),e("span",{staticStyle:{"font-size":"13px",color:"#999"}},[t._v("USDT")])]),e("div",{staticClass:"summary-label"},[t._v(t._s(t.$t("adminOrders.totalRevenue")||"Total Revenue"))])])])]):t._e(),e("div",{staticClass:"toolbar"},[e("div",{staticClass:"toolbar-left"},[e("a-button",{on:{click:t.loadOrders}},[e("a-icon",{attrs:{type:"reload"}}),t._v(" "+t._s(t.$t("common.refresh")||"Refresh")+" ")],1),e("a-select",{staticClass:"toolbar-select",on:{change:t.handleOrderFilterChange},model:{value:t.orderStatusFilter,callback:function(e){t.orderStatusFilter=e},expression:"orderStatusFilter"}},[e("a-select-option",{attrs:{value:"all"}},[t._v(t._s(t.$t("adminOrders.filterAll")||"All Status"))]),e("a-select-option",{attrs:{value:"pending"}},[t._v(t._s(t.$t("adminOrders.filterPending")||"Pending"))]),e("a-select-option",{attrs:{value:"paid"}},[t._v(t._s(t.$t("adminOrders.filterPaid")||"Paid"))]),e("a-select-option",{attrs:{value:"confirmed"}},[t._v(t._s(t.$t("adminOrders.filterConfirmed")||"Confirmed"))]),e("a-select-option",{attrs:{value:"expired"}},[t._v(t._s(t.$t("adminOrders.filterExpired")||"Expired"))])],1)],1),e("div",{staticClass:"toolbar-right"},[e("a-input-search",{staticClass:"toolbar-search",attrs:{placeholder:t.$t("adminOrders.searchPlaceholder")||"Search by username/email",allowClear:""},on:{search:t.handleOrderSearch,pressEnter:t.handleOrderSearch},model:{value:t.orderSearchKeyword,callback:function(e){t.orderSearchKeyword=e},expression:"orderSearchKeyword"}})],1)]),e("a-card",{staticClass:"user-table-card",attrs:{bordered:!1}},[e("a-table",{attrs:{columns:t.orderColumns,dataSource:t.orders,loading:t.orderLoading,pagination:t.orderPagination,rowKey:function(t){return t.order_type+"-"+t.id},scroll:{x:1400}},on:{change:t.handleOrderTableChange},scopedSlots:t._u([{key:"orderUserInfo",fn:function(a,s){return[e("a-tooltip",{attrs:{title:(s.nickname||s.username||"-")+" ("+(s.user_email||"")+")"}},[e("span",{staticClass:"user-cell"},[e("a-avatar",{style:{backgroundColor:t.getUserColor(s.user_id),fontSize:"11px",marginRight:"6px"},attrs:{size:"small"}},[t._v(" "+t._s((s.nickname||s.username||"?").charAt(0).toUpperCase())+" ")]),e("span",{staticClass:"user-name"},[t._v(t._s(t.truncate(s.nickname||s.username||"-",10)))])],1)])]}},{key:"orderTypeInfo",fn:function(a){return[e("a-tag",{attrs:{color:"usdt"===a?"green":"blue"}},[t._v(" "+t._s("usdt"===a?"USDT":"Mock")+" ")])]}},{key:"planInfo",fn:function(a){return[e("a-tag",{attrs:{color:"lifetime"===a?"gold":"yearly"===a?"purple":"cyan"}},[t._v(" "+t._s("lifetime"===a?t.$t("adminOrders.lifetime")||"Lifetime":"yearly"===a?t.$t("adminOrders.yearly")||"Yearly":t.$t("adminOrders.monthly")||"Monthly")+" ")])]}},{key:"amountInfo",fn:function(a,s){return[e("span",{staticStyle:{"font-weight":"600"}},[t._v(t._s(a))]),e("span",{staticClass:"text-muted",staticStyle:{"margin-left":"4px"}},[t._v(t._s(s.currency))])]}},{key:"orderStatusInfo",fn:function(a){return[e("a-tag",{attrs:{color:t.getOrderStatusColor(a)}},[t._v(t._s(t.getOrderStatusLabel(a)))])]}},{key:"chainInfo",fn:function(a){return[a?e("span",[t._v(t._s(a))]):e("span",{staticClass:"text-muted"},[t._v("-")])]}},{key:"addressInfo",fn:function(a){return[a?e("a-tooltip",{attrs:{title:a}},[e("span",{staticClass:"address-text"},[t._v(t._s(t.truncate(a,12)))])]):e("span",{staticClass:"text-muted"},[t._v("-")])]}},{key:"txHashInfo",fn:function(a){return[a?e("a-tooltip",{attrs:{title:a}},[e("span",{staticClass:"hash-text"},[t._v(t._s(t.truncate(a,14)))])]):e("span",{staticClass:"text-muted"},[t._v("-")])]}},{key:"orderCreatedAt",fn:function(a){return[a?e("span",[t._v(t._s(t.formatTime(a)))]):e("span",{staticClass:"text-muted"},[t._v("-")])]}}])})],1)],1),e("a-tab-pane",{key:"aiStats",attrs:{tab:t.$t("adminAiStats.tabTitle")||"AI Analysis"}},[t.aiStatsSummary?e("div",{staticClass:"summary-cards"},[e("div",{staticClass:"summary-card"},[e("div",{staticClass:"summary-icon",staticStyle:{background:"linear-gradient(135deg, #667eea, #764ba2)"}},[e("a-icon",{attrs:{type:"thunderbolt"}})],1),e("div",{staticClass:"summary-info"},[e("div",{staticClass:"summary-value"},[t._v(t._s(t.aiStatsSummary.total_analyses||0))]),e("div",{staticClass:"summary-label"},[t._v(t._s(t.$t("adminAiStats.totalAnalyses")||"Total Analyses"))])])]),e("div",{staticClass:"summary-card"},[e("div",{staticClass:"summary-icon",staticStyle:{background:"linear-gradient(135deg, #11998e, #38ef7d)"}},[e("a-icon",{attrs:{type:"team"}})],1),e("div",{staticClass:"summary-info"},[e("div",{staticClass:"summary-value"},[t._v(t._s(t.aiStatsSummary.unique_users||0))]),e("div",{staticClass:"summary-label"},[t._v(t._s(t.$t("adminAiStats.activeUsers")||"Active Users"))])])]),e("div",{staticClass:"summary-card"},[e("div",{staticClass:"summary-icon",staticStyle:{background:"linear-gradient(135deg, #f093fb, #f5576c)"}},[e("a-icon",{attrs:{type:"stock"}})],1),e("div",{staticClass:"summary-info"},[e("div",{staticClass:"summary-value"},[t._v(t._s(t.aiStatsSummary.unique_symbols||0))]),e("div",{staticClass:"summary-label"},[t._v(t._s(t.$t("adminAiStats.uniqueSymbols")||"Symbols Analyzed"))])])]),e("div",{staticClass:"summary-card"},[e("div",{staticClass:"summary-icon",staticStyle:{background:"linear-gradient(135deg, #fa709a, #fee140)"}},[e("a-icon",{attrs:{type:"like"}})],1),e("div",{staticClass:"summary-info"},[e("div",{staticClass:"summary-value"},[t._v(" "+t._s(t.aiStatsSummary.correct_count||0)+" "),e("span",{staticStyle:{"font-size":"13px",color:"#999"}},[t._v("/ "+t._s(t.aiStatsSummary.total_memory||0))])]),e("div",{staticClass:"summary-label"},[t._v(t._s(t.$t("adminAiStats.accuracy")||"Correct / Verified"))])])])]):t._e(),e("div",{staticClass:"toolbar"},[e("div",{staticClass:"toolbar-left"},[e("a-button",{on:{click:t.loadAiStats}},[e("a-icon",{attrs:{type:"reload"}}),t._v(" "+t._s(t.$t("common.refresh")||"Refresh")+" ")],1)],1),e("div",{staticClass:"toolbar-right"},[e("a-input-search",{staticClass:"toolbar-search",attrs:{placeholder:t.$t("adminAiStats.searchPlaceholder")||"Search by username",allowClear:""},on:{search:t.handleAiStatsSearch,pressEnter:t.handleAiStatsSearch},model:{value:t.aiStatsSearchKeyword,callback:function(e){t.aiStatsSearchKeyword=e},expression:"aiStatsSearchKeyword"}})],1)]),e("a-card",{staticClass:"user-table-card",staticStyle:{"margin-bottom":"20px"},attrs:{bordered:!1}},[e("h4",{staticClass:"section-card-title"},[e("a-icon",{staticClass:"section-card-title-icon",attrs:{type:"bar-chart"}}),t._v(" "+t._s(t.$t("adminAiStats.userStatsTitle")||"Per-User Statistics")+" ")],1),e("a-table",{attrs:{columns:t.aiUserColumns,dataSource:t.aiUserStats,loading:t.aiStatsLoading,pagination:t.aiStatsPagination,rowKey:function(t){return t.user_id},scroll:{x:960}},on:{change:t.handleAiStatsTableChange},scopedSlots:t._u([{key:"aiUserInfo",fn:function(a,s){return[e("a-tooltip",{attrs:{title:(s.nickname||s.username||"-")+" ("+(s.email||"")+")"}},[e("span",{staticClass:"user-cell"},[e("a-avatar",{style:{backgroundColor:t.getUserColor(s.user_id),fontSize:"11px",marginRight:"6px"},attrs:{size:"small"}},[t._v(" "+t._s((s.nickname||s.username||"?").charAt(0).toUpperCase())+" ")]),e("span",{staticClass:"user-name"},[t._v(t._s(t.truncate(s.nickname||s.username||"-",10)))])],1)])]}},{key:"analysisCountInfo",fn:function(a){return[e("span",{staticStyle:{"font-weight":"600",color:"#1890ff"}},[t._v(t._s(a||0))])]}},{key:"accuracyInfo",fn:function(a,s){return[e("span",{staticClass:"text-profit"},[t._v(t._s(s.correct||0))]),e("span",{staticClass:"text-muted"},[t._v(" / ")]),e("span",{staticClass:"text-loss"},[t._v(t._s(s.incorrect||0))])]}},{key:"feedbackInfo",fn:function(a,s){return[e("a-tooltip",{attrs:{title:(t.$t("adminAiStats.helpful")||"Helpful")+" / "+(t.$t("adminAiStats.notHelpful")||"Not Helpful")}},[e("span",{staticStyle:{color:"#52c41a"}},[e("a-icon",{attrs:{type:"like"}}),t._v(" "+t._s(s.helpful||0))],1),e("span",{staticClass:"text-muted"},[t._v(" / ")]),e("span",{staticStyle:{color:"#ff4d4f"}},[e("a-icon",{attrs:{type:"dislike"}}),t._v(" "+t._s(s.not_helpful||0))],1)])]}},{key:"lastAnalysisAt",fn:function(a){return[a?e("span",[t._v(t._s(t.formatTime(a)))]):e("span",{staticClass:"text-muted"},[t._v("-")])]}}])})],1),e("a-card",{staticClass:"user-table-card",attrs:{bordered:!1}},[e("h4",{staticClass:"section-card-title"},[e("a-icon",{staticClass:"section-card-title-icon",attrs:{type:"history"}}),t._v(" "+t._s(t.$t("adminAiStats.recentTitle")||"Recent Analysis Records")+" ")],1),e("a-table",{attrs:{columns:t.aiRecentColumns,dataSource:t.aiRecentRecords,loading:t.aiStatsLoading,pagination:!1,rowKey:function(t){return t.id},scroll:{x:900},size:"small"},scopedSlots:t._u([{key:"recentUserInfo",fn:function(a,s){return[e("span",{staticClass:"user-cell"},[e("a-avatar",{style:{backgroundColor:t.getUserColor(s.user_id),fontSize:"11px",marginRight:"6px"},attrs:{size:"small"}},[t._v(" "+t._s((s.nickname||s.username||"?").charAt(0).toUpperCase())+" ")]),e("span",{staticClass:"user-name"},[t._v(t._s(t.truncate(s.nickname||s.username||"-",8)))])],1)]}},{key:"recentStatusInfo",fn:function(a){return[e("a-tag",{attrs:{color:"completed"===a?"green":"failed"===a?"red":"blue"}},[t._v(" "+t._s(a)+" ")])]}},{key:"recentCreatedAt",fn:function(a){return[a?e("span",[t._v(t._s(t.formatTime(a)))]):e("span",{staticClass:"text-muted"},[t._v("-")])]}}])})],1)],1)],1),e("a-modal",{attrs:{"wrap-class-name":"user-manage-modal",title:t.isEdit?t.$t("userManage.editUser")||"Edit User":t.$t("userManage.createUser")||"Create User",confirmLoading:t.modalLoading},on:{ok:t.handleModalOk,cancel:t.handleModalCancel},model:{value:t.modalVisible,callback:function(e){t.modalVisible=e},expression:"modalVisible"}},[e("a-form",{attrs:{form:t.form,layout:"vertical"}},[e("a-form-item",{attrs:{label:t.$t("userManage.username")||"Username"}},[e("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["username",{rules:[{required:!t.isEdit,message:t.$t("userManage.usernameRequired")||"Please enter username"}]}],expression:"['username', {\n rules: [{ required: !isEdit, message: $t('userManage.usernameRequired') || 'Please enter username' }]\n }]"}],attrs:{disabled:t.isEdit,placeholder:t.$t("userManage.usernamePlaceholder")||"Enter username"}},[e("a-icon",{attrs:{slot:"prefix",type:"user"},slot:"prefix"})],1)],1),t.isEdit?t._e():e("a-form-item",{attrs:{label:t.$t("userManage.password")||"Password"}},[e("a-input-password",{directives:[{name:"decorator",rawName:"v-decorator",value:["password",{rules:[{required:!0,message:t.$t("userManage.passwordRequired")||"Please enter password"},{min:6,message:t.$t("userManage.passwordMin")||"Password must be at least 6 characters"}]}],expression:"['password', {\n rules: [\n { required: true, message: $t('userManage.passwordRequired') || 'Please enter password' },\n { min: 6, message: $t('userManage.passwordMin') || 'Password must be at least 6 characters' }\n ]\n }]"}],attrs:{placeholder:t.$t("userManage.passwordPlaceholder")||"Enter password (min 6 characters)"}},[e("a-icon",{attrs:{slot:"prefix",type:"lock"},slot:"prefix"})],1)],1),e("a-form-item",{attrs:{label:t.$t("userManage.nickname")||"Nickname"}},[e("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["nickname"],expression:"['nickname']"}],attrs:{placeholder:t.$t("userManage.nicknamePlaceholder")||"Enter nickname"}},[e("a-icon",{attrs:{slot:"prefix",type:"smile"},slot:"prefix"})],1)],1),e("a-form-item",{attrs:{label:t.$t("userManage.email")||"Email"}},[e("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["email",{rules:[{type:"email",message:t.$t("userManage.emailInvalid")||"Invalid email format"}]}],expression:"['email', {\n rules: [{ type: 'email', message: $t('userManage.emailInvalid') || 'Invalid email format' }]\n }]"}],attrs:{placeholder:t.$t("userManage.emailPlaceholder")||"Enter email"}},[e("a-icon",{attrs:{slot:"prefix",type:"mail"},slot:"prefix"})],1)],1),e("a-form-item",{attrs:{label:t.$t("userManage.role")||"Role"}},[e("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["role",{initialValue:"user"}],expression:"['role', { initialValue: 'user' }]"}],attrs:{placeholder:t.$t("userManage.rolePlaceholder")||"Select role"}},t._l(t.roles,function(a){return e("a-select-option",{key:a.id,attrs:{value:a.id}},[t._v(" "+t._s(t.getRoleLabel(a.id))+" ")])}),1)],1),t.isEdit?e("a-form-item",{attrs:{label:t.$t("userManage.status")||"Status"}},[e("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["status",{initialValue:"active"}],expression:"['status', { initialValue: 'active' }]"}],attrs:{placeholder:t.$t("userManage.statusPlaceholder")||"Select status"}},[e("a-select-option",{attrs:{value:"active"}},[t._v(t._s(t.$t("userManage.active")||"Active"))]),e("a-select-option",{attrs:{value:"disabled"}},[t._v(t._s(t.$t("userManage.disabled")||"Disabled"))])],1)],1):t._e()],1)],1),e("a-modal",{attrs:{"wrap-class-name":"user-manage-modal",title:t.$t("userManage.resetPassword")||"Reset Password",confirmLoading:t.resetPasswordLoading},on:{ok:t.handleResetPassword},model:{value:t.resetPasswordVisible,callback:function(e){t.resetPasswordVisible=e},expression:"resetPasswordVisible"}},[e("a-form",{attrs:{form:t.resetPasswordForm,layout:"vertical"}},[e("a-alert",{staticStyle:{"margin-bottom":"16px"},attrs:{message:t.$t("userManage.resetPasswordWarning")||"This will reset the user's password",type:"warning",showIcon:""}}),e("a-form-item",{attrs:{label:t.$t("userManage.newPassword")||"New Password"}},[e("a-input-password",{directives:[{name:"decorator",rawName:"v-decorator",value:["new_password",{rules:[{required:!0,message:t.$t("userManage.passwordRequired")||"Please enter new password"},{min:6,message:t.$t("userManage.passwordMin")||"Password must be at least 6 characters"}]}],expression:"['new_password', {\n rules: [\n { required: true, message: $t('userManage.passwordRequired') || 'Please enter new password' },\n { min: 6, message: $t('userManage.passwordMin') || 'Password must be at least 6 characters' }\n ]\n }]"}],attrs:{placeholder:t.$t("userManage.newPasswordPlaceholder")||"Enter new password"}},[e("a-icon",{attrs:{slot:"prefix",type:"lock"},slot:"prefix"})],1)],1)],1)],1),e("a-modal",{attrs:{"wrap-class-name":"user-manage-modal",title:(t.$t("userManage.adjustCredits")||"Adjust Credits")+(t.creditsEditingUser?" - ".concat(t.creditsEditingUser.username):""),confirmLoading:t.creditsLoading},on:{ok:t.handleSetCredits},model:{value:t.creditsModalVisible,callback:function(e){t.creditsModalVisible=e},expression:"creditsModalVisible"}},[e("a-form",{attrs:{layout:"vertical"}},[t.creditsEditingUser?e("div",{staticClass:"current-credits-info"},[e("span",{staticClass:"label"},[t._v(t._s(t.$t("userManage.currentCredits")||"Current Credits")+":")]),e("span",{staticClass:"value"},[t._v(t._s(t.formatCredits(t.creditsEditingUser.credits)))])]):t._e(),e("a-form-item",{attrs:{label:t.$t("userManage.newCredits")||"New Credits"}},[e("a-input-number",{staticStyle:{width:"100%"},attrs:{min:0,precision:2,placeholder:t.$t("userManage.enterCredits")||"Enter new credits amount"},model:{value:t.newCredits,callback:function(e){t.newCredits=e},expression:"newCredits"}})],1),e("a-form-item",{attrs:{label:t.$t("userManage.remark")||"Remark"}},[e("a-input",{attrs:{placeholder:t.$t("userManage.remarkPlaceholder")||"Optional remark"},model:{value:t.creditsRemark,callback:function(e){t.creditsRemark=e},expression:"creditsRemark"}})],1)],1)],1),e("a-modal",{attrs:{"wrap-class-name":"user-manage-modal",title:(t.$t("userManage.setVip")||"Set VIP")+(t.vipEditingUser?" - ".concat(t.vipEditingUser.username):""),confirmLoading:t.vipLoading},on:{ok:t.handleSetVip},model:{value:t.vipModalVisible,callback:function(e){t.vipModalVisible=e},expression:"vipModalVisible"}},[e("a-form",{attrs:{layout:"vertical"}},[t.vipEditingUser&&t.vipEditingUser.vip_expires_at?e("div",{staticClass:"current-vip-info"},[e("span",{staticClass:"label"},[t._v(t._s(t.$t("userManage.currentVip")||"Current VIP")+":")]),e("span",{staticClass:"value",class:t.isVipActive(t.vipEditingUser.vip_expires_at)?"active":"expired"},[t._v(" "+t._s(t.isVipActive(t.vipEditingUser.vip_expires_at)?(t.$t("userManage.vipActive")||"Active")+" (".concat(t.formatDate(t.vipEditingUser.vip_expires_at),")"):t.$t("userManage.vipExpired")||"Expired")+" ")])]):t._e(),e("a-form-item",{attrs:{label:t.$t("userManage.vipDays")||"VIP Days"}},[e("a-select",{staticStyle:{width:"100%"},model:{value:t.vipDays,callback:function(e){t.vipDays=e},expression:"vipDays"}},[e("a-select-option",{attrs:{value:0}},[t._v(t._s(t.$t("userManage.cancelVip")||"Cancel VIP"))]),e("a-select-option",{attrs:{value:7}},[t._v("7 "+t._s(t.$t("userManage.days")||"days"))]),e("a-select-option",{attrs:{value:30}},[t._v("30 "+t._s(t.$t("userManage.days")||"days"))]),e("a-select-option",{attrs:{value:90}},[t._v("90 "+t._s(t.$t("userManage.days")||"days"))]),e("a-select-option",{attrs:{value:180}},[t._v("180 "+t._s(t.$t("userManage.days")||"days"))]),e("a-select-option",{attrs:{value:365}},[t._v("365 "+t._s(t.$t("userManage.days")||"days"))]),e("a-select-option",{attrs:{value:-1}},[t._v(t._s(t.$t("userManage.customDate")||"Custom Date"))])],1)],1),-1===t.vipDays?e("a-form-item",{attrs:{label:t.$t("userManage.vipExpiresAt")||"VIP Expires At"}},[e("a-date-picker",{staticStyle:{width:"100%"},attrs:{showTime:"",format:"YYYY-MM-DD HH:mm:ss"},model:{value:t.vipCustomDate,callback:function(e){t.vipCustomDate=e},expression:"vipCustomDate"}})],1):t._e(),e("a-form-item",{attrs:{label:t.$t("userManage.remark")||"Remark"}},[e("a-input",{attrs:{placeholder:t.$t("userManage.remarkPlaceholder")||"Optional remark"},model:{value:t.vipRemark,callback:function(e){t.vipRemark=e},expression:"vipRemark"}})],1)],1)],1)],1)},r=[],i=a(81127),n=a(56252),o=a(76338),l=(a(2892),a(84841)),d=a(55434),c=a(95353),u={name:"UserManage",mixins:[d.t],data:function(){return{activeTab:"users",loading:!1,users:[],roles:[],searchKeyword:"",pagination:{current:1,pageSize:10,total:0},modalVisible:!1,modalLoading:!1,isEdit:!1,editingUser:null,resetPasswordVisible:!1,resetPasswordLoading:!1,resetPasswordUserId:null,creditsModalVisible:!1,creditsLoading:!1,creditsEditingUser:null,newCredits:0,creditsRemark:"",vipModalVisible:!1,vipLoading:!1,vipEditingUser:null,vipDays:30,vipCustomDate:null,vipRemark:"",strategyLoading:!1,systemStrategies:[],strategySummary:null,strategyStatusFilter:"all",strategySearchKeyword:"",strategyPagination:{current:1,pageSize:20,total:0},strategiesLoaded:!1,orderLoading:!1,orders:[],orderSummary:null,orderStatusFilter:"all",orderSearchKeyword:"",orderPagination:{current:1,pageSize:20,total:0},ordersLoaded:!1,aiStatsLoading:!1,aiUserStats:[],aiRecentRecords:[],aiStatsSummary:null,aiStatsSearchKeyword:"",aiStatsPagination:{current:1,pageSize:20,total:0},aiStatsLoaded:!1}},computed:(0,o.A)((0,o.A)({},(0,c.L8)(["userInfo"])),{},{isDarkTheme:function(){return"dark"===this.navTheme||"realdark"===this.navTheme},currentUserId:function(){var t;return null===(t=this.userInfo)||void 0===t?void 0:t.id},columns:function(){return[{title:"ID",dataIndex:"id",width:60},{title:this.$t("userManage.username")||"Username",dataIndex:"username",width:120},{title:this.$t("userManage.nickname")||"Nickname",dataIndex:"nickname",width:100},{title:this.$t("userManage.email")||"Email",dataIndex:"email",width:180},{title:this.$t("userManage.role")||"Role",dataIndex:"role",width:90,scopedSlots:{customRender:"role"}},{title:this.$t("userManage.credits")||"Credits",dataIndex:"credits",width:100,scopedSlots:{customRender:"credits"}},{title:"VIP",dataIndex:"vip_expires_at",width:120,scopedSlots:{customRender:"vip_expires_at"}},{title:this.$t("userManage.status")||"Status",dataIndex:"status",width:90,scopedSlots:{customRender:"status"}},{title:this.$t("userManage.lastLogin")||"Last Login",dataIndex:"last_login_at",width:150,scopedSlots:{customRender:"last_login_at"}},{title:this.$t("common.actions")||"Actions",dataIndex:"action",width:180,scopedSlots:{customRender:"action"}}]},strategyColumns:function(){return[{title:"ID",dataIndex:"id",width:60,fixed:"left"},{title:this.$t("systemOverview.colUser")||"User",dataIndex:"username",width:110,fixed:"left",scopedSlots:{customRender:"userInfo"}},{title:this.$t("systemOverview.colStrategy")||"Strategy",dataIndex:"strategy_name",width:160,ellipsis:!0},{title:this.$t("systemOverview.colStatus")||"Status",dataIndex:"status",width:100,scopedSlots:{customRender:"strategyStatus"}},{title:this.$t("systemOverview.colSymbol")||"Symbol",dataIndex:"symbol",width:140,scopedSlots:{customRender:"symbolInfo"}},{title:this.$t("systemOverview.colCapital")||"Capital",dataIndex:"initial_capital",width:110,scopedSlots:{customRender:"capitalInfo"}},{title:this.$t("systemOverview.colPnl")||"PnL / ROI",dataIndex:"total_pnl",width:200,scopedSlots:{customRender:"pnlInfo"}},{title:this.$t("systemOverview.colPositions")||"Pos",dataIndex:"position_count",width:70,align:"center",scopedSlots:{customRender:"positionInfo"}},{title:this.$t("systemOverview.colTrades")||"Trades",dataIndex:"trade_count",width:80,align:"center",scopedSlots:{customRender:"tradeInfo"}},{title:this.$t("systemOverview.colIndicator")||"Indicator",dataIndex:"indicator_name",width:130,scopedSlots:{customRender:"indicatorInfo"}},{title:this.$t("systemOverview.colExchange")||"Exchange",dataIndex:"exchange_name",width:100,scopedSlots:{customRender:"exchangeInfo"}},{title:this.$t("systemOverview.colTimeframe")||"TF",dataIndex:"timeframe",width:70,align:"center",scopedSlots:{customRender:"timeframeInfo"}},{title:this.$t("systemOverview.colLeverage")||"Lev",dataIndex:"leverage",width:70,align:"center",scopedSlots:{customRender:"leverageInfo"}},{title:this.$t("systemOverview.colCreatedAt")||"Created",dataIndex:"created_at",width:150,scopedSlots:{customRender:"createdAtInfo"}}]},orderColumns:function(){return[{title:this.$t("adminOrders.colUser")||"User",dataIndex:"username",width:120,scopedSlots:{customRender:"orderUserInfo"}},{title:this.$t("adminOrders.colType")||"Type",dataIndex:"order_type",width:80,scopedSlots:{customRender:"orderTypeInfo"}},{title:this.$t("adminOrders.colPlan")||"Plan",dataIndex:"plan",width:100,scopedSlots:{customRender:"planInfo"}},{title:this.$t("adminOrders.colAmount")||"Amount",dataIndex:"amount",width:120,scopedSlots:{customRender:"amountInfo"}},{title:this.$t("adminOrders.colStatus")||"Status",dataIndex:"status",width:100,scopedSlots:{customRender:"orderStatusInfo"}},{title:this.$t("adminOrders.colChain")||"Chain",dataIndex:"chain",width:80,scopedSlots:{customRender:"chainInfo"}},{title:this.$t("adminOrders.colAddress")||"Address",dataIndex:"address",width:140,scopedSlots:{customRender:"addressInfo"}},{title:this.$t("adminOrders.colTxHash")||"Tx Hash",dataIndex:"tx_hash",width:160,scopedSlots:{customRender:"txHashInfo"}},{title:this.$t("adminOrders.colCreatedAt")||"Created",dataIndex:"created_at",width:150,scopedSlots:{customRender:"orderCreatedAt"}}]},aiUserColumns:function(){return[{title:this.$t("adminAiStats.colUser")||"User",dataIndex:"username",width:140,scopedSlots:{customRender:"aiUserInfo"}},{title:this.$t("adminAiStats.colAnalysisCount")||"Analyses",dataIndex:"analysis_count",width:100,align:"center",scopedSlots:{customRender:"analysisCountInfo"},sorter:function(t,e){return t.analysis_count-e.analysis_count},defaultSortOrder:"descend"},{title:this.$t("adminAiStats.colSymbols")||"Symbols",dataIndex:"symbol_count",width:90,align:"center"},{title:this.$t("adminAiStats.colMarkets")||"Markets",dataIndex:"market_count",width:90,align:"center"},{title:this.$t("adminAiStats.colAccuracy")||"Correct / Wrong",dataIndex:"correct",width:130,align:"center",scopedSlots:{customRender:"accuracyInfo"}},{title:this.$t("adminAiStats.colFeedback")||"Feedback",dataIndex:"helpful",width:130,align:"center",scopedSlots:{customRender:"feedbackInfo"}},{title:this.$t("adminAiStats.colLastAnalysis")||"Last Analysis",dataIndex:"last_analysis_at",width:160,scopedSlots:{customRender:"lastAnalysisAt"}}]},aiRecentColumns:function(){return[{title:"ID",dataIndex:"id",width:60},{title:this.$t("adminAiStats.colUser")||"User",dataIndex:"username",width:120,scopedSlots:{customRender:"recentUserInfo"}},{title:this.$t("adminAiStats.colMarket")||"Market",dataIndex:"market",width:80},{title:this.$t("adminAiStats.colSymbol")||"Symbol",dataIndex:"symbol",width:120},{title:this.$t("adminAiStats.colModel")||"Model",dataIndex:"model",width:140,ellipsis:!0},{title:this.$t("adminAiStats.colStatus")||"Status",dataIndex:"status",width:100,scopedSlots:{customRender:"recentStatusInfo"}},{title:this.$t("adminAiStats.colCreatedAt")||"Time",dataIndex:"created_at",width:160,scopedSlots:{customRender:"recentCreatedAt"}}]}}),beforeCreate:function(){this.form=this.$form.createForm(this),this.resetPasswordForm=this.$form.createForm(this,{name:"resetPassword"})},mounted:function(){this.loadUsers(),this.loadRoles()},methods:{handleTabChange:function(t){"strategies"!==t||this.strategiesLoaded||this.loadSystemStrategies(),"orders"!==t||this.ordersLoaded||this.loadOrders(),"aiStats"!==t||this.aiStatsLoaded||this.loadAiStats()},loadSystemStrategies:function(){var t=this;return(0,n.A)((0,i.A)().m(function e(){var a;return(0,i.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return t.strategyLoading=!0,e.p=1,e.n=2,(0,l.DK)({page:t.strategyPagination.current,page_size:t.strategyPagination.pageSize,status:"all"===t.strategyStatusFilter?"":t.strategyStatusFilter,search:t.strategySearchKeyword||""});case 2:a=e.v,1===a.code?(t.systemStrategies=a.data.items||[],t.strategyPagination.total=a.data.total||0,t.strategySummary=a.data.summary||{},t.strategiesLoaded=!0):t.$message.error(a.msg||"Failed to load strategies"),e.n=4;break;case 3:e.p=3,e.v,t.$message.error("Failed to load system strategies");case 4:return e.p=4,t.strategyLoading=!1,e.f(4);case 5:return e.a(2)}},e,null,[[1,3,4,5]])}))()},handleStrategySearch:function(){this.strategyPagination.current=1,this.loadSystemStrategies()},handleStrategyFilterChange:function(){this.strategyPagination.current=1,this.loadSystemStrategies()},handleStrategyTableChange:function(t){this.strategyPagination.current=t.current,this.strategyPagination.pageSize=t.pageSize,this.loadSystemStrategies()},getUserColor:function(t){var e=["#1890ff","#722ed1","#13c2c2","#fa8c16","#eb2f96","#52c41a","#2f54eb","#faad14"];return e[(t||0)%e.length]},formatNumber:function(t){return t||0===t?Number(t).toLocaleString("en-US",{minimumFractionDigits:0,maximumFractionDigits:2}):"0"},formatPnl:function(t){if(!t&&0!==t)return"0";var e=Number(t),a=e>=0?"+":"";return a+e.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:4})},truncate:function(t,e){return t?t.length>e?t.substring(0,e)+"...":t:""},loadUsers:function(){var t=this;return(0,n.A)((0,i.A)().m(function e(){var a;return(0,i.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return t.loading=!0,e.p=1,e.n=2,(0,l.aU)({page:t.pagination.current,page_size:t.pagination.pageSize,search:t.searchKeyword||""});case 2:a=e.v,1===a.code?(t.users=a.data.items||[],t.pagination.total=a.data.total||0):t.$message.error(a.msg||"Failed to load users"),e.n=4;break;case 3:e.p=3,e.v,t.$message.error("Failed to load users");case 4:return e.p=4,t.loading=!1,e.f(4);case 5:return e.a(2)}},e,null,[[1,3,4,5]])}))()},handleSearch:function(){this.pagination.current=1,this.loadUsers()},loadRoles:function(){var t=this;return(0,n.A)((0,i.A)().m(function e(){var a;return(0,i.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.p=0,e.n=1,(0,l.O0)();case 1:a=e.v,1===a.code&&(t.roles=a.data.roles||[]),e.n=3;break;case 2:e.p=2,e.v;case 3:return e.a(2)}},e,null,[[0,2]])}))()},handleTableChange:function(t){this.pagination.current=t.current,this.pagination.pageSize=t.pageSize,this.loadUsers()},showCreateModal:function(){var t=this;this.isEdit=!1,this.editingUser=null,this.modalVisible=!0,this.$nextTick(function(){t.form.resetFields()})},showEditModal:function(t){var e=this;this.isEdit=!0,this.editingUser=t,this.modalVisible=!0,this.$nextTick(function(){e.form.setFieldsValue({username:t.username,nickname:t.nickname,email:t.email,role:t.role,status:t.status})})},handleModalCancel:function(){this.modalVisible=!1,this.form.resetFields()},handleModalOk:function(){var t=this;this.form.validateFields(function(){var e=(0,n.A)((0,i.A)().m(function e(a,s){var r;return(0,i.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(!a){e.n=1;break}return e.a(2);case 1:if(t.modalLoading=!0,e.p=2,!t.isEdit){e.n=4;break}return e.n=3,(0,l.TK)(t.editingUser.id,{nickname:s.nickname,email:s.email,role:s.role,status:s.status});case 3:r=e.v,e.n=6;break;case 4:return e.n=5,(0,l.kg)(s);case 5:r=e.v;case 6:1===r.code?(t.$message.success(r.msg||"Success"),t.modalVisible=!1,t.form.resetFields(),t.loadUsers()):t.$message.error(r.msg||"Operation failed"),e.n=8;break;case 7:e.p=7,e.v,t.$message.error("Operation failed");case 8:return e.p=8,t.modalLoading=!1,e.f(8);case 9:return e.a(2)}},e,null,[[2,7,8,9]])}));return function(t,a){return e.apply(this,arguments)}}())},handleDelete:function(t){var e=this;return(0,n.A)((0,i.A)().m(function a(){var s;return(0,i.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return a.p=0,a.n=1,(0,l.hG)(t);case 1:s=a.v,1===s.code?(e.$message.success(s.msg||"User deleted"),e.loadUsers()):e.$message.error(s.msg||"Delete failed"),a.n=3;break;case 2:a.p=2,a.v,e.$message.error("Delete failed");case 3:return a.a(2)}},a,null,[[0,2]])}))()},showResetPasswordModal:function(t){var e=this;this.resetPasswordUserId=t.id,this.resetPasswordVisible=!0,this.$nextTick(function(){e.resetPasswordForm.resetFields()})},handleResetPassword:function(){var t=this;this.resetPasswordForm.validateFields(function(){var e=(0,n.A)((0,i.A)().m(function e(a,s){var r;return(0,i.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(!a){e.n=1;break}return e.a(2);case 1:return t.resetPasswordLoading=!0,e.p=2,e.n=3,(0,l.cw)({user_id:t.resetPasswordUserId,new_password:s.new_password});case 3:r=e.v,1===r.code?(t.$message.success(r.msg||"Password reset successfully"),t.resetPasswordVisible=!1,t.resetPasswordForm.resetFields()):t.$message.error(r.msg||"Reset failed"),e.n=5;break;case 4:e.p=4,e.v,t.$message.error("Reset failed");case 5:return e.p=5,t.resetPasswordLoading=!1,e.f(5);case 6:return e.a(2)}},e,null,[[2,4,5,6]])}));return function(t,a){return e.apply(this,arguments)}}())},getRoleColor:function(t){var e={admin:"red",manager:"orange",user:"blue",viewer:"default"};return e[t]||"default"},getRoleLabel:function(t){var e={admin:this.$t("userManage.roleAdmin")||"Admin",manager:this.$t("userManage.roleManager")||"Manager",user:this.$t("userManage.roleUser")||"User",viewer:this.$t("userManage.roleViewer")||"Viewer"};return e[t]||t},formatTime:function(t){if(!t)return"";var e=new Date("number"===typeof t?1e3*t:t);return e.toLocaleString()},formatCredits:function(t){return t||0===t?Number(t).toLocaleString("en-US",{minimumFractionDigits:0,maximumFractionDigits:2}):"0"},formatDate:function(t){if(!t)return"";var e=new Date(t);return e.toLocaleDateString()},isVipActive:function(t){return!!t&&new Date(t)>new Date},showCreditsModal:function(t){this.creditsEditingUser=t,this.newCredits=parseFloat(t.credits)||0,this.creditsRemark="",this.creditsModalVisible=!0},handleSetCredits:function(){var t=this;return(0,n.A)((0,i.A)().m(function e(){var a;return(0,i.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(!(t.newCredits<0)){e.n=1;break}return t.$message.error(t.$t("userManage.creditsNonNegative")||"Credits cannot be negative"),e.a(2);case 1:return t.creditsLoading=!0,e.p=2,e.n=3,(0,l.wq)({user_id:t.creditsEditingUser.id,credits:t.newCredits,remark:t.creditsRemark});case 3:a=e.v,1===a.code?(t.$message.success(a.msg||"Credits updated successfully"),t.creditsModalVisible=!1,t.loadUsers()):t.$message.error(a.msg||"Update failed"),e.n=5;break;case 4:e.p=4,e.v,t.$message.error("Update failed");case 5:return e.p=5,t.creditsLoading=!1,e.f(5);case 6:return e.a(2)}},e,null,[[2,4,5,6]])}))()},showVipModal:function(t){this.vipEditingUser=t,this.vipDays=30,this.vipCustomDate=null,this.vipRemark="",this.vipModalVisible=!0},handleSetVip:function(){var t=this;return(0,n.A)((0,i.A)().m(function e(){var a,s;return(0,i.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(a={user_id:t.vipEditingUser.id,remark:t.vipRemark},-1!==t.vipDays){e.n=2;break}if(t.vipCustomDate){e.n=1;break}return t.$message.error(t.$t("userManage.selectDate")||"Please select a date"),e.a(2);case 1:a.vip_expires_at=t.vipCustomDate.toISOString(),e.n=3;break;case 2:a.vip_days=t.vipDays;case 3:return t.vipLoading=!0,e.p=4,e.n=5,(0,l.nY)(a);case 5:s=e.v,1===s.code?(t.$message.success(s.msg||"VIP status updated successfully"),t.vipModalVisible=!1,t.loadUsers()):t.$message.error(s.msg||"Update failed"),e.n=7;break;case 6:e.p=6,e.v,t.$message.error("Update failed");case 7:return e.p=7,t.vipLoading=!1,e.f(7);case 8:return e.a(2)}},e,null,[[4,6,7,8]])}))()},loadOrders:function(){var t=this;return(0,n.A)((0,i.A)().m(function e(){var a;return(0,i.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return t.orderLoading=!0,e.p=1,e.n=2,(0,l.vi)({page:t.orderPagination.current,page_size:t.orderPagination.pageSize,status:"all"===t.orderStatusFilter?"":t.orderStatusFilter,search:t.orderSearchKeyword||""});case 2:a=e.v,1===a.code?(t.orders=a.data.items||[],t.orderPagination.total=a.data.total||0,t.orderSummary=a.data.summary||{},t.ordersLoaded=!0):t.$message.error(a.msg||"Failed to load orders"),e.n=4;break;case 3:e.p=3,e.v,t.$message.error("Failed to load orders");case 4:return e.p=4,t.orderLoading=!1,e.f(4);case 5:return e.a(2)}},e,null,[[1,3,4,5]])}))()},handleOrderSearch:function(){this.orderPagination.current=1,this.loadOrders()},handleOrderFilterChange:function(){this.orderPagination.current=1,this.loadOrders()},handleOrderTableChange:function(t){this.orderPagination.current=t.current,this.orderPagination.pageSize=t.pageSize,this.loadOrders()},getOrderStatusColor:function(t){var e={paid:"green",confirmed:"green",pending:"orange",expired:"grey",cancelled:"default",failed:"red"};return e[t]||"default"},getOrderStatusLabel:function(t){var e={paid:this.$t("adminOrders.statusPaid")||"Paid",confirmed:this.$t("adminOrders.statusConfirmed")||"Confirmed",pending:this.$t("adminOrders.statusPending")||"Pending",expired:this.$t("adminOrders.statusExpired")||"Expired",cancelled:this.$t("adminOrders.statusCancelled")||"Cancelled",failed:this.$t("adminOrders.statusFailed")||"Failed"};return e[t]||t},loadAiStats:function(){var t=this;return(0,n.A)((0,i.A)().m(function e(){var a;return(0,i.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return t.aiStatsLoading=!0,e.p=1,e.n=2,(0,l.d$)({page:t.aiStatsPagination.current,page_size:t.aiStatsPagination.pageSize,search:t.aiStatsSearchKeyword||""});case 2:a=e.v,1===a.code?(t.aiUserStats=a.data.user_stats||[],t.aiRecentRecords=a.data.recent||[],t.aiStatsPagination.total=a.data.user_total||0,t.aiStatsSummary=a.data.summary||{},t.aiStatsLoaded=!0):t.$message.error(a.msg||"Failed to load AI stats"),e.n=4;break;case 3:e.p=3,e.v,t.$message.error("Failed to load AI stats");case 4:return e.p=4,t.aiStatsLoading=!1,e.f(4);case 5:return e.a(2)}},e,null,[[1,3,4,5]])}))()},handleAiStatsSearch:function(){this.aiStatsPagination.current=1,this.loadAiStats()},handleAiStatsTableChange:function(t){this.aiStatsPagination.current=t.current,this.aiStatsPagination.pageSize=t.pageSize,this.loadAiStats()}}},m=u,p=a(845),g=(0,p.A)(m,s,r,!1,null,"0b8bb4d8",null),v=g.exports},84841:function(t,e,a){a.d(e,{DK:function(){return _},E$:function(){return c},Gl:function(){return p},O0:function(){return d},TK:function(){return n},aU:function(){return r},cw:function(){return l},d$:function(){return w},hG:function(){return o},hl:function(){return g},kg:function(){return i},nY:function(){return h},r7:function(){return u},rx:function(){return f},v9:function(){return v},vF:function(){return m},vi:function(){return S},wq:function(){return y}});var s=a(75769);function r(t){return(0,s.Ay)({url:"/api/users/list",method:"get",params:t})}function i(t){return(0,s.Ay)({url:"/api/users/create",method:"post",data:t})}function n(t,e){return(0,s.Ay)({url:"/api/users/update",method:"put",params:{id:t},data:e})}function o(t){return(0,s.Ay)({url:"/api/users/delete",method:"delete",params:{id:t}})}function l(t){return(0,s.Ay)({url:"/api/users/reset-password",method:"post",data:t})}function d(){return(0,s.Ay)({url:"/api/users/roles",method:"get"})}function c(){return(0,s.Ay)({url:"/api/users/profile",method:"get"})}function u(t){return(0,s.Ay)({url:"/api/users/profile/update",method:"put",data:t})}function m(){return(0,s.Ay)({url:"/api/users/notification-settings",method:"get"})}function p(t){return(0,s.Ay)({url:"/api/users/notification-settings",method:"put",data:t})}function g(){return(0,s.Ay)({url:"/api/users/notification-settings/test",method:"post",data:{}})}function v(t){return(0,s.Ay)({url:"/api/users/my-credits-log",method:"get",params:t})}function f(t){return(0,s.Ay)({url:"/api/users/my-referrals",method:"get",params:t})}function y(t){return(0,s.Ay)({url:"/api/users/set-credits",method:"post",data:t})}function h(t){return(0,s.Ay)({url:"/api/users/set-vip",method:"post",data:t})}function _(t){return(0,s.Ay)({url:"/api/users/system-strategies",method:"get",params:t})}function S(t){return(0,s.Ay)({url:"/api/users/admin-orders",method:"get",params:t})}function w(t){return(0,s.Ay)({url:"/api/users/admin-ai-stats",method:"get",params:t})}}}]); \ No newline at end of file diff --git a/frontend/dist/js/275.7f1d5053.js b/frontend/dist/js/275.7f1d5053.js new file mode 100644 index 0000000..d493c10 --- /dev/null +++ b/frontend/dist/js/275.7f1d5053.js @@ -0,0 +1 @@ +"use strict";(self["webpackChunkvue_antd_pro"]=self["webpackChunkvue_antd_pro"]||[]).push([[275],{54275:function(t,e,a){a.r(e),a.d(e,{default:function(){return v}});var s=function(){var t=this,e=t._self._c;return e("div",{staticClass:"user-manage-page",class:{"theme-dark":t.isDarkTheme}},[e("div",{staticClass:"page-header"},[e("h2",{staticClass:"page-title"},[e("a-icon",{attrs:{type:"team"}}),e("span",[t._v(t._s(t.$t("userManage.title")||"User Management"))])],1),e("p",{staticClass:"page-desc"},[t._v(t._s(t.$t("userManage.description")||"Manage system users, roles and permissions"))])]),e("a-tabs",{staticClass:"manage-tabs",on:{change:t.handleTabChange},model:{value:t.activeTab,callback:function(e){t.activeTab=e},expression:"activeTab"}},[e("a-tab-pane",{key:"users",attrs:{tab:t.$t("userManage.tabUsers")||"User Management"}},[e("div",{staticClass:"toolbar"},[e("div",{staticClass:"toolbar-left"},[e("a-button",{attrs:{type:"primary"},on:{click:t.showCreateModal}},[e("a-icon",{attrs:{type:"user-add"}}),t._v(" "+t._s(t.$t("userManage.createUser")||"Create User")+" ")],1),e("a-button",{on:{click:t.loadUsers}},[e("a-icon",{attrs:{type:"reload"}}),t._v(" "+t._s(t.$t("common.refresh")||"Refresh")+" ")],1)],1),e("div",{staticClass:"toolbar-right"},[e("a-input-search",{staticClass:"toolbar-search",attrs:{placeholder:t.$t("userManage.searchPlaceholder")||"Search by username/email",allowClear:""},on:{search:t.handleSearch,pressEnter:t.handleSearch},model:{value:t.searchKeyword,callback:function(e){t.searchKeyword=e},expression:"searchKeyword"}})],1)]),e("a-card",{staticClass:"user-table-card",attrs:{bordered:!1}},[e("a-table",{attrs:{columns:t.columns,dataSource:t.users,loading:t.loading,pagination:t.pagination,rowKey:function(t){return t.id},scroll:{x:1280}},on:{change:t.handleTableChange},scopedSlots:t._u([{key:"status",fn:function(a){return[e("a-tag",{attrs:{color:"active"===a?"green":"red"}},[t._v(" "+t._s("active"===a?t.$t("userManage.active")||"Active":t.$t("userManage.disabled")||"Disabled")+" ")])]}},{key:"role",fn:function(a){return[e("a-tag",{attrs:{color:t.getRoleColor(a)}},[t._v(" "+t._s(t.getRoleLabel(a))+" ")])]}},{key:"last_login_at",fn:function(a){return[a?e("span",[t._v(t._s(t.formatTime(a)))]):e("span",{staticClass:"text-muted"},[t._v(t._s(t.$t("userManage.neverLogin")||"Never"))])]}},{key:"credits",fn:function(a){return[e("span",{staticClass:"credits-value"},[t._v(t._s(t.formatCredits(a)))])]}},{key:"vip_expires_at",fn:function(a){return[a&&t.isVipActive(a)?[e("a-tag",{attrs:{color:"gold"}},[e("a-icon",{attrs:{type:"crown"}}),t._v(" "+t._s(t.formatDate(a))+" ")],1)]:e("span",{staticClass:"text-muted"},[t._v("-")])]}},{key:"action",fn:function(a,s){return[e("a-space",[e("a-tooltip",{attrs:{title:t.$t("common.edit")||"Edit"}},[e("a-button",{attrs:{type:"link",size:"small"},on:{click:function(e){return t.showEditModal(s)}}},[e("a-icon",{attrs:{type:"edit"}})],1)],1),e("a-tooltip",{attrs:{title:t.$t("userManage.adjustCredits")||"Adjust Credits"}},[e("a-button",{attrs:{type:"link",size:"small"},on:{click:function(e){return t.showCreditsModal(s)}}},[e("a-icon",{staticStyle:{color:"#722ed1"},attrs:{type:"wallet"}})],1)],1),e("a-tooltip",{attrs:{title:t.$t("userManage.setVip")||"Set VIP"}},[e("a-button",{attrs:{type:"link",size:"small"},on:{click:function(e){return t.showVipModal(s)}}},[e("a-icon",{staticStyle:{color:"#faad14"},attrs:{type:"crown"}})],1)],1),e("a-tooltip",{attrs:{title:t.$t("userManage.resetPassword")||"Reset Password"}},[e("a-button",{attrs:{type:"link",size:"small"},on:{click:function(e){return t.showResetPasswordModal(s)}}},[e("a-icon",{attrs:{type:"key"}})],1)],1),e("a-tooltip",{attrs:{title:t.$t("common.delete")||"Delete"}},[e("a-popconfirm",{attrs:{title:t.$t("userManage.confirmDelete")||"Are you sure to delete this user?"},on:{confirm:function(e){return t.handleDelete(s.id)}}},[e("a-button",{attrs:{type:"link",size:"small",disabled:s.id===t.currentUserId}},[e("a-icon",{staticStyle:{color:"#ff4d4f"},attrs:{type:"delete"}})],1)],1)],1)],1)]}}])})],1)],1),e("a-tab-pane",{key:"strategies",attrs:{tab:t.$t("systemOverview.tabTitle")||"System Overview"}},[t.strategySummary?e("div",{staticClass:"summary-cards"},[e("div",{staticClass:"summary-card"},[e("div",{staticClass:"summary-icon",staticStyle:{background:"linear-gradient(135deg, #667eea, #764ba2)"}},[e("a-icon",{attrs:{type:"fund"}})],1),e("div",{staticClass:"summary-info"},[e("div",{staticClass:"summary-value"},[t._v(t._s(t.strategySummary.total_strategies||0))]),e("div",{staticClass:"summary-label"},[t._v(t._s(t.$t("systemOverview.totalStrategies")||"Total Strategies"))])])]),e("div",{staticClass:"summary-card"},[e("div",{staticClass:"summary-icon",staticStyle:{background:"linear-gradient(135deg, #11998e, #38ef7d)"}},[e("a-icon",{attrs:{type:"play-circle"}})],1),e("div",{staticClass:"summary-info"},[e("div",{staticClass:"summary-value"},[t._v(t._s(t.strategySummary.running_strategies||0))]),e("div",{staticClass:"summary-sub"},[t._v(" "+t._s(t.$t("systemOverview.live")||"实盘")+": "+t._s(t.strategySummary.running_live_strategies||0)+" / "+t._s(t.$t("systemOverview.signal")||"仅通知")+": "+t._s(t.strategySummary.running_signal_strategies||0)+" ")]),e("div",{staticClass:"summary-label"},[t._v(t._s(t.$t("systemOverview.runningStrategies")||"Running"))])])]),e("div",{staticClass:"summary-card"},[e("div",{staticClass:"summary-icon",staticStyle:{background:"linear-gradient(135deg, #f093fb, #f5576c)"}},[e("a-icon",{attrs:{type:"dollar"}})],1),e("div",{staticClass:"summary-info"},[e("div",{staticClass:"summary-value"},[t._v(t._s(t.formatNumber(t.strategySummary.total_capital)))]),e("div",{staticClass:"summary-sub"},[t._v(" "+t._s(t.$t("systemOverview.live")||"实盘")+": "+t._s(t.formatNumber(t.strategySummary.live_capital))+" / "+t._s(t.$t("systemOverview.signal")||"仅通知")+": "+t._s(t.formatNumber(t.strategySummary.signal_capital))+" ")]),e("div",{staticClass:"summary-label"},[t._v(t._s(t.$t("systemOverview.totalCapital")||"Total Capital"))])])]),e("div",{staticClass:"summary-card"},[e("div",{staticClass:"summary-icon",style:{background:(t.strategySummary.total_pnl||0)>=0?"linear-gradient(135deg, #11998e, #38ef7d)":"linear-gradient(135deg, #ff416c, #ff4b2b)"}},[e("a-icon",{attrs:{type:"rise"}})],1),e("div",{staticClass:"summary-info"},[e("div",{staticClass:"summary-value",class:(t.strategySummary.total_pnl||0)>=0?"text-profit":"text-loss"},[t._v(" "+t._s(t.formatPnl(t.strategySummary.total_pnl))+" "),e("span",{staticClass:"roi-badge"},[t._v(t._s(t.strategySummary.total_roi||0)+"%")])]),e("div",{staticClass:"summary-sub"},[t._v(" "+t._s(t.$t("systemOverview.live")||"实盘")+": "+t._s(t.formatPnl(t.strategySummary.live_pnl))+" / "+t._s(t.$t("systemOverview.signal")||"仅通知")+": "+t._s(t.formatPnl(t.strategySummary.signal_pnl))+" ")]),e("div",{staticClass:"summary-label"},[t._v(t._s(t.$t("systemOverview.totalPnl")||"Total PnL"))])])])]):t._e(),e("div",{staticClass:"toolbar"},[e("div",{staticClass:"toolbar-left"},[e("a-button",{on:{click:t.loadSystemStrategies}},[e("a-icon",{attrs:{type:"reload"}}),t._v(" "+t._s(t.$t("common.refresh")||"Refresh")+" ")],1),e("a-select",{staticClass:"toolbar-select",on:{change:t.handleStrategyFilterChange},model:{value:t.strategyStatusFilter,callback:function(e){t.strategyStatusFilter=e},expression:"strategyStatusFilter"}},[e("a-select-option",{attrs:{value:"all"}},[t._v(t._s(t.$t("systemOverview.filterAll")||"All Status"))]),e("a-select-option",{attrs:{value:"running"}},[t._v(t._s(t.$t("systemOverview.filterRunning")||"Running"))]),e("a-select-option",{attrs:{value:"stopped"}},[t._v(t._s(t.$t("systemOverview.filterStopped")||"Stopped"))])],1)],1),e("div",{staticClass:"toolbar-right"},[e("a-input-search",{staticClass:"toolbar-search",attrs:{placeholder:t.$t("systemOverview.searchPlaceholder")||"Search strategy/symbol/user",allowClear:""},on:{search:t.handleStrategySearch,pressEnter:t.handleStrategySearch},model:{value:t.strategySearchKeyword,callback:function(e){t.strategySearchKeyword=e},expression:"strategySearchKeyword"}})],1)]),e("a-card",{staticClass:"user-table-card",attrs:{bordered:!1}},[e("a-table",{attrs:{columns:t.strategyColumns,dataSource:t.systemStrategies,loading:t.strategyLoading,pagination:t.strategyPagination,rowKey:function(t){return t.id},scroll:{x:1600}},on:{change:t.handleStrategyTableChange},scopedSlots:t._u([{key:"strategyStatus",fn:function(a){return[e("span",{staticClass:"status-cell"},[e("span",{staticClass:"status-dot",class:"running"===a?"dot-running":"dot-stopped"}),e("span",{class:"running"===a?"status-running":"status-stopped"},[t._v(" "+t._s("running"===a?t.$t("systemOverview.running")||"Running":t.$t("systemOverview.stopped")||"Stopped")+" ")])])]}},{key:"userInfo",fn:function(a,s){return[e("a-tooltip",{attrs:{title:s.nickname||s.username||"-"}},[e("span",{staticClass:"user-cell"},[e("a-avatar",{style:{backgroundColor:t.getUserColor(s.user_id),fontSize:"11px",marginRight:"6px"},attrs:{size:"small"}},[t._v(" "+t._s((s.nickname||s.username||"?").charAt(0).toUpperCase())+" ")]),e("span",{staticClass:"user-name"},[t._v(t._s(t.truncate(s.nickname||s.username||"-",8)))])],1)])]}},{key:"symbolInfo",fn:function(a,s){return[e("div",[e("span",{staticClass:"symbol-text"},[t._v(t._s(s.symbol||"-"))]),"cross_sectional"===s.cs_strategy_type?e("a-tag",{staticStyle:{"margin-left":"4px"},attrs:{color:"purple",size:"small"}},[t._v("CS")]):t._e()],1),"cross_sectional"===s.cs_strategy_type&&s.symbol_list&&s.symbol_list.length?e("div",{staticClass:"symbol-count text-muted"},[t._v(" "+t._s(s.symbol_list.length)+" "+t._s(t.$t("systemOverview.symbols")||"symbols")+" ")]):t._e()]}},{key:"capitalInfo",fn:function(a){return[e("span",[t._v(t._s(t.formatNumber(a)))])]}},{key:"pnlInfo",fn:function(a,s){return[e("div",{class:s.total_pnl>=0?"text-profit":"text-loss"},[e("span",{staticClass:"pnl-value"},[t._v(t._s(t.formatPnl(s.total_pnl)))]),e("span",{staticClass:"roi-text"},[t._v("("+t._s(s.roi>=0?"+":"")+t._s(s.roi)+"%)")])]),e("div",{staticClass:"pnl-detail text-muted"},[e("span",[t._v(t._s(t.$t("systemOverview.realized")||"Real")+": "+t._s(t.formatPnl(s.total_realized_pnl)))]),e("span",{staticStyle:{"margin-left":"8px"}},[t._v(t._s(t.$t("systemOverview.unrealized")||"Unreal")+": "+t._s(t.formatPnl(s.total_unrealized_pnl)))])])]}},{key:"positionInfo",fn:function(t,a){return[e("a-badge",{attrs:{count:a.position_count,numberStyle:{backgroundColor:a.position_count>0?"#52c41a":"#d9d9d9"}}})]}},{key:"tradeInfo",fn:function(a){return[e("span",[t._v(t._s(a||0))])]}},{key:"indicatorInfo",fn:function(a){return[a?e("a-tooltip",{attrs:{title:a}},[e("span",{staticClass:"indicator-name"},[t._v(t._s(t.truncate(a,16)))])]):e("span",{staticClass:"text-muted"},[t._v("-")])]}},{key:"exchangeInfo",fn:function(a){return[a?e("span",{staticClass:"exchange-name"},[t._v(t._s(a))]):e("span",{staticClass:"text-muted"},[t._v("-")])]}},{key:"timeframeInfo",fn:function(a){return[a?e("a-tag",{attrs:{size:"small"}},[t._v(t._s(a))]):e("span",{staticClass:"text-muted"},[t._v("-")])]}},{key:"leverageInfo",fn:function(a){return[a>1?e("span",{staticStyle:{color:"#fa8c16","font-weight":"600"}},[t._v(t._s(a)+"x")]):e("span",[t._v(t._s(a||1)+"x")])]}},{key:"createdAtInfo",fn:function(a){return[a?e("span",[t._v(t._s(t.formatTime(a)))]):e("span",{staticClass:"text-muted"},[t._v("-")])]}}])})],1)],1),e("a-tab-pane",{key:"orders",attrs:{tab:t.$t("adminOrders.tabTitle")||"Order List"}},[t.orderSummary?e("div",{staticClass:"summary-cards"},[e("div",{staticClass:"summary-card"},[e("div",{staticClass:"summary-icon",staticStyle:{background:"linear-gradient(135deg, #667eea, #764ba2)"}},[e("a-icon",{attrs:{type:"file-text"}})],1),e("div",{staticClass:"summary-info"},[e("div",{staticClass:"summary-value"},[t._v(t._s(t.orderSummary.total_orders||0))]),e("div",{staticClass:"summary-label"},[t._v(t._s(t.$t("adminOrders.totalOrders")||"Total Orders"))])])]),e("div",{staticClass:"summary-card"},[e("div",{staticClass:"summary-icon",staticStyle:{background:"linear-gradient(135deg, #11998e, #38ef7d)"}},[e("a-icon",{attrs:{type:"check-circle"}})],1),e("div",{staticClass:"summary-info"},[e("div",{staticClass:"summary-value"},[t._v(t._s(t.orderSummary.paid_orders||0))]),e("div",{staticClass:"summary-label"},[t._v(t._s(t.$t("adminOrders.paidOrders")||"Paid"))])])]),e("div",{staticClass:"summary-card"},[e("div",{staticClass:"summary-icon",staticStyle:{background:"linear-gradient(135deg, #f093fb, #f5576c)"}},[e("a-icon",{attrs:{type:"clock-circle"}})],1),e("div",{staticClass:"summary-info"},[e("div",{staticClass:"summary-value"},[t._v(t._s(t.orderSummary.pending_orders||0))]),e("div",{staticClass:"summary-label"},[t._v(t._s(t.$t("adminOrders.pendingOrders")||"Pending"))])])]),e("div",{staticClass:"summary-card"},[e("div",{staticClass:"summary-icon",staticStyle:{background:"linear-gradient(135deg, #fa709a, #fee140)"}},[e("a-icon",{attrs:{type:"dollar"}})],1),e("div",{staticClass:"summary-info"},[e("div",{staticClass:"summary-value"},[t._v(t._s(t.formatNumber(t.orderSummary.total_revenue))+" "),e("span",{staticStyle:{"font-size":"13px",color:"#999"}},[t._v("USDT")])]),e("div",{staticClass:"summary-label"},[t._v(t._s(t.$t("adminOrders.totalRevenue")||"Total Revenue"))])])])]):t._e(),e("div",{staticClass:"toolbar"},[e("div",{staticClass:"toolbar-left"},[e("a-button",{on:{click:t.loadOrders}},[e("a-icon",{attrs:{type:"reload"}}),t._v(" "+t._s(t.$t("common.refresh")||"Refresh")+" ")],1),e("a-select",{staticClass:"toolbar-select",on:{change:t.handleOrderFilterChange},model:{value:t.orderStatusFilter,callback:function(e){t.orderStatusFilter=e},expression:"orderStatusFilter"}},[e("a-select-option",{attrs:{value:"all"}},[t._v(t._s(t.$t("adminOrders.filterAll")||"All Status"))]),e("a-select-option",{attrs:{value:"pending"}},[t._v(t._s(t.$t("adminOrders.filterPending")||"Pending"))]),e("a-select-option",{attrs:{value:"paid"}},[t._v(t._s(t.$t("adminOrders.filterPaid")||"Paid"))]),e("a-select-option",{attrs:{value:"confirmed"}},[t._v(t._s(t.$t("adminOrders.filterConfirmed")||"Confirmed"))]),e("a-select-option",{attrs:{value:"expired"}},[t._v(t._s(t.$t("adminOrders.filterExpired")||"Expired"))])],1)],1),e("div",{staticClass:"toolbar-right"},[e("a-input-search",{staticClass:"toolbar-search",attrs:{placeholder:t.$t("adminOrders.searchPlaceholder")||"Search by username/email",allowClear:""},on:{search:t.handleOrderSearch,pressEnter:t.handleOrderSearch},model:{value:t.orderSearchKeyword,callback:function(e){t.orderSearchKeyword=e},expression:"orderSearchKeyword"}})],1)]),e("a-card",{staticClass:"user-table-card",attrs:{bordered:!1}},[e("a-table",{attrs:{columns:t.orderColumns,dataSource:t.orders,loading:t.orderLoading,pagination:t.orderPagination,rowKey:function(t){return t.order_type+"-"+t.id},scroll:{x:1400}},on:{change:t.handleOrderTableChange},scopedSlots:t._u([{key:"orderUserInfo",fn:function(a,s){return[e("a-tooltip",{attrs:{title:(s.nickname||s.username||"-")+" ("+(s.user_email||"")+")"}},[e("span",{staticClass:"user-cell"},[e("a-avatar",{style:{backgroundColor:t.getUserColor(s.user_id),fontSize:"11px",marginRight:"6px"},attrs:{size:"small"}},[t._v(" "+t._s((s.nickname||s.username||"?").charAt(0).toUpperCase())+" ")]),e("span",{staticClass:"user-name"},[t._v(t._s(t.truncate(s.nickname||s.username||"-",10)))])],1)])]}},{key:"orderTypeInfo",fn:function(a){return[e("a-tag",{attrs:{color:"usdt"===a?"green":"blue"}},[t._v(" "+t._s("usdt"===a?"USDT":"Mock")+" ")])]}},{key:"planInfo",fn:function(a){return[e("a-tag",{attrs:{color:"lifetime"===a?"gold":"yearly"===a?"purple":"cyan"}},[t._v(" "+t._s("lifetime"===a?t.$t("adminOrders.lifetime")||"Lifetime":"yearly"===a?t.$t("adminOrders.yearly")||"Yearly":t.$t("adminOrders.monthly")||"Monthly")+" ")])]}},{key:"amountInfo",fn:function(a,s){return[e("span",{staticStyle:{"font-weight":"600"}},[t._v(t._s(a))]),e("span",{staticClass:"text-muted",staticStyle:{"margin-left":"4px"}},[t._v(t._s(s.currency))])]}},{key:"orderStatusInfo",fn:function(a){return[e("a-tag",{attrs:{color:t.getOrderStatusColor(a)}},[t._v(t._s(t.getOrderStatusLabel(a)))])]}},{key:"chainInfo",fn:function(a){return[a?e("span",[t._v(t._s(a))]):e("span",{staticClass:"text-muted"},[t._v("-")])]}},{key:"addressInfo",fn:function(a){return[a?e("a-tooltip",{attrs:{title:a}},[e("span",{staticClass:"address-text"},[t._v(t._s(t.truncate(a,12)))])]):e("span",{staticClass:"text-muted"},[t._v("-")])]}},{key:"txHashInfo",fn:function(a){return[a?e("a-tooltip",{attrs:{title:a}},[e("span",{staticClass:"hash-text"},[t._v(t._s(t.truncate(a,14)))])]):e("span",{staticClass:"text-muted"},[t._v("-")])]}},{key:"orderCreatedAt",fn:function(a){return[a?e("span",[t._v(t._s(t.formatTime(a)))]):e("span",{staticClass:"text-muted"},[t._v("-")])]}}])})],1)],1),e("a-tab-pane",{key:"aiStats",attrs:{tab:t.$t("adminAiStats.tabTitle")||"AI Analysis"}},[t.aiStatsSummary?e("div",{staticClass:"summary-cards"},[e("div",{staticClass:"summary-card"},[e("div",{staticClass:"summary-icon",staticStyle:{background:"linear-gradient(135deg, #667eea, #764ba2)"}},[e("a-icon",{attrs:{type:"thunderbolt"}})],1),e("div",{staticClass:"summary-info"},[e("div",{staticClass:"summary-value"},[t._v(t._s(t.aiStatsSummary.total_analyses||0))]),e("div",{staticClass:"summary-label"},[t._v(t._s(t.$t("adminAiStats.totalAnalyses")||"Total Analyses"))])])]),e("div",{staticClass:"summary-card"},[e("div",{staticClass:"summary-icon",staticStyle:{background:"linear-gradient(135deg, #11998e, #38ef7d)"}},[e("a-icon",{attrs:{type:"team"}})],1),e("div",{staticClass:"summary-info"},[e("div",{staticClass:"summary-value"},[t._v(t._s(t.aiStatsSummary.unique_users||0))]),e("div",{staticClass:"summary-label"},[t._v(t._s(t.$t("adminAiStats.activeUsers")||"Active Users"))])])]),e("div",{staticClass:"summary-card"},[e("div",{staticClass:"summary-icon",staticStyle:{background:"linear-gradient(135deg, #f093fb, #f5576c)"}},[e("a-icon",{attrs:{type:"stock"}})],1),e("div",{staticClass:"summary-info"},[e("div",{staticClass:"summary-value"},[t._v(t._s(t.aiStatsSummary.unique_symbols||0))]),e("div",{staticClass:"summary-label"},[t._v(t._s(t.$t("adminAiStats.uniqueSymbols")||"Symbols Analyzed"))])])]),e("div",{staticClass:"summary-card"},[e("div",{staticClass:"summary-icon",staticStyle:{background:"linear-gradient(135deg, #fa709a, #fee140)"}},[e("a-icon",{attrs:{type:"like"}})],1),e("div",{staticClass:"summary-info"},[e("div",{staticClass:"summary-value"},[t._v(" "+t._s(t.aiStatsSummary.correct_count||0)+" "),e("span",{staticStyle:{"font-size":"13px",color:"#999"}},[t._v("/ "+t._s(t.aiStatsSummary.total_memory||0))])]),e("div",{staticClass:"summary-label"},[t._v(t._s(t.$t("adminAiStats.accuracy")||"Correct / Verified"))])])])]):t._e(),e("div",{staticClass:"toolbar"},[e("div",{staticClass:"toolbar-left"},[e("a-button",{on:{click:t.loadAiStats}},[e("a-icon",{attrs:{type:"reload"}}),t._v(" "+t._s(t.$t("common.refresh")||"Refresh")+" ")],1)],1),e("div",{staticClass:"toolbar-right"},[e("a-input-search",{staticClass:"toolbar-search",attrs:{placeholder:t.$t("adminAiStats.searchPlaceholder")||"Search by username",allowClear:""},on:{search:t.handleAiStatsSearch,pressEnter:t.handleAiStatsSearch},model:{value:t.aiStatsSearchKeyword,callback:function(e){t.aiStatsSearchKeyword=e},expression:"aiStatsSearchKeyword"}})],1)]),e("a-card",{staticClass:"user-table-card",staticStyle:{"margin-bottom":"20px"},attrs:{bordered:!1}},[e("h4",{staticClass:"section-card-title"},[e("a-icon",{staticClass:"section-card-title-icon",attrs:{type:"bar-chart"}}),t._v(" "+t._s(t.$t("adminAiStats.userStatsTitle")||"Per-User Statistics")+" ")],1),e("a-table",{attrs:{columns:t.aiUserColumns,dataSource:t.aiUserStats,loading:t.aiStatsLoading,pagination:t.aiStatsPagination,rowKey:function(t){return t.user_id},scroll:{x:960}},on:{change:t.handleAiStatsTableChange},scopedSlots:t._u([{key:"aiUserInfo",fn:function(a,s){return[e("a-tooltip",{attrs:{title:(s.nickname||s.username||"-")+" ("+(s.email||"")+")"}},[e("span",{staticClass:"user-cell"},[e("a-avatar",{style:{backgroundColor:t.getUserColor(s.user_id),fontSize:"11px",marginRight:"6px"},attrs:{size:"small"}},[t._v(" "+t._s((s.nickname||s.username||"?").charAt(0).toUpperCase())+" ")]),e("span",{staticClass:"user-name"},[t._v(t._s(t.truncate(s.nickname||s.username||"-",10)))])],1)])]}},{key:"analysisCountInfo",fn:function(a){return[e("span",{staticStyle:{"font-weight":"600",color:"#1890ff"}},[t._v(t._s(a||0))])]}},{key:"accuracyInfo",fn:function(a,s){return[e("span",{staticClass:"text-profit"},[t._v(t._s(s.correct||0))]),e("span",{staticClass:"text-muted"},[t._v(" / ")]),e("span",{staticClass:"text-loss"},[t._v(t._s(s.incorrect||0))])]}},{key:"feedbackInfo",fn:function(a,s){return[e("a-tooltip",{attrs:{title:(t.$t("adminAiStats.helpful")||"Helpful")+" / "+(t.$t("adminAiStats.notHelpful")||"Not Helpful")}},[e("span",{staticStyle:{color:"#52c41a"}},[e("a-icon",{attrs:{type:"like"}}),t._v(" "+t._s(s.helpful||0))],1),e("span",{staticClass:"text-muted"},[t._v(" / ")]),e("span",{staticStyle:{color:"#ff4d4f"}},[e("a-icon",{attrs:{type:"dislike"}}),t._v(" "+t._s(s.not_helpful||0))],1)])]}},{key:"lastAnalysisAt",fn:function(a){return[a?e("span",[t._v(t._s(t.formatTime(a)))]):e("span",{staticClass:"text-muted"},[t._v("-")])]}}])})],1),e("a-card",{staticClass:"user-table-card",attrs:{bordered:!1}},[e("h4",{staticClass:"section-card-title"},[e("a-icon",{staticClass:"section-card-title-icon",attrs:{type:"history"}}),t._v(" "+t._s(t.$t("adminAiStats.recentTitle")||"Recent Analysis Records")+" ")],1),e("a-table",{attrs:{columns:t.aiRecentColumns,dataSource:t.aiRecentRecords,loading:t.aiStatsLoading,pagination:!1,rowKey:function(t){return t.id},scroll:{x:900},size:"small"},scopedSlots:t._u([{key:"recentUserInfo",fn:function(a,s){return[e("span",{staticClass:"user-cell"},[e("a-avatar",{style:{backgroundColor:t.getUserColor(s.user_id),fontSize:"11px",marginRight:"6px"},attrs:{size:"small"}},[t._v(" "+t._s((s.nickname||s.username||"?").charAt(0).toUpperCase())+" ")]),e("span",{staticClass:"user-name"},[t._v(t._s(t.truncate(s.nickname||s.username||"-",8)))])],1)]}},{key:"recentStatusInfo",fn:function(a){return[e("a-tag",{attrs:{color:"completed"===a?"green":"failed"===a?"red":"blue"}},[t._v(" "+t._s(a)+" ")])]}},{key:"recentCreatedAt",fn:function(a){return[a?e("span",[t._v(t._s(t.formatTime(a)))]):e("span",{staticClass:"text-muted"},[t._v("-")])]}}])})],1)],1)],1),e("a-modal",{attrs:{"wrap-class-name":"user-manage-modal",title:t.isEdit?t.$t("userManage.editUser")||"Edit User":t.$t("userManage.createUser")||"Create User",confirmLoading:t.modalLoading},on:{ok:t.handleModalOk,cancel:t.handleModalCancel},model:{value:t.modalVisible,callback:function(e){t.modalVisible=e},expression:"modalVisible"}},[e("a-form",{attrs:{form:t.form,layout:"vertical"}},[e("a-form-item",{attrs:{label:t.$t("userManage.username")||"Username"}},[e("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["username",{rules:[{required:!t.isEdit,message:t.$t("userManage.usernameRequired")||"Please enter username"}]}],expression:"['username', {\n rules: [{ required: !isEdit, message: $t('userManage.usernameRequired') || 'Please enter username' }]\n }]"}],attrs:{disabled:t.isEdit,placeholder:t.$t("userManage.usernamePlaceholder")||"Enter username"}},[e("a-icon",{attrs:{slot:"prefix",type:"user"},slot:"prefix"})],1)],1),t.isEdit?t._e():e("a-form-item",{attrs:{label:t.$t("userManage.password")||"Password"}},[e("a-input-password",{directives:[{name:"decorator",rawName:"v-decorator",value:["password",{rules:[{required:!0,message:t.$t("userManage.passwordRequired")||"Please enter password"},{min:6,message:t.$t("userManage.passwordMin")||"Password must be at least 6 characters"}]}],expression:"['password', {\n rules: [\n { required: true, message: $t('userManage.passwordRequired') || 'Please enter password' },\n { min: 6, message: $t('userManage.passwordMin') || 'Password must be at least 6 characters' }\n ]\n }]"}],attrs:{placeholder:t.$t("userManage.passwordPlaceholder")||"Enter password (min 6 characters)"}},[e("a-icon",{attrs:{slot:"prefix",type:"lock"},slot:"prefix"})],1)],1),e("a-form-item",{attrs:{label:t.$t("userManage.nickname")||"Nickname"}},[e("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["nickname"],expression:"['nickname']"}],attrs:{placeholder:t.$t("userManage.nicknamePlaceholder")||"Enter nickname"}},[e("a-icon",{attrs:{slot:"prefix",type:"smile"},slot:"prefix"})],1)],1),e("a-form-item",{attrs:{label:t.$t("userManage.email")||"Email"}},[e("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["email",{rules:[{type:"email",message:t.$t("userManage.emailInvalid")||"Invalid email format"}]}],expression:"['email', {\n rules: [{ type: 'email', message: $t('userManage.emailInvalid') || 'Invalid email format' }]\n }]"}],attrs:{placeholder:t.$t("userManage.emailPlaceholder")||"Enter email"}},[e("a-icon",{attrs:{slot:"prefix",type:"mail"},slot:"prefix"})],1)],1),e("a-form-item",{attrs:{label:t.$t("userManage.role")||"Role"}},[e("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["role",{initialValue:"user"}],expression:"['role', { initialValue: 'user' }]"}],attrs:{placeholder:t.$t("userManage.rolePlaceholder")||"Select role"}},t._l(t.roles,function(a){return e("a-select-option",{key:a.id,attrs:{value:a.id}},[t._v(" "+t._s(t.getRoleLabel(a.id))+" ")])}),1)],1),t.isEdit?e("a-form-item",{attrs:{label:t.$t("userManage.status")||"Status"}},[e("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["status",{initialValue:"active"}],expression:"['status', { initialValue: 'active' }]"}],attrs:{placeholder:t.$t("userManage.statusPlaceholder")||"Select status"}},[e("a-select-option",{attrs:{value:"active"}},[t._v(t._s(t.$t("userManage.active")||"Active"))]),e("a-select-option",{attrs:{value:"disabled"}},[t._v(t._s(t.$t("userManage.disabled")||"Disabled"))])],1)],1):t._e()],1)],1),e("a-modal",{attrs:{"wrap-class-name":"user-manage-modal",title:t.$t("userManage.resetPassword")||"Reset Password",confirmLoading:t.resetPasswordLoading},on:{ok:t.handleResetPassword},model:{value:t.resetPasswordVisible,callback:function(e){t.resetPasswordVisible=e},expression:"resetPasswordVisible"}},[e("a-form",{attrs:{form:t.resetPasswordForm,layout:"vertical"}},[e("a-alert",{staticStyle:{"margin-bottom":"16px"},attrs:{message:t.$t("userManage.resetPasswordWarning")||"This will reset the user's password",type:"warning",showIcon:""}}),e("a-form-item",{attrs:{label:t.$t("userManage.newPassword")||"New Password"}},[e("a-input-password",{directives:[{name:"decorator",rawName:"v-decorator",value:["new_password",{rules:[{required:!0,message:t.$t("userManage.passwordRequired")||"Please enter new password"},{min:6,message:t.$t("userManage.passwordMin")||"Password must be at least 6 characters"}]}],expression:"['new_password', {\n rules: [\n { required: true, message: $t('userManage.passwordRequired') || 'Please enter new password' },\n { min: 6, message: $t('userManage.passwordMin') || 'Password must be at least 6 characters' }\n ]\n }]"}],attrs:{placeholder:t.$t("userManage.newPasswordPlaceholder")||"Enter new password"}},[e("a-icon",{attrs:{slot:"prefix",type:"lock"},slot:"prefix"})],1)],1)],1)],1),e("a-modal",{attrs:{"wrap-class-name":"user-manage-modal",title:(t.$t("userManage.adjustCredits")||"Adjust Credits")+(t.creditsEditingUser?" - ".concat(t.creditsEditingUser.username):""),confirmLoading:t.creditsLoading},on:{ok:t.handleSetCredits},model:{value:t.creditsModalVisible,callback:function(e){t.creditsModalVisible=e},expression:"creditsModalVisible"}},[e("a-form",{attrs:{layout:"vertical"}},[t.creditsEditingUser?e("div",{staticClass:"current-credits-info"},[e("span",{staticClass:"label"},[t._v(t._s(t.$t("userManage.currentCredits")||"Current Credits")+":")]),e("span",{staticClass:"value"},[t._v(t._s(t.formatCredits(t.creditsEditingUser.credits)))])]):t._e(),e("a-form-item",{attrs:{label:t.$t("userManage.newCredits")||"New Credits"}},[e("a-input-number",{staticStyle:{width:"100%"},attrs:{min:0,precision:2,placeholder:t.$t("userManage.enterCredits")||"Enter new credits amount"},model:{value:t.newCredits,callback:function(e){t.newCredits=e},expression:"newCredits"}})],1),e("a-form-item",{attrs:{label:t.$t("userManage.remark")||"Remark"}},[e("a-input",{attrs:{placeholder:t.$t("userManage.remarkPlaceholder")||"Optional remark"},model:{value:t.creditsRemark,callback:function(e){t.creditsRemark=e},expression:"creditsRemark"}})],1)],1)],1),e("a-modal",{attrs:{"wrap-class-name":"user-manage-modal",title:(t.$t("userManage.setVip")||"Set VIP")+(t.vipEditingUser?" - ".concat(t.vipEditingUser.username):""),confirmLoading:t.vipLoading},on:{ok:t.handleSetVip},model:{value:t.vipModalVisible,callback:function(e){t.vipModalVisible=e},expression:"vipModalVisible"}},[e("a-form",{attrs:{layout:"vertical"}},[t.vipEditingUser&&t.vipEditingUser.vip_expires_at?e("div",{staticClass:"current-vip-info"},[e("span",{staticClass:"label"},[t._v(t._s(t.$t("userManage.currentVip")||"Current VIP")+":")]),e("span",{staticClass:"value",class:t.isVipActive(t.vipEditingUser.vip_expires_at)?"active":"expired"},[t._v(" "+t._s(t.isVipActive(t.vipEditingUser.vip_expires_at)?(t.$t("userManage.vipActive")||"Active")+" (".concat(t.formatDate(t.vipEditingUser.vip_expires_at),")"):t.$t("userManage.vipExpired")||"Expired")+" ")])]):t._e(),e("a-form-item",{attrs:{label:t.$t("userManage.vipDays")||"VIP Days"}},[e("a-select",{staticStyle:{width:"100%"},model:{value:t.vipDays,callback:function(e){t.vipDays=e},expression:"vipDays"}},[e("a-select-option",{attrs:{value:0}},[t._v(t._s(t.$t("userManage.cancelVip")||"Cancel VIP"))]),e("a-select-option",{attrs:{value:7}},[t._v("7 "+t._s(t.$t("userManage.days")||"days"))]),e("a-select-option",{attrs:{value:30}},[t._v("30 "+t._s(t.$t("userManage.days")||"days"))]),e("a-select-option",{attrs:{value:90}},[t._v("90 "+t._s(t.$t("userManage.days")||"days"))]),e("a-select-option",{attrs:{value:180}},[t._v("180 "+t._s(t.$t("userManage.days")||"days"))]),e("a-select-option",{attrs:{value:365}},[t._v("365 "+t._s(t.$t("userManage.days")||"days"))]),e("a-select-option",{attrs:{value:-1}},[t._v(t._s(t.$t("userManage.customDate")||"Custom Date"))])],1)],1),-1===t.vipDays?e("a-form-item",{attrs:{label:t.$t("userManage.vipExpiresAt")||"VIP Expires At"}},[e("a-date-picker",{staticStyle:{width:"100%"},attrs:{showTime:"",format:"YYYY-MM-DD HH:mm:ss"},model:{value:t.vipCustomDate,callback:function(e){t.vipCustomDate=e},expression:"vipCustomDate"}})],1):t._e(),e("a-form-item",{attrs:{label:t.$t("userManage.remark")||"Remark"}},[e("a-input",{attrs:{placeholder:t.$t("userManage.remarkPlaceholder")||"Optional remark"},model:{value:t.vipRemark,callback:function(e){t.vipRemark=e},expression:"vipRemark"}})],1)],1)],1)],1)},r=[],i=a(81127),n=a(56252),o=a(76338),l=a(84841),d=a(55434),c=a(95353),u={name:"UserManage",mixins:[d.t],data:function(){return{activeTab:"users",loading:!1,users:[],roles:[],searchKeyword:"",pagination:{current:1,pageSize:10,total:0},modalVisible:!1,modalLoading:!1,isEdit:!1,editingUser:null,resetPasswordVisible:!1,resetPasswordLoading:!1,resetPasswordUserId:null,creditsModalVisible:!1,creditsLoading:!1,creditsEditingUser:null,newCredits:0,creditsRemark:"",vipModalVisible:!1,vipLoading:!1,vipEditingUser:null,vipDays:30,vipCustomDate:null,vipRemark:"",strategyLoading:!1,systemStrategies:[],strategySummary:null,strategyStatusFilter:"all",strategySearchKeyword:"",strategyPagination:{current:1,pageSize:20,total:0},strategiesLoaded:!1,orderLoading:!1,orders:[],orderSummary:null,orderStatusFilter:"all",orderSearchKeyword:"",orderPagination:{current:1,pageSize:20,total:0},ordersLoaded:!1,aiStatsLoading:!1,aiUserStats:[],aiRecentRecords:[],aiStatsSummary:null,aiStatsSearchKeyword:"",aiStatsPagination:{current:1,pageSize:20,total:0},aiStatsLoaded:!1}},computed:(0,o.A)((0,o.A)({},(0,c.L8)(["userInfo"])),{},{isDarkTheme:function(){return"dark"===this.navTheme||"realdark"===this.navTheme},currentUserId:function(){var t;return null===(t=this.userInfo)||void 0===t?void 0:t.id},columns:function(){return[{title:"ID",dataIndex:"id",width:60},{title:this.$t("userManage.username")||"Username",dataIndex:"username",width:120},{title:this.$t("userManage.nickname")||"Nickname",dataIndex:"nickname",width:100},{title:this.$t("userManage.email")||"Email",dataIndex:"email",width:180},{title:this.$t("userManage.role")||"Role",dataIndex:"role",width:90,scopedSlots:{customRender:"role"}},{title:this.$t("userManage.credits")||"Credits",dataIndex:"credits",width:100,scopedSlots:{customRender:"credits"}},{title:"VIP",dataIndex:"vip_expires_at",width:120,scopedSlots:{customRender:"vip_expires_at"}},{title:this.$t("userManage.status")||"Status",dataIndex:"status",width:90,scopedSlots:{customRender:"status"}},{title:this.$t("userManage.lastLogin")||"Last Login",dataIndex:"last_login_at",width:150,scopedSlots:{customRender:"last_login_at"}},{title:this.$t("common.actions")||"Actions",dataIndex:"action",width:180,scopedSlots:{customRender:"action"}}]},strategyColumns:function(){return[{title:"ID",dataIndex:"id",width:60,fixed:"left"},{title:this.$t("systemOverview.colUser")||"User",dataIndex:"username",width:110,fixed:"left",scopedSlots:{customRender:"userInfo"}},{title:this.$t("systemOverview.colStrategy")||"Strategy",dataIndex:"strategy_name",width:160,ellipsis:!0},{title:this.$t("systemOverview.colStatus")||"Status",dataIndex:"status",width:100,scopedSlots:{customRender:"strategyStatus"}},{title:this.$t("systemOverview.colSymbol")||"Symbol",dataIndex:"symbol",width:140,scopedSlots:{customRender:"symbolInfo"}},{title:this.$t("systemOverview.colCapital")||"Capital",dataIndex:"initial_capital",width:110,scopedSlots:{customRender:"capitalInfo"}},{title:this.$t("systemOverview.colPnl")||"PnL / ROI",dataIndex:"total_pnl",width:200,scopedSlots:{customRender:"pnlInfo"}},{title:this.$t("systemOverview.colPositions")||"Pos",dataIndex:"position_count",width:70,align:"center",scopedSlots:{customRender:"positionInfo"}},{title:this.$t("systemOverview.colTrades")||"Trades",dataIndex:"trade_count",width:80,align:"center",scopedSlots:{customRender:"tradeInfo"}},{title:this.$t("systemOverview.colIndicator")||"Indicator",dataIndex:"indicator_name",width:130,scopedSlots:{customRender:"indicatorInfo"}},{title:this.$t("systemOverview.colExchange")||"Exchange",dataIndex:"exchange_name",width:100,scopedSlots:{customRender:"exchangeInfo"}},{title:this.$t("systemOverview.colTimeframe")||"TF",dataIndex:"timeframe",width:70,align:"center",scopedSlots:{customRender:"timeframeInfo"}},{title:this.$t("systemOverview.colLeverage")||"Lev",dataIndex:"leverage",width:70,align:"center",scopedSlots:{customRender:"leverageInfo"}},{title:this.$t("systemOverview.colCreatedAt")||"Created",dataIndex:"created_at",width:150,scopedSlots:{customRender:"createdAtInfo"}}]},orderColumns:function(){return[{title:this.$t("adminOrders.colUser")||"User",dataIndex:"username",width:120,scopedSlots:{customRender:"orderUserInfo"}},{title:this.$t("adminOrders.colType")||"Type",dataIndex:"order_type",width:80,scopedSlots:{customRender:"orderTypeInfo"}},{title:this.$t("adminOrders.colPlan")||"Plan",dataIndex:"plan",width:100,scopedSlots:{customRender:"planInfo"}},{title:this.$t("adminOrders.colAmount")||"Amount",dataIndex:"amount",width:120,scopedSlots:{customRender:"amountInfo"}},{title:this.$t("adminOrders.colStatus")||"Status",dataIndex:"status",width:100,scopedSlots:{customRender:"orderStatusInfo"}},{title:this.$t("adminOrders.colChain")||"Chain",dataIndex:"chain",width:80,scopedSlots:{customRender:"chainInfo"}},{title:this.$t("adminOrders.colAddress")||"Address",dataIndex:"address",width:140,scopedSlots:{customRender:"addressInfo"}},{title:this.$t("adminOrders.colTxHash")||"Tx Hash",dataIndex:"tx_hash",width:160,scopedSlots:{customRender:"txHashInfo"}},{title:this.$t("adminOrders.colCreatedAt")||"Created",dataIndex:"created_at",width:150,scopedSlots:{customRender:"orderCreatedAt"}}]},aiUserColumns:function(){return[{title:this.$t("adminAiStats.colUser")||"User",dataIndex:"username",width:140,scopedSlots:{customRender:"aiUserInfo"}},{title:this.$t("adminAiStats.colAnalysisCount")||"Analyses",dataIndex:"analysis_count",width:100,align:"center",scopedSlots:{customRender:"analysisCountInfo"},sorter:function(t,e){return t.analysis_count-e.analysis_count},defaultSortOrder:"descend"},{title:this.$t("adminAiStats.colSymbols")||"Symbols",dataIndex:"symbol_count",width:90,align:"center"},{title:this.$t("adminAiStats.colMarkets")||"Markets",dataIndex:"market_count",width:90,align:"center"},{title:this.$t("adminAiStats.colAccuracy")||"Correct / Wrong",dataIndex:"correct",width:130,align:"center",scopedSlots:{customRender:"accuracyInfo"}},{title:this.$t("adminAiStats.colFeedback")||"Feedback",dataIndex:"helpful",width:130,align:"center",scopedSlots:{customRender:"feedbackInfo"}},{title:this.$t("adminAiStats.colLastAnalysis")||"Last Analysis",dataIndex:"last_analysis_at",width:160,scopedSlots:{customRender:"lastAnalysisAt"}}]},aiRecentColumns:function(){return[{title:"ID",dataIndex:"id",width:60},{title:this.$t("adminAiStats.colUser")||"User",dataIndex:"username",width:120,scopedSlots:{customRender:"recentUserInfo"}},{title:this.$t("adminAiStats.colMarket")||"Market",dataIndex:"market",width:80},{title:this.$t("adminAiStats.colSymbol")||"Symbol",dataIndex:"symbol",width:120},{title:this.$t("adminAiStats.colModel")||"Model",dataIndex:"model",width:140,ellipsis:!0},{title:this.$t("adminAiStats.colStatus")||"Status",dataIndex:"status",width:100,scopedSlots:{customRender:"recentStatusInfo"}},{title:this.$t("adminAiStats.colCreatedAt")||"Time",dataIndex:"created_at",width:160,scopedSlots:{customRender:"recentCreatedAt"}}]}}),beforeCreate:function(){this.form=this.$form.createForm(this),this.resetPasswordForm=this.$form.createForm(this,{name:"resetPassword"})},mounted:function(){this.loadUsers(),this.loadRoles()},methods:{handleTabChange:function(t){"strategies"!==t||this.strategiesLoaded||this.loadSystemStrategies(),"orders"!==t||this.ordersLoaded||this.loadOrders(),"aiStats"!==t||this.aiStatsLoaded||this.loadAiStats()},loadSystemStrategies:function(){var t=this;return(0,n.A)((0,i.A)().m(function e(){var a;return(0,i.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return t.strategyLoading=!0,e.p=1,e.n=2,(0,l.DK)({page:t.strategyPagination.current,page_size:t.strategyPagination.pageSize,status:"all"===t.strategyStatusFilter?"":t.strategyStatusFilter,search:t.strategySearchKeyword||""});case 2:a=e.v,1===a.code?(t.systemStrategies=a.data.items||[],t.strategyPagination.total=a.data.total||0,t.strategySummary=a.data.summary||{},t.strategiesLoaded=!0):t.$message.error(a.msg||"Failed to load strategies"),e.n=4;break;case 3:e.p=3,e.v,t.$message.error("Failed to load system strategies");case 4:return e.p=4,t.strategyLoading=!1,e.f(4);case 5:return e.a(2)}},e,null,[[1,3,4,5]])}))()},handleStrategySearch:function(){this.strategyPagination.current=1,this.loadSystemStrategies()},handleStrategyFilterChange:function(){this.strategyPagination.current=1,this.loadSystemStrategies()},handleStrategyTableChange:function(t){this.strategyPagination.current=t.current,this.strategyPagination.pageSize=t.pageSize,this.loadSystemStrategies()},getUserColor:function(t){var e=["#1890ff","#722ed1","#13c2c2","#fa8c16","#eb2f96","#52c41a","#2f54eb","#faad14"];return e[(t||0)%e.length]},formatNumber:function(t){return t||0===t?Number(t).toLocaleString("en-US",{minimumFractionDigits:0,maximumFractionDigits:2}):"0"},formatPnl:function(t){if(!t&&0!==t)return"0";var e=Number(t),a=e>=0?"+":"";return a+e.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:4})},truncate:function(t,e){return t?t.length>e?t.substring(0,e)+"...":t:""},loadUsers:function(){var t=this;return(0,n.A)((0,i.A)().m(function e(){var a;return(0,i.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return t.loading=!0,e.p=1,e.n=2,(0,l.aU)({page:t.pagination.current,page_size:t.pagination.pageSize,search:t.searchKeyword||""});case 2:a=e.v,1===a.code?(t.users=a.data.items||[],t.pagination.total=a.data.total||0):t.$message.error(a.msg||"Failed to load users"),e.n=4;break;case 3:e.p=3,e.v,t.$message.error("Failed to load users");case 4:return e.p=4,t.loading=!1,e.f(4);case 5:return e.a(2)}},e,null,[[1,3,4,5]])}))()},handleSearch:function(){this.pagination.current=1,this.loadUsers()},loadRoles:function(){var t=this;return(0,n.A)((0,i.A)().m(function e(){var a;return(0,i.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.p=0,e.n=1,(0,l.O0)();case 1:a=e.v,1===a.code&&(t.roles=a.data.roles||[]),e.n=3;break;case 2:e.p=2,e.v;case 3:return e.a(2)}},e,null,[[0,2]])}))()},handleTableChange:function(t){this.pagination.current=t.current,this.pagination.pageSize=t.pageSize,this.loadUsers()},showCreateModal:function(){var t=this;this.isEdit=!1,this.editingUser=null,this.modalVisible=!0,this.$nextTick(function(){t.form.resetFields()})},showEditModal:function(t){var e=this;this.isEdit=!0,this.editingUser=t,this.modalVisible=!0,this.$nextTick(function(){e.form.setFieldsValue({username:t.username,nickname:t.nickname,email:t.email,role:t.role,status:t.status})})},handleModalCancel:function(){this.modalVisible=!1,this.form.resetFields()},handleModalOk:function(){var t=this;this.form.validateFields(function(){var e=(0,n.A)((0,i.A)().m(function e(a,s){var r;return(0,i.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(!a){e.n=1;break}return e.a(2);case 1:if(t.modalLoading=!0,e.p=2,!t.isEdit){e.n=4;break}return e.n=3,(0,l.TK)(t.editingUser.id,{nickname:s.nickname,email:s.email,role:s.role,status:s.status});case 3:r=e.v,e.n=6;break;case 4:return e.n=5,(0,l.kg)(s);case 5:r=e.v;case 6:1===r.code?(t.$message.success(r.msg||"Success"),t.modalVisible=!1,t.form.resetFields(),t.loadUsers()):t.$message.error(r.msg||"Operation failed"),e.n=8;break;case 7:e.p=7,e.v,t.$message.error("Operation failed");case 8:return e.p=8,t.modalLoading=!1,e.f(8);case 9:return e.a(2)}},e,null,[[2,7,8,9]])}));return function(t,a){return e.apply(this,arguments)}}())},handleDelete:function(t){var e=this;return(0,n.A)((0,i.A)().m(function a(){var s;return(0,i.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return a.p=0,a.n=1,(0,l.hG)(t);case 1:s=a.v,1===s.code?(e.$message.success(s.msg||"User deleted"),e.loadUsers()):e.$message.error(s.msg||"Delete failed"),a.n=3;break;case 2:a.p=2,a.v,e.$message.error("Delete failed");case 3:return a.a(2)}},a,null,[[0,2]])}))()},showResetPasswordModal:function(t){var e=this;this.resetPasswordUserId=t.id,this.resetPasswordVisible=!0,this.$nextTick(function(){e.resetPasswordForm.resetFields()})},handleResetPassword:function(){var t=this;this.resetPasswordForm.validateFields(function(){var e=(0,n.A)((0,i.A)().m(function e(a,s){var r;return(0,i.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(!a){e.n=1;break}return e.a(2);case 1:return t.resetPasswordLoading=!0,e.p=2,e.n=3,(0,l.cw)({user_id:t.resetPasswordUserId,new_password:s.new_password});case 3:r=e.v,1===r.code?(t.$message.success(r.msg||"Password reset successfully"),t.resetPasswordVisible=!1,t.resetPasswordForm.resetFields()):t.$message.error(r.msg||"Reset failed"),e.n=5;break;case 4:e.p=4,e.v,t.$message.error("Reset failed");case 5:return e.p=5,t.resetPasswordLoading=!1,e.f(5);case 6:return e.a(2)}},e,null,[[2,4,5,6]])}));return function(t,a){return e.apply(this,arguments)}}())},getRoleColor:function(t){var e={admin:"red",manager:"orange",user:"blue",viewer:"default"};return e[t]||"default"},getRoleLabel:function(t){var e={admin:this.$t("userManage.roleAdmin")||"Admin",manager:this.$t("userManage.roleManager")||"Manager",user:this.$t("userManage.roleUser")||"User",viewer:this.$t("userManage.roleViewer")||"Viewer"};return e[t]||t},formatTime:function(t){if(!t)return"";var e=new Date("number"===typeof t?1e3*t:t);return e.toLocaleString()},formatCredits:function(t){return t||0===t?Number(t).toLocaleString("en-US",{minimumFractionDigits:0,maximumFractionDigits:2}):"0"},formatDate:function(t){if(!t)return"";var e=new Date(t);return e.toLocaleDateString()},isVipActive:function(t){return!!t&&new Date(t)>new Date},showCreditsModal:function(t){this.creditsEditingUser=t,this.newCredits=parseFloat(t.credits)||0,this.creditsRemark="",this.creditsModalVisible=!0},handleSetCredits:function(){var t=this;return(0,n.A)((0,i.A)().m(function e(){var a;return(0,i.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(!(t.newCredits<0)){e.n=1;break}return t.$message.error(t.$t("userManage.creditsNonNegative")||"Credits cannot be negative"),e.a(2);case 1:return t.creditsLoading=!0,e.p=2,e.n=3,(0,l.wq)({user_id:t.creditsEditingUser.id,credits:t.newCredits,remark:t.creditsRemark});case 3:a=e.v,1===a.code?(t.$message.success(a.msg||"Credits updated successfully"),t.creditsModalVisible=!1,t.loadUsers()):t.$message.error(a.msg||"Update failed"),e.n=5;break;case 4:e.p=4,e.v,t.$message.error("Update failed");case 5:return e.p=5,t.creditsLoading=!1,e.f(5);case 6:return e.a(2)}},e,null,[[2,4,5,6]])}))()},showVipModal:function(t){this.vipEditingUser=t,this.vipDays=30,this.vipCustomDate=null,this.vipRemark="",this.vipModalVisible=!0},handleSetVip:function(){var t=this;return(0,n.A)((0,i.A)().m(function e(){var a,s;return(0,i.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(a={user_id:t.vipEditingUser.id,remark:t.vipRemark},-1!==t.vipDays){e.n=2;break}if(t.vipCustomDate){e.n=1;break}return t.$message.error(t.$t("userManage.selectDate")||"Please select a date"),e.a(2);case 1:a.vip_expires_at=t.vipCustomDate.toISOString(),e.n=3;break;case 2:a.vip_days=t.vipDays;case 3:return t.vipLoading=!0,e.p=4,e.n=5,(0,l.nY)(a);case 5:s=e.v,1===s.code?(t.$message.success(s.msg||"VIP status updated successfully"),t.vipModalVisible=!1,t.loadUsers()):t.$message.error(s.msg||"Update failed"),e.n=7;break;case 6:e.p=6,e.v,t.$message.error("Update failed");case 7:return e.p=7,t.vipLoading=!1,e.f(7);case 8:return e.a(2)}},e,null,[[4,6,7,8]])}))()},loadOrders:function(){var t=this;return(0,n.A)((0,i.A)().m(function e(){var a;return(0,i.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return t.orderLoading=!0,e.p=1,e.n=2,(0,l.vi)({page:t.orderPagination.current,page_size:t.orderPagination.pageSize,status:"all"===t.orderStatusFilter?"":t.orderStatusFilter,search:t.orderSearchKeyword||""});case 2:a=e.v,1===a.code?(t.orders=a.data.items||[],t.orderPagination.total=a.data.total||0,t.orderSummary=a.data.summary||{},t.ordersLoaded=!0):t.$message.error(a.msg||"Failed to load orders"),e.n=4;break;case 3:e.p=3,e.v,t.$message.error("Failed to load orders");case 4:return e.p=4,t.orderLoading=!1,e.f(4);case 5:return e.a(2)}},e,null,[[1,3,4,5]])}))()},handleOrderSearch:function(){this.orderPagination.current=1,this.loadOrders()},handleOrderFilterChange:function(){this.orderPagination.current=1,this.loadOrders()},handleOrderTableChange:function(t){this.orderPagination.current=t.current,this.orderPagination.pageSize=t.pageSize,this.loadOrders()},getOrderStatusColor:function(t){var e={paid:"green",confirmed:"green",pending:"orange",expired:"grey",cancelled:"default",failed:"red"};return e[t]||"default"},getOrderStatusLabel:function(t){var e={paid:this.$t("adminOrders.statusPaid")||"Paid",confirmed:this.$t("adminOrders.statusConfirmed")||"Confirmed",pending:this.$t("adminOrders.statusPending")||"Pending",expired:this.$t("adminOrders.statusExpired")||"Expired",cancelled:this.$t("adminOrders.statusCancelled")||"Cancelled",failed:this.$t("adminOrders.statusFailed")||"Failed"};return e[t]||t},loadAiStats:function(){var t=this;return(0,n.A)((0,i.A)().m(function e(){var a;return(0,i.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return t.aiStatsLoading=!0,e.p=1,e.n=2,(0,l.d$)({page:t.aiStatsPagination.current,page_size:t.aiStatsPagination.pageSize,search:t.aiStatsSearchKeyword||""});case 2:a=e.v,1===a.code?(t.aiUserStats=a.data.user_stats||[],t.aiRecentRecords=a.data.recent||[],t.aiStatsPagination.total=a.data.user_total||0,t.aiStatsSummary=a.data.summary||{},t.aiStatsLoaded=!0):t.$message.error(a.msg||"Failed to load AI stats"),e.n=4;break;case 3:e.p=3,e.v,t.$message.error("Failed to load AI stats");case 4:return e.p=4,t.aiStatsLoading=!1,e.f(4);case 5:return e.a(2)}},e,null,[[1,3,4,5]])}))()},handleAiStatsSearch:function(){this.aiStatsPagination.current=1,this.loadAiStats()},handleAiStatsTableChange:function(t){this.aiStatsPagination.current=t.current,this.aiStatsPagination.pageSize=t.pageSize,this.loadAiStats()}}},m=u,p=a(845),g=(0,p.A)(m,s,r,!1,null,"0b8bb4d8",null),v=g.exports},84841:function(t,e,a){a.d(e,{DK:function(){return _},E$:function(){return c},Gl:function(){return p},O0:function(){return d},TK:function(){return n},aU:function(){return r},cw:function(){return l},d$:function(){return w},hG:function(){return o},hl:function(){return g},kg:function(){return i},nY:function(){return h},r7:function(){return u},rx:function(){return f},v9:function(){return v},vF:function(){return m},vi:function(){return S},wq:function(){return y}});var s=a(75769);function r(t){return(0,s.Ay)({url:"/api/users/list",method:"get",params:t})}function i(t){return(0,s.Ay)({url:"/api/users/create",method:"post",data:t})}function n(t,e){return(0,s.Ay)({url:"/api/users/update",method:"put",params:{id:t},data:e})}function o(t){return(0,s.Ay)({url:"/api/users/delete",method:"delete",params:{id:t}})}function l(t){return(0,s.Ay)({url:"/api/users/reset-password",method:"post",data:t})}function d(){return(0,s.Ay)({url:"/api/users/roles",method:"get"})}function c(){return(0,s.Ay)({url:"/api/users/profile",method:"get"})}function u(t){return(0,s.Ay)({url:"/api/users/profile/update",method:"put",data:t})}function m(){return(0,s.Ay)({url:"/api/users/notification-settings",method:"get"})}function p(t){return(0,s.Ay)({url:"/api/users/notification-settings",method:"put",data:t})}function g(){return(0,s.Ay)({url:"/api/users/notification-settings/test",method:"post",data:{}})}function v(t){return(0,s.Ay)({url:"/api/users/my-credits-log",method:"get",params:t})}function f(t){return(0,s.Ay)({url:"/api/users/my-referrals",method:"get",params:t})}function y(t){return(0,s.Ay)({url:"/api/users/set-credits",method:"post",data:t})}function h(t){return(0,s.Ay)({url:"/api/users/set-vip",method:"post",data:t})}function _(t){return(0,s.Ay)({url:"/api/users/system-strategies",method:"get",params:t})}function S(t){return(0,s.Ay)({url:"/api/users/admin-orders",method:"get",params:t})}function w(t){return(0,s.Ay)({url:"/api/users/admin-ai-stats",method:"get",params:t})}}}]); \ No newline at end of file diff --git a/frontend/dist/js/313-legacy.5dbecb07.js b/frontend/dist/js/313-legacy.5dbecb07.js new file mode 100644 index 0000000..9b96fde --- /dev/null +++ b/frontend/dist/js/313-legacy.5dbecb07.js @@ -0,0 +1 @@ +"use strict";(self["webpackChunkvue_antd_pro"]=self["webpackChunkvue_antd_pro"]||[]).push([[313],{7126:function(t,a,s){s.r(a),s.d(a,{default:function(){return R}});s(62010),s(9868);var e=function(){var t=this,a=t._self._c;return a("div",{staticClass:"ai-asset-analysis-page",class:{"theme-dark":t.isDarkTheme}},[t.opportunities.length>0?a("div",{staticClass:"radar-section"},[a("div",{staticClass:"radar-header"},[a("div",{staticClass:"radar-header-left"},[a("h2",{staticClass:"radar-title"},[t._v(t._s(t.$t("aiAssetAnalysis.opportunities.title")))]),a("p",{staticClass:"radar-subtitle"},[t._v(t._s(t.$t("aiAssetAnalysis.opportunities.updateHint")))])]),a("a-button",{staticClass:"radar-refresh-btn",attrs:{size:"small",loading:t.oppLoading},on:{click:function(a){return t.loadOpportunities(!0)}}},[a("a-icon",{attrs:{type:"sync"}}),t._v(" "+t._s(t.$t("common.refresh")||"Refresh")+" ")],1)],1),a("div",{staticClass:"radar-carousel",on:{mouseenter:function(a){t.oppHover=!0},mouseleave:function(a){t.oppHover=!1}}},[a("div",{staticClass:"radar-track",class:{paused:t.oppHover},style:t.oppTrackStyle},t._l(t.carouselItems,function(s,e){return a("div",{key:"opp-"+e,staticClass:"radar-card",class:[s.impact,{"is-prediction":"PredictionMarket"===s.market}],on:{click:function(a){return t.analyzeOpportunity(s)}}},[a("div",{staticClass:"rc-head"},[a("span",{staticClass:"rc-symbol",class:{"rc-prediction-title":"PredictionMarket"===s.market}},[t._v(" "+t._s("PredictionMarket"===s.market&&s.name||s.symbol)+" ")]),a("span",{staticClass:"rc-market",class:"rc-market-"+(s.market||"").toLowerCase()},[t._v(" "+t._s(t.getMarketLabel(s.market))+" ")])]),"PredictionMarket"!==s.market?a("div",{staticClass:"rc-metrics"},[a("div",{staticClass:"rc-metric"},[a("span",{staticClass:"rc-metric-label"},[t._v(t._s(t.$i18n&&"zh-CN"===t.$i18n.locale?"当前价格":"Price"))]),a("span",{staticClass:"rc-metric-value"},[t._v("$"+t._s(t.formatOppPrice(s.price)))])]),a("div",{staticClass:"rc-metric"},[a("span",{staticClass:"rc-metric-label"},[t._v(t._s(t.$i18n&&"zh-CN"===t.$i18n.locale?"24h涨跌":"24h Change"))]),a("span",{staticClass:"rc-metric-value",class:s.change_24h>=0?"rc-up":"rc-down"},[t._v(" "+t._s(s.change_24h>=0?"+":"")+t._s((s.change_24h||0).toFixed(2))+"% ")])]),a("div",{staticClass:"rc-metric"},[a("span",{staticClass:"rc-metric-label"},[t._v(t._s(t.$i18n&&"zh-CN"===t.$i18n.locale?"信号":"Signal"))]),a("span",{staticClass:"rc-metric-value rc-signal-val",class:"rc-signal-"+(s.signal||"")},[t._v(" "+t._s(t.getSignalLabel(s.signal))+" ")])])]):a("div",{staticClass:"rc-metrics"},[a("div",{staticClass:"rc-metric"},[a("span",{staticClass:"rc-metric-label"},[t._v(t._s(t.$i18n&&"zh-CN"===t.$i18n.locale?"市场概率":"Probability"))]),a("span",{staticClass:"rc-metric-value"},[t._v(t._s((s.price||0).toFixed(1))+"%")])]),s.ai_analysis?a("div",{staticClass:"rc-metric"},[a("span",{staticClass:"rc-metric-label"},[t._v(t._s(t.$i18n&&"zh-CN"===t.$i18n.locale?"机会评分":"Score"))]),a("span",{staticClass:"rc-metric-value rc-up"},[t._v(t._s(s.ai_analysis.opportunity_score.toFixed(0)))])]):t._e(),s.ai_analysis?a("div",{staticClass:"rc-metric"},[a("span",{staticClass:"rc-metric-label"},[t._v(t._s(t.$i18n&&"zh-CN"===t.$i18n.locale?"建议":"Rec."))]),a("span",{staticClass:"rc-metric-value",class:"YES"===s.ai_analysis.recommendation?"rc-up":"NO"===s.ai_analysis.recommendation?"rc-down":""},[t._v(" "+t._s(t.getRecommendationLabel(s.ai_analysis.recommendation))+" ")])]):t._e()]),a("div",{staticClass:"rc-footer"},[a("span",{staticClass:"rc-reason"},[t._v(t._s(t.getReasonText(s)))]),"Crypto"===s.market?a("span",{staticClass:"rc-cta",on:{click:function(a){return a.stopPropagation(),t.openQuickTradeFromOpp(s)}}},[a("a-icon",{attrs:{type:"transaction"}}),t._v(" "+t._s(t.$t("quickTrade.tradeNow"))+" ")],1):t._e()])])}),0)])]):t._e(),a("a-tooltip",{attrs:{title:t.$t("quickTrade.openPanel"),placement:"left"}},[!t.showQuickTrade&&t.currentAnalysisSymbol?a("div",{staticClass:"qt-floating-btn",on:{click:t.openQuickTradeFromCurrent}},[a("a-icon",{attrs:{type:"thunderbolt",theme:"filled"}})],1):t._e()]),a("quick-trade-panel",{attrs:{visible:t.showQuickTrade,symbol:t.qtSymbol,"preset-side":t.qtSide,"preset-price":t.qtPrice,source:t.qtSource,"market-type":"swap"},on:{close:function(a){t.showQuickTrade=!1},"order-success":t.onQuickTradeSuccess,"update:symbol":t.handleQuickTradeSymbolChange}}),a("a-card",{staticClass:"workspace-card",attrs:{bordered:!1}},[a("a-tabs",{staticClass:"workspace-tabs",attrs:{size:"large"},model:{value:t.activeTab,callback:function(a){t.activeTab=a},expression:"activeTab"}},[a("a-tab-pane",{key:"quick"},[a("span",{attrs:{slot:"tab"},slot:"tab"},[a("a-icon",{attrs:{type:"thunderbolt"}}),t._v(" "+t._s(t.$t("aiAssetAnalysis.tabs.quick"))+" ")],1),a("div",{staticClass:"tab-body"},["quick"===t.activeTab?a("AnalysisView",{attrs:{embedded:!0,"preset-symbol":t.presetSymbol,"auto-analyze-signal":t.autoAnalyzeSignal},on:{"symbol-change":t.onAnalysisSymbolChange}}):t._e()],1)]),a("a-tab-pane",{key:"polymarket"},[a("span",{attrs:{slot:"tab"},slot:"tab"},[a("a-icon",{attrs:{type:"radar-chart"}}),t._v(" "+t._s(t.$t("aiAssetAnalysis.tabs.polymarket"))+" ")],1),a("div",{staticClass:"tab-body"},[a("div",{staticClass:"polymarket-tab-content"},[a("div",{staticClass:"polymarket-placeholder"},[a("div",{staticClass:"placeholder-icon"},[a("a-icon",{attrs:{type:"radar-chart"}})],1),a("h3",[t._v(t._s(t.$t("polymarket.analysis.title")))]),a("p",[t._v(t._s(t.$t("polymarket.analysis.description")))]),a("a-button",{staticStyle:{"margin-top":"16px"},attrs:{type:"primary",size:"large",icon:"thunderbolt"},on:{click:function(a){t.showPolymarketModal=!0}}},[t._v(" "+t._s(t.$t("polymarket.analysis.startAnalysis"))+" ")])],1)])])])],1)],1),a("PolymarketAnalysisModal",{attrs:{visible:t.showPolymarketModal},on:{close:function(a){t.showPolymarketModal=!1}}})],1)},i=[],n=s(81127),r=s(56252),o=s(2403),l=s(76338),c=(s(28706),s(74423),s(34782),s(27495),s(21699),s(25440),s(95353)),u=s(35200),d=s(44146),y=s(83973),p=(s(42762),function(){var t=this,a=t._self._c;return a("a-modal",{attrs:{visible:t.visible,title:t.$t("polymarket.analysis.title"),width:900,footer:null,wrapClassName:t.isDarkTheme?"qd-dark-modal":"",maskClosable:!1},on:{cancel:t.handleClose}},[a("div",{staticClass:"polymarket-analysis-modal",class:{"theme-dark":t.isDarkTheme}},[a("a-tabs",{attrs:{"default-active-key":"analyze"},on:{change:t.handleTabChange}},[a("a-tab-pane",{key:"analyze",attrs:{tab:t.$t("polymarket.analysis.tabAnalyze")}},[t.analysisResult?t._e():a("div",{staticClass:"input-section"},[a("a-alert",{staticStyle:{"margin-bottom":"16px"},attrs:{message:t.$t("polymarket.analysis.inputHint"),type:"info","show-icon":""}}),a("a-textarea",{attrs:{placeholder:t.$t("polymarket.analysis.inputPlaceholder"),rows:3,disabled:t.analyzing},on:{pressEnter:t.handleAnalyze},model:{value:t.inputText,callback:function(a){t.inputText=a},expression:"inputText"}}),a("div",{staticClass:"input-actions"},[a("a-button",{staticStyle:{width:"100%","margin-top":"12px"},attrs:{type:"primary",size:"large",icon:"thunderbolt",loading:t.analyzing,disabled:!t.inputText.trim()},on:{click:t.handleAnalyze}},[t._v(" "+t._s(t.$t("polymarket.analysis.analyzeButton"))+" ")])],1)],1),t.analysisResult?a("div",{staticClass:"result-section"},[a("div",{staticClass:"market-info"},[a("h3",[t._v(t._s(t.analysisResult.market.question))]),a("div",{staticClass:"market-meta"},[a("a-tag",{attrs:{color:t.getStatusColor(t.analysisResult.market.status)}},[t._v(" "+t._s(t.analysisResult.market.status)+" ")]),a("span",{staticClass:"meta-item"},[a("a-icon",{attrs:{type:"percentage"}}),t._v(" "+t._s(t.analysisResult.market.current_probability)+"% ")],1),t.analysisResult.market.volume_24h?a("span",{staticClass:"meta-item"},[a("a-icon",{attrs:{type:"dollar"}}),t._v(" "+t._s(t.formatVolume(t.analysisResult.market.volume_24h))+" ")],1):t._e(),t.analysisResult.market.polymarket_url?a("a-button",{attrs:{type:"link",size:"small",icon:"link",href:t.analysisResult.market.polymarket_url,target:"_blank"}},[t._v(" "+t._s(t.$t("polymarket.analysis.viewOnPolymarket"))+" ")]):t._e()],1)]),a("div",{staticClass:"analysis-result"},[a("a-divider",[t._v(t._s(t.$t("polymarket.analysis.aiAnalysis")))]),a("div",{staticClass:"probability-comparison"},[a("div",{staticClass:"prob-item"},[a("div",{staticClass:"prob-label"},[t._v(t._s(t.$t("polymarket.analysis.marketProbability")))]),a("div",{staticClass:"prob-value"},[t._v(t._s(t.analysisResult.analysis.market_probability)+"%")])]),a("div",{staticClass:"prob-item"},[a("div",{staticClass:"prob-label"},[t._v(t._s(t.$t("polymarket.analysis.aiPredictedProbability")))]),a("div",{staticClass:"prob-value ai-prob"},[t._v(t._s(t.analysisResult.analysis.ai_predicted_probability)+"%")])]),a("div",{staticClass:"prob-item"},[a("div",{staticClass:"prob-label"},[t._v(t._s(t.$t("polymarket.analysis.divergence")))]),a("div",{staticClass:"prob-value",class:t.getDivergenceClass(t.analysisResult.analysis.divergence)},[t._v(" "+t._s(t.analysisResult.analysis.divergence>=0?"+":"")+t._s(t.analysisResult.analysis.divergence.toFixed(2))+"% ")])])]),a("div",{staticClass:"recommendation-section"},[a("a-row",{attrs:{gutter:16}},[a("a-col",{attrs:{span:8}},[a("div",{staticClass:"rec-card"},[a("div",{staticClass:"rec-label"},[t._v(t._s(t.$t("polymarket.analysis.recommendation")))]),a("a-tag",{staticStyle:{"font-size":"16px",padding:"4px 12px"},attrs:{color:t.getRecommendationColor(t.analysisResult.analysis.recommendation)}},[t._v(" "+t._s(t.getRecommendationLabel(t.analysisResult.analysis.recommendation))+" ")])],1)]),a("a-col",{attrs:{span:8}},[a("div",{staticClass:"rec-card"},[a("div",{staticClass:"rec-label"},[t._v(t._s(t.$t("polymarket.analysis.confidenceScore")))]),a("div",{staticClass:"rec-value"},[t._v(t._s(t.analysisResult.analysis.confidence_score.toFixed(0)))])])]),a("a-col",{attrs:{span:8}},[a("div",{staticClass:"rec-card"},[a("div",{staticClass:"rec-label"},[t._v(t._s(t.$t("polymarket.analysis.opportunityScore")))]),a("div",{staticClass:"rec-value"},[t._v(t._s(t.analysisResult.analysis.opportunity_score.toFixed(0)))])])])],1)],1),t.analysisResult.analysis.reasoning?a("div",{staticClass:"reasoning-section"},[a("h4",[t._v(t._s(t.$t("polymarket.analysis.reasoning")))]),a("p",{staticClass:"reasoning-text"},[t._v(t._s(t.analysisResult.analysis.reasoning))])]):t._e(),t.analysisResult.analysis.key_factors&&t.analysisResult.analysis.key_factors.length>0?a("div",{staticClass:"key-factors-section"},[a("h4",[t._v(t._s(t.$t("polymarket.analysis.keyFactors")))]),t._l(t.analysisResult.analysis.key_factors,function(s,e){return a("a-tag",{key:e,staticStyle:{margin:"4px"},attrs:{color:"blue"}},[t._v(" "+t._s(s)+" ")])})],2):t._e(),t.analysisResult.credits_charged>0?a("div",{staticClass:"billing-info"},[a("a-alert",{staticStyle:{"margin-top":"16px"},attrs:{message:t.$t("polymarket.analysis.creditsCharged",{credits:t.analysisResult.credits_charged}),type:"success","show-icon":""}}),void 0!==t.analysisResult.remaining_credits?a("div",{staticStyle:{"margin-top":"8px","text-align":"right"},style:{color:t.isDarkTheme?"rgba(255,255,255,0.75)":"rgba(0,0,0,0.65)"}},[t._v(" "+t._s(t.$t("polymarket.analysis.remainingCredits",{credits:t.analysisResult.remaining_credits.toFixed(0)}))+" ")]):t._e()],1):t._e()],1),a("div",{staticClass:"result-actions"},[a("a-button",{staticStyle:{"margin-right":"8px"},on:{click:t.handleNewAnalysis}},[t._v(" "+t._s(t.$t("polymarket.analysis.newAnalysis"))+" ")]),a("a-button",{attrs:{type:"primary"},on:{click:t.handleClose}},[t._v(" "+t._s(t.$t("common.close"))+" ")])],1)]):t._e(),t.analyzing?a("div",{staticClass:"loading-section"},[a("a-spin",{attrs:{size:"large"}}),a("p",{style:{marginTop:"16px",color:t.isDarkTheme?"rgba(255,255,255,0.75)":"rgba(0,0,0,0.65)"}},[t._v(" "+t._s(t.$t("polymarket.analysis.analyzing"))+" ")])],1):t._e()]),a("a-tab-pane",{key:"history",attrs:{tab:t.$t("polymarket.analysis.tabHistory")}},[a("div",{staticClass:"history-section"},[a("a-spin",{attrs:{spinning:t.historyLoading}},[a("a-table",{attrs:{columns:t.historyColumns,"data-source":t.historyList,pagination:t.historyPagination,"row-key":function(t){return t.id},size:"small"},on:{change:t.handleHistoryTableChange},scopedSlots:t._u([{key:"market_title",fn:function(s,e){return[a("a-button",{staticStyle:{padding:"0"},attrs:{type:"link"},on:{click:function(a){return t.viewHistoryItem(e)}}},[t._v(" "+t._s(s)+" ")])]}},{key:"recommendation",fn:function(s){return[a("a-tag",{attrs:{color:t.getRecommendationColor(s)}},[t._v(" "+t._s(t.getRecommendationLabel(s))+" ")])]}},{key:"created_at",fn:function(a){return[t._v(" "+t._s(t.formatDateTime(a))+" ")]}}])})],1)],1)])],1)],1)])}),m=[],h=(s(26099),s(75769)),v="/api/polymarket";function _(t){return(0,h.Ay)({url:"".concat(v,"/analyze"),method:"post",data:t,timeout:12e4})}function k(t){return(0,h.Ay)({url:"".concat(v,"/history"),method:"get",params:t})}var g={name:"PolymarketAnalysisModal",props:{visible:{type:Boolean,default:!1}},data:function(){var t=this;return{inputText:"",analyzing:!1,analysisResult:null,activeTab:"analyze",historyLoading:!1,historyList:[],historyPagination:{current:1,pageSize:20,total:0,showSizeChanger:!0,showTotal:function(a){return t.$t("polymarket.analysis.historyTotal",{total:a})}},historyColumns:[]}},computed:(0,l.A)((0,l.A)({},(0,c.aH)({navTheme:function(t){return t.app.theme}})),{},{isDarkTheme:function(){return"dark"===this.navTheme||"realdark"===this.navTheme}}),methods:{handleAnalyze:function(){var t=this;this.inputText.trim()?(this.analyzing=!0,this.analysisResult=null,_({input:this.inputText.trim(),language:this.$i18n.locale||"zh-CN"}).then(function(a){1===a.code?(t.analysisResult=a.data,t.$message.success(t.$t("polymarket.analysis.success"))):"Insufficient credits"===a.msg?(t.$message.error(t.$t("polymarket.analysis.insufficientCredits")),t.$router.push("/billing")):t.$message.error(a.msg||t.$t("polymarket.analysis.failed"))}).catch(function(a){a.response&&a.response.data&&"Insufficient credits"===a.response.data.msg?(t.$message.error(t.$t("polymarket.analysis.insufficientCredits")),t.$router.push("/billing")):t.$message.error(t.$t("polymarket.analysis.failed"))}).finally(function(){t.analyzing=!1})):this.$message.warning(this.$t("polymarket.analysis.inputRequired"))},handleNewAnalysis:function(){this.inputText="",this.analysisResult=null},handleClose:function(){var t=this;this.$emit("close"),setTimeout(function(){t.inputText="",t.analysisResult=null,t.analyzing=!1},300)},getStatusColor:function(t){var a={active:"green",closed:"default",resolved:"blue"};return a[t]||"default"},getRecommendationColor:function(t){var a={YES:"green",NO:"red",HOLD:"orange"};return a[t]||"default"},getRecommendationLabel:function(t){var a={YES:this.$t("polymarket.analysis.recommendationYes"),NO:this.$t("polymarket.analysis.recommendationNo"),HOLD:this.$t("polymarket.analysis.recommendationHold")};return a[t]||t},getDivergenceClass:function(t){return t>5?"divergence-positive":t<-5?"divergence-negative":"divergence-neutral"},formatVolume:function(t){return t>=1e6?"$".concat((t/1e6).toFixed(2),"M"):t>=1e3?"$".concat((t/1e3).toFixed(2),"K"):"$".concat(t.toFixed(2))},handleTabChange:function(t){this.activeTab=t,"history"===t&&0===this.historyList.length&&this.loadHistory()},loadHistory:function(){var t=this;return(0,r.A)((0,n.A)().m(function a(){var s;return(0,n.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return t.historyLoading=!0,a.p=1,a.n=2,k({page:t.historyPagination.current,page_size:t.historyPagination.pageSize});case 2:s=a.v,1===s.code&&s.data&&(t.historyList=s.data.items||[],t.historyPagination.total=s.data.total||0),a.n=4;break;case 3:a.p=3,a.v,t.$message.error(t.$t("polymarket.analysis.loadHistoryFailed"));case 4:return a.p=4,t.historyLoading=!1,a.f(4);case 5:return a.a(2)}},a,null,[[1,3,4,5]])}))()},handleHistoryTableChange:function(t){this.historyPagination.current=t.current,this.historyPagination.pageSize=t.pageSize,this.loadHistory()},viewHistoryItem:function(t){this.activeTab="analyze",this.analysisResult={market:{question:t.market_title,market_id:t.market_id,polymarket_url:t.market_url,current_probability:t.market_probability,status:"active"},analysis:{ai_predicted_probability:t.ai_predicted_probability,market_probability:t.market_probability,recommendation:t.recommendation,opportunity_score:t.opportunity_score,confidence_score:t.confidence_score}}},formatDateTime:function(t){if(!t)return"";var a=new Date(t);return a.toLocaleString("zh-CN"===this.$i18n.locale?"zh-CN":"en-US")}},mounted:function(){this.historyColumns=[{title:this.$t("polymarket.analysis.historyMarket"),dataIndex:"market_title",key:"market_title",scopedSlots:{customRender:"market_title"}},{title:this.$t("polymarket.analysis.historyRecommendation"),dataIndex:"recommendation",key:"recommendation",width:120,scopedSlots:{customRender:"recommendation"}},{title:this.$t("polymarket.analysis.historyOpportunityScore"),dataIndex:"opportunity_score",key:"opportunity_score",width:120,align:"right"},{title:this.$t("polymarket.analysis.historyCreatedAt"),dataIndex:"created_at",key:"created_at",width:180,scopedSlots:{customRender:"created_at"}}]}},b=g,f=s(845),C=(0,f.A)(b,p,m,!1,null,"67e891d2",null),$=C.exports,S={name:"AIAssetAnalysis",components:{AnalysisView:u["default"],QuickTradePanel:y.A,PolymarketAnalysisModal:$},data:function(){return{activeTab:"quick",opportunities:[],oppLoading:!1,oppHover:!1,presetSymbol:"",autoAnalyzeSignal:0,showQuickTrade:!1,qtSymbol:"",qtSide:"",qtPrice:0,qtSource:"ai_radar",currentAnalysisSymbol:"",currentAnalysisMarket:"",showPolymarketModal:!1}},computed:(0,l.A)((0,l.A)({},(0,c.aH)({navTheme:function(t){return t.app.theme}})),{},{isDarkTheme:function(){return"dark"===this.navTheme||"realdark"===this.navTheme},carouselItems:function(){return 0===this.opportunities.length?[]:[].concat((0,o.A)(this.opportunities),(0,o.A)(this.opportunities))},oppTrackStyle:function(){var t=3*this.opportunities.length;return{animationDuration:t+"s"}}}),created:function(){this.loadOpportunities()},methods:{loadOpportunities:function(){var t=arguments,a=this;return(0,r.A)((0,n.A)().m(function s(){var e,i,r;return(0,n.A)().w(function(s){while(1)switch(s.p=s.n){case 0:return e=t.length>0&&void 0!==t[0]&&t[0],a.oppLoading=!0,s.p=1,i=e?{force:!0}:{},s.n=2,(0,d.r9)(i);case 2:r=s.v,r&&1===r.code&&Array.isArray(r.data)&&(a.opportunities=r.data.slice(0,20)),s.n=4;break;case 3:s.p=3,s.v;case 4:return s.p=4,a.oppLoading=!1,s.f(4);case 5:return s.a(2)}},s,null,[[1,3,4,5]])}))()},getSignalColor:function(t){var a={overbought:"volcano",oversold:"green",bullish_momentum:"cyan",bearish_momentum:"red"};return a[t]||"default"},getSignalLabel:function(t){var a="aiAssetAnalysis.opportunities.signal.".concat(t),s=this.$t(a);return s!==a?s:t},getMarketTagColor:function(t){var a={Crypto:"purple",USStock:"green",Forex:"gold",PredictionMarket:"cyan"};return a[t]||"default"},getMarketLabel:function(t){var a="aiAssetAnalysis.opportunities.market.".concat(t),s=this.$t(a);return s!==a?s:t},getReasonText:function(t){var a=(t.market||"Crypto").toLowerCase(),s=t.signal||"",e="aiAssetAnalysis.opportunities.reason.".concat(a,".").concat(s),i=this.$t(e);if(i===e)return t.reason||"";var n=Math.abs(t.change_24h||0).toFixed(1),r=Math.abs(t.change_7d||0).toFixed(1);return i.replace("{change}",n).replace("{change7d}",r)},formatOppPrice:function(t){return t?t>=1e4?(t/1e3).toFixed(1)+"K":t>=1?t.toFixed(2):t.toFixed(4):"--"},analyzeOpportunity:function(t){var a=this;if("PredictionMarket"===t.market)return this.activeTab="polymarket",void(this.showPolymarketModal=!0);this.activeTab="quick";var s=t.market||"Crypto";this.presetSymbol="".concat(s,":").concat(t.symbol),this.$nextTick(function(){a.autoAnalyzeSignal++})},getRecommendationColor:function(t){var a={YES:"green",NO:"red",HOLD:"default"};return a[t]||"default"},getRecommendationLabel:function(t){return this.$t("polymarket.recommendation.".concat(t))||t},onAnalysisSymbolChange:function(t){if(!t)return this.currentAnalysisSymbol="",void(this.currentAnalysisMarket="");var a=t.split(":"),s=a.length>1?a[0]:"Crypto",e=a.length>1?a[1]:a[0];this.currentAnalysisMarket=s,this.currentAnalysisSymbol="Crypto"===s?e:""},openQuickTradeFromCurrent:function(){this.currentAnalysisSymbol&&(this.qtSymbol=this.currentAnalysisSymbol,this.qtSide="",this.qtPrice=0,this.qtSource="ai_analysis",this.showQuickTrade=!0)},openQuickTradeFromOpp:function(t){if("Crypto"===t.market){this.qtSymbol=t.symbol||"";var a=(t.signal||"").toLowerCase();a.includes("oversold")||a.includes("bullish")?this.qtSide="buy":a.includes("overbought")||a.includes("bearish")?this.qtSide="sell":this.qtSide="",this.qtPrice=t.price||0,this.qtSource="ai_radar",this.showQuickTrade=!0}},onQuickTradeSuccess:function(){this.$message.success(this.$t("quickTrade.orderSuccess"))},handleQuickTradeSymbolChange:function(t){t&&(this.qtSymbol=t)}}},T=S,A=(0,f.A)(T,e,i,!1,null,"0d0a10d6",null),R=A.exports}}]); \ No newline at end of file diff --git a/frontend/dist/js/420.3e3af7b7.js b/frontend/dist/js/420.3e3af7b7.js new file mode 100644 index 0000000..bc357c4 --- /dev/null +++ b/frontend/dist/js/420.3e3af7b7.js @@ -0,0 +1 @@ +"use strict";(self["webpackChunkvue_antd_pro"]=self["webpackChunkvue_antd_pro"]||[]).push([[420],{88420:function(e,t,a){a.r(t),a.d(t,{default:function(){return v}});var r=function(){var e=this,t=e._self._c;return t("div",{staticClass:"profile-page",class:{"theme-dark":e.isDarkTheme}},[t("div",{staticClass:"page-header"},[t("h2",{staticClass:"page-title"},[t("a-icon",{attrs:{type:"user"}}),t("span",[e._v(e._s(e.$t("profile.title")||"My Profile"))])],1),t("p",{staticClass:"page-desc"},[e._v(e._s(e.$t("profile.description")||"Manage your account settings and preferences"))])]),t("a-row",{staticClass:"profile-cards-row",attrs:{gutter:24}},[t("a-col",{staticClass:"profile-card-col",attrs:{xs:24,md:8}},[t("a-card",{staticClass:"profile-card",attrs:{bordered:!1}},[t("div",{staticClass:"avatar-section"},[t("a-avatar",{attrs:{size:100,src:e.profile.avatar||"/avatar2.jpg"}}),t("h3",{staticClass:"username"},[e._v(e._s(e.profile.nickname||e.profile.username))]),t("p",{staticClass:"user-role"},[t("a-tag",{attrs:{color:e.getRoleColor(e.profile.role)}},[e._v(" "+e._s(e.getRoleLabel(e.profile.role))+" ")]),e.isVip?t("a-tag",{attrs:{color:"gold"}},[t("a-icon",{attrs:{type:"crown"}}),e._v(" VIP ")],1):e._e()],1)],1),t("a-divider"),t("div",{staticClass:"profile-info"},[t("div",{staticClass:"info-item"},[t("a-icon",{attrs:{type:"user"}}),t("span",{staticClass:"label"},[e._v(e._s(e.$t("profile.username")||"Username")+":")]),t("span",{staticClass:"value"},[e._v(e._s(e.profile.username))])],1),t("div",{staticClass:"info-item"},[t("a-icon",{attrs:{type:"mail"}}),t("span",{staticClass:"label"},[e._v(e._s(e.$t("profile.email")||"Email")+":")]),t("span",{staticClass:"value"},[e._v(e._s(e.profile.email||"-"))])],1),t("div",{staticClass:"info-item"},[t("a-icon",{attrs:{type:"calendar"}}),t("span",{staticClass:"label"},[e._v(e._s(e.$t("profile.lastLogin")||"Last Login")+":")]),t("span",{staticClass:"value"},[e._v(e._s(e.formatTime(e.profile.last_login_at)||"-"))])],1)])],1)],1),t("a-col",{staticClass:"right-cards-col",attrs:{xs:24,md:16}},[t("a-row",{staticClass:"right-cards-row",attrs:{gutter:16}},[t("a-col",{attrs:{xs:24,md:12}},[t("a-card",{staticClass:"credits-card",attrs:{bordered:!1}},[t("div",{staticClass:"credits-header"},[t("h3",{staticClass:"credits-title"},[t("a-icon",{attrs:{type:"wallet"}}),e._v(" "+e._s(e.$t("profile.credits.title")||"我的积分")+" ")],1)]),t("div",{staticClass:"credits-body"},[t("div",{staticClass:"credits-amount"},[t("span",{staticClass:"amount-value"},[e._v(e._s(e.formatCredits(e.billing.credits)))]),t("span",{staticClass:"amount-label"},[e._v(e._s(e.$t("profile.credits.unit")||"积分"))])]),e.billing.vip_expires_at?t("div",{staticClass:"vip-status"},[t("a-icon",{style:{color:e.isVip?"#faad14":"#999"},attrs:{type:"crown"}}),e.isVip?t("span",{staticClass:"vip-active"},[e._v(" "+e._s(e.$t("profile.credits.vipExpires")||"VIP有效期至")+": "+e._s(e.formatDate(e.billing.vip_expires_at))+" ")]):t("span",{staticClass:"vip-expired"},[e._v(" "+e._s(e.$t("profile.credits.vipExpired")||"VIP已过期")+" ")])],1):e.billing.is_vip?e._e():t("div",{staticClass:"vip-status"},[t("span",{staticClass:"no-vip"},[e._v(e._s(e.$t("profile.credits.noVip")||"非VIP用户"))])])]),t("a-divider"),t("div",{staticClass:"credits-actions"},[t("a-button",{attrs:{type:"primary",icon:"shopping"},on:{click:e.handleRecharge}},[e._v(" "+e._s(e.$t("profile.credits.recharge")||"开通/充值")+" ")])],1),e.billing.billing_enabled?t("div",{staticClass:"credits-hint"},[t("a-icon",{attrs:{type:"info-circle"}}),t("span",[e._v(e._s(e.$t("profile.credits.hint")||"使用AI分析/回测/监控等功能会消耗积分;VIP仅可免费使用VIP免费指标。"))])],1):e._e()],1)],1),t("a-col",{attrs:{xs:24,md:12}},[t("a-card",{staticClass:"referral-card",attrs:{bordered:!1}},[t("div",{staticClass:"referral-header"},[t("h3",{staticClass:"referral-title"},[t("a-icon",{attrs:{type:"team"}}),e._v(" "+e._s(e.$t("profile.referral.title")||"邀请好友")+" ")],1)]),t("div",{staticClass:"referral-body"},[t("div",{staticClass:"referral-stats"},[t("div",{staticClass:"stat-item"},[t("span",{staticClass:"stat-value"},[e._v(e._s(e.referralData.total||0))]),t("span",{staticClass:"stat-label"},[e._v(e._s(e.$t("profile.referral.totalInvited")||"已邀请"))])]),e.referralData.referral_bonus>0?t("div",{staticClass:"stat-item"},[t("span",{staticClass:"stat-value"},[e._v("+"+e._s(e.referralData.referral_bonus))]),t("span",{staticClass:"stat-label"},[e._v(e._s(e.$t("profile.referral.bonusPerInvite")||"每邀请获得"))])]):e._e()]),t("a-divider",{staticStyle:{margin:"12px 0"}}),t("div",{staticClass:"referral-link-section"},[t("div",{staticClass:"link-label"},[e._v(e._s(e.$t("profile.referral.yourLink")||"您的邀请链接"))]),t("div",{staticClass:"link-box"},[t("a-input",{attrs:{value:e.referralLink,readonly:"",size:"small"}},[t("a-tooltip",{attrs:{slot:"suffix",title:e.$t("profile.referral.copyLink")||"复制链接"},slot:"suffix"},[t("a-icon",{staticStyle:{cursor:"pointer"},attrs:{type:"copy"},on:{click:e.copyReferralLink}})],1)],1)],1)]),e.referralData.register_bonus>0?t("div",{staticClass:"referral-hint"},[t("a-icon",{attrs:{type:"gift"}}),t("span",[e._v(e._s(e.$t("profile.referral.newUserBonus")||"新用户注册获得")+" "+e._s(e.referralData.register_bonus)+" "+e._s(e.$t("profile.credits.unit")||"积分"))])],1):e._e()],1)])],1)],1)],1)],1),t("a-row",{staticStyle:{"margin-top":"24px"},attrs:{gutter:24}},[t("a-col",{attrs:{xs:24}},[t("a-card",{staticClass:"edit-card",attrs:{bordered:!1}},[t("a-tabs",{model:{value:e.activeTab,callback:function(t){e.activeTab=t},expression:"activeTab"}},[t("a-tab-pane",{key:"basic",attrs:{tab:e.$t("profile.basicInfo")||"Basic Info"}},[t("a-form",{staticClass:"profile-form",attrs:{form:e.profileForm,layout:"vertical"}},[t("a-form-item",{attrs:{label:e.$t("profile.nickname")||"Nickname"}},[t("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["nickname",{initialValue:e.profile.nickname}],expression:"['nickname', { initialValue: profile.nickname }]"}],attrs:{placeholder:e.$t("profile.nicknamePlaceholder")||"Enter your nickname"}},[t("a-icon",{attrs:{slot:"prefix",type:"smile"},slot:"prefix"})],1)],1),t("a-form-item",{attrs:{label:e.$t("profile.email")||"Email"}},[t("a-input",{attrs:{value:e.profile.email||"-",disabled:""}},[t("a-icon",{attrs:{slot:"prefix",type:"mail"},slot:"prefix"}),t("a-tooltip",{attrs:{slot:"suffix",title:e.$t("profile.emailCannotChange")||"Email cannot be changed after registration"},slot:"suffix"},[t("a-icon",{staticStyle:{color:"rgba(0,0,0,.45)"},attrs:{type:"info-circle"}})],1)],1)],1),t("a-form-item",[t("a-button",{attrs:{type:"primary",loading:e.saving},on:{click:e.handleSaveProfile}},[t("a-icon",{attrs:{type:"save"}}),e._v(" "+e._s(e.$t("common.save")||"Save")+" ")],1)],1)],1)],1),t("a-tab-pane",{key:"password",attrs:{tab:e.$t("profile.changePassword")||"Change Password"}},[t("a-form",{staticClass:"password-form",attrs:{form:e.passwordForm,layout:"vertical"}},[t("a-alert",{staticStyle:{"margin-bottom":"24px"},attrs:{message:e.$t("profile.passwordHintNew")||"For security, email verification is required to change password. Password must be at least 8 characters with uppercase, lowercase, and number.",type:"info",showIcon:""}}),t("a-form-item",{attrs:{label:e.$t("profile.verificationCode")||"Verification Code"}},[t("a-row",{attrs:{gutter:12}},[t("a-col",{attrs:{span:16}},[t("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["code",{rules:[{required:!0,message:e.$t("profile.codeRequired")||"Please enter verification code"}]}],expression:"['code', {\n rules: [{ required: true, message: $t('profile.codeRequired') || 'Please enter verification code' }]\n }]"}],attrs:{placeholder:e.$t("profile.codePlaceholder")||"Enter verification code"}},[t("a-icon",{attrs:{slot:"prefix",type:"safety-certificate"},slot:"prefix"})],1)],1),t("a-col",{attrs:{span:8}},[t("a-button",{attrs:{block:"",loading:e.sendingPwdCode,disabled:e.sendingPwdCode||e.pwdCodeCountdown>0||!e.profile.email},on:{click:e.handleSendPwdCode}},[e._v(" "+e._s(e.pwdCodeCountdown>0?"".concat(e.pwdCodeCountdown,"s"):e.$t("profile.sendCode")||"Send Code")+" ")])],1)],1),e.profile.email?t("div",{staticClass:"email-hint"},[e._v(" "+e._s(e.$t("profile.codeWillSendTo")||"Code will be sent to")+": "+e._s(e.profile.email)+" ")]):t("div",{staticClass:"email-hint email-warning"},[e._v(" "+e._s(e.$t("profile.noEmailWarning")||"Please set your email first in Basic Info tab")+" ")])],1),t("a-form-item",{attrs:{label:e.$t("profile.newPassword")||"New Password"}},[t("a-input-password",{directives:[{name:"decorator",rawName:"v-decorator",value:["new_password",{rules:[{required:!0,message:e.$t("profile.newPasswordRequired")||"Please enter new password"},{validator:e.validateNewPassword}]}],expression:"['new_password', {\n rules: [\n { required: true, message: $t('profile.newPasswordRequired') || 'Please enter new password' },\n { validator: validateNewPassword }\n ]\n }]"}],attrs:{placeholder:e.$t("profile.newPasswordPlaceholder")||"Enter new password"}},[t("a-icon",{attrs:{slot:"prefix",type:"lock"},slot:"prefix"})],1)],1),t("a-form-item",{attrs:{label:e.$t("profile.confirmPassword")||"Confirm Password"}},[t("a-input-password",{directives:[{name:"decorator",rawName:"v-decorator",value:["confirm_password",{rules:[{required:!0,message:e.$t("profile.confirmPasswordRequired")||"Please confirm password"},{validator:e.validateConfirmPassword}]}],expression:"['confirm_password', {\n rules: [\n { required: true, message: $t('profile.confirmPasswordRequired') || 'Please confirm password' },\n { validator: validateConfirmPassword }\n ]\n }]"}],attrs:{placeholder:e.$t("profile.confirmPasswordPlaceholder")||"Confirm new password"}},[t("a-icon",{attrs:{slot:"prefix",type:"lock"},slot:"prefix"})],1)],1),t("a-form-item",[t("a-button",{attrs:{type:"primary",loading:e.changingPassword,disabled:!e.profile.email},on:{click:e.handleChangePassword}},[t("a-icon",{attrs:{type:"key"}}),e._v(" "+e._s(e.$t("profile.changePassword")||"Change Password")+" ")],1)],1)],1)],1),t("a-tab-pane",{key:"credits",attrs:{tab:e.$t("profile.creditsLog")||"消费记录"}},[t("a-table",{attrs:{columns:e.creditsLogColumns,dataSource:e.creditsLog,loading:e.creditsLogLoading,pagination:e.creditsLogPagination,rowKey:function(e){return e.id},size:"small"},on:{change:e.handleCreditsLogChange},scopedSlots:e._u([{key:"action",fn:function(a){return[t("a-tag",{attrs:{color:e.getActionColor(a)}},[e._v(" "+e._s(e.getActionLabel(a))+" ")])]}},{key:"amount",fn:function(a){return[t("span",{class:a>=0?"amount-positive":"amount-negative"},[e._v(" "+e._s(a>=0?"+":"")+e._s(a)+" ")])]}},{key:"created_at",fn:function(t){return[e._v(" "+e._s(e.formatCreditsLogTime(t))+" ")]}}])})],1),t("a-tab-pane",{key:"notifications",attrs:{tab:e.$t("profile.notifications.title")||"通知设置"}},[t("div",{staticClass:"notification-settings-form"},[t("a-alert",{staticStyle:{"margin-bottom":"24px"},attrs:{message:e.$t("profile.notifications.hint")||"配置您的默认通知方式,在创建资产监控和预警时将自动使用这些设置",type:"info",showIcon:""}}),t("a-form",{staticStyle:{"max-width":"600px"},attrs:{form:e.notificationForm,layout:"vertical"}},[t("a-form-item",{attrs:{label:e.$t("profile.notifications.defaultChannels")||"默认通知渠道"}},[t("a-checkbox-group",{directives:[{name:"decorator",rawName:"v-decorator",value:["default_channels",{initialValue:e.notificationSettings.default_channels||["browser"]}],expression:"['default_channels', { initialValue: notificationSettings.default_channels || ['browser'] }]"}]},[t("a-row",{attrs:{gutter:16}},[t("a-col",{attrs:{span:8}},[t("a-checkbox",{attrs:{value:"browser"}},[t("a-icon",{attrs:{type:"bell"}}),e._v(" "+e._s(e.$t("profile.notifications.browser")||"站内通知")+" ")],1)],1),t("a-col",{attrs:{span:8}},[t("a-checkbox",{attrs:{value:"telegram"}},[t("a-icon",{attrs:{type:"send"}}),e._v(" Telegram ")],1)],1),t("a-col",{attrs:{span:8}},[t("a-checkbox",{attrs:{value:"email"}},[t("a-icon",{attrs:{type:"mail"}}),e._v(" "+e._s(e.$t("profile.notifications.email")||"邮件")+" ")],1)],1)],1),t("a-row",{staticStyle:{"margin-top":"8px"},attrs:{gutter:16}},[t("a-col",{attrs:{span:8}},[t("a-checkbox",{attrs:{value:"phone"}},[t("a-icon",{attrs:{type:"phone"}}),e._v(" "+e._s(e.$t("profile.notifications.phone")||"短信")+" ")],1)],1),t("a-col",{attrs:{span:8}},[t("a-checkbox",{attrs:{value:"discord"}},[t("a-icon",{attrs:{type:"message"}}),e._v(" Discord ")],1)],1),t("a-col",{attrs:{span:8}},[t("a-checkbox",{attrs:{value:"webhook"}},[t("a-icon",{attrs:{type:"api"}}),e._v(" Webhook ")],1)],1)],1)],1)],1),t("a-form-item",{attrs:{label:e.$t("profile.notifications.telegramBotToken")||"Telegram Bot Token"}},[t("a-input-password",{directives:[{name:"decorator",rawName:"v-decorator",value:["telegram_bot_token",{initialValue:e.notificationSettings.telegram_bot_token}],expression:"['telegram_bot_token', { initialValue: notificationSettings.telegram_bot_token }]"}],attrs:{placeholder:e.$t("profile.notifications.telegramBotTokenPlaceholder")||"请输入您的 Telegram Bot Token"}},[t("a-icon",{attrs:{slot:"prefix",type:"robot"},slot:"prefix"})],1),t("div",{staticClass:"field-hint"},[t("a-icon",{attrs:{type:"info-circle"}}),t("span",[e._v(" "+e._s(e.$t("profile.notifications.telegramBotTokenHint")||"通过 @BotFather 创建机器人获取 Token")+" "),t("a",{attrs:{href:"https://t.me/BotFather",target:"_blank",rel:"noopener noreferrer"}},[e._v("@BotFather")])])],1)],1),t("a-form-item",{attrs:{label:e.$t("profile.notifications.telegramChatId")||"Telegram Chat ID"}},[t("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["telegram_chat_id",{initialValue:e.notificationSettings.telegram_chat_id}],expression:"['telegram_chat_id', { initialValue: notificationSettings.telegram_chat_id }]"}],attrs:{placeholder:e.$t("profile.notifications.telegramPlaceholder")||"请输入您的 Telegram Chat ID(如 123456789)"}},[t("a-icon",{attrs:{slot:"prefix",type:"message"},slot:"prefix"})],1),t("div",{staticClass:"field-hint"},[t("a-icon",{attrs:{type:"info-circle"}}),t("span",[e._v(e._s(e.$t("profile.notifications.telegramHint")||"发送 /start 给 @userinfobot 可获取您的 Chat ID"))])],1)],1),t("a-form-item",{attrs:{label:e.$t("profile.notifications.notifyEmail")||"通知邮箱"}},[t("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["email",{initialValue:e.notificationSettings.email||e.profile.email}],expression:"['email', { initialValue: notificationSettings.email || profile.email }]"}],attrs:{placeholder:e.$t("profile.notifications.emailPlaceholder")||"接收通知的邮箱地址"}},[t("a-icon",{attrs:{slot:"prefix",type:"mail"},slot:"prefix"})],1),t("div",{staticClass:"field-hint"},[t("a-icon",{attrs:{type:"info-circle"}}),t("span",[e._v(e._s(e.$t("profile.notifications.emailHint")||"默认使用账户邮箱,可设置其他邮箱接收通知"))])],1)],1),t("a-form-item",{attrs:{label:e.$t("profile.notifications.phone")||"手机号(短信通知)"}},[t("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["phone",{initialValue:e.notificationSettings.phone}],expression:"['phone', { initialValue: notificationSettings.phone }]"}],attrs:{placeholder:e.$t("profile.notifications.phonePlaceholder")||"请输入手机号(如 +8613800138000)"}},[t("a-icon",{attrs:{slot:"prefix",type:"phone"},slot:"prefix"})],1),t("div",{staticClass:"field-hint"},[t("a-icon",{attrs:{type:"info-circle"}}),t("span",[e._v(e._s(e.$t("profile.notifications.phoneHint")||"需要管理员配置 Twilio 服务后才能使用短信通知"))])],1)],1),t("a-form-item",{attrs:{label:e.$t("profile.notifications.discordWebhook")||"Discord Webhook"}},[t("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["discord_webhook",{initialValue:e.notificationSettings.discord_webhook}],expression:"['discord_webhook', { initialValue: notificationSettings.discord_webhook }]"}],attrs:{placeholder:e.$t("profile.notifications.discordPlaceholder")||"https://discord.com/api/webhooks/..."}},[t("a-icon",{attrs:{slot:"prefix",type:"message"},slot:"prefix"})],1),t("div",{staticClass:"field-hint"},[t("a-icon",{attrs:{type:"info-circle"}}),t("span",[e._v(e._s(e.$t("profile.notifications.discordHint")||"在 Discord 服务器设置中创建 Webhook"))])],1)],1),t("a-form-item",{attrs:{label:e.$t("profile.notifications.webhookUrl")||"Webhook URL"}},[t("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["webhook_url",{initialValue:e.notificationSettings.webhook_url}],expression:"['webhook_url', { initialValue: notificationSettings.webhook_url }]"}],attrs:{placeholder:e.$t("profile.notifications.webhookPlaceholder")||"https://your-server.com/webhook"}},[t("a-icon",{attrs:{slot:"prefix",type:"api"},slot:"prefix"})],1),t("div",{staticClass:"field-hint"},[t("a-icon",{attrs:{type:"info-circle"}}),t("span",[e._v(e._s(e.$t("profile.notifications.webhookHint")||"自定义 Webhook 地址,将以 POST JSON 方式推送通知"))])],1)],1),t("a-form-item",{attrs:{label:e.$t("profile.notifications.webhookToken")||"Webhook Token(可选)"}},[t("a-input-password",{directives:[{name:"decorator",rawName:"v-decorator",value:["webhook_token",{initialValue:e.notificationSettings.webhook_token}],expression:"['webhook_token', { initialValue: notificationSettings.webhook_token }]"}],attrs:{placeholder:e.$t("profile.notifications.webhookTokenPlaceholder")||"用于验证请求的 Bearer Token"}},[t("a-icon",{attrs:{slot:"prefix",type:"key"},slot:"prefix"})],1),t("div",{staticClass:"field-hint"},[t("a-icon",{attrs:{type:"info-circle"}}),t("span",[e._v(e._s(e.$t("profile.notifications.webhookTokenHint")||"将作为 Authorization: Bearer Token 发送到 Webhook"))])],1)],1),t("a-form-item",[t("a-button",{attrs:{type:"primary",loading:e.savingNotifications},on:{click:e.handleSaveNotifications}},[t("a-icon",{attrs:{type:"save"}}),e._v(" "+e._s(e.$t("common.save")||"保存")+" ")],1),t("a-button",{staticStyle:{"margin-left":"12px"},attrs:{loading:e.testingNotification},on:{click:e.handleTestNotification}},[t("a-icon",{attrs:{type:"experiment"}}),e._v(" "+e._s(e.$t("profile.notifications.testBtn")||"发送测试通知")+" ")],1)],1)],1)],1)]),t("a-tab-pane",{key:"exchange",attrs:{tab:e.$t("profile.exchange.title")||"交易所配置"}},[t("div",{staticClass:"exchange-config-section"},[t("a-alert",{staticStyle:{"margin-bottom":"16px"},attrs:{message:e.$t("profile.exchange.hint"),type:"info",showIcon:""}}),t("div",{staticStyle:{"margin-bottom":"16px","text-align":"right"}},[t("a-button",{attrs:{type:"primary",icon:"plus"},on:{click:e.openAddExchangeModal}},[e._v(" "+e._s(e.$t("profile.exchange.addAccount"))+" ")])],1),t("a-table",{attrs:{columns:e.exchangeColumns,dataSource:e.exchangeCredentials,loading:e.exchangeLoading,rowKey:function(e){return e.id},locale:{emptyText:e.$t("profile.exchange.noAccounts")||"暂无交易所账户,请点击上方按钮添加"},size:"small"},scopedSlots:e._u([{key:"exchange_id",fn:function(a){return[t("span",{staticStyle:{"text-transform":"capitalize","font-weight":"500"}},[e._v(e._s(e.getExchangeDisplayName(a)))])]}},{key:"api_key_hint",fn:function(a,r){return[t("span",{staticClass:"credential-hint"},[e._v(e._s(a||r.name||"-"))])]}},{key:"created_at",fn:function(t){return[e._v(" "+e._s(e.formatTime(t))+" ")]}},{key:"action",fn:function(a,r){return[t("a-popconfirm",{attrs:{title:e.$t("profile.exchange.deleteConfirm"),okText:e.$t("common.confirm"),cancelText:e.$t("common.cancel")},on:{confirm:function(t){return e.handleDeleteCredential(r.id)}}},[t("a-button",{attrs:{type:"danger",size:"small",ghost:"",icon:"delete"}},[e._v(" "+e._s(e.$t("common.delete"))+" ")])],1)]}}])})],1)]),t("a-tab-pane",{key:"referrals",attrs:{tab:e.$t("profile.referral.listTab")||"邀请列表"}},[t("a-table",{attrs:{columns:e.referralColumns,dataSource:e.referralData.list||[],loading:e.referralLoading,pagination:e.referralPagination,rowKey:function(e){return e.id},locale:{emptyText:e.$t("profile.referral.noReferrals")||"暂无邀请记录"},size:"small"},on:{change:e.handleReferralChange},scopedSlots:e._u([{key:"user",fn:function(a,r){return[t("div",{staticClass:"referral-user-cell"},[t("a-avatar",{attrs:{size:32,src:r.avatar||"/avatar2.jpg"}}),t("div",{staticClass:"user-info"},[t("span",{staticClass:"nickname"},[e._v(e._s(r.nickname||r.username))]),t("span",{staticClass:"username"},[e._v("@"+e._s(r.username))])])],1)]}},{key:"created_at",fn:function(t){return[e._v(" "+e._s(e.formatTime(t))+" ")]}}])})],1)],1)],1)],1)],1),t("a-modal",{attrs:{title:e.$t("profile.exchange.addTitle"),visible:e.showAddExchangeModal,"wrap-class-name":e.exchangeModalWrapClass,confirmLoading:e.savingExchange,okText:e.$t("common.save"),cancelText:e.$t("common.cancel"),maskClosable:!1,width:"520px"},on:{ok:e.handleSaveExchange,cancel:function(t){e.showAddExchangeModal=!1}}},[t("a-form",{staticClass:"exchange-account-form",attrs:{form:e.exchangeForm,layout:"vertical"}},[t("a-form-item",{attrs:{label:e.$t("profile.exchange.selectExchange")}},[t("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["exchange_id",{rules:[{required:!0,message:e.$t("profile.exchange.selectExchange")}]}],expression:"['exchange_id', { rules: [{ required: true, message: $t('profile.exchange.selectExchange') }] }]"}],attrs:{placeholder:e.$t("profile.exchange.selectExchange"),"dropdown-class-name":e.isDarkTheme?"profile-exchange-select-dropdown-dark":"","get-popup-container":e.getExchangeSelectPopupContainer},on:{change:e.handleExchangeTypeChange}},[t("a-select-opt-group",{attrs:{label:e.$t("profile.exchange.typeCrypto")}},e._l(e.cryptoExchangeList,function(a){return t("a-select-option",{key:a.id,attrs:{value:a.id}},[e._v(" "+e._s(a.name)+" ")])}),1),t("a-select-opt-group",{attrs:{label:e.$t("profile.exchange.typeIBKR")}},[t("a-select-option",{attrs:{value:"ibkr"}},[e._v("Interactive Brokers (IBKR)")])],1),t("a-select-opt-group",{attrs:{label:e.$t("profile.exchange.typeMT5")}},[t("a-select-option",{attrs:{value:"mt5"}},[e._v("MetaTrader 5")])],1)],1)],1),t("a-form-item",{attrs:{label:e.$t("profile.exchange.accountName")}},[t("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["name"],expression:"['name']"}],attrs:{placeholder:e.$t("profile.exchange.accountNamePlaceholder")}})],1),"crypto"===e.addExchangeType?t("a-form-item",{attrs:{label:e.$t("profile.exchange.whitelistIpLabel")}},[t("div",{staticClass:"egress-ip-block"},[e.egressIpLoading?t("a-spin",{attrs:{size:"small"}}):[t("div",{staticClass:"egress-ip-line"},[t("span",{staticClass:"egress-ip-kind"},[e._v(e._s(e.$t("profile.exchange.whitelistIpv4")))]),t("code",{staticClass:"egress-ip-value"},[e._v(e._s(e.egressServerIpv4||"—"))]),t("a-button",{staticClass:"egress-ip-action",attrs:{type:"link",size:"small",disabled:!e.egressServerIpv4},on:{click:function(t){return e.copyEgressIp("v4")}}},[e._v(" "+e._s(e.$t("profile.exchange.whitelistIpCopy"))+" ")])],1),t("div",{staticClass:"egress-ip-line"},[t("span",{staticClass:"egress-ip-kind"},[e._v(e._s(e.$t("profile.exchange.whitelistIpv6")))]),t("code",{staticClass:"egress-ip-value"},[e._v(e._s(e.egressServerIpv6||"—"))]),t("a-button",{staticClass:"egress-ip-action",attrs:{type:"link",size:"small",disabled:!e.egressServerIpv6},on:{click:function(t){return e.copyEgressIp("v6")}}},[e._v(" "+e._s(e.$t("profile.exchange.whitelistIpCopy"))+" ")])],1),t("div",{staticClass:"egress-ip-row egress-ip-refresh-row"},[t("a-button",{staticClass:"egress-ip-action",attrs:{type:"link",size:"small"},on:{click:e.fetchEgressIp}},[e._v(" "+e._s(e.$t("profile.exchange.whitelistIpRefresh"))+" ")])],1)]],2),t("div",{staticClass:"field-hint egress-ip-hint"},[e._v(e._s(e.$t("profile.exchange.whitelistIpHint")))])]):e._e(),"crypto"===e.addExchangeType?[t("a-form-item",{attrs:{label:e.$t("profile.exchange.apiKey")}},[t("a-input-password",{directives:[{name:"decorator",rawName:"v-decorator",value:["api_key",{rules:[{required:!0,message:"API Key is required"}]}],expression:"['api_key', { rules: [{ required: true, message: 'API Key is required' }] }]"}],attrs:{placeholder:"API Key",autocomplete:"new-password"}})],1),t("a-form-item",{attrs:{label:e.$t("profile.exchange.secretKey")}},[t("a-input-password",{directives:[{name:"decorator",rawName:"v-decorator",value:["secret_key",{rules:[{required:!0,message:"Secret Key is required"}]}],expression:"['secret_key', { rules: [{ required: true, message: 'Secret Key is required' }] }]"}],attrs:{placeholder:"Secret Key",autocomplete:"new-password"}})],1),e.addExchangeNeedsPassphrase?t("a-form-item",{attrs:{label:e.$t("profile.exchange.passphrase")}},[t("a-input-password",{directives:[{name:"decorator",rawName:"v-decorator",value:["passphrase"],expression:"['passphrase']"}],attrs:{placeholder:"Passphrase",autocomplete:"new-password"}})],1):e._e(),e.addExchangeShowDemo?t("a-form-item",[t("a-checkbox",{directives:[{name:"decorator",rawName:"v-decorator",value:["enable_demo_trading",{valuePropName:"checked",initialValue:!1}],expression:"['enable_demo_trading', { valuePropName: 'checked', initialValue: false }]"}],staticClass:"exchange-demo-checkbox"},[t("span",{staticClass:"exchange-demo-checkbox-label"},[e._v(e._s(e.$t("profile.exchange.demoTrading")))])]),t("div",{staticClass:"field-hint exchange-demo-hint"},[e._v(e._s(e.$t("profile.exchange.demoTradingHint")))])],1):e._e()]:e._e(),"ibkr"===e.addExchangeType?[t("a-alert",{staticStyle:{"margin-bottom":"16px"},attrs:{type:"warning",showIcon:"",message:e.$t("profile.exchange.localDeploymentRequired"),description:e.$t("profile.exchange.localDeploymentHint")}}),t("a-form-item",{attrs:{label:e.$t("profile.exchange.ibkrHost")}},[t("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["ibkr_host",{initialValue:"127.0.0.1"}],expression:"['ibkr_host', { initialValue: '127.0.0.1' }]"}],attrs:{placeholder:"127.0.0.1"}})],1),t("a-form-item",{attrs:{label:e.$t("profile.exchange.ibkrPort")}},[t("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["ibkr_port",{initialValue:7497}],expression:"['ibkr_port', { initialValue: 7497 }]"}],staticStyle:{width:"100%"},attrs:{min:1,max:65535}}),t("div",{staticClass:"field-hint"},[t("a-icon",{attrs:{type:"info-circle"}}),t("span",[e._v(e._s(e.$t("profile.exchange.ibkrPortHint")))])],1)],1),t("a-form-item",{attrs:{label:e.$t("profile.exchange.ibkrClientId")}},[t("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["ibkr_client_id",{initialValue:1}],expression:"['ibkr_client_id', { initialValue: 1 }]"}],staticStyle:{width:"100%"},attrs:{min:1,max:999}})],1),t("a-form-item",{attrs:{label:e.$t("profile.exchange.ibkrAccount")}},[t("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["ibkr_account"],expression:"['ibkr_account']"}],attrs:{placeholder:"DU123456"}})],1)]:e._e(),"mt5"===e.addExchangeType?[t("a-alert",{staticStyle:{"margin-bottom":"16px"},attrs:{type:"warning",showIcon:"",message:e.$t("profile.exchange.localDeploymentRequired"),description:e.$t("profile.exchange.localDeploymentHint")}}),t("a-form-item",{attrs:{label:e.$t("profile.exchange.mt5Server")}},[t("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["mt5_server",{rules:[{required:!0,message:"Server is required"}]}],expression:"['mt5_server', { rules: [{ required: true, message: 'Server is required' }] }]"}],attrs:{placeholder:"MetaQuotes-Demo"}})],1),t("a-form-item",{attrs:{label:e.$t("profile.exchange.mt5Login")}},[t("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["mt5_login",{rules:[{required:!0,message:"Login is required"}]}],expression:"['mt5_login', { rules: [{ required: true, message: 'Login is required' }] }]"}],staticStyle:{width:"100%"},attrs:{min:1,placeholder:"12345678"}})],1),t("a-form-item",{attrs:{label:e.$t("profile.exchange.mt5Password")}},[t("a-input-password",{directives:[{name:"decorator",rawName:"v-decorator",value:["mt5_password",{rules:[{required:!0,message:"Password is required"}]}],expression:"['mt5_password', { rules: [{ required: true, message: 'Password is required' }] }]"}],attrs:{placeholder:"Password",autocomplete:"new-password"}})],1),t("a-form-item",{attrs:{label:e.$t("profile.exchange.mt5TerminalPath")}},[t("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["mt5_terminal_path"],expression:"['mt5_terminal_path']"}],attrs:{placeholder:"C:\\Program Files\\MetaTrader 5\\terminal64.exe"}}),t("div",{staticClass:"field-hint"},[t("a-icon",{attrs:{type:"info-circle"}}),t("span",[e._v(e._s(e.$t("profile.exchange.mt5TerminalPathHint")))])],1)],1)]:e._e(),e.addExchangeType?t("a-form-item",[t("a-button",{attrs:{block:"",loading:e.testingExchange},on:{click:e.handleTestExchangeConnection}},[t("a-icon",{attrs:{type:"api"}}),e._v(" "+e._s(e.$t("profile.exchange.testConnection"))+" ")],1),e.exchangeTestResult?t("div",{staticClass:"test-result-msg",class:e.exchangeTestResult.success?"success":"error"},[t("a-icon",{attrs:{type:e.exchangeTestResult.success?"check-circle":"close-circle"}}),e._v(" "+e._s(e.exchangeTestResult.message)+" ")],1):e._e()],1):e._e()],2)],1)],1)},i=[],n=a(76338),s=a(81127),o=a(56252),l=(a(74423),a(84841)),c=a(53003),d=a(42430),u=a(36911),p=a(55434),f={name:"Profile",mixins:[p.t],data:function(){return{loading:!1,saving:!1,changingPassword:!1,sendingPwdCode:!1,pwdCodeCountdown:0,pwdCodeTimer:null,activeTab:"basic",profile:{id:null,username:"",nickname:"",email:"",avatar:"",role:"user",last_login_at:null},creditsLog:[],creditsLogLoading:!1,creditsLogPagination:{current:1,pageSize:10,total:0},referralData:{list:[],total:0,referral_code:"",referral_bonus:0,register_bonus:0},referralLoading:!1,referralPagination:{current:1,pageSize:10,total:0},billing:{credits:0,is_vip:!1,vip_expires_at:null,billing_enabled:!1,feature_costs:{}},rechargeTelegramUrl:"https://t.me/your_support_bot",notificationSettings:{default_channels:["browser"],telegram_bot_token:"",telegram_chat_id:"",email:"",phone:"",discord_webhook:"",webhook_url:"",webhook_token:""},savingNotifications:!1,testingNotification:!1,exchangeCredentials:[],exchangeLoading:!1,showAddExchangeModal:!1,savingExchange:!1,testingExchange:!1,exchangeTestResult:null,addExchangeType:"",selectedExchangeId:"",egressServerIpv4:"",egressServerIpv6:"",egressIpLoading:!1,cryptoExchangeList:[{id:"binance",name:"Binance"},{id:"okx",name:"OKX"},{id:"bitget",name:"Bitget"},{id:"bybit",name:"Bybit"},{id:"coinbaseexchange",name:"Coinbase"},{id:"kraken",name:"Kraken"},{id:"kucoin",name:"KuCoin"},{id:"gate",name:"Gate.io"},{id:"bitfinex",name:"Bitfinex"}]}},computed:{isDarkTheme:function(){return"dark"===this.navTheme||"realdark"===this.navTheme},exchangeModalWrapClass:function(){var e="profile-exchange-modal";return this.isDarkTheme?"".concat(e," ").concat(e,"--dark"):e},isVip:function(){if(!this.billing.vip_expires_at)return!1;var e=new Date(this.billing.vip_expires_at);return e>new Date},creditsLogColumns:function(){return[{title:this.$t("profile.creditsLog.time")||"时间",dataIndex:"created_at",width:160,scopedSlots:{customRender:"created_at"}},{title:this.$t("profile.creditsLog.action")||"类型",dataIndex:"action",width:100,scopedSlots:{customRender:"action"}},{title:this.$t("profile.creditsLog.amount")||"变动",dataIndex:"amount",width:100,scopedSlots:{customRender:"amount"}},{title:this.$t("profile.creditsLog.balance")||"余额",dataIndex:"balance_after",width:100},{title:this.$t("profile.creditsLog.remark")||"备注",dataIndex:"remark",ellipsis:!0}]},referralColumns:function(){return[{title:this.$t("profile.referral.user")||"用户",dataIndex:"username",scopedSlots:{customRender:"user"}},{title:this.$t("profile.referral.registerTime")||"注册时间",dataIndex:"created_at",width:180,scopedSlots:{customRender:"created_at"}}]},referralLink:function(){var e=window.location.origin+window.location.pathname,t=this.referralData.referral_code||this.profile.id;return"".concat(e,"#/user/login?ref=").concat(t)},exchangeColumns:function(){return[{title:this.$t("profile.exchange.colExchange")||"Exchange",dataIndex:"exchange_id",width:140,scopedSlots:{customRender:"exchange_id"}},{title:this.$t("profile.exchange.colName")||"Name",dataIndex:"name",width:140,customRender:function(e){return e||"-"}},{title:this.$t("profile.exchange.colHint")||"Connection Info",dataIndex:"api_key_hint",scopedSlots:{customRender:"api_key_hint"}},{title:this.$t("profile.exchange.colCreatedAt")||"Created At",dataIndex:"created_at",width:180,scopedSlots:{customRender:"created_at"}},{title:this.$t("profile.exchange.colActions")||"Actions",width:120,scopedSlots:{customRender:"action"}}]},addExchangeNeedsPassphrase:function(){var e=["okx","bitget","kucoin"];return e.includes(this.selectedExchangeId)},addExchangeShowDemo:function(){return"crypto"===this.addExchangeType&&!!this.selectedExchangeId}},watch:{showAddExchangeModal:function(e){e&&this.fetchEgressIp()},activeTab:function(e){"credits"===e&&0===this.creditsLog.length&&this.loadCreditsLog(),"referrals"!==e||this.referralData.list&&0!==this.referralData.list.length||this.loadReferrals(),"notifications"!==e||this.notificationSettings.telegram_chat_id||this.notificationSettings.discord_webhook||this.loadNotificationSettings(),"exchange"===e&&0===this.exchangeCredentials.length&&this.loadExchangeCredentials()}},beforeCreate:function(){this.profileForm=this.$form.createForm(this,{name:"profile"}),this.passwordForm=this.$form.createForm(this,{name:"password"}),this.notificationForm=this.$form.createForm(this,{name:"notification"}),this.exchangeForm=this.$form.createForm(this,{name:"exchange"})},mounted:function(){this.loadProfile(),this.loadReferrals()},beforeDestroy:function(){this.pwdCodeTimer&&clearInterval(this.pwdCodeTimer)},methods:{loadProfile:function(){var e=this;return(0,o.A)((0,s.A)().m(function t(){var a;return(0,s.A)().w(function(t){while(1)switch(t.p=t.n){case 0:return e.loading=!0,t.p=1,t.n=2,(0,l.E$)();case 2:a=t.v,1===a.code?(e.profile=a.data,a.data.billing&&(e.billing=a.data.billing),a.data.notification_settings&&(e.notificationSettings={default_channels:a.data.notification_settings.default_channels||["browser"],telegram_bot_token:a.data.notification_settings.telegram_bot_token||"",telegram_chat_id:a.data.notification_settings.telegram_chat_id||"",email:a.data.notification_settings.email||a.data.email||"",phone:a.data.notification_settings.phone||"",discord_webhook:a.data.notification_settings.discord_webhook||"",webhook_url:a.data.notification_settings.webhook_url||"",webhook_token:a.data.notification_settings.webhook_token||""}),e.$nextTick(function(){e.profileForm.setFieldsValue({nickname:e.profile.nickname,email:e.profile.email})})):e.$message.error(a.msg||"Failed to load profile"),t.n=4;break;case 3:t.p=3,t.v,e.$message.error("Failed to load profile");case 4:return t.p=4,e.loading=!1,t.f(4);case 5:return t.a(2)}},t,null,[[1,3,4,5]])}))()},loadRechargeUrl:function(){var e=this;return(0,o.A)((0,s.A)().m(function t(){var a;return(0,s.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if("admin"!==e.profile.role){t.n=4;break}return t.p=1,t.n=2,(0,c.YT)();case 2:a=t.v,1===a.code&&a.data&&a.data.billing&&(e.rechargeTelegramUrl=a.data.billing.RECHARGE_TELEGRAM_URL||e.rechargeTelegramUrl),t.n=4;break;case 3:t.p=3,t.v;case 4:return t.a(2)}},t,null,[[1,3]])}))()},handleRecharge:function(){this.$router.push("/billing")},formatCredits:function(e){return e||0===e?Number(e).toLocaleString("en-US",{minimumFractionDigits:0,maximumFractionDigits:2}):"0"},formatDate:function(e){if(!e)return"";var t=new Date(e);return t.toLocaleDateString()},handleSaveProfile:function(){var e=this;this.profileForm.validateFields(function(){var t=(0,o.A)((0,s.A)().m(function t(a,r){var i;return(0,s.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(!a){t.n=1;break}return t.a(2);case 1:return e.saving=!0,t.p=2,t.n=3,(0,l.r7)(r);case 3:i=t.v,1===i.code?(e.$message.success(i.msg||"Profile updated successfully"),e.loadProfile()):e.$message.error(i.msg||"Update failed"),t.n=5;break;case 4:t.p=4,t.v,e.$message.error("Update failed");case 5:return t.p=5,e.saving=!1,t.f(5);case 6:return t.a(2)}},t,null,[[2,4,5,6]])}));return function(e,a){return t.apply(this,arguments)}}())},validateConfirmPassword:function(e,t,a){var r=this.passwordForm.getFieldValue("new_password");t&&t!==r?a(this.$t("profile.passwordMismatch")||"Passwords do not match"):a()},handleSendPwdCode:function(){var e=this;return(0,o.A)((0,s.A)().m(function t(){var r,i,n,o,l;return(0,s.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(e.profile.email){t.n=1;break}return e.$message.error(e.$t("profile.noEmailWarning")||"Please set your email first"),t.a(2);case 1:return e.sendingPwdCode=!0,t.p=2,t.n=3,a.e(824).then(a.bind(a,95824));case 3:return r=t.v,i=r.sendVerificationCode,t.n=4,i({email:e.profile.email,type:"change_password"});case 4:n=t.v,1===n.code?(e.$message.success(e.$t("profile.codeSent")||"Verification code sent"),e.startPwdCodeCountdown()):e.$message.error(n.msg||"Failed to send code"),t.n=6;break;case 5:t.p=5,l=t.v,e.$message.error((null===(o=l.response)||void 0===o||null===(o=o.data)||void 0===o?void 0:o.msg)||"Failed to send code");case 6:return t.p=6,e.sendingPwdCode=!1,t.f(6);case 7:return t.a(2)}},t,null,[[2,5,6,7]])}))()},startPwdCodeCountdown:function(){var e=this;this.pwdCodeCountdown=60,this.pwdCodeTimer=setInterval(function(){e.pwdCodeCountdown--,e.pwdCodeCountdown<=0&&(clearInterval(e.pwdCodeTimer),e.pwdCodeTimer=null)},1e3)},validateNewPassword:function(e,t,a){t?t.length<8?a(new Error(this.$t("user.register.pwdMinLength")||"At least 8 characters")):/[A-Z]/.test(t)?/[a-z]/.test(t)?/[0-9]/.test(t)?a():a(new Error(this.$t("user.register.pwdNumber")||"At least one number")):a(new Error(this.$t("user.register.pwdLowercase")||"At least one lowercase letter")):a(new Error(this.$t("user.register.pwdUppercase")||"At least one uppercase letter")):a()},handleChangePassword:function(){var e=this;this.passwordForm.validateFields(function(){var t=(0,o.A)((0,s.A)().m(function t(r,i){var n,o,l,c,d;return(0,s.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(!r){t.n=1;break}return t.a(2);case 1:return e.changingPassword=!0,t.p=2,t.n=3,a.e(824).then(a.bind(a,95824));case 3:return n=t.v,o=n.changePassword,t.n=4,o({code:i.code,new_password:i.new_password});case 4:l=t.v,1===l.code?(e.$message.success(l.msg||"Password changed successfully"),e.passwordForm.resetFields()):e.$message.error(l.msg||"Change password failed"),t.n=6;break;case 5:t.p=5,d=t.v,e.$message.error((null===(c=d.response)||void 0===c||null===(c=c.data)||void 0===c?void 0:c.msg)||"Change password failed");case 6:return t.p=6,e.changingPassword=!1,t.f(6);case 7:return t.a(2)}},t,null,[[2,5,6,7]])}));return function(e,a){return t.apply(this,arguments)}}())},getRoleColor:function(e){var t={admin:"red",manager:"orange",user:"blue",viewer:"default"};return t[e]||"default"},getRoleLabel:function(e){var t={admin:this.$t("userManage.roleAdmin")||"Admin",manager:this.$t("userManage.roleManager")||"Manager",user:this.$t("userManage.roleUser")||"User",viewer:this.$t("userManage.roleViewer")||"Viewer"};return t[e]||e},formatTime:function(e){if(!e)return"";var t=new Date("number"===typeof e?1e3*e:e);return t.toLocaleString()},formatCreditsLogTime:function(e){if(!e)return"";if("string"===typeof e){var t=e.trim();if(t.endsWith("Z")&&t.includes("T"))return t.replace("T"," ").replace("Z","")}return this.formatTime(e)},loadCreditsLog:function(){var e=this;return(0,o.A)((0,s.A)().m(function t(){var a;return(0,s.A)().w(function(t){while(1)switch(t.p=t.n){case 0:return e.creditsLogLoading=!0,t.p=1,t.n=2,(0,l.v9)({page:e.creditsLogPagination.current,page_size:e.creditsLogPagination.pageSize});case 2:a=t.v,1===a.code&&(e.creditsLog=a.data.items||[],e.creditsLogPagination.total=a.data.total||0),t.n=4;break;case 3:t.p=3,t.v,e.$message.error("Failed to load credits log");case 4:return t.p=4,e.creditsLogLoading=!1,t.f(4);case 5:return t.a(2)}},t,null,[[1,3,4,5]])}))()},handleCreditsLogChange:function(e){this.creditsLogPagination.current=e.current,this.loadCreditsLog()},loadReferrals:function(){var e=this;return(0,o.A)((0,s.A)().m(function t(){var a;return(0,s.A)().w(function(t){while(1)switch(t.p=t.n){case 0:return e.referralLoading=!0,t.p=1,t.n=2,(0,l.rx)({page:e.referralPagination.current,page_size:e.referralPagination.pageSize});case 2:a=t.v,1===a.code&&(e.referralData={list:a.data.list||[],total:a.data.total||0,referral_code:a.data.referral_code||"",referral_bonus:a.data.referral_bonus||0,register_bonus:a.data.register_bonus||0},e.referralPagination.total=a.data.total||0),t.n=4;break;case 3:t.p=3,t.v,e.$message.error("Failed to load referral data");case 4:return t.p=4,e.referralLoading=!1,t.f(4);case 5:return t.a(2)}},t,null,[[1,3,4,5]])}))()},handleReferralChange:function(e){this.referralPagination.current=e.current,this.loadReferrals()},copyReferralLink:function(){var e=this,t=this.referralLink;navigator.clipboard?navigator.clipboard.writeText(t).then(function(){e.$message.success(e.$t("profile.referral.linkCopied")||"邀请链接已复制")}).catch(function(){e.fallbackCopy(t)}):this.fallbackCopy(t)},fallbackCopy:function(e){var t=document.createElement("textarea");t.value=e,document.body.appendChild(t),t.select();try{document.execCommand("copy"),this.$message.success(this.$t("profile.referral.linkCopied")||"邀请链接已复制")}catch(a){this.$message.error("Copy failed")}document.body.removeChild(t)},getActionColor:function(e){var t={consume:"red",recharge:"green",admin_adjust:"blue",refund:"orange",vip_grant:"gold",vip_revoke:"default",register_bonus:"cyan",referral_bonus:"purple",indicator_purchase:"volcano",indicator_sale:"lime"};return t[e]||"default"},getActionLabel:function(e){var t={consume:this.$t("profile.creditsLog.actionConsume")||"消费",recharge:this.$t("profile.creditsLog.actionRecharge")||"充值",admin_adjust:this.$t("profile.creditsLog.actionAdjust")||"调整",refund:this.$t("profile.creditsLog.actionRefund")||"退款",vip_grant:this.$t("profile.creditsLog.actionVipGrant")||"VIP授予",vip_revoke:this.$t("profile.creditsLog.actionVipRevoke")||"VIP取消",register_bonus:this.$t("profile.creditsLog.actionRegisterBonus")||"注册奖励",referral_bonus:this.$t("profile.creditsLog.actionReferralBonus")||"邀请奖励",indicator_purchase:this.$t("profile.creditsLog.actionIndicatorPurchase")||"购买指标",indicator_sale:this.$t("profile.creditsLog.actionIndicatorSale")||"出售指标"};return t[e]||e},loadExchangeCredentials:function(){var e=this;return(0,o.A)((0,s.A)().m(function t(){var a;return(0,s.A)().w(function(t){while(1)switch(t.p=t.n){case 0:return e.exchangeLoading=!0,t.p=1,t.n=2,(0,d.IA)();case 2:a=t.v,1===a.code&&a.data&&(e.exchangeCredentials=a.data.items||[]),t.n=4;break;case 3:t.p=3,t.v,e.$message.error("Failed to load exchange accounts");case 4:return t.p=4,e.exchangeLoading=!1,t.f(4);case 5:return t.a(2)}},t,null,[[1,3,4,5]])}))()},getExchangeSelectPopupContainer:function(){return document.body},openAddExchangeModal:function(){this.showAddExchangeModal=!0},fetchEgressIp:function(){var e=this;return(0,o.A)((0,s.A)().m(function t(){var a,r,i,n;return(0,s.A)().w(function(t){while(1)switch(t.p=t.n){case 0:return e.egressIpLoading=!0,e.egressServerIpv4="",e.egressServerIpv6="",t.p=1,t.n=2,(0,d.N6)();case 2:a=t.v,1===a.code&&a.data&&(r=null!=a.data.ipv4?String(a.data.ipv4).trim():"",i=null!=a.data.ipv6?String(a.data.ipv6).trim():"",e.egressServerIpv4=r,e.egressServerIpv6=i,r||i||!a.data.ip||(n=String(a.data.ip).trim(),n.includes(":")?e.egressServerIpv6=n:e.egressServerIpv4=n)),t.n=4;break;case 3:t.p=3,t.v,e.egressServerIpv4="",e.egressServerIpv6="";case 4:return t.p=4,e.egressIpLoading=!1,t.f(4);case 5:return t.a(2)}},t,null,[[1,3,4,5]])}))()},copyEgressIp:function(e){var t=this,a="v6"===e?this.egressServerIpv6:this.egressServerIpv4;if(a){var r=function(){return t.$message.success(t.$t("profile.exchange.whitelistIpCopied"))};navigator.clipboard&&navigator.clipboard.writeText?navigator.clipboard.writeText(a).then(r).catch(function(){return t._fallbackCopyText(a,r)}):this._fallbackCopyText(a,r)}},_fallbackCopyText:function(e,t){try{var a=document.createElement("textarea");a.value=e,a.style.position="fixed",a.style.left="-9999px",document.body.appendChild(a),a.select(),document.execCommand("copy"),document.body.removeChild(a),t&&t()}catch(r){this.$message.error(this.$t("profile.exchange.whitelistIpCopyFail"))}},handleExchangeTypeChange:function(e){this.selectedExchangeId=e,this.exchangeTestResult=null;var t=this.cryptoExchangeList.map(function(e){return e.id});t.includes(e)?this.addExchangeType="crypto":this.addExchangeType="ibkr"===e?"ibkr":"mt5"===e?"mt5":""},getExchangeDisplayName:function(e){var t={binance:"Binance",okx:"OKX",bitget:"Bitget",bybit:"Bybit",coinbaseexchange:"Coinbase",kraken:"Kraken",kucoin:"KuCoin",gate:"Gate.io",bitfinex:"Bitfinex",ibkr:"IBKR",mt5:"MetaTrader 5"};return t[e]||e},handleSaveExchange:function(){var e=this;this.exchangeForm.validateFields(function(){var t=(0,o.A)((0,s.A)().m(function t(a,r){var i,o,l;return(0,s.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(!a){t.n=1;break}return t.a(2);case 1:return e.savingExchange=!0,t.p=2,i=(0,n.A)({},r),t.n=3,(0,d.PR)(i);case 3:o=t.v,1===o.code?(e.$message.success(e.$t("profile.exchange.saveSuccess")),e.showAddExchangeModal=!1,e.exchangeForm.resetFields(),e.addExchangeType="",e.selectedExchangeId="",e.exchangeTestResult=null,e.loadExchangeCredentials()):e.$message.error(o.msg||e.$t("profile.exchange.saveFailed")),t.n=5;break;case 4:t.p=4,l=t.v,e.$message.error(l.message||e.$t("profile.exchange.saveFailed"));case 5:return t.p=5,e.savingExchange=!1,t.f(5);case 6:return t.a(2)}},t,null,[[2,4,5,6]])}));return function(e,a){return t.apply(this,arguments)}}())},handleDeleteCredential:function(e){var t=this;return(0,o.A)((0,s.A)().m(function a(){var r;return(0,s.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return a.p=0,a.n=1,(0,d.kI)(e);case 1:r=a.v,1===r.code?(t.$message.success(t.$t("profile.exchange.deleteSuccess")),t.loadExchangeCredentials()):t.$message.error(r.msg||"Delete failed"),a.n=3;break;case 2:a.p=2,a.v,t.$message.error("Delete failed");case 3:return a.a(2)}},a,null,[[0,2]])}))()},handleTestExchangeConnection:function(){var e=this;return(0,o.A)((0,s.A)().m(function t(){var a,r,i,o,l;return(0,s.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(a=e.exchangeForm.getFieldsValue(),r=a.exchange_id,r){t.n=1;break}return t.a(2);case 1:return e.testingExchange=!0,e.exchangeTestResult=null,t.p=2,i=(0,n.A)({},a),t.n=3,(0,u.kv)(i);case 3:o=t.v,1===o.code?e.exchangeTestResult={success:!0,message:e.$t("profile.exchange.testSuccess")}:e.exchangeTestResult={success:!1,message:"".concat(e.$t("profile.exchange.testFailed"),": ").concat(o.msg||"Unknown error")},t.n=5;break;case 4:t.p=4,l=t.v,e.exchangeTestResult={success:!1,message:"".concat(e.$t("profile.exchange.testFailed"),": ").concat(l.message||"Network error")};case 5:return t.p=5,e.testingExchange=!1,t.f(5);case 6:return t.a(2)}},t,null,[[2,4,5,6]])}))()},loadNotificationSettings:function(){var e=this;return(0,o.A)((0,s.A)().m(function t(){var a;return(0,s.A)().w(function(t){while(1)switch(t.p=t.n){case 0:return t.p=0,t.n=1,(0,l.vF)();case 1:a=t.v,1===a.code&&a.data&&(e.notificationSettings={default_channels:a.data.default_channels||["browser"],telegram_bot_token:a.data.telegram_bot_token||"",telegram_chat_id:a.data.telegram_chat_id||"",email:a.data.email||e.profile.email||"",phone:a.data.phone||"",discord_webhook:a.data.discord_webhook||"",webhook_url:a.data.webhook_url||"",webhook_token:a.data.webhook_token||""},e.$nextTick(function(){e.notificationForm.setFieldsValue({default_channels:e.notificationSettings.default_channels,telegram_bot_token:e.notificationSettings.telegram_bot_token,telegram_chat_id:e.notificationSettings.telegram_chat_id,email:e.notificationSettings.email,phone:e.notificationSettings.phone,discord_webhook:e.notificationSettings.discord_webhook,webhook_url:e.notificationSettings.webhook_url,webhook_token:e.notificationSettings.webhook_token})})),t.n=3;break;case 2:t.p=2,t.v;case 3:return t.a(2)}},t,null,[[0,2]])}))()},_mapNotifyTestError:function(e,t){var a=(t||"").trim();if("email"===e){if("missing_SMTP_HOST"===a)return this.$t("profile.notifications.errSmtpHost")||"email:服务器未配置发信 SMTP(管理员在「系统设置 → 邮件」或环境变量 SMTP_HOST/SMTP_USER 等)";if("missing_SMTP_FROM"===a)return this.$t("profile.notifications.errSmtpFrom")||"email:未配置发件人 SMTP_FROM(或 SMTP_USER)";if("missing_email_target"===a)return this.$t("profile.notifications.errEmailTarget")||"email:未填写通知邮箱且账号无邮箱"}return a?"".concat(e,": ").concat(a):""},handleSaveNotifications:function(){var e=this;this.notificationForm.validateFields(function(){var t=(0,o.A)((0,s.A)().m(function t(a,r){var i;return(0,s.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(!a){t.n=1;break}return t.a(2);case 1:return e.savingNotifications=!0,t.p=2,t.n=3,(0,l.Gl)({default_channels:r.default_channels||["browser"],telegram_bot_token:r.telegram_bot_token||"",telegram_chat_id:r.telegram_chat_id||"",email:r.email||"",phone:r.phone||"",discord_webhook:r.discord_webhook||"",webhook_url:r.webhook_url||"",webhook_token:r.webhook_token||""});case 3:i=t.v,1===i.code?(e.$message.success(e.$t("profile.notifications.saveSuccess")||"通知设置保存成功"),e.notificationSettings=i.data||e.notificationSettings):e.$message.error(i.msg||"保存失败"),t.n=5;break;case 4:t.p=4,t.v,e.$message.error("保存失败");case 5:return t.p=5,e.savingNotifications=!1,t.f(5);case 6:return t.a(2)}},t,null,[[2,4,5,6]])}));return function(e,a){return t.apply(this,arguments)}}())},handleTestNotification:function(){var e=this;return(0,o.A)((0,s.A)().m(function t(){var a,r,i,n,o,c,d;return(0,s.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(a=e.notificationForm.getFieldsValue(),r=a.default_channels||[],0!==r.length){t.n=1;break}return e.$message.warning(e.$t("profile.notifications.selectChannel")||"请至少选择一个通知渠道"),t.a(2);case 1:if(!r.includes("telegram")){t.n=3;break}if(a.telegram_bot_token){t.n=2;break}return e.$message.warning(e.$t("profile.notifications.fillTelegramToken")||"请填写 Telegram Bot Token"),t.a(2);case 2:if(a.telegram_chat_id){t.n=3;break}return e.$message.warning(e.$t("profile.notifications.fillTelegram")||"请填写 Telegram Chat ID"),t.a(2);case 3:if(!r.includes("email")||a.email){t.n=4;break}return e.$message.warning(e.$t("profile.notifications.fillEmail")||"请填写通知邮箱"),t.a(2);case 4:if(!r.includes("phone")||a.phone){t.n=5;break}return e.$message.warning(e.$t("profile.notifications.fillPhone")||"请填写手机号"),t.a(2);case 5:if(!r.includes("discord")||a.discord_webhook){t.n=6;break}return e.$message.warning(e.$t("profile.notifications.fillDiscord")||"请填写 Discord Webhook URL"),t.a(2);case 6:if(!r.includes("webhook")||a.webhook_url){t.n=7;break}return e.$message.warning(e.$t("profile.notifications.fillWebhook")||"请填写 Webhook URL"),t.a(2);case 7:return e.testingNotification=!0,t.p=8,t.n=9,(0,l.Gl)({default_channels:r,telegram_bot_token:a.telegram_bot_token||"",telegram_chat_id:a.telegram_chat_id||"",email:a.email||"",phone:a.phone||"",discord_webhook:a.discord_webhook||"",webhook_url:a.webhook_url||"",webhook_token:a.webhook_token||""});case 9:if(i=t.v,1===i.code){t.n=10;break}return e.$message.error(i.msg||"保存设置失败"),t.a(2);case 10:return t.n=11,(0,l.hl)();case 11:if(n=t.v,1===n.code){t.n=12;break}return e.$message.error(n.msg||e.$t("profile.notifications.testFailed")||"测试通知发送失败"),t.a(2);case 12:o=n.data&&n.data.results||{},c=Object.keys(o).filter(function(e){return!o[e].ok}),0===c.length?e.$message.success(e.$t("profile.notifications.testSent")||"测试通知已发送,请检查各渠道"):(d=c.map(function(t){var a=o[t]&&o[t].error||"",r=e._mapNotifyTestError(t,a);return r||(a?"".concat(t,": ").concat(a):t)}).join(";"),e.$message.warning((e.$t("profile.notifications.testPartial")||"部分渠道发送失败")+" — ".concat(d),8)),t.n=14;break;case 13:t.p=13,t.v,e.$message.error(e.$t("profile.notifications.testFailed")||"发送测试通知失败");case 14:return t.p=14,e.testingNotification=!1,t.f(14);case 15:return t.a(2)}},t,null,[[8,13,14,15]])}))()}}},g=f,m=a(845),h=(0,m.A)(g,r,i,!1,null,"4224bd2a",null),v=h.exports},42430:function(e,t,a){a.d(t,{IA:function(){return s},N6:function(){return c},PR:function(){return o},kI:function(){return l}});var r=a(76338),i=a(75769),n={list:"/api/credentials/list",get:"/api/credentials/get",create:"/api/credentials/create",delete:"/api/credentials/delete",egressIp:"/api/credentials/egress-ip"};function s(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,i.Ay)({url:n.list,method:"get",params:e})}function o(e){return(0,i.Ay)({url:n.create,method:"post",data:e})}function l(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return(0,i.Ay)({url:n.delete,method:"delete",params:(0,r.A)({id:e},t)})}function c(){return(0,i.Ay)({url:n.egressIp,method:"get"})}},53003:function(e,t,a){a.d(t,{DZ:function(){return s},YT:function(){return n},_d:function(){return o},lo:function(){return i}});var r=a(75769);function i(){return(0,r.Ay)({url:"/api/settings/schema",method:"get"})}function n(){return(0,r.Ay)({url:"/api/settings/values",method:"get"})}function s(e){return(0,r.Ay)({url:"/api/settings/save",method:"post",data:e})}function o(){return(0,r.Ay)({url:"/api/settings/openrouter-balance",method:"get"})}},84841:function(e,t,a){a.d(t,{DK:function(){return w},E$:function(){return d},Gl:function(){return f},O0:function(){return c},TK:function(){return s},aU:function(){return i},cw:function(){return l},d$:function(){return k},hG:function(){return o},hl:function(){return g},kg:function(){return n},nY:function(){return _},r7:function(){return u},rx:function(){return h},v9:function(){return m},vF:function(){return p},vi:function(){return b},wq:function(){return v}});var r=a(75769);function i(e){return(0,r.Ay)({url:"/api/users/list",method:"get",params:e})}function n(e){return(0,r.Ay)({url:"/api/users/create",method:"post",data:e})}function s(e,t){return(0,r.Ay)({url:"/api/users/update",method:"put",params:{id:e},data:t})}function o(e){return(0,r.Ay)({url:"/api/users/delete",method:"delete",params:{id:e}})}function l(e){return(0,r.Ay)({url:"/api/users/reset-password",method:"post",data:e})}function c(){return(0,r.Ay)({url:"/api/users/roles",method:"get"})}function d(){return(0,r.Ay)({url:"/api/users/profile",method:"get"})}function u(e){return(0,r.Ay)({url:"/api/users/profile/update",method:"put",data:e})}function p(){return(0,r.Ay)({url:"/api/users/notification-settings",method:"get"})}function f(e){return(0,r.Ay)({url:"/api/users/notification-settings",method:"put",data:e})}function g(){return(0,r.Ay)({url:"/api/users/notification-settings/test",method:"post",data:{}})}function m(e){return(0,r.Ay)({url:"/api/users/my-credits-log",method:"get",params:e})}function h(e){return(0,r.Ay)({url:"/api/users/my-referrals",method:"get",params:e})}function v(e){return(0,r.Ay)({url:"/api/users/set-credits",method:"post",data:e})}function _(e){return(0,r.Ay)({url:"/api/users/set-vip",method:"post",data:e})}function w(e){return(0,r.Ay)({url:"/api/users/system-strategies",method:"get",params:e})}function b(e){return(0,r.Ay)({url:"/api/users/admin-orders",method:"get",params:e})}function k(e){return(0,r.Ay)({url:"/api/users/admin-ai-stats",method:"get",params:e})}}}]); \ No newline at end of file diff --git a/frontend/dist/js/472-legacy.378c6ee4.js b/frontend/dist/js/472-legacy.378c6ee4.js deleted file mode 100644 index 9ccb146..0000000 --- a/frontend/dist/js/472-legacy.378c6ee4.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self["webpackChunkvue_antd_pro"]=self["webpackChunkvue_antd_pro"]||[]).push([[472],{39472:function(t,e,a){a.r(e),a.d(e,{default:function(){return v}});var s=function(){var t=this,e=t._self._c;return e("div",{staticClass:"user-manage-page",class:{"theme-dark":t.isDarkTheme}},[e("div",{staticClass:"page-header"},[e("h2",{staticClass:"page-title"},[e("a-icon",{attrs:{type:"team"}}),e("span",[t._v(t._s(t.$t("userManage.title")||"User Management"))])],1),e("p",{staticClass:"page-desc"},[t._v(t._s(t.$t("userManage.description")||"Manage system users, roles and permissions"))])]),e("a-tabs",{staticClass:"manage-tabs",on:{change:t.handleTabChange},model:{value:t.activeTab,callback:function(e){t.activeTab=e},expression:"activeTab"}},[e("a-tab-pane",{key:"users",attrs:{tab:t.$t("userManage.tabUsers")||"User Management"}},[e("div",{staticClass:"toolbar"},[e("div",{staticClass:"toolbar-left"},[e("a-button",{attrs:{type:"primary"},on:{click:t.showCreateModal}},[e("a-icon",{attrs:{type:"user-add"}}),t._v(" "+t._s(t.$t("userManage.createUser")||"Create User")+" ")],1),e("a-button",{on:{click:t.loadUsers}},[e("a-icon",{attrs:{type:"reload"}}),t._v(" "+t._s(t.$t("common.refresh")||"Refresh")+" ")],1)],1),e("div",{staticClass:"toolbar-right"},[e("a-input-search",{staticStyle:{width:"280px"},attrs:{placeholder:t.$t("userManage.searchPlaceholder")||"Search by username/email",allowClear:""},on:{search:t.handleSearch,pressEnter:t.handleSearch},model:{value:t.searchKeyword,callback:function(e){t.searchKeyword=e},expression:"searchKeyword"}})],1)]),e("a-card",{staticClass:"user-table-card",attrs:{bordered:!1}},[e("a-table",{attrs:{columns:t.columns,dataSource:t.users,loading:t.loading,pagination:t.pagination,rowKey:function(t){return t.id}},on:{change:t.handleTableChange},scopedSlots:t._u([{key:"status",fn:function(a){return[e("a-tag",{attrs:{color:"active"===a?"green":"red"}},[t._v(" "+t._s("active"===a?t.$t("userManage.active")||"Active":t.$t("userManage.disabled")||"Disabled")+" ")])]}},{key:"role",fn:function(a){return[e("a-tag",{attrs:{color:t.getRoleColor(a)}},[t._v(" "+t._s(t.getRoleLabel(a))+" ")])]}},{key:"last_login_at",fn:function(a){return[a?e("span",[t._v(t._s(t.formatTime(a)))]):e("span",{staticClass:"text-muted"},[t._v(t._s(t.$t("userManage.neverLogin")||"Never"))])]}},{key:"credits",fn:function(a){return[e("span",{staticClass:"credits-value"},[t._v(t._s(t.formatCredits(a)))])]}},{key:"vip_expires_at",fn:function(a){return[a&&t.isVipActive(a)?[e("a-tag",{attrs:{color:"gold"}},[e("a-icon",{attrs:{type:"crown"}}),t._v(" "+t._s(t.formatDate(a))+" ")],1)]:e("span",{staticClass:"text-muted"},[t._v("-")])]}},{key:"action",fn:function(a,s){return[e("a-space",[e("a-tooltip",{attrs:{title:t.$t("common.edit")||"Edit"}},[e("a-button",{attrs:{type:"link",size:"small"},on:{click:function(e){return t.showEditModal(s)}}},[e("a-icon",{attrs:{type:"edit"}})],1)],1),e("a-tooltip",{attrs:{title:t.$t("userManage.adjustCredits")||"Adjust Credits"}},[e("a-button",{attrs:{type:"link",size:"small"},on:{click:function(e){return t.showCreditsModal(s)}}},[e("a-icon",{staticStyle:{color:"#722ed1"},attrs:{type:"wallet"}})],1)],1),e("a-tooltip",{attrs:{title:t.$t("userManage.setVip")||"Set VIP"}},[e("a-button",{attrs:{type:"link",size:"small"},on:{click:function(e){return t.showVipModal(s)}}},[e("a-icon",{staticStyle:{color:"#faad14"},attrs:{type:"crown"}})],1)],1),e("a-tooltip",{attrs:{title:t.$t("userManage.resetPassword")||"Reset Password"}},[e("a-button",{attrs:{type:"link",size:"small"},on:{click:function(e){return t.showResetPasswordModal(s)}}},[e("a-icon",{attrs:{type:"key"}})],1)],1),e("a-tooltip",{attrs:{title:t.$t("common.delete")||"Delete"}},[e("a-popconfirm",{attrs:{title:t.$t("userManage.confirmDelete")||"Are you sure to delete this user?"},on:{confirm:function(e){return t.handleDelete(s.id)}}},[e("a-button",{attrs:{type:"link",size:"small",disabled:s.id===t.currentUserId}},[e("a-icon",{staticStyle:{color:"#ff4d4f"},attrs:{type:"delete"}})],1)],1)],1)],1)]}}])})],1)],1),e("a-tab-pane",{key:"strategies",attrs:{tab:t.$t("systemOverview.tabTitle")||"System Overview"}},[t.strategySummary?e("div",{staticClass:"summary-cards"},[e("div",{staticClass:"summary-card"},[e("div",{staticClass:"summary-icon",staticStyle:{background:"linear-gradient(135deg, #667eea, #764ba2)"}},[e("a-icon",{attrs:{type:"fund"}})],1),e("div",{staticClass:"summary-info"},[e("div",{staticClass:"summary-value"},[t._v(t._s(t.strategySummary.total_strategies||0))]),e("div",{staticClass:"summary-label"},[t._v(t._s(t.$t("systemOverview.totalStrategies")||"Total Strategies"))])])]),e("div",{staticClass:"summary-card"},[e("div",{staticClass:"summary-icon",staticStyle:{background:"linear-gradient(135deg, #11998e, #38ef7d)"}},[e("a-icon",{attrs:{type:"play-circle"}})],1),e("div",{staticClass:"summary-info"},[e("div",{staticClass:"summary-value"},[t._v(t._s(t.strategySummary.running_strategies||0))]),e("div",{staticClass:"summary-sub"},[t._v(" "+t._s(t.$t("systemOverview.live")||"实盘")+": "+t._s(t.strategySummary.running_live_strategies||0)+" / "+t._s(t.$t("systemOverview.signal")||"仅通知")+": "+t._s(t.strategySummary.running_signal_strategies||0)+" ")]),e("div",{staticClass:"summary-label"},[t._v(t._s(t.$t("systemOverview.runningStrategies")||"Running"))])])]),e("div",{staticClass:"summary-card"},[e("div",{staticClass:"summary-icon",staticStyle:{background:"linear-gradient(135deg, #f093fb, #f5576c)"}},[e("a-icon",{attrs:{type:"dollar"}})],1),e("div",{staticClass:"summary-info"},[e("div",{staticClass:"summary-value"},[t._v(t._s(t.formatNumber(t.strategySummary.total_capital)))]),e("div",{staticClass:"summary-sub"},[t._v(" "+t._s(t.$t("systemOverview.live")||"实盘")+": "+t._s(t.formatNumber(t.strategySummary.live_capital))+" / "+t._s(t.$t("systemOverview.signal")||"仅通知")+": "+t._s(t.formatNumber(t.strategySummary.signal_capital))+" ")]),e("div",{staticClass:"summary-label"},[t._v(t._s(t.$t("systemOverview.totalCapital")||"Total Capital"))])])]),e("div",{staticClass:"summary-card"},[e("div",{staticClass:"summary-icon",style:{background:(t.strategySummary.total_pnl||0)>=0?"linear-gradient(135deg, #11998e, #38ef7d)":"linear-gradient(135deg, #ff416c, #ff4b2b)"}},[e("a-icon",{attrs:{type:"rise"}})],1),e("div",{staticClass:"summary-info"},[e("div",{staticClass:"summary-value",class:(t.strategySummary.total_pnl||0)>=0?"text-profit":"text-loss"},[t._v(" "+t._s(t.formatPnl(t.strategySummary.total_pnl))+" "),e("span",{staticClass:"roi-badge"},[t._v(t._s(t.strategySummary.total_roi||0)+"%")])]),e("div",{staticClass:"summary-sub"},[t._v(" "+t._s(t.$t("systemOverview.live")||"实盘")+": "+t._s(t.formatPnl(t.strategySummary.live_pnl))+" / "+t._s(t.$t("systemOverview.signal")||"仅通知")+": "+t._s(t.formatPnl(t.strategySummary.signal_pnl))+" ")]),e("div",{staticClass:"summary-label"},[t._v(t._s(t.$t("systemOverview.totalPnl")||"Total PnL"))])])])]):t._e(),e("div",{staticClass:"toolbar"},[e("div",{staticClass:"toolbar-left"},[e("a-button",{on:{click:t.loadSystemStrategies}},[e("a-icon",{attrs:{type:"reload"}}),t._v(" "+t._s(t.$t("common.refresh")||"Refresh")+" ")],1),e("a-select",{staticStyle:{width:"140px"},on:{change:t.handleStrategyFilterChange},model:{value:t.strategyStatusFilter,callback:function(e){t.strategyStatusFilter=e},expression:"strategyStatusFilter"}},[e("a-select-option",{attrs:{value:"all"}},[t._v(t._s(t.$t("systemOverview.filterAll")||"All Status"))]),e("a-select-option",{attrs:{value:"running"}},[t._v(t._s(t.$t("systemOverview.filterRunning")||"Running"))]),e("a-select-option",{attrs:{value:"stopped"}},[t._v(t._s(t.$t("systemOverview.filterStopped")||"Stopped"))])],1)],1),e("div",{staticClass:"toolbar-right"},[e("a-input-search",{staticStyle:{width:"280px"},attrs:{placeholder:t.$t("systemOverview.searchPlaceholder")||"Search strategy/symbol/user",allowClear:""},on:{search:t.handleStrategySearch,pressEnter:t.handleStrategySearch},model:{value:t.strategySearchKeyword,callback:function(e){t.strategySearchKeyword=e},expression:"strategySearchKeyword"}})],1)]),e("a-card",{staticClass:"user-table-card",attrs:{bordered:!1}},[e("a-table",{attrs:{columns:t.strategyColumns,dataSource:t.systemStrategies,loading:t.strategyLoading,pagination:t.strategyPagination,rowKey:function(t){return t.id},scroll:{x:1600}},on:{change:t.handleStrategyTableChange},scopedSlots:t._u([{key:"strategyStatus",fn:function(a){return[e("span",{staticClass:"status-cell"},[e("span",{staticClass:"status-dot",class:"running"===a?"dot-running":"dot-stopped"}),e("span",{class:"running"===a?"status-running":"status-stopped"},[t._v(" "+t._s("running"===a?t.$t("systemOverview.running")||"Running":t.$t("systemOverview.stopped")||"Stopped")+" ")])])]}},{key:"userInfo",fn:function(a,s){return[e("a-tooltip",{attrs:{title:s.nickname||s.username||"-"}},[e("span",{staticClass:"user-cell"},[e("a-avatar",{style:{backgroundColor:t.getUserColor(s.user_id),fontSize:"11px",marginRight:"6px"},attrs:{size:"small"}},[t._v(" "+t._s((s.nickname||s.username||"?").charAt(0).toUpperCase())+" ")]),e("span",{staticClass:"user-name"},[t._v(t._s(t.truncate(s.nickname||s.username||"-",8)))])],1)])]}},{key:"symbolInfo",fn:function(a,s){return[e("div",[e("span",{staticClass:"symbol-text"},[t._v(t._s(s.symbol||"-"))]),"cross_sectional"===s.cs_strategy_type?e("a-tag",{staticStyle:{"margin-left":"4px"},attrs:{color:"purple",size:"small"}},[t._v("CS")]):t._e()],1),"cross_sectional"===s.cs_strategy_type&&s.symbol_list&&s.symbol_list.length?e("div",{staticClass:"symbol-count text-muted"},[t._v(" "+t._s(s.symbol_list.length)+" "+t._s(t.$t("systemOverview.symbols")||"symbols")+" ")]):t._e()]}},{key:"capitalInfo",fn:function(a){return[e("span",[t._v(t._s(t.formatNumber(a)))])]}},{key:"pnlInfo",fn:function(a,s){return[e("div",{class:s.total_pnl>=0?"text-profit":"text-loss"},[e("span",{staticClass:"pnl-value"},[t._v(t._s(t.formatPnl(s.total_pnl)))]),e("span",{staticClass:"roi-text"},[t._v("("+t._s(s.roi>=0?"+":"")+t._s(s.roi)+"%)")])]),e("div",{staticClass:"pnl-detail text-muted"},[e("span",[t._v(t._s(t.$t("systemOverview.realized")||"Real")+": "+t._s(t.formatPnl(s.total_realized_pnl)))]),e("span",{staticStyle:{"margin-left":"8px"}},[t._v(t._s(t.$t("systemOverview.unrealized")||"Unreal")+": "+t._s(t.formatPnl(s.total_unrealized_pnl)))])])]}},{key:"positionInfo",fn:function(t,a){return[e("a-badge",{attrs:{count:a.position_count,numberStyle:{backgroundColor:a.position_count>0?"#52c41a":"#d9d9d9"}}})]}},{key:"tradeInfo",fn:function(a){return[e("span",[t._v(t._s(a||0))])]}},{key:"indicatorInfo",fn:function(a){return[a?e("a-tooltip",{attrs:{title:a}},[e("span",{staticClass:"indicator-name"},[t._v(t._s(t.truncate(a,16)))])]):e("span",{staticClass:"text-muted"},[t._v("-")])]}},{key:"exchangeInfo",fn:function(a){return[a?e("span",{staticClass:"exchange-name"},[t._v(t._s(a))]):e("span",{staticClass:"text-muted"},[t._v("-")])]}},{key:"timeframeInfo",fn:function(a){return[a?e("a-tag",{attrs:{size:"small"}},[t._v(t._s(a))]):e("span",{staticClass:"text-muted"},[t._v("-")])]}},{key:"leverageInfo",fn:function(a){return[a>1?e("span",{staticStyle:{color:"#fa8c16","font-weight":"600"}},[t._v(t._s(a)+"x")]):e("span",[t._v(t._s(a||1)+"x")])]}},{key:"createdAtInfo",fn:function(a){return[a?e("span",[t._v(t._s(t.formatTime(a)))]):e("span",{staticClass:"text-muted"},[t._v("-")])]}}])})],1)],1),e("a-tab-pane",{key:"orders",attrs:{tab:t.$t("adminOrders.tabTitle")||"Order List"}},[t.orderSummary?e("div",{staticClass:"summary-cards"},[e("div",{staticClass:"summary-card"},[e("div",{staticClass:"summary-icon",staticStyle:{background:"linear-gradient(135deg, #667eea, #764ba2)"}},[e("a-icon",{attrs:{type:"file-text"}})],1),e("div",{staticClass:"summary-info"},[e("div",{staticClass:"summary-value"},[t._v(t._s(t.orderSummary.total_orders||0))]),e("div",{staticClass:"summary-label"},[t._v(t._s(t.$t("adminOrders.totalOrders")||"Total Orders"))])])]),e("div",{staticClass:"summary-card"},[e("div",{staticClass:"summary-icon",staticStyle:{background:"linear-gradient(135deg, #11998e, #38ef7d)"}},[e("a-icon",{attrs:{type:"check-circle"}})],1),e("div",{staticClass:"summary-info"},[e("div",{staticClass:"summary-value"},[t._v(t._s(t.orderSummary.paid_orders||0))]),e("div",{staticClass:"summary-label"},[t._v(t._s(t.$t("adminOrders.paidOrders")||"Paid"))])])]),e("div",{staticClass:"summary-card"},[e("div",{staticClass:"summary-icon",staticStyle:{background:"linear-gradient(135deg, #f093fb, #f5576c)"}},[e("a-icon",{attrs:{type:"clock-circle"}})],1),e("div",{staticClass:"summary-info"},[e("div",{staticClass:"summary-value"},[t._v(t._s(t.orderSummary.pending_orders||0))]),e("div",{staticClass:"summary-label"},[t._v(t._s(t.$t("adminOrders.pendingOrders")||"Pending"))])])]),e("div",{staticClass:"summary-card"},[e("div",{staticClass:"summary-icon",staticStyle:{background:"linear-gradient(135deg, #fa709a, #fee140)"}},[e("a-icon",{attrs:{type:"dollar"}})],1),e("div",{staticClass:"summary-info"},[e("div",{staticClass:"summary-value"},[t._v(t._s(t.formatNumber(t.orderSummary.total_revenue))+" "),e("span",{staticStyle:{"font-size":"13px",color:"#999"}},[t._v("USDT")])]),e("div",{staticClass:"summary-label"},[t._v(t._s(t.$t("adminOrders.totalRevenue")||"Total Revenue"))])])])]):t._e(),e("div",{staticClass:"toolbar"},[e("div",{staticClass:"toolbar-left"},[e("a-button",{on:{click:t.loadOrders}},[e("a-icon",{attrs:{type:"reload"}}),t._v(" "+t._s(t.$t("common.refresh")||"Refresh")+" ")],1),e("a-select",{staticStyle:{width:"140px"},on:{change:t.handleOrderFilterChange},model:{value:t.orderStatusFilter,callback:function(e){t.orderStatusFilter=e},expression:"orderStatusFilter"}},[e("a-select-option",{attrs:{value:"all"}},[t._v(t._s(t.$t("adminOrders.filterAll")||"All Status"))]),e("a-select-option",{attrs:{value:"pending"}},[t._v(t._s(t.$t("adminOrders.filterPending")||"Pending"))]),e("a-select-option",{attrs:{value:"paid"}},[t._v(t._s(t.$t("adminOrders.filterPaid")||"Paid"))]),e("a-select-option",{attrs:{value:"confirmed"}},[t._v(t._s(t.$t("adminOrders.filterConfirmed")||"Confirmed"))]),e("a-select-option",{attrs:{value:"expired"}},[t._v(t._s(t.$t("adminOrders.filterExpired")||"Expired"))])],1)],1),e("div",{staticClass:"toolbar-right"},[e("a-input-search",{staticStyle:{width:"280px"},attrs:{placeholder:t.$t("adminOrders.searchPlaceholder")||"Search by username/email",allowClear:""},on:{search:t.handleOrderSearch,pressEnter:t.handleOrderSearch},model:{value:t.orderSearchKeyword,callback:function(e){t.orderSearchKeyword=e},expression:"orderSearchKeyword"}})],1)]),e("a-card",{staticClass:"user-table-card",attrs:{bordered:!1}},[e("a-table",{attrs:{columns:t.orderColumns,dataSource:t.orders,loading:t.orderLoading,pagination:t.orderPagination,rowKey:function(t){return t.order_type+"-"+t.id},scroll:{x:1400}},on:{change:t.handleOrderTableChange},scopedSlots:t._u([{key:"orderUserInfo",fn:function(a,s){return[e("a-tooltip",{attrs:{title:(s.nickname||s.username||"-")+" ("+(s.user_email||"")+")"}},[e("span",{staticClass:"user-cell"},[e("a-avatar",{style:{backgroundColor:t.getUserColor(s.user_id),fontSize:"11px",marginRight:"6px"},attrs:{size:"small"}},[t._v(" "+t._s((s.nickname||s.username||"?").charAt(0).toUpperCase())+" ")]),e("span",{staticClass:"user-name"},[t._v(t._s(t.truncate(s.nickname||s.username||"-",10)))])],1)])]}},{key:"orderTypeInfo",fn:function(a){return[e("a-tag",{attrs:{color:"usdt"===a?"green":"blue"}},[t._v(" "+t._s("usdt"===a?"USDT":"Mock")+" ")])]}},{key:"planInfo",fn:function(a){return[e("a-tag",{attrs:{color:"lifetime"===a?"gold":"yearly"===a?"purple":"cyan"}},[t._v(" "+t._s("lifetime"===a?t.$t("adminOrders.lifetime")||"Lifetime":"yearly"===a?t.$t("adminOrders.yearly")||"Yearly":t.$t("adminOrders.monthly")||"Monthly")+" ")])]}},{key:"amountInfo",fn:function(a,s){return[e("span",{staticStyle:{"font-weight":"600"}},[t._v(t._s(a))]),e("span",{staticClass:"text-muted",staticStyle:{"margin-left":"4px"}},[t._v(t._s(s.currency))])]}},{key:"orderStatusInfo",fn:function(a){return[e("a-tag",{attrs:{color:t.getOrderStatusColor(a)}},[t._v(t._s(t.getOrderStatusLabel(a)))])]}},{key:"chainInfo",fn:function(a){return[a?e("span",[t._v(t._s(a))]):e("span",{staticClass:"text-muted"},[t._v("-")])]}},{key:"addressInfo",fn:function(a){return[a?e("a-tooltip",{attrs:{title:a}},[e("span",{staticClass:"address-text"},[t._v(t._s(t.truncate(a,12)))])]):e("span",{staticClass:"text-muted"},[t._v("-")])]}},{key:"txHashInfo",fn:function(a){return[a?e("a-tooltip",{attrs:{title:a}},[e("span",{staticClass:"hash-text"},[t._v(t._s(t.truncate(a,14)))])]):e("span",{staticClass:"text-muted"},[t._v("-")])]}},{key:"orderCreatedAt",fn:function(a){return[a?e("span",[t._v(t._s(t.formatTime(a)))]):e("span",{staticClass:"text-muted"},[t._v("-")])]}}])})],1)],1),e("a-tab-pane",{key:"aiStats",attrs:{tab:t.$t("adminAiStats.tabTitle")||"AI Analysis"}},[t.aiStatsSummary?e("div",{staticClass:"summary-cards"},[e("div",{staticClass:"summary-card"},[e("div",{staticClass:"summary-icon",staticStyle:{background:"linear-gradient(135deg, #667eea, #764ba2)"}},[e("a-icon",{attrs:{type:"thunderbolt"}})],1),e("div",{staticClass:"summary-info"},[e("div",{staticClass:"summary-value"},[t._v(t._s(t.aiStatsSummary.total_analyses||0))]),e("div",{staticClass:"summary-label"},[t._v(t._s(t.$t("adminAiStats.totalAnalyses")||"Total Analyses"))])])]),e("div",{staticClass:"summary-card"},[e("div",{staticClass:"summary-icon",staticStyle:{background:"linear-gradient(135deg, #11998e, #38ef7d)"}},[e("a-icon",{attrs:{type:"team"}})],1),e("div",{staticClass:"summary-info"},[e("div",{staticClass:"summary-value"},[t._v(t._s(t.aiStatsSummary.unique_users||0))]),e("div",{staticClass:"summary-label"},[t._v(t._s(t.$t("adminAiStats.activeUsers")||"Active Users"))])])]),e("div",{staticClass:"summary-card"},[e("div",{staticClass:"summary-icon",staticStyle:{background:"linear-gradient(135deg, #f093fb, #f5576c)"}},[e("a-icon",{attrs:{type:"stock"}})],1),e("div",{staticClass:"summary-info"},[e("div",{staticClass:"summary-value"},[t._v(t._s(t.aiStatsSummary.unique_symbols||0))]),e("div",{staticClass:"summary-label"},[t._v(t._s(t.$t("adminAiStats.uniqueSymbols")||"Symbols Analyzed"))])])]),e("div",{staticClass:"summary-card"},[e("div",{staticClass:"summary-icon",staticStyle:{background:"linear-gradient(135deg, #fa709a, #fee140)"}},[e("a-icon",{attrs:{type:"like"}})],1),e("div",{staticClass:"summary-info"},[e("div",{staticClass:"summary-value"},[t._v(" "+t._s(t.aiStatsSummary.correct_count||0)+" "),e("span",{staticStyle:{"font-size":"13px",color:"#999"}},[t._v("/ "+t._s(t.aiStatsSummary.total_memory||0))])]),e("div",{staticClass:"summary-label"},[t._v(t._s(t.$t("adminAiStats.accuracy")||"Correct / Verified"))])])])]):t._e(),e("div",{staticClass:"toolbar"},[e("div",{staticClass:"toolbar-left"},[e("a-button",{on:{click:t.loadAiStats}},[e("a-icon",{attrs:{type:"reload"}}),t._v(" "+t._s(t.$t("common.refresh")||"Refresh")+" ")],1)],1),e("div",{staticClass:"toolbar-right"},[e("a-input-search",{staticStyle:{width:"280px"},attrs:{placeholder:t.$t("adminAiStats.searchPlaceholder")||"Search by username",allowClear:""},on:{search:t.handleAiStatsSearch,pressEnter:t.handleAiStatsSearch},model:{value:t.aiStatsSearchKeyword,callback:function(e){t.aiStatsSearchKeyword=e},expression:"aiStatsSearchKeyword"}})],1)]),e("a-card",{staticClass:"user-table-card",staticStyle:{"margin-bottom":"20px"},attrs:{bordered:!1}},[e("h4",{staticStyle:{"margin-bottom":"12px",color:"#1e3a5f","font-weight":"600"}},[e("a-icon",{staticStyle:{"margin-right":"8px"},attrs:{type:"bar-chart"}}),t._v(" "+t._s(t.$t("adminAiStats.userStatsTitle")||"Per-User Statistics")+" ")],1),e("a-table",{attrs:{columns:t.aiUserColumns,dataSource:t.aiUserStats,loading:t.aiStatsLoading,pagination:t.aiStatsPagination,rowKey:function(t){return t.user_id}},on:{change:t.handleAiStatsTableChange},scopedSlots:t._u([{key:"aiUserInfo",fn:function(a,s){return[e("a-tooltip",{attrs:{title:(s.nickname||s.username||"-")+" ("+(s.email||"")+")"}},[e("span",{staticClass:"user-cell"},[e("a-avatar",{style:{backgroundColor:t.getUserColor(s.user_id),fontSize:"11px",marginRight:"6px"},attrs:{size:"small"}},[t._v(" "+t._s((s.nickname||s.username||"?").charAt(0).toUpperCase())+" ")]),e("span",{staticClass:"user-name"},[t._v(t._s(t.truncate(s.nickname||s.username||"-",10)))])],1)])]}},{key:"analysisCountInfo",fn:function(a){return[e("span",{staticStyle:{"font-weight":"600",color:"#1890ff"}},[t._v(t._s(a||0))])]}},{key:"accuracyInfo",fn:function(a,s){return[e("span",{staticClass:"text-profit"},[t._v(t._s(s.correct||0))]),e("span",{staticClass:"text-muted"},[t._v(" / ")]),e("span",{staticClass:"text-loss"},[t._v(t._s(s.incorrect||0))])]}},{key:"feedbackInfo",fn:function(a,s){return[e("a-tooltip",{attrs:{title:(t.$t("adminAiStats.helpful")||"Helpful")+" / "+(t.$t("adminAiStats.notHelpful")||"Not Helpful")}},[e("span",{staticStyle:{color:"#52c41a"}},[e("a-icon",{attrs:{type:"like"}}),t._v(" "+t._s(s.helpful||0))],1),e("span",{staticClass:"text-muted"},[t._v(" / ")]),e("span",{staticStyle:{color:"#ff4d4f"}},[e("a-icon",{attrs:{type:"dislike"}}),t._v(" "+t._s(s.not_helpful||0))],1)])]}},{key:"lastAnalysisAt",fn:function(a){return[a?e("span",[t._v(t._s(t.formatTime(a)))]):e("span",{staticClass:"text-muted"},[t._v("-")])]}}])})],1),e("a-card",{staticClass:"user-table-card",attrs:{bordered:!1}},[e("h4",{staticStyle:{"margin-bottom":"12px",color:"#1e3a5f","font-weight":"600"}},[e("a-icon",{staticStyle:{"margin-right":"8px"},attrs:{type:"history"}}),t._v(" "+t._s(t.$t("adminAiStats.recentTitle")||"Recent Analysis Records")+" ")],1),e("a-table",{attrs:{columns:t.aiRecentColumns,dataSource:t.aiRecentRecords,loading:t.aiStatsLoading,pagination:!1,rowKey:function(t){return t.id},size:"small"},scopedSlots:t._u([{key:"recentUserInfo",fn:function(a,s){return[e("span",{staticClass:"user-cell"},[e("a-avatar",{style:{backgroundColor:t.getUserColor(s.user_id),fontSize:"11px",marginRight:"6px"},attrs:{size:"small"}},[t._v(" "+t._s((s.nickname||s.username||"?").charAt(0).toUpperCase())+" ")]),e("span",{staticClass:"user-name"},[t._v(t._s(t.truncate(s.nickname||s.username||"-",8)))])],1)]}},{key:"recentStatusInfo",fn:function(a){return[e("a-tag",{attrs:{color:"completed"===a?"green":"failed"===a?"red":"blue"}},[t._v(" "+t._s(a)+" ")])]}},{key:"recentCreatedAt",fn:function(a){return[a?e("span",[t._v(t._s(t.formatTime(a)))]):e("span",{staticClass:"text-muted"},[t._v("-")])]}}])})],1)],1)],1),e("a-modal",{attrs:{title:t.isEdit?t.$t("userManage.editUser")||"Edit User":t.$t("userManage.createUser")||"Create User",confirmLoading:t.modalLoading},on:{ok:t.handleModalOk,cancel:t.handleModalCancel},model:{value:t.modalVisible,callback:function(e){t.modalVisible=e},expression:"modalVisible"}},[e("a-form",{attrs:{form:t.form,layout:"vertical"}},[e("a-form-item",{attrs:{label:t.$t("userManage.username")||"Username"}},[e("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["username",{rules:[{required:!t.isEdit,message:t.$t("userManage.usernameRequired")||"Please enter username"}]}],expression:"['username', {\n rules: [{ required: !isEdit, message: $t('userManage.usernameRequired') || 'Please enter username' }]\n }]"}],attrs:{disabled:t.isEdit,placeholder:t.$t("userManage.usernamePlaceholder")||"Enter username"}},[e("a-icon",{attrs:{slot:"prefix",type:"user"},slot:"prefix"})],1)],1),t.isEdit?t._e():e("a-form-item",{attrs:{label:t.$t("userManage.password")||"Password"}},[e("a-input-password",{directives:[{name:"decorator",rawName:"v-decorator",value:["password",{rules:[{required:!0,message:t.$t("userManage.passwordRequired")||"Please enter password"},{min:6,message:t.$t("userManage.passwordMin")||"Password must be at least 6 characters"}]}],expression:"['password', {\n rules: [\n { required: true, message: $t('userManage.passwordRequired') || 'Please enter password' },\n { min: 6, message: $t('userManage.passwordMin') || 'Password must be at least 6 characters' }\n ]\n }]"}],attrs:{placeholder:t.$t("userManage.passwordPlaceholder")||"Enter password (min 6 characters)"}},[e("a-icon",{attrs:{slot:"prefix",type:"lock"},slot:"prefix"})],1)],1),e("a-form-item",{attrs:{label:t.$t("userManage.nickname")||"Nickname"}},[e("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["nickname"],expression:"['nickname']"}],attrs:{placeholder:t.$t("userManage.nicknamePlaceholder")||"Enter nickname"}},[e("a-icon",{attrs:{slot:"prefix",type:"smile"},slot:"prefix"})],1)],1),e("a-form-item",{attrs:{label:t.$t("userManage.email")||"Email"}},[e("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["email",{rules:[{type:"email",message:t.$t("userManage.emailInvalid")||"Invalid email format"}]}],expression:"['email', {\n rules: [{ type: 'email', message: $t('userManage.emailInvalid') || 'Invalid email format' }]\n }]"}],attrs:{placeholder:t.$t("userManage.emailPlaceholder")||"Enter email"}},[e("a-icon",{attrs:{slot:"prefix",type:"mail"},slot:"prefix"})],1)],1),e("a-form-item",{attrs:{label:t.$t("userManage.role")||"Role"}},[e("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["role",{initialValue:"user"}],expression:"['role', { initialValue: 'user' }]"}],attrs:{placeholder:t.$t("userManage.rolePlaceholder")||"Select role"}},t._l(t.roles,function(a){return e("a-select-option",{key:a.id,attrs:{value:a.id}},[t._v(" "+t._s(t.getRoleLabel(a.id))+" ")])}),1)],1),t.isEdit?e("a-form-item",{attrs:{label:t.$t("userManage.status")||"Status"}},[e("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["status",{initialValue:"active"}],expression:"['status', { initialValue: 'active' }]"}],attrs:{placeholder:t.$t("userManage.statusPlaceholder")||"Select status"}},[e("a-select-option",{attrs:{value:"active"}},[t._v(t._s(t.$t("userManage.active")||"Active"))]),e("a-select-option",{attrs:{value:"disabled"}},[t._v(t._s(t.$t("userManage.disabled")||"Disabled"))])],1)],1):t._e()],1)],1),e("a-modal",{attrs:{title:t.$t("userManage.resetPassword")||"Reset Password",confirmLoading:t.resetPasswordLoading},on:{ok:t.handleResetPassword},model:{value:t.resetPasswordVisible,callback:function(e){t.resetPasswordVisible=e},expression:"resetPasswordVisible"}},[e("a-form",{attrs:{form:t.resetPasswordForm,layout:"vertical"}},[e("a-alert",{staticStyle:{"margin-bottom":"16px"},attrs:{message:t.$t("userManage.resetPasswordWarning")||"This will reset the user's password",type:"warning",showIcon:""}}),e("a-form-item",{attrs:{label:t.$t("userManage.newPassword")||"New Password"}},[e("a-input-password",{directives:[{name:"decorator",rawName:"v-decorator",value:["new_password",{rules:[{required:!0,message:t.$t("userManage.passwordRequired")||"Please enter new password"},{min:6,message:t.$t("userManage.passwordMin")||"Password must be at least 6 characters"}]}],expression:"['new_password', {\n rules: [\n { required: true, message: $t('userManage.passwordRequired') || 'Please enter new password' },\n { min: 6, message: $t('userManage.passwordMin') || 'Password must be at least 6 characters' }\n ]\n }]"}],attrs:{placeholder:t.$t("userManage.newPasswordPlaceholder")||"Enter new password"}},[e("a-icon",{attrs:{slot:"prefix",type:"lock"},slot:"prefix"})],1)],1)],1)],1),e("a-modal",{attrs:{title:(t.$t("userManage.adjustCredits")||"Adjust Credits")+(t.creditsEditingUser?" - ".concat(t.creditsEditingUser.username):""),confirmLoading:t.creditsLoading},on:{ok:t.handleSetCredits},model:{value:t.creditsModalVisible,callback:function(e){t.creditsModalVisible=e},expression:"creditsModalVisible"}},[e("a-form",{attrs:{layout:"vertical"}},[t.creditsEditingUser?e("div",{staticClass:"current-credits-info"},[e("span",{staticClass:"label"},[t._v(t._s(t.$t("userManage.currentCredits")||"Current Credits")+":")]),e("span",{staticClass:"value"},[t._v(t._s(t.formatCredits(t.creditsEditingUser.credits)))])]):t._e(),e("a-form-item",{attrs:{label:t.$t("userManage.newCredits")||"New Credits"}},[e("a-input-number",{staticStyle:{width:"100%"},attrs:{min:0,precision:2,placeholder:t.$t("userManage.enterCredits")||"Enter new credits amount"},model:{value:t.newCredits,callback:function(e){t.newCredits=e},expression:"newCredits"}})],1),e("a-form-item",{attrs:{label:t.$t("userManage.remark")||"Remark"}},[e("a-input",{attrs:{placeholder:t.$t("userManage.remarkPlaceholder")||"Optional remark"},model:{value:t.creditsRemark,callback:function(e){t.creditsRemark=e},expression:"creditsRemark"}})],1)],1)],1),e("a-modal",{attrs:{title:(t.$t("userManage.setVip")||"Set VIP")+(t.vipEditingUser?" - ".concat(t.vipEditingUser.username):""),confirmLoading:t.vipLoading},on:{ok:t.handleSetVip},model:{value:t.vipModalVisible,callback:function(e){t.vipModalVisible=e},expression:"vipModalVisible"}},[e("a-form",{attrs:{layout:"vertical"}},[t.vipEditingUser&&t.vipEditingUser.vip_expires_at?e("div",{staticClass:"current-vip-info"},[e("span",{staticClass:"label"},[t._v(t._s(t.$t("userManage.currentVip")||"Current VIP")+":")]),e("span",{staticClass:"value",class:t.isVipActive(t.vipEditingUser.vip_expires_at)?"active":"expired"},[t._v(" "+t._s(t.isVipActive(t.vipEditingUser.vip_expires_at)?(t.$t("userManage.vipActive")||"Active")+" (".concat(t.formatDate(t.vipEditingUser.vip_expires_at),")"):t.$t("userManage.vipExpired")||"Expired")+" ")])]):t._e(),e("a-form-item",{attrs:{label:t.$t("userManage.vipDays")||"VIP Days"}},[e("a-select",{staticStyle:{width:"100%"},model:{value:t.vipDays,callback:function(e){t.vipDays=e},expression:"vipDays"}},[e("a-select-option",{attrs:{value:0}},[t._v(t._s(t.$t("userManage.cancelVip")||"Cancel VIP"))]),e("a-select-option",{attrs:{value:7}},[t._v("7 "+t._s(t.$t("userManage.days")||"days"))]),e("a-select-option",{attrs:{value:30}},[t._v("30 "+t._s(t.$t("userManage.days")||"days"))]),e("a-select-option",{attrs:{value:90}},[t._v("90 "+t._s(t.$t("userManage.days")||"days"))]),e("a-select-option",{attrs:{value:180}},[t._v("180 "+t._s(t.$t("userManage.days")||"days"))]),e("a-select-option",{attrs:{value:365}},[t._v("365 "+t._s(t.$t("userManage.days")||"days"))]),e("a-select-option",{attrs:{value:-1}},[t._v(t._s(t.$t("userManage.customDate")||"Custom Date"))])],1)],1),-1===t.vipDays?e("a-form-item",{attrs:{label:t.$t("userManage.vipExpiresAt")||"VIP Expires At"}},[e("a-date-picker",{staticStyle:{width:"100%"},attrs:{showTime:"",format:"YYYY-MM-DD HH:mm:ss"},model:{value:t.vipCustomDate,callback:function(e){t.vipCustomDate=e},expression:"vipCustomDate"}})],1):t._e(),e("a-form-item",{attrs:{label:t.$t("userManage.remark")||"Remark"}},[e("a-input",{attrs:{placeholder:t.$t("userManage.remarkPlaceholder")||"Optional remark"},model:{value:t.vipRemark,callback:function(e){t.vipRemark=e},expression:"vipRemark"}})],1)],1)],1)],1)},r=[],i=a(81127),n=a(56252),o=a(76338),l=(a(2892),a(84841)),d=a(55434),c=a(95353),u={name:"UserManage",mixins:[d.t],data:function(){return{activeTab:"users",loading:!1,users:[],roles:[],searchKeyword:"",pagination:{current:1,pageSize:10,total:0},modalVisible:!1,modalLoading:!1,isEdit:!1,editingUser:null,resetPasswordVisible:!1,resetPasswordLoading:!1,resetPasswordUserId:null,creditsModalVisible:!1,creditsLoading:!1,creditsEditingUser:null,newCredits:0,creditsRemark:"",vipModalVisible:!1,vipLoading:!1,vipEditingUser:null,vipDays:30,vipCustomDate:null,vipRemark:"",strategyLoading:!1,systemStrategies:[],strategySummary:null,strategyStatusFilter:"all",strategySearchKeyword:"",strategyPagination:{current:1,pageSize:20,total:0},strategiesLoaded:!1,orderLoading:!1,orders:[],orderSummary:null,orderStatusFilter:"all",orderSearchKeyword:"",orderPagination:{current:1,pageSize:20,total:0},ordersLoaded:!1,aiStatsLoading:!1,aiUserStats:[],aiRecentRecords:[],aiStatsSummary:null,aiStatsSearchKeyword:"",aiStatsPagination:{current:1,pageSize:20,total:0},aiStatsLoaded:!1}},computed:(0,o.A)((0,o.A)({},(0,c.L8)(["userInfo"])),{},{isDarkTheme:function(){return"dark"===this.navTheme||"realdark"===this.navTheme},currentUserId:function(){var t;return null===(t=this.userInfo)||void 0===t?void 0:t.id},columns:function(){return[{title:"ID",dataIndex:"id",width:60},{title:this.$t("userManage.username")||"Username",dataIndex:"username",width:120},{title:this.$t("userManage.nickname")||"Nickname",dataIndex:"nickname",width:100},{title:this.$t("userManage.email")||"Email",dataIndex:"email",width:180},{title:this.$t("userManage.role")||"Role",dataIndex:"role",width:90,scopedSlots:{customRender:"role"}},{title:this.$t("userManage.credits")||"Credits",dataIndex:"credits",width:100,scopedSlots:{customRender:"credits"}},{title:"VIP",dataIndex:"vip_expires_at",width:120,scopedSlots:{customRender:"vip_expires_at"}},{title:this.$t("userManage.status")||"Status",dataIndex:"status",width:90,scopedSlots:{customRender:"status"}},{title:this.$t("userManage.lastLogin")||"Last Login",dataIndex:"last_login_at",width:150,scopedSlots:{customRender:"last_login_at"}},{title:this.$t("common.actions")||"Actions",dataIndex:"action",width:180,scopedSlots:{customRender:"action"}}]},strategyColumns:function(){return[{title:"ID",dataIndex:"id",width:60,fixed:"left"},{title:this.$t("systemOverview.colUser")||"User",dataIndex:"username",width:110,fixed:"left",scopedSlots:{customRender:"userInfo"}},{title:this.$t("systemOverview.colStrategy")||"Strategy",dataIndex:"strategy_name",width:160,ellipsis:!0},{title:this.$t("systemOverview.colStatus")||"Status",dataIndex:"status",width:100,scopedSlots:{customRender:"strategyStatus"}},{title:this.$t("systemOverview.colSymbol")||"Symbol",dataIndex:"symbol",width:140,scopedSlots:{customRender:"symbolInfo"}},{title:this.$t("systemOverview.colCapital")||"Capital",dataIndex:"initial_capital",width:110,scopedSlots:{customRender:"capitalInfo"}},{title:this.$t("systemOverview.colPnl")||"PnL / ROI",dataIndex:"total_pnl",width:200,scopedSlots:{customRender:"pnlInfo"}},{title:this.$t("systemOverview.colPositions")||"Pos",dataIndex:"position_count",width:70,align:"center",scopedSlots:{customRender:"positionInfo"}},{title:this.$t("systemOverview.colTrades")||"Trades",dataIndex:"trade_count",width:80,align:"center",scopedSlots:{customRender:"tradeInfo"}},{title:this.$t("systemOverview.colIndicator")||"Indicator",dataIndex:"indicator_name",width:130,scopedSlots:{customRender:"indicatorInfo"}},{title:this.$t("systemOverview.colExchange")||"Exchange",dataIndex:"exchange_name",width:100,scopedSlots:{customRender:"exchangeInfo"}},{title:this.$t("systemOverview.colTimeframe")||"TF",dataIndex:"timeframe",width:70,align:"center",scopedSlots:{customRender:"timeframeInfo"}},{title:this.$t("systemOverview.colLeverage")||"Lev",dataIndex:"leverage",width:70,align:"center",scopedSlots:{customRender:"leverageInfo"}},{title:this.$t("systemOverview.colCreatedAt")||"Created",dataIndex:"created_at",width:150,scopedSlots:{customRender:"createdAtInfo"}}]},orderColumns:function(){return[{title:this.$t("adminOrders.colUser")||"User",dataIndex:"username",width:120,scopedSlots:{customRender:"orderUserInfo"}},{title:this.$t("adminOrders.colType")||"Type",dataIndex:"order_type",width:80,scopedSlots:{customRender:"orderTypeInfo"}},{title:this.$t("adminOrders.colPlan")||"Plan",dataIndex:"plan",width:100,scopedSlots:{customRender:"planInfo"}},{title:this.$t("adminOrders.colAmount")||"Amount",dataIndex:"amount",width:120,scopedSlots:{customRender:"amountInfo"}},{title:this.$t("adminOrders.colStatus")||"Status",dataIndex:"status",width:100,scopedSlots:{customRender:"orderStatusInfo"}},{title:this.$t("adminOrders.colChain")||"Chain",dataIndex:"chain",width:80,scopedSlots:{customRender:"chainInfo"}},{title:this.$t("adminOrders.colAddress")||"Address",dataIndex:"address",width:140,scopedSlots:{customRender:"addressInfo"}},{title:this.$t("adminOrders.colTxHash")||"Tx Hash",dataIndex:"tx_hash",width:160,scopedSlots:{customRender:"txHashInfo"}},{title:this.$t("adminOrders.colCreatedAt")||"Created",dataIndex:"created_at",width:150,scopedSlots:{customRender:"orderCreatedAt"}}]},aiUserColumns:function(){return[{title:this.$t("adminAiStats.colUser")||"User",dataIndex:"username",width:140,scopedSlots:{customRender:"aiUserInfo"}},{title:this.$t("adminAiStats.colAnalysisCount")||"Analyses",dataIndex:"analysis_count",width:100,align:"center",scopedSlots:{customRender:"analysisCountInfo"},sorter:function(t,e){return t.analysis_count-e.analysis_count},defaultSortOrder:"descend"},{title:this.$t("adminAiStats.colSymbols")||"Symbols",dataIndex:"symbol_count",width:90,align:"center"},{title:this.$t("adminAiStats.colMarkets")||"Markets",dataIndex:"market_count",width:90,align:"center"},{title:this.$t("adminAiStats.colAccuracy")||"Correct / Wrong",dataIndex:"correct",width:130,align:"center",scopedSlots:{customRender:"accuracyInfo"}},{title:this.$t("adminAiStats.colFeedback")||"Feedback",dataIndex:"helpful",width:130,align:"center",scopedSlots:{customRender:"feedbackInfo"}},{title:this.$t("adminAiStats.colLastAnalysis")||"Last Analysis",dataIndex:"last_analysis_at",width:160,scopedSlots:{customRender:"lastAnalysisAt"}}]},aiRecentColumns:function(){return[{title:"ID",dataIndex:"id",width:60},{title:this.$t("adminAiStats.colUser")||"User",dataIndex:"username",width:120,scopedSlots:{customRender:"recentUserInfo"}},{title:this.$t("adminAiStats.colMarket")||"Market",dataIndex:"market",width:80},{title:this.$t("adminAiStats.colSymbol")||"Symbol",dataIndex:"symbol",width:120},{title:this.$t("adminAiStats.colModel")||"Model",dataIndex:"model",width:140,ellipsis:!0},{title:this.$t("adminAiStats.colStatus")||"Status",dataIndex:"status",width:100,scopedSlots:{customRender:"recentStatusInfo"}},{title:this.$t("adminAiStats.colCreatedAt")||"Time",dataIndex:"created_at",width:160,scopedSlots:{customRender:"recentCreatedAt"}}]}}),beforeCreate:function(){this.form=this.$form.createForm(this),this.resetPasswordForm=this.$form.createForm(this,{name:"resetPassword"})},mounted:function(){this.loadUsers(),this.loadRoles()},methods:{handleTabChange:function(t){"strategies"!==t||this.strategiesLoaded||this.loadSystemStrategies(),"orders"!==t||this.ordersLoaded||this.loadOrders(),"aiStats"!==t||this.aiStatsLoaded||this.loadAiStats()},loadSystemStrategies:function(){var t=this;return(0,n.A)((0,i.A)().m(function e(){var a;return(0,i.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return t.strategyLoading=!0,e.p=1,e.n=2,(0,l.DK)({page:t.strategyPagination.current,page_size:t.strategyPagination.pageSize,status:"all"===t.strategyStatusFilter?"":t.strategyStatusFilter,search:t.strategySearchKeyword||""});case 2:a=e.v,1===a.code?(t.systemStrategies=a.data.items||[],t.strategyPagination.total=a.data.total||0,t.strategySummary=a.data.summary||{},t.strategiesLoaded=!0):t.$message.error(a.msg||"Failed to load strategies"),e.n=4;break;case 3:e.p=3,e.v,t.$message.error("Failed to load system strategies");case 4:return e.p=4,t.strategyLoading=!1,e.f(4);case 5:return e.a(2)}},e,null,[[1,3,4,5]])}))()},handleStrategySearch:function(){this.strategyPagination.current=1,this.loadSystemStrategies()},handleStrategyFilterChange:function(){this.strategyPagination.current=1,this.loadSystemStrategies()},handleStrategyTableChange:function(t){this.strategyPagination.current=t.current,this.strategyPagination.pageSize=t.pageSize,this.loadSystemStrategies()},getUserColor:function(t){var e=["#1890ff","#722ed1","#13c2c2","#fa8c16","#eb2f96","#52c41a","#2f54eb","#faad14"];return e[(t||0)%e.length]},formatNumber:function(t){return t||0===t?Number(t).toLocaleString("en-US",{minimumFractionDigits:0,maximumFractionDigits:2}):"0"},formatPnl:function(t){if(!t&&0!==t)return"0";var e=Number(t),a=e>=0?"+":"";return a+e.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:4})},truncate:function(t,e){return t?t.length>e?t.substring(0,e)+"...":t:""},loadUsers:function(){var t=this;return(0,n.A)((0,i.A)().m(function e(){var a;return(0,i.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return t.loading=!0,e.p=1,e.n=2,(0,l.aU)({page:t.pagination.current,page_size:t.pagination.pageSize,search:t.searchKeyword||""});case 2:a=e.v,1===a.code?(t.users=a.data.items||[],t.pagination.total=a.data.total||0):t.$message.error(a.msg||"Failed to load users"),e.n=4;break;case 3:e.p=3,e.v,t.$message.error("Failed to load users");case 4:return e.p=4,t.loading=!1,e.f(4);case 5:return e.a(2)}},e,null,[[1,3,4,5]])}))()},handleSearch:function(){this.pagination.current=1,this.loadUsers()},loadRoles:function(){var t=this;return(0,n.A)((0,i.A)().m(function e(){var a;return(0,i.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.p=0,e.n=1,(0,l.O0)();case 1:a=e.v,1===a.code&&(t.roles=a.data.roles||[]),e.n=3;break;case 2:e.p=2,e.v;case 3:return e.a(2)}},e,null,[[0,2]])}))()},handleTableChange:function(t){this.pagination.current=t.current,this.pagination.pageSize=t.pageSize,this.loadUsers()},showCreateModal:function(){var t=this;this.isEdit=!1,this.editingUser=null,this.modalVisible=!0,this.$nextTick(function(){t.form.resetFields()})},showEditModal:function(t){var e=this;this.isEdit=!0,this.editingUser=t,this.modalVisible=!0,this.$nextTick(function(){e.form.setFieldsValue({username:t.username,nickname:t.nickname,email:t.email,role:t.role,status:t.status})})},handleModalCancel:function(){this.modalVisible=!1,this.form.resetFields()},handleModalOk:function(){var t=this;this.form.validateFields(function(){var e=(0,n.A)((0,i.A)().m(function e(a,s){var r;return(0,i.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(!a){e.n=1;break}return e.a(2);case 1:if(t.modalLoading=!0,e.p=2,!t.isEdit){e.n=4;break}return e.n=3,(0,l.TK)(t.editingUser.id,{nickname:s.nickname,email:s.email,role:s.role,status:s.status});case 3:r=e.v,e.n=6;break;case 4:return e.n=5,(0,l.kg)(s);case 5:r=e.v;case 6:1===r.code?(t.$message.success(r.msg||"Success"),t.modalVisible=!1,t.form.resetFields(),t.loadUsers()):t.$message.error(r.msg||"Operation failed"),e.n=8;break;case 7:e.p=7,e.v,t.$message.error("Operation failed");case 8:return e.p=8,t.modalLoading=!1,e.f(8);case 9:return e.a(2)}},e,null,[[2,7,8,9]])}));return function(t,a){return e.apply(this,arguments)}}())},handleDelete:function(t){var e=this;return(0,n.A)((0,i.A)().m(function a(){var s;return(0,i.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return a.p=0,a.n=1,(0,l.hG)(t);case 1:s=a.v,1===s.code?(e.$message.success(s.msg||"User deleted"),e.loadUsers()):e.$message.error(s.msg||"Delete failed"),a.n=3;break;case 2:a.p=2,a.v,e.$message.error("Delete failed");case 3:return a.a(2)}},a,null,[[0,2]])}))()},showResetPasswordModal:function(t){var e=this;this.resetPasswordUserId=t.id,this.resetPasswordVisible=!0,this.$nextTick(function(){e.resetPasswordForm.resetFields()})},handleResetPassword:function(){var t=this;this.resetPasswordForm.validateFields(function(){var e=(0,n.A)((0,i.A)().m(function e(a,s){var r;return(0,i.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(!a){e.n=1;break}return e.a(2);case 1:return t.resetPasswordLoading=!0,e.p=2,e.n=3,(0,l.cw)({user_id:t.resetPasswordUserId,new_password:s.new_password});case 3:r=e.v,1===r.code?(t.$message.success(r.msg||"Password reset successfully"),t.resetPasswordVisible=!1,t.resetPasswordForm.resetFields()):t.$message.error(r.msg||"Reset failed"),e.n=5;break;case 4:e.p=4,e.v,t.$message.error("Reset failed");case 5:return e.p=5,t.resetPasswordLoading=!1,e.f(5);case 6:return e.a(2)}},e,null,[[2,4,5,6]])}));return function(t,a){return e.apply(this,arguments)}}())},getRoleColor:function(t){var e={admin:"red",manager:"orange",user:"blue",viewer:"default"};return e[t]||"default"},getRoleLabel:function(t){var e={admin:this.$t("userManage.roleAdmin")||"Admin",manager:this.$t("userManage.roleManager")||"Manager",user:this.$t("userManage.roleUser")||"User",viewer:this.$t("userManage.roleViewer")||"Viewer"};return e[t]||t},formatTime:function(t){if(!t)return"";var e=new Date("number"===typeof t?1e3*t:t);return e.toLocaleString()},formatCredits:function(t){return t||0===t?Number(t).toLocaleString("en-US",{minimumFractionDigits:0,maximumFractionDigits:2}):"0"},formatDate:function(t){if(!t)return"";var e=new Date(t);return e.toLocaleDateString()},isVipActive:function(t){return!!t&&new Date(t)>new Date},showCreditsModal:function(t){this.creditsEditingUser=t,this.newCredits=parseFloat(t.credits)||0,this.creditsRemark="",this.creditsModalVisible=!0},handleSetCredits:function(){var t=this;return(0,n.A)((0,i.A)().m(function e(){var a;return(0,i.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(!(t.newCredits<0)){e.n=1;break}return t.$message.error(t.$t("userManage.creditsNonNegative")||"Credits cannot be negative"),e.a(2);case 1:return t.creditsLoading=!0,e.p=2,e.n=3,(0,l.wq)({user_id:t.creditsEditingUser.id,credits:t.newCredits,remark:t.creditsRemark});case 3:a=e.v,1===a.code?(t.$message.success(a.msg||"Credits updated successfully"),t.creditsModalVisible=!1,t.loadUsers()):t.$message.error(a.msg||"Update failed"),e.n=5;break;case 4:e.p=4,e.v,t.$message.error("Update failed");case 5:return e.p=5,t.creditsLoading=!1,e.f(5);case 6:return e.a(2)}},e,null,[[2,4,5,6]])}))()},showVipModal:function(t){this.vipEditingUser=t,this.vipDays=30,this.vipCustomDate=null,this.vipRemark="",this.vipModalVisible=!0},handleSetVip:function(){var t=this;return(0,n.A)((0,i.A)().m(function e(){var a,s;return(0,i.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(a={user_id:t.vipEditingUser.id,remark:t.vipRemark},-1!==t.vipDays){e.n=2;break}if(t.vipCustomDate){e.n=1;break}return t.$message.error(t.$t("userManage.selectDate")||"Please select a date"),e.a(2);case 1:a.vip_expires_at=t.vipCustomDate.toISOString(),e.n=3;break;case 2:a.vip_days=t.vipDays;case 3:return t.vipLoading=!0,e.p=4,e.n=5,(0,l.nY)(a);case 5:s=e.v,1===s.code?(t.$message.success(s.msg||"VIP status updated successfully"),t.vipModalVisible=!1,t.loadUsers()):t.$message.error(s.msg||"Update failed"),e.n=7;break;case 6:e.p=6,e.v,t.$message.error("Update failed");case 7:return e.p=7,t.vipLoading=!1,e.f(7);case 8:return e.a(2)}},e,null,[[4,6,7,8]])}))()},loadOrders:function(){var t=this;return(0,n.A)((0,i.A)().m(function e(){var a;return(0,i.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return t.orderLoading=!0,e.p=1,e.n=2,(0,l.vi)({page:t.orderPagination.current,page_size:t.orderPagination.pageSize,status:"all"===t.orderStatusFilter?"":t.orderStatusFilter,search:t.orderSearchKeyword||""});case 2:a=e.v,1===a.code?(t.orders=a.data.items||[],t.orderPagination.total=a.data.total||0,t.orderSummary=a.data.summary||{},t.ordersLoaded=!0):t.$message.error(a.msg||"Failed to load orders"),e.n=4;break;case 3:e.p=3,e.v,t.$message.error("Failed to load orders");case 4:return e.p=4,t.orderLoading=!1,e.f(4);case 5:return e.a(2)}},e,null,[[1,3,4,5]])}))()},handleOrderSearch:function(){this.orderPagination.current=1,this.loadOrders()},handleOrderFilterChange:function(){this.orderPagination.current=1,this.loadOrders()},handleOrderTableChange:function(t){this.orderPagination.current=t.current,this.orderPagination.pageSize=t.pageSize,this.loadOrders()},getOrderStatusColor:function(t){var e={paid:"green",confirmed:"green",pending:"orange",expired:"grey",cancelled:"default",failed:"red"};return e[t]||"default"},getOrderStatusLabel:function(t){var e={paid:this.$t("adminOrders.statusPaid")||"Paid",confirmed:this.$t("adminOrders.statusConfirmed")||"Confirmed",pending:this.$t("adminOrders.statusPending")||"Pending",expired:this.$t("adminOrders.statusExpired")||"Expired",cancelled:this.$t("adminOrders.statusCancelled")||"Cancelled",failed:this.$t("adminOrders.statusFailed")||"Failed"};return e[t]||t},loadAiStats:function(){var t=this;return(0,n.A)((0,i.A)().m(function e(){var a;return(0,i.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return t.aiStatsLoading=!0,e.p=1,e.n=2,(0,l.d$)({page:t.aiStatsPagination.current,page_size:t.aiStatsPagination.pageSize,search:t.aiStatsSearchKeyword||""});case 2:a=e.v,1===a.code?(t.aiUserStats=a.data.user_stats||[],t.aiRecentRecords=a.data.recent||[],t.aiStatsPagination.total=a.data.user_total||0,t.aiStatsSummary=a.data.summary||{},t.aiStatsLoaded=!0):t.$message.error(a.msg||"Failed to load AI stats"),e.n=4;break;case 3:e.p=3,e.v,t.$message.error("Failed to load AI stats");case 4:return e.p=4,t.aiStatsLoading=!1,e.f(4);case 5:return e.a(2)}},e,null,[[1,3,4,5]])}))()},handleAiStatsSearch:function(){this.aiStatsPagination.current=1,this.loadAiStats()},handleAiStatsTableChange:function(t){this.aiStatsPagination.current=t.current,this.aiStatsPagination.pageSize=t.pageSize,this.loadAiStats()}}},m=u,p=a(845),g=(0,p.A)(m,s,r,!1,null,"f0405968",null),v=g.exports},84841:function(t,e,a){a.d(e,{DK:function(){return h},E$:function(){return c},Gl:function(){return p},O0:function(){return d},TK:function(){return n},aU:function(){return r},cw:function(){return l},d$:function(){return S},hG:function(){return o},kg:function(){return i},nY:function(){return y},r7:function(){return u},rx:function(){return v},v9:function(){return g},vF:function(){return m},vi:function(){return _},wq:function(){return f}});var s=a(75769);function r(t){return(0,s.Ay)({url:"/api/users/list",method:"get",params:t})}function i(t){return(0,s.Ay)({url:"/api/users/create",method:"post",data:t})}function n(t,e){return(0,s.Ay)({url:"/api/users/update",method:"put",params:{id:t},data:e})}function o(t){return(0,s.Ay)({url:"/api/users/delete",method:"delete",params:{id:t}})}function l(t){return(0,s.Ay)({url:"/api/users/reset-password",method:"post",data:t})}function d(){return(0,s.Ay)({url:"/api/users/roles",method:"get"})}function c(){return(0,s.Ay)({url:"/api/users/profile",method:"get"})}function u(t){return(0,s.Ay)({url:"/api/users/profile/update",method:"put",data:t})}function m(){return(0,s.Ay)({url:"/api/users/notification-settings",method:"get"})}function p(t){return(0,s.Ay)({url:"/api/users/notification-settings",method:"put",data:t})}function g(t){return(0,s.Ay)({url:"/api/users/my-credits-log",method:"get",params:t})}function v(t){return(0,s.Ay)({url:"/api/users/my-referrals",method:"get",params:t})}function f(t){return(0,s.Ay)({url:"/api/users/set-credits",method:"post",data:t})}function y(t){return(0,s.Ay)({url:"/api/users/set-vip",method:"post",data:t})}function h(t){return(0,s.Ay)({url:"/api/users/system-strategies",method:"get",params:t})}function _(t){return(0,s.Ay)({url:"/api/users/admin-orders",method:"get",params:t})}function S(t){return(0,s.Ay)({url:"/api/users/admin-ai-stats",method:"get",params:t})}}}]); \ No newline at end of file diff --git a/frontend/dist/js/472.4317bd73.js b/frontend/dist/js/472.4317bd73.js deleted file mode 100644 index ecea5f9..0000000 --- a/frontend/dist/js/472.4317bd73.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self["webpackChunkvue_antd_pro"]=self["webpackChunkvue_antd_pro"]||[]).push([[472],{39472:function(t,e,a){a.r(e),a.d(e,{default:function(){return v}});var s=function(){var t=this,e=t._self._c;return e("div",{staticClass:"user-manage-page",class:{"theme-dark":t.isDarkTheme}},[e("div",{staticClass:"page-header"},[e("h2",{staticClass:"page-title"},[e("a-icon",{attrs:{type:"team"}}),e("span",[t._v(t._s(t.$t("userManage.title")||"User Management"))])],1),e("p",{staticClass:"page-desc"},[t._v(t._s(t.$t("userManage.description")||"Manage system users, roles and permissions"))])]),e("a-tabs",{staticClass:"manage-tabs",on:{change:t.handleTabChange},model:{value:t.activeTab,callback:function(e){t.activeTab=e},expression:"activeTab"}},[e("a-tab-pane",{key:"users",attrs:{tab:t.$t("userManage.tabUsers")||"User Management"}},[e("div",{staticClass:"toolbar"},[e("div",{staticClass:"toolbar-left"},[e("a-button",{attrs:{type:"primary"},on:{click:t.showCreateModal}},[e("a-icon",{attrs:{type:"user-add"}}),t._v(" "+t._s(t.$t("userManage.createUser")||"Create User")+" ")],1),e("a-button",{on:{click:t.loadUsers}},[e("a-icon",{attrs:{type:"reload"}}),t._v(" "+t._s(t.$t("common.refresh")||"Refresh")+" ")],1)],1),e("div",{staticClass:"toolbar-right"},[e("a-input-search",{staticStyle:{width:"280px"},attrs:{placeholder:t.$t("userManage.searchPlaceholder")||"Search by username/email",allowClear:""},on:{search:t.handleSearch,pressEnter:t.handleSearch},model:{value:t.searchKeyword,callback:function(e){t.searchKeyword=e},expression:"searchKeyword"}})],1)]),e("a-card",{staticClass:"user-table-card",attrs:{bordered:!1}},[e("a-table",{attrs:{columns:t.columns,dataSource:t.users,loading:t.loading,pagination:t.pagination,rowKey:function(t){return t.id}},on:{change:t.handleTableChange},scopedSlots:t._u([{key:"status",fn:function(a){return[e("a-tag",{attrs:{color:"active"===a?"green":"red"}},[t._v(" "+t._s("active"===a?t.$t("userManage.active")||"Active":t.$t("userManage.disabled")||"Disabled")+" ")])]}},{key:"role",fn:function(a){return[e("a-tag",{attrs:{color:t.getRoleColor(a)}},[t._v(" "+t._s(t.getRoleLabel(a))+" ")])]}},{key:"last_login_at",fn:function(a){return[a?e("span",[t._v(t._s(t.formatTime(a)))]):e("span",{staticClass:"text-muted"},[t._v(t._s(t.$t("userManage.neverLogin")||"Never"))])]}},{key:"credits",fn:function(a){return[e("span",{staticClass:"credits-value"},[t._v(t._s(t.formatCredits(a)))])]}},{key:"vip_expires_at",fn:function(a){return[a&&t.isVipActive(a)?[e("a-tag",{attrs:{color:"gold"}},[e("a-icon",{attrs:{type:"crown"}}),t._v(" "+t._s(t.formatDate(a))+" ")],1)]:e("span",{staticClass:"text-muted"},[t._v("-")])]}},{key:"action",fn:function(a,s){return[e("a-space",[e("a-tooltip",{attrs:{title:t.$t("common.edit")||"Edit"}},[e("a-button",{attrs:{type:"link",size:"small"},on:{click:function(e){return t.showEditModal(s)}}},[e("a-icon",{attrs:{type:"edit"}})],1)],1),e("a-tooltip",{attrs:{title:t.$t("userManage.adjustCredits")||"Adjust Credits"}},[e("a-button",{attrs:{type:"link",size:"small"},on:{click:function(e){return t.showCreditsModal(s)}}},[e("a-icon",{staticStyle:{color:"#722ed1"},attrs:{type:"wallet"}})],1)],1),e("a-tooltip",{attrs:{title:t.$t("userManage.setVip")||"Set VIP"}},[e("a-button",{attrs:{type:"link",size:"small"},on:{click:function(e){return t.showVipModal(s)}}},[e("a-icon",{staticStyle:{color:"#faad14"},attrs:{type:"crown"}})],1)],1),e("a-tooltip",{attrs:{title:t.$t("userManage.resetPassword")||"Reset Password"}},[e("a-button",{attrs:{type:"link",size:"small"},on:{click:function(e){return t.showResetPasswordModal(s)}}},[e("a-icon",{attrs:{type:"key"}})],1)],1),e("a-tooltip",{attrs:{title:t.$t("common.delete")||"Delete"}},[e("a-popconfirm",{attrs:{title:t.$t("userManage.confirmDelete")||"Are you sure to delete this user?"},on:{confirm:function(e){return t.handleDelete(s.id)}}},[e("a-button",{attrs:{type:"link",size:"small",disabled:s.id===t.currentUserId}},[e("a-icon",{staticStyle:{color:"#ff4d4f"},attrs:{type:"delete"}})],1)],1)],1)],1)]}}])})],1)],1),e("a-tab-pane",{key:"strategies",attrs:{tab:t.$t("systemOverview.tabTitle")||"System Overview"}},[t.strategySummary?e("div",{staticClass:"summary-cards"},[e("div",{staticClass:"summary-card"},[e("div",{staticClass:"summary-icon",staticStyle:{background:"linear-gradient(135deg, #667eea, #764ba2)"}},[e("a-icon",{attrs:{type:"fund"}})],1),e("div",{staticClass:"summary-info"},[e("div",{staticClass:"summary-value"},[t._v(t._s(t.strategySummary.total_strategies||0))]),e("div",{staticClass:"summary-label"},[t._v(t._s(t.$t("systemOverview.totalStrategies")||"Total Strategies"))])])]),e("div",{staticClass:"summary-card"},[e("div",{staticClass:"summary-icon",staticStyle:{background:"linear-gradient(135deg, #11998e, #38ef7d)"}},[e("a-icon",{attrs:{type:"play-circle"}})],1),e("div",{staticClass:"summary-info"},[e("div",{staticClass:"summary-value"},[t._v(t._s(t.strategySummary.running_strategies||0))]),e("div",{staticClass:"summary-sub"},[t._v(" "+t._s(t.$t("systemOverview.live")||"实盘")+": "+t._s(t.strategySummary.running_live_strategies||0)+" / "+t._s(t.$t("systemOverview.signal")||"仅通知")+": "+t._s(t.strategySummary.running_signal_strategies||0)+" ")]),e("div",{staticClass:"summary-label"},[t._v(t._s(t.$t("systemOverview.runningStrategies")||"Running"))])])]),e("div",{staticClass:"summary-card"},[e("div",{staticClass:"summary-icon",staticStyle:{background:"linear-gradient(135deg, #f093fb, #f5576c)"}},[e("a-icon",{attrs:{type:"dollar"}})],1),e("div",{staticClass:"summary-info"},[e("div",{staticClass:"summary-value"},[t._v(t._s(t.formatNumber(t.strategySummary.total_capital)))]),e("div",{staticClass:"summary-sub"},[t._v(" "+t._s(t.$t("systemOverview.live")||"实盘")+": "+t._s(t.formatNumber(t.strategySummary.live_capital))+" / "+t._s(t.$t("systemOverview.signal")||"仅通知")+": "+t._s(t.formatNumber(t.strategySummary.signal_capital))+" ")]),e("div",{staticClass:"summary-label"},[t._v(t._s(t.$t("systemOverview.totalCapital")||"Total Capital"))])])]),e("div",{staticClass:"summary-card"},[e("div",{staticClass:"summary-icon",style:{background:(t.strategySummary.total_pnl||0)>=0?"linear-gradient(135deg, #11998e, #38ef7d)":"linear-gradient(135deg, #ff416c, #ff4b2b)"}},[e("a-icon",{attrs:{type:"rise"}})],1),e("div",{staticClass:"summary-info"},[e("div",{staticClass:"summary-value",class:(t.strategySummary.total_pnl||0)>=0?"text-profit":"text-loss"},[t._v(" "+t._s(t.formatPnl(t.strategySummary.total_pnl))+" "),e("span",{staticClass:"roi-badge"},[t._v(t._s(t.strategySummary.total_roi||0)+"%")])]),e("div",{staticClass:"summary-sub"},[t._v(" "+t._s(t.$t("systemOverview.live")||"实盘")+": "+t._s(t.formatPnl(t.strategySummary.live_pnl))+" / "+t._s(t.$t("systemOverview.signal")||"仅通知")+": "+t._s(t.formatPnl(t.strategySummary.signal_pnl))+" ")]),e("div",{staticClass:"summary-label"},[t._v(t._s(t.$t("systemOverview.totalPnl")||"Total PnL"))])])])]):t._e(),e("div",{staticClass:"toolbar"},[e("div",{staticClass:"toolbar-left"},[e("a-button",{on:{click:t.loadSystemStrategies}},[e("a-icon",{attrs:{type:"reload"}}),t._v(" "+t._s(t.$t("common.refresh")||"Refresh")+" ")],1),e("a-select",{staticStyle:{width:"140px"},on:{change:t.handleStrategyFilterChange},model:{value:t.strategyStatusFilter,callback:function(e){t.strategyStatusFilter=e},expression:"strategyStatusFilter"}},[e("a-select-option",{attrs:{value:"all"}},[t._v(t._s(t.$t("systemOverview.filterAll")||"All Status"))]),e("a-select-option",{attrs:{value:"running"}},[t._v(t._s(t.$t("systemOverview.filterRunning")||"Running"))]),e("a-select-option",{attrs:{value:"stopped"}},[t._v(t._s(t.$t("systemOverview.filterStopped")||"Stopped"))])],1)],1),e("div",{staticClass:"toolbar-right"},[e("a-input-search",{staticStyle:{width:"280px"},attrs:{placeholder:t.$t("systemOverview.searchPlaceholder")||"Search strategy/symbol/user",allowClear:""},on:{search:t.handleStrategySearch,pressEnter:t.handleStrategySearch},model:{value:t.strategySearchKeyword,callback:function(e){t.strategySearchKeyword=e},expression:"strategySearchKeyword"}})],1)]),e("a-card",{staticClass:"user-table-card",attrs:{bordered:!1}},[e("a-table",{attrs:{columns:t.strategyColumns,dataSource:t.systemStrategies,loading:t.strategyLoading,pagination:t.strategyPagination,rowKey:function(t){return t.id},scroll:{x:1600}},on:{change:t.handleStrategyTableChange},scopedSlots:t._u([{key:"strategyStatus",fn:function(a){return[e("span",{staticClass:"status-cell"},[e("span",{staticClass:"status-dot",class:"running"===a?"dot-running":"dot-stopped"}),e("span",{class:"running"===a?"status-running":"status-stopped"},[t._v(" "+t._s("running"===a?t.$t("systemOverview.running")||"Running":t.$t("systemOverview.stopped")||"Stopped")+" ")])])]}},{key:"userInfo",fn:function(a,s){return[e("a-tooltip",{attrs:{title:s.nickname||s.username||"-"}},[e("span",{staticClass:"user-cell"},[e("a-avatar",{style:{backgroundColor:t.getUserColor(s.user_id),fontSize:"11px",marginRight:"6px"},attrs:{size:"small"}},[t._v(" "+t._s((s.nickname||s.username||"?").charAt(0).toUpperCase())+" ")]),e("span",{staticClass:"user-name"},[t._v(t._s(t.truncate(s.nickname||s.username||"-",8)))])],1)])]}},{key:"symbolInfo",fn:function(a,s){return[e("div",[e("span",{staticClass:"symbol-text"},[t._v(t._s(s.symbol||"-"))]),"cross_sectional"===s.cs_strategy_type?e("a-tag",{staticStyle:{"margin-left":"4px"},attrs:{color:"purple",size:"small"}},[t._v("CS")]):t._e()],1),"cross_sectional"===s.cs_strategy_type&&s.symbol_list&&s.symbol_list.length?e("div",{staticClass:"symbol-count text-muted"},[t._v(" "+t._s(s.symbol_list.length)+" "+t._s(t.$t("systemOverview.symbols")||"symbols")+" ")]):t._e()]}},{key:"capitalInfo",fn:function(a){return[e("span",[t._v(t._s(t.formatNumber(a)))])]}},{key:"pnlInfo",fn:function(a,s){return[e("div",{class:s.total_pnl>=0?"text-profit":"text-loss"},[e("span",{staticClass:"pnl-value"},[t._v(t._s(t.formatPnl(s.total_pnl)))]),e("span",{staticClass:"roi-text"},[t._v("("+t._s(s.roi>=0?"+":"")+t._s(s.roi)+"%)")])]),e("div",{staticClass:"pnl-detail text-muted"},[e("span",[t._v(t._s(t.$t("systemOverview.realized")||"Real")+": "+t._s(t.formatPnl(s.total_realized_pnl)))]),e("span",{staticStyle:{"margin-left":"8px"}},[t._v(t._s(t.$t("systemOverview.unrealized")||"Unreal")+": "+t._s(t.formatPnl(s.total_unrealized_pnl)))])])]}},{key:"positionInfo",fn:function(t,a){return[e("a-badge",{attrs:{count:a.position_count,numberStyle:{backgroundColor:a.position_count>0?"#52c41a":"#d9d9d9"}}})]}},{key:"tradeInfo",fn:function(a){return[e("span",[t._v(t._s(a||0))])]}},{key:"indicatorInfo",fn:function(a){return[a?e("a-tooltip",{attrs:{title:a}},[e("span",{staticClass:"indicator-name"},[t._v(t._s(t.truncate(a,16)))])]):e("span",{staticClass:"text-muted"},[t._v("-")])]}},{key:"exchangeInfo",fn:function(a){return[a?e("span",{staticClass:"exchange-name"},[t._v(t._s(a))]):e("span",{staticClass:"text-muted"},[t._v("-")])]}},{key:"timeframeInfo",fn:function(a){return[a?e("a-tag",{attrs:{size:"small"}},[t._v(t._s(a))]):e("span",{staticClass:"text-muted"},[t._v("-")])]}},{key:"leverageInfo",fn:function(a){return[a>1?e("span",{staticStyle:{color:"#fa8c16","font-weight":"600"}},[t._v(t._s(a)+"x")]):e("span",[t._v(t._s(a||1)+"x")])]}},{key:"createdAtInfo",fn:function(a){return[a?e("span",[t._v(t._s(t.formatTime(a)))]):e("span",{staticClass:"text-muted"},[t._v("-")])]}}])})],1)],1),e("a-tab-pane",{key:"orders",attrs:{tab:t.$t("adminOrders.tabTitle")||"Order List"}},[t.orderSummary?e("div",{staticClass:"summary-cards"},[e("div",{staticClass:"summary-card"},[e("div",{staticClass:"summary-icon",staticStyle:{background:"linear-gradient(135deg, #667eea, #764ba2)"}},[e("a-icon",{attrs:{type:"file-text"}})],1),e("div",{staticClass:"summary-info"},[e("div",{staticClass:"summary-value"},[t._v(t._s(t.orderSummary.total_orders||0))]),e("div",{staticClass:"summary-label"},[t._v(t._s(t.$t("adminOrders.totalOrders")||"Total Orders"))])])]),e("div",{staticClass:"summary-card"},[e("div",{staticClass:"summary-icon",staticStyle:{background:"linear-gradient(135deg, #11998e, #38ef7d)"}},[e("a-icon",{attrs:{type:"check-circle"}})],1),e("div",{staticClass:"summary-info"},[e("div",{staticClass:"summary-value"},[t._v(t._s(t.orderSummary.paid_orders||0))]),e("div",{staticClass:"summary-label"},[t._v(t._s(t.$t("adminOrders.paidOrders")||"Paid"))])])]),e("div",{staticClass:"summary-card"},[e("div",{staticClass:"summary-icon",staticStyle:{background:"linear-gradient(135deg, #f093fb, #f5576c)"}},[e("a-icon",{attrs:{type:"clock-circle"}})],1),e("div",{staticClass:"summary-info"},[e("div",{staticClass:"summary-value"},[t._v(t._s(t.orderSummary.pending_orders||0))]),e("div",{staticClass:"summary-label"},[t._v(t._s(t.$t("adminOrders.pendingOrders")||"Pending"))])])]),e("div",{staticClass:"summary-card"},[e("div",{staticClass:"summary-icon",staticStyle:{background:"linear-gradient(135deg, #fa709a, #fee140)"}},[e("a-icon",{attrs:{type:"dollar"}})],1),e("div",{staticClass:"summary-info"},[e("div",{staticClass:"summary-value"},[t._v(t._s(t.formatNumber(t.orderSummary.total_revenue))+" "),e("span",{staticStyle:{"font-size":"13px",color:"#999"}},[t._v("USDT")])]),e("div",{staticClass:"summary-label"},[t._v(t._s(t.$t("adminOrders.totalRevenue")||"Total Revenue"))])])])]):t._e(),e("div",{staticClass:"toolbar"},[e("div",{staticClass:"toolbar-left"},[e("a-button",{on:{click:t.loadOrders}},[e("a-icon",{attrs:{type:"reload"}}),t._v(" "+t._s(t.$t("common.refresh")||"Refresh")+" ")],1),e("a-select",{staticStyle:{width:"140px"},on:{change:t.handleOrderFilterChange},model:{value:t.orderStatusFilter,callback:function(e){t.orderStatusFilter=e},expression:"orderStatusFilter"}},[e("a-select-option",{attrs:{value:"all"}},[t._v(t._s(t.$t("adminOrders.filterAll")||"All Status"))]),e("a-select-option",{attrs:{value:"pending"}},[t._v(t._s(t.$t("adminOrders.filterPending")||"Pending"))]),e("a-select-option",{attrs:{value:"paid"}},[t._v(t._s(t.$t("adminOrders.filterPaid")||"Paid"))]),e("a-select-option",{attrs:{value:"confirmed"}},[t._v(t._s(t.$t("adminOrders.filterConfirmed")||"Confirmed"))]),e("a-select-option",{attrs:{value:"expired"}},[t._v(t._s(t.$t("adminOrders.filterExpired")||"Expired"))])],1)],1),e("div",{staticClass:"toolbar-right"},[e("a-input-search",{staticStyle:{width:"280px"},attrs:{placeholder:t.$t("adminOrders.searchPlaceholder")||"Search by username/email",allowClear:""},on:{search:t.handleOrderSearch,pressEnter:t.handleOrderSearch},model:{value:t.orderSearchKeyword,callback:function(e){t.orderSearchKeyword=e},expression:"orderSearchKeyword"}})],1)]),e("a-card",{staticClass:"user-table-card",attrs:{bordered:!1}},[e("a-table",{attrs:{columns:t.orderColumns,dataSource:t.orders,loading:t.orderLoading,pagination:t.orderPagination,rowKey:function(t){return t.order_type+"-"+t.id},scroll:{x:1400}},on:{change:t.handleOrderTableChange},scopedSlots:t._u([{key:"orderUserInfo",fn:function(a,s){return[e("a-tooltip",{attrs:{title:(s.nickname||s.username||"-")+" ("+(s.user_email||"")+")"}},[e("span",{staticClass:"user-cell"},[e("a-avatar",{style:{backgroundColor:t.getUserColor(s.user_id),fontSize:"11px",marginRight:"6px"},attrs:{size:"small"}},[t._v(" "+t._s((s.nickname||s.username||"?").charAt(0).toUpperCase())+" ")]),e("span",{staticClass:"user-name"},[t._v(t._s(t.truncate(s.nickname||s.username||"-",10)))])],1)])]}},{key:"orderTypeInfo",fn:function(a){return[e("a-tag",{attrs:{color:"usdt"===a?"green":"blue"}},[t._v(" "+t._s("usdt"===a?"USDT":"Mock")+" ")])]}},{key:"planInfo",fn:function(a){return[e("a-tag",{attrs:{color:"lifetime"===a?"gold":"yearly"===a?"purple":"cyan"}},[t._v(" "+t._s("lifetime"===a?t.$t("adminOrders.lifetime")||"Lifetime":"yearly"===a?t.$t("adminOrders.yearly")||"Yearly":t.$t("adminOrders.monthly")||"Monthly")+" ")])]}},{key:"amountInfo",fn:function(a,s){return[e("span",{staticStyle:{"font-weight":"600"}},[t._v(t._s(a))]),e("span",{staticClass:"text-muted",staticStyle:{"margin-left":"4px"}},[t._v(t._s(s.currency))])]}},{key:"orderStatusInfo",fn:function(a){return[e("a-tag",{attrs:{color:t.getOrderStatusColor(a)}},[t._v(t._s(t.getOrderStatusLabel(a)))])]}},{key:"chainInfo",fn:function(a){return[a?e("span",[t._v(t._s(a))]):e("span",{staticClass:"text-muted"},[t._v("-")])]}},{key:"addressInfo",fn:function(a){return[a?e("a-tooltip",{attrs:{title:a}},[e("span",{staticClass:"address-text"},[t._v(t._s(t.truncate(a,12)))])]):e("span",{staticClass:"text-muted"},[t._v("-")])]}},{key:"txHashInfo",fn:function(a){return[a?e("a-tooltip",{attrs:{title:a}},[e("span",{staticClass:"hash-text"},[t._v(t._s(t.truncate(a,14)))])]):e("span",{staticClass:"text-muted"},[t._v("-")])]}},{key:"orderCreatedAt",fn:function(a){return[a?e("span",[t._v(t._s(t.formatTime(a)))]):e("span",{staticClass:"text-muted"},[t._v("-")])]}}])})],1)],1),e("a-tab-pane",{key:"aiStats",attrs:{tab:t.$t("adminAiStats.tabTitle")||"AI Analysis"}},[t.aiStatsSummary?e("div",{staticClass:"summary-cards"},[e("div",{staticClass:"summary-card"},[e("div",{staticClass:"summary-icon",staticStyle:{background:"linear-gradient(135deg, #667eea, #764ba2)"}},[e("a-icon",{attrs:{type:"thunderbolt"}})],1),e("div",{staticClass:"summary-info"},[e("div",{staticClass:"summary-value"},[t._v(t._s(t.aiStatsSummary.total_analyses||0))]),e("div",{staticClass:"summary-label"},[t._v(t._s(t.$t("adminAiStats.totalAnalyses")||"Total Analyses"))])])]),e("div",{staticClass:"summary-card"},[e("div",{staticClass:"summary-icon",staticStyle:{background:"linear-gradient(135deg, #11998e, #38ef7d)"}},[e("a-icon",{attrs:{type:"team"}})],1),e("div",{staticClass:"summary-info"},[e("div",{staticClass:"summary-value"},[t._v(t._s(t.aiStatsSummary.unique_users||0))]),e("div",{staticClass:"summary-label"},[t._v(t._s(t.$t("adminAiStats.activeUsers")||"Active Users"))])])]),e("div",{staticClass:"summary-card"},[e("div",{staticClass:"summary-icon",staticStyle:{background:"linear-gradient(135deg, #f093fb, #f5576c)"}},[e("a-icon",{attrs:{type:"stock"}})],1),e("div",{staticClass:"summary-info"},[e("div",{staticClass:"summary-value"},[t._v(t._s(t.aiStatsSummary.unique_symbols||0))]),e("div",{staticClass:"summary-label"},[t._v(t._s(t.$t("adminAiStats.uniqueSymbols")||"Symbols Analyzed"))])])]),e("div",{staticClass:"summary-card"},[e("div",{staticClass:"summary-icon",staticStyle:{background:"linear-gradient(135deg, #fa709a, #fee140)"}},[e("a-icon",{attrs:{type:"like"}})],1),e("div",{staticClass:"summary-info"},[e("div",{staticClass:"summary-value"},[t._v(" "+t._s(t.aiStatsSummary.correct_count||0)+" "),e("span",{staticStyle:{"font-size":"13px",color:"#999"}},[t._v("/ "+t._s(t.aiStatsSummary.total_memory||0))])]),e("div",{staticClass:"summary-label"},[t._v(t._s(t.$t("adminAiStats.accuracy")||"Correct / Verified"))])])])]):t._e(),e("div",{staticClass:"toolbar"},[e("div",{staticClass:"toolbar-left"},[e("a-button",{on:{click:t.loadAiStats}},[e("a-icon",{attrs:{type:"reload"}}),t._v(" "+t._s(t.$t("common.refresh")||"Refresh")+" ")],1)],1),e("div",{staticClass:"toolbar-right"},[e("a-input-search",{staticStyle:{width:"280px"},attrs:{placeholder:t.$t("adminAiStats.searchPlaceholder")||"Search by username",allowClear:""},on:{search:t.handleAiStatsSearch,pressEnter:t.handleAiStatsSearch},model:{value:t.aiStatsSearchKeyword,callback:function(e){t.aiStatsSearchKeyword=e},expression:"aiStatsSearchKeyword"}})],1)]),e("a-card",{staticClass:"user-table-card",staticStyle:{"margin-bottom":"20px"},attrs:{bordered:!1}},[e("h4",{staticStyle:{"margin-bottom":"12px",color:"#1e3a5f","font-weight":"600"}},[e("a-icon",{staticStyle:{"margin-right":"8px"},attrs:{type:"bar-chart"}}),t._v(" "+t._s(t.$t("adminAiStats.userStatsTitle")||"Per-User Statistics")+" ")],1),e("a-table",{attrs:{columns:t.aiUserColumns,dataSource:t.aiUserStats,loading:t.aiStatsLoading,pagination:t.aiStatsPagination,rowKey:function(t){return t.user_id}},on:{change:t.handleAiStatsTableChange},scopedSlots:t._u([{key:"aiUserInfo",fn:function(a,s){return[e("a-tooltip",{attrs:{title:(s.nickname||s.username||"-")+" ("+(s.email||"")+")"}},[e("span",{staticClass:"user-cell"},[e("a-avatar",{style:{backgroundColor:t.getUserColor(s.user_id),fontSize:"11px",marginRight:"6px"},attrs:{size:"small"}},[t._v(" "+t._s((s.nickname||s.username||"?").charAt(0).toUpperCase())+" ")]),e("span",{staticClass:"user-name"},[t._v(t._s(t.truncate(s.nickname||s.username||"-",10)))])],1)])]}},{key:"analysisCountInfo",fn:function(a){return[e("span",{staticStyle:{"font-weight":"600",color:"#1890ff"}},[t._v(t._s(a||0))])]}},{key:"accuracyInfo",fn:function(a,s){return[e("span",{staticClass:"text-profit"},[t._v(t._s(s.correct||0))]),e("span",{staticClass:"text-muted"},[t._v(" / ")]),e("span",{staticClass:"text-loss"},[t._v(t._s(s.incorrect||0))])]}},{key:"feedbackInfo",fn:function(a,s){return[e("a-tooltip",{attrs:{title:(t.$t("adminAiStats.helpful")||"Helpful")+" / "+(t.$t("adminAiStats.notHelpful")||"Not Helpful")}},[e("span",{staticStyle:{color:"#52c41a"}},[e("a-icon",{attrs:{type:"like"}}),t._v(" "+t._s(s.helpful||0))],1),e("span",{staticClass:"text-muted"},[t._v(" / ")]),e("span",{staticStyle:{color:"#ff4d4f"}},[e("a-icon",{attrs:{type:"dislike"}}),t._v(" "+t._s(s.not_helpful||0))],1)])]}},{key:"lastAnalysisAt",fn:function(a){return[a?e("span",[t._v(t._s(t.formatTime(a)))]):e("span",{staticClass:"text-muted"},[t._v("-")])]}}])})],1),e("a-card",{staticClass:"user-table-card",attrs:{bordered:!1}},[e("h4",{staticStyle:{"margin-bottom":"12px",color:"#1e3a5f","font-weight":"600"}},[e("a-icon",{staticStyle:{"margin-right":"8px"},attrs:{type:"history"}}),t._v(" "+t._s(t.$t("adminAiStats.recentTitle")||"Recent Analysis Records")+" ")],1),e("a-table",{attrs:{columns:t.aiRecentColumns,dataSource:t.aiRecentRecords,loading:t.aiStatsLoading,pagination:!1,rowKey:function(t){return t.id},size:"small"},scopedSlots:t._u([{key:"recentUserInfo",fn:function(a,s){return[e("span",{staticClass:"user-cell"},[e("a-avatar",{style:{backgroundColor:t.getUserColor(s.user_id),fontSize:"11px",marginRight:"6px"},attrs:{size:"small"}},[t._v(" "+t._s((s.nickname||s.username||"?").charAt(0).toUpperCase())+" ")]),e("span",{staticClass:"user-name"},[t._v(t._s(t.truncate(s.nickname||s.username||"-",8)))])],1)]}},{key:"recentStatusInfo",fn:function(a){return[e("a-tag",{attrs:{color:"completed"===a?"green":"failed"===a?"red":"blue"}},[t._v(" "+t._s(a)+" ")])]}},{key:"recentCreatedAt",fn:function(a){return[a?e("span",[t._v(t._s(t.formatTime(a)))]):e("span",{staticClass:"text-muted"},[t._v("-")])]}}])})],1)],1)],1),e("a-modal",{attrs:{title:t.isEdit?t.$t("userManage.editUser")||"Edit User":t.$t("userManage.createUser")||"Create User",confirmLoading:t.modalLoading},on:{ok:t.handleModalOk,cancel:t.handleModalCancel},model:{value:t.modalVisible,callback:function(e){t.modalVisible=e},expression:"modalVisible"}},[e("a-form",{attrs:{form:t.form,layout:"vertical"}},[e("a-form-item",{attrs:{label:t.$t("userManage.username")||"Username"}},[e("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["username",{rules:[{required:!t.isEdit,message:t.$t("userManage.usernameRequired")||"Please enter username"}]}],expression:"['username', {\n rules: [{ required: !isEdit, message: $t('userManage.usernameRequired') || 'Please enter username' }]\n }]"}],attrs:{disabled:t.isEdit,placeholder:t.$t("userManage.usernamePlaceholder")||"Enter username"}},[e("a-icon",{attrs:{slot:"prefix",type:"user"},slot:"prefix"})],1)],1),t.isEdit?t._e():e("a-form-item",{attrs:{label:t.$t("userManage.password")||"Password"}},[e("a-input-password",{directives:[{name:"decorator",rawName:"v-decorator",value:["password",{rules:[{required:!0,message:t.$t("userManage.passwordRequired")||"Please enter password"},{min:6,message:t.$t("userManage.passwordMin")||"Password must be at least 6 characters"}]}],expression:"['password', {\n rules: [\n { required: true, message: $t('userManage.passwordRequired') || 'Please enter password' },\n { min: 6, message: $t('userManage.passwordMin') || 'Password must be at least 6 characters' }\n ]\n }]"}],attrs:{placeholder:t.$t("userManage.passwordPlaceholder")||"Enter password (min 6 characters)"}},[e("a-icon",{attrs:{slot:"prefix",type:"lock"},slot:"prefix"})],1)],1),e("a-form-item",{attrs:{label:t.$t("userManage.nickname")||"Nickname"}},[e("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["nickname"],expression:"['nickname']"}],attrs:{placeholder:t.$t("userManage.nicknamePlaceholder")||"Enter nickname"}},[e("a-icon",{attrs:{slot:"prefix",type:"smile"},slot:"prefix"})],1)],1),e("a-form-item",{attrs:{label:t.$t("userManage.email")||"Email"}},[e("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["email",{rules:[{type:"email",message:t.$t("userManage.emailInvalid")||"Invalid email format"}]}],expression:"['email', {\n rules: [{ type: 'email', message: $t('userManage.emailInvalid') || 'Invalid email format' }]\n }]"}],attrs:{placeholder:t.$t("userManage.emailPlaceholder")||"Enter email"}},[e("a-icon",{attrs:{slot:"prefix",type:"mail"},slot:"prefix"})],1)],1),e("a-form-item",{attrs:{label:t.$t("userManage.role")||"Role"}},[e("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["role",{initialValue:"user"}],expression:"['role', { initialValue: 'user' }]"}],attrs:{placeholder:t.$t("userManage.rolePlaceholder")||"Select role"}},t._l(t.roles,function(a){return e("a-select-option",{key:a.id,attrs:{value:a.id}},[t._v(" "+t._s(t.getRoleLabel(a.id))+" ")])}),1)],1),t.isEdit?e("a-form-item",{attrs:{label:t.$t("userManage.status")||"Status"}},[e("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["status",{initialValue:"active"}],expression:"['status', { initialValue: 'active' }]"}],attrs:{placeholder:t.$t("userManage.statusPlaceholder")||"Select status"}},[e("a-select-option",{attrs:{value:"active"}},[t._v(t._s(t.$t("userManage.active")||"Active"))]),e("a-select-option",{attrs:{value:"disabled"}},[t._v(t._s(t.$t("userManage.disabled")||"Disabled"))])],1)],1):t._e()],1)],1),e("a-modal",{attrs:{title:t.$t("userManage.resetPassword")||"Reset Password",confirmLoading:t.resetPasswordLoading},on:{ok:t.handleResetPassword},model:{value:t.resetPasswordVisible,callback:function(e){t.resetPasswordVisible=e},expression:"resetPasswordVisible"}},[e("a-form",{attrs:{form:t.resetPasswordForm,layout:"vertical"}},[e("a-alert",{staticStyle:{"margin-bottom":"16px"},attrs:{message:t.$t("userManage.resetPasswordWarning")||"This will reset the user's password",type:"warning",showIcon:""}}),e("a-form-item",{attrs:{label:t.$t("userManage.newPassword")||"New Password"}},[e("a-input-password",{directives:[{name:"decorator",rawName:"v-decorator",value:["new_password",{rules:[{required:!0,message:t.$t("userManage.passwordRequired")||"Please enter new password"},{min:6,message:t.$t("userManage.passwordMin")||"Password must be at least 6 characters"}]}],expression:"['new_password', {\n rules: [\n { required: true, message: $t('userManage.passwordRequired') || 'Please enter new password' },\n { min: 6, message: $t('userManage.passwordMin') || 'Password must be at least 6 characters' }\n ]\n }]"}],attrs:{placeholder:t.$t("userManage.newPasswordPlaceholder")||"Enter new password"}},[e("a-icon",{attrs:{slot:"prefix",type:"lock"},slot:"prefix"})],1)],1)],1)],1),e("a-modal",{attrs:{title:(t.$t("userManage.adjustCredits")||"Adjust Credits")+(t.creditsEditingUser?" - ".concat(t.creditsEditingUser.username):""),confirmLoading:t.creditsLoading},on:{ok:t.handleSetCredits},model:{value:t.creditsModalVisible,callback:function(e){t.creditsModalVisible=e},expression:"creditsModalVisible"}},[e("a-form",{attrs:{layout:"vertical"}},[t.creditsEditingUser?e("div",{staticClass:"current-credits-info"},[e("span",{staticClass:"label"},[t._v(t._s(t.$t("userManage.currentCredits")||"Current Credits")+":")]),e("span",{staticClass:"value"},[t._v(t._s(t.formatCredits(t.creditsEditingUser.credits)))])]):t._e(),e("a-form-item",{attrs:{label:t.$t("userManage.newCredits")||"New Credits"}},[e("a-input-number",{staticStyle:{width:"100%"},attrs:{min:0,precision:2,placeholder:t.$t("userManage.enterCredits")||"Enter new credits amount"},model:{value:t.newCredits,callback:function(e){t.newCredits=e},expression:"newCredits"}})],1),e("a-form-item",{attrs:{label:t.$t("userManage.remark")||"Remark"}},[e("a-input",{attrs:{placeholder:t.$t("userManage.remarkPlaceholder")||"Optional remark"},model:{value:t.creditsRemark,callback:function(e){t.creditsRemark=e},expression:"creditsRemark"}})],1)],1)],1),e("a-modal",{attrs:{title:(t.$t("userManage.setVip")||"Set VIP")+(t.vipEditingUser?" - ".concat(t.vipEditingUser.username):""),confirmLoading:t.vipLoading},on:{ok:t.handleSetVip},model:{value:t.vipModalVisible,callback:function(e){t.vipModalVisible=e},expression:"vipModalVisible"}},[e("a-form",{attrs:{layout:"vertical"}},[t.vipEditingUser&&t.vipEditingUser.vip_expires_at?e("div",{staticClass:"current-vip-info"},[e("span",{staticClass:"label"},[t._v(t._s(t.$t("userManage.currentVip")||"Current VIP")+":")]),e("span",{staticClass:"value",class:t.isVipActive(t.vipEditingUser.vip_expires_at)?"active":"expired"},[t._v(" "+t._s(t.isVipActive(t.vipEditingUser.vip_expires_at)?(t.$t("userManage.vipActive")||"Active")+" (".concat(t.formatDate(t.vipEditingUser.vip_expires_at),")"):t.$t("userManage.vipExpired")||"Expired")+" ")])]):t._e(),e("a-form-item",{attrs:{label:t.$t("userManage.vipDays")||"VIP Days"}},[e("a-select",{staticStyle:{width:"100%"},model:{value:t.vipDays,callback:function(e){t.vipDays=e},expression:"vipDays"}},[e("a-select-option",{attrs:{value:0}},[t._v(t._s(t.$t("userManage.cancelVip")||"Cancel VIP"))]),e("a-select-option",{attrs:{value:7}},[t._v("7 "+t._s(t.$t("userManage.days")||"days"))]),e("a-select-option",{attrs:{value:30}},[t._v("30 "+t._s(t.$t("userManage.days")||"days"))]),e("a-select-option",{attrs:{value:90}},[t._v("90 "+t._s(t.$t("userManage.days")||"days"))]),e("a-select-option",{attrs:{value:180}},[t._v("180 "+t._s(t.$t("userManage.days")||"days"))]),e("a-select-option",{attrs:{value:365}},[t._v("365 "+t._s(t.$t("userManage.days")||"days"))]),e("a-select-option",{attrs:{value:-1}},[t._v(t._s(t.$t("userManage.customDate")||"Custom Date"))])],1)],1),-1===t.vipDays?e("a-form-item",{attrs:{label:t.$t("userManage.vipExpiresAt")||"VIP Expires At"}},[e("a-date-picker",{staticStyle:{width:"100%"},attrs:{showTime:"",format:"YYYY-MM-DD HH:mm:ss"},model:{value:t.vipCustomDate,callback:function(e){t.vipCustomDate=e},expression:"vipCustomDate"}})],1):t._e(),e("a-form-item",{attrs:{label:t.$t("userManage.remark")||"Remark"}},[e("a-input",{attrs:{placeholder:t.$t("userManage.remarkPlaceholder")||"Optional remark"},model:{value:t.vipRemark,callback:function(e){t.vipRemark=e},expression:"vipRemark"}})],1)],1)],1)],1)},r=[],i=a(81127),n=a(56252),o=a(76338),l=a(84841),d=a(55434),c=a(95353),u={name:"UserManage",mixins:[d.t],data:function(){return{activeTab:"users",loading:!1,users:[],roles:[],searchKeyword:"",pagination:{current:1,pageSize:10,total:0},modalVisible:!1,modalLoading:!1,isEdit:!1,editingUser:null,resetPasswordVisible:!1,resetPasswordLoading:!1,resetPasswordUserId:null,creditsModalVisible:!1,creditsLoading:!1,creditsEditingUser:null,newCredits:0,creditsRemark:"",vipModalVisible:!1,vipLoading:!1,vipEditingUser:null,vipDays:30,vipCustomDate:null,vipRemark:"",strategyLoading:!1,systemStrategies:[],strategySummary:null,strategyStatusFilter:"all",strategySearchKeyword:"",strategyPagination:{current:1,pageSize:20,total:0},strategiesLoaded:!1,orderLoading:!1,orders:[],orderSummary:null,orderStatusFilter:"all",orderSearchKeyword:"",orderPagination:{current:1,pageSize:20,total:0},ordersLoaded:!1,aiStatsLoading:!1,aiUserStats:[],aiRecentRecords:[],aiStatsSummary:null,aiStatsSearchKeyword:"",aiStatsPagination:{current:1,pageSize:20,total:0},aiStatsLoaded:!1}},computed:(0,o.A)((0,o.A)({},(0,c.L8)(["userInfo"])),{},{isDarkTheme:function(){return"dark"===this.navTheme||"realdark"===this.navTheme},currentUserId:function(){var t;return null===(t=this.userInfo)||void 0===t?void 0:t.id},columns:function(){return[{title:"ID",dataIndex:"id",width:60},{title:this.$t("userManage.username")||"Username",dataIndex:"username",width:120},{title:this.$t("userManage.nickname")||"Nickname",dataIndex:"nickname",width:100},{title:this.$t("userManage.email")||"Email",dataIndex:"email",width:180},{title:this.$t("userManage.role")||"Role",dataIndex:"role",width:90,scopedSlots:{customRender:"role"}},{title:this.$t("userManage.credits")||"Credits",dataIndex:"credits",width:100,scopedSlots:{customRender:"credits"}},{title:"VIP",dataIndex:"vip_expires_at",width:120,scopedSlots:{customRender:"vip_expires_at"}},{title:this.$t("userManage.status")||"Status",dataIndex:"status",width:90,scopedSlots:{customRender:"status"}},{title:this.$t("userManage.lastLogin")||"Last Login",dataIndex:"last_login_at",width:150,scopedSlots:{customRender:"last_login_at"}},{title:this.$t("common.actions")||"Actions",dataIndex:"action",width:180,scopedSlots:{customRender:"action"}}]},strategyColumns:function(){return[{title:"ID",dataIndex:"id",width:60,fixed:"left"},{title:this.$t("systemOverview.colUser")||"User",dataIndex:"username",width:110,fixed:"left",scopedSlots:{customRender:"userInfo"}},{title:this.$t("systemOverview.colStrategy")||"Strategy",dataIndex:"strategy_name",width:160,ellipsis:!0},{title:this.$t("systemOverview.colStatus")||"Status",dataIndex:"status",width:100,scopedSlots:{customRender:"strategyStatus"}},{title:this.$t("systemOverview.colSymbol")||"Symbol",dataIndex:"symbol",width:140,scopedSlots:{customRender:"symbolInfo"}},{title:this.$t("systemOverview.colCapital")||"Capital",dataIndex:"initial_capital",width:110,scopedSlots:{customRender:"capitalInfo"}},{title:this.$t("systemOverview.colPnl")||"PnL / ROI",dataIndex:"total_pnl",width:200,scopedSlots:{customRender:"pnlInfo"}},{title:this.$t("systemOverview.colPositions")||"Pos",dataIndex:"position_count",width:70,align:"center",scopedSlots:{customRender:"positionInfo"}},{title:this.$t("systemOverview.colTrades")||"Trades",dataIndex:"trade_count",width:80,align:"center",scopedSlots:{customRender:"tradeInfo"}},{title:this.$t("systemOverview.colIndicator")||"Indicator",dataIndex:"indicator_name",width:130,scopedSlots:{customRender:"indicatorInfo"}},{title:this.$t("systemOverview.colExchange")||"Exchange",dataIndex:"exchange_name",width:100,scopedSlots:{customRender:"exchangeInfo"}},{title:this.$t("systemOverview.colTimeframe")||"TF",dataIndex:"timeframe",width:70,align:"center",scopedSlots:{customRender:"timeframeInfo"}},{title:this.$t("systemOverview.colLeverage")||"Lev",dataIndex:"leverage",width:70,align:"center",scopedSlots:{customRender:"leverageInfo"}},{title:this.$t("systemOverview.colCreatedAt")||"Created",dataIndex:"created_at",width:150,scopedSlots:{customRender:"createdAtInfo"}}]},orderColumns:function(){return[{title:this.$t("adminOrders.colUser")||"User",dataIndex:"username",width:120,scopedSlots:{customRender:"orderUserInfo"}},{title:this.$t("adminOrders.colType")||"Type",dataIndex:"order_type",width:80,scopedSlots:{customRender:"orderTypeInfo"}},{title:this.$t("adminOrders.colPlan")||"Plan",dataIndex:"plan",width:100,scopedSlots:{customRender:"planInfo"}},{title:this.$t("adminOrders.colAmount")||"Amount",dataIndex:"amount",width:120,scopedSlots:{customRender:"amountInfo"}},{title:this.$t("adminOrders.colStatus")||"Status",dataIndex:"status",width:100,scopedSlots:{customRender:"orderStatusInfo"}},{title:this.$t("adminOrders.colChain")||"Chain",dataIndex:"chain",width:80,scopedSlots:{customRender:"chainInfo"}},{title:this.$t("adminOrders.colAddress")||"Address",dataIndex:"address",width:140,scopedSlots:{customRender:"addressInfo"}},{title:this.$t("adminOrders.colTxHash")||"Tx Hash",dataIndex:"tx_hash",width:160,scopedSlots:{customRender:"txHashInfo"}},{title:this.$t("adminOrders.colCreatedAt")||"Created",dataIndex:"created_at",width:150,scopedSlots:{customRender:"orderCreatedAt"}}]},aiUserColumns:function(){return[{title:this.$t("adminAiStats.colUser")||"User",dataIndex:"username",width:140,scopedSlots:{customRender:"aiUserInfo"}},{title:this.$t("adminAiStats.colAnalysisCount")||"Analyses",dataIndex:"analysis_count",width:100,align:"center",scopedSlots:{customRender:"analysisCountInfo"},sorter:function(t,e){return t.analysis_count-e.analysis_count},defaultSortOrder:"descend"},{title:this.$t("adminAiStats.colSymbols")||"Symbols",dataIndex:"symbol_count",width:90,align:"center"},{title:this.$t("adminAiStats.colMarkets")||"Markets",dataIndex:"market_count",width:90,align:"center"},{title:this.$t("adminAiStats.colAccuracy")||"Correct / Wrong",dataIndex:"correct",width:130,align:"center",scopedSlots:{customRender:"accuracyInfo"}},{title:this.$t("adminAiStats.colFeedback")||"Feedback",dataIndex:"helpful",width:130,align:"center",scopedSlots:{customRender:"feedbackInfo"}},{title:this.$t("adminAiStats.colLastAnalysis")||"Last Analysis",dataIndex:"last_analysis_at",width:160,scopedSlots:{customRender:"lastAnalysisAt"}}]},aiRecentColumns:function(){return[{title:"ID",dataIndex:"id",width:60},{title:this.$t("adminAiStats.colUser")||"User",dataIndex:"username",width:120,scopedSlots:{customRender:"recentUserInfo"}},{title:this.$t("adminAiStats.colMarket")||"Market",dataIndex:"market",width:80},{title:this.$t("adminAiStats.colSymbol")||"Symbol",dataIndex:"symbol",width:120},{title:this.$t("adminAiStats.colModel")||"Model",dataIndex:"model",width:140,ellipsis:!0},{title:this.$t("adminAiStats.colStatus")||"Status",dataIndex:"status",width:100,scopedSlots:{customRender:"recentStatusInfo"}},{title:this.$t("adminAiStats.colCreatedAt")||"Time",dataIndex:"created_at",width:160,scopedSlots:{customRender:"recentCreatedAt"}}]}}),beforeCreate:function(){this.form=this.$form.createForm(this),this.resetPasswordForm=this.$form.createForm(this,{name:"resetPassword"})},mounted:function(){this.loadUsers(),this.loadRoles()},methods:{handleTabChange:function(t){"strategies"!==t||this.strategiesLoaded||this.loadSystemStrategies(),"orders"!==t||this.ordersLoaded||this.loadOrders(),"aiStats"!==t||this.aiStatsLoaded||this.loadAiStats()},loadSystemStrategies:function(){var t=this;return(0,n.A)((0,i.A)().m(function e(){var a;return(0,i.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return t.strategyLoading=!0,e.p=1,e.n=2,(0,l.DK)({page:t.strategyPagination.current,page_size:t.strategyPagination.pageSize,status:"all"===t.strategyStatusFilter?"":t.strategyStatusFilter,search:t.strategySearchKeyword||""});case 2:a=e.v,1===a.code?(t.systemStrategies=a.data.items||[],t.strategyPagination.total=a.data.total||0,t.strategySummary=a.data.summary||{},t.strategiesLoaded=!0):t.$message.error(a.msg||"Failed to load strategies"),e.n=4;break;case 3:e.p=3,e.v,t.$message.error("Failed to load system strategies");case 4:return e.p=4,t.strategyLoading=!1,e.f(4);case 5:return e.a(2)}},e,null,[[1,3,4,5]])}))()},handleStrategySearch:function(){this.strategyPagination.current=1,this.loadSystemStrategies()},handleStrategyFilterChange:function(){this.strategyPagination.current=1,this.loadSystemStrategies()},handleStrategyTableChange:function(t){this.strategyPagination.current=t.current,this.strategyPagination.pageSize=t.pageSize,this.loadSystemStrategies()},getUserColor:function(t){var e=["#1890ff","#722ed1","#13c2c2","#fa8c16","#eb2f96","#52c41a","#2f54eb","#faad14"];return e[(t||0)%e.length]},formatNumber:function(t){return t||0===t?Number(t).toLocaleString("en-US",{minimumFractionDigits:0,maximumFractionDigits:2}):"0"},formatPnl:function(t){if(!t&&0!==t)return"0";var e=Number(t),a=e>=0?"+":"";return a+e.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:4})},truncate:function(t,e){return t?t.length>e?t.substring(0,e)+"...":t:""},loadUsers:function(){var t=this;return(0,n.A)((0,i.A)().m(function e(){var a;return(0,i.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return t.loading=!0,e.p=1,e.n=2,(0,l.aU)({page:t.pagination.current,page_size:t.pagination.pageSize,search:t.searchKeyword||""});case 2:a=e.v,1===a.code?(t.users=a.data.items||[],t.pagination.total=a.data.total||0):t.$message.error(a.msg||"Failed to load users"),e.n=4;break;case 3:e.p=3,e.v,t.$message.error("Failed to load users");case 4:return e.p=4,t.loading=!1,e.f(4);case 5:return e.a(2)}},e,null,[[1,3,4,5]])}))()},handleSearch:function(){this.pagination.current=1,this.loadUsers()},loadRoles:function(){var t=this;return(0,n.A)((0,i.A)().m(function e(){var a;return(0,i.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.p=0,e.n=1,(0,l.O0)();case 1:a=e.v,1===a.code&&(t.roles=a.data.roles||[]),e.n=3;break;case 2:e.p=2,e.v;case 3:return e.a(2)}},e,null,[[0,2]])}))()},handleTableChange:function(t){this.pagination.current=t.current,this.pagination.pageSize=t.pageSize,this.loadUsers()},showCreateModal:function(){var t=this;this.isEdit=!1,this.editingUser=null,this.modalVisible=!0,this.$nextTick(function(){t.form.resetFields()})},showEditModal:function(t){var e=this;this.isEdit=!0,this.editingUser=t,this.modalVisible=!0,this.$nextTick(function(){e.form.setFieldsValue({username:t.username,nickname:t.nickname,email:t.email,role:t.role,status:t.status})})},handleModalCancel:function(){this.modalVisible=!1,this.form.resetFields()},handleModalOk:function(){var t=this;this.form.validateFields(function(){var e=(0,n.A)((0,i.A)().m(function e(a,s){var r;return(0,i.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(!a){e.n=1;break}return e.a(2);case 1:if(t.modalLoading=!0,e.p=2,!t.isEdit){e.n=4;break}return e.n=3,(0,l.TK)(t.editingUser.id,{nickname:s.nickname,email:s.email,role:s.role,status:s.status});case 3:r=e.v,e.n=6;break;case 4:return e.n=5,(0,l.kg)(s);case 5:r=e.v;case 6:1===r.code?(t.$message.success(r.msg||"Success"),t.modalVisible=!1,t.form.resetFields(),t.loadUsers()):t.$message.error(r.msg||"Operation failed"),e.n=8;break;case 7:e.p=7,e.v,t.$message.error("Operation failed");case 8:return e.p=8,t.modalLoading=!1,e.f(8);case 9:return e.a(2)}},e,null,[[2,7,8,9]])}));return function(t,a){return e.apply(this,arguments)}}())},handleDelete:function(t){var e=this;return(0,n.A)((0,i.A)().m(function a(){var s;return(0,i.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return a.p=0,a.n=1,(0,l.hG)(t);case 1:s=a.v,1===s.code?(e.$message.success(s.msg||"User deleted"),e.loadUsers()):e.$message.error(s.msg||"Delete failed"),a.n=3;break;case 2:a.p=2,a.v,e.$message.error("Delete failed");case 3:return a.a(2)}},a,null,[[0,2]])}))()},showResetPasswordModal:function(t){var e=this;this.resetPasswordUserId=t.id,this.resetPasswordVisible=!0,this.$nextTick(function(){e.resetPasswordForm.resetFields()})},handleResetPassword:function(){var t=this;this.resetPasswordForm.validateFields(function(){var e=(0,n.A)((0,i.A)().m(function e(a,s){var r;return(0,i.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(!a){e.n=1;break}return e.a(2);case 1:return t.resetPasswordLoading=!0,e.p=2,e.n=3,(0,l.cw)({user_id:t.resetPasswordUserId,new_password:s.new_password});case 3:r=e.v,1===r.code?(t.$message.success(r.msg||"Password reset successfully"),t.resetPasswordVisible=!1,t.resetPasswordForm.resetFields()):t.$message.error(r.msg||"Reset failed"),e.n=5;break;case 4:e.p=4,e.v,t.$message.error("Reset failed");case 5:return e.p=5,t.resetPasswordLoading=!1,e.f(5);case 6:return e.a(2)}},e,null,[[2,4,5,6]])}));return function(t,a){return e.apply(this,arguments)}}())},getRoleColor:function(t){var e={admin:"red",manager:"orange",user:"blue",viewer:"default"};return e[t]||"default"},getRoleLabel:function(t){var e={admin:this.$t("userManage.roleAdmin")||"Admin",manager:this.$t("userManage.roleManager")||"Manager",user:this.$t("userManage.roleUser")||"User",viewer:this.$t("userManage.roleViewer")||"Viewer"};return e[t]||t},formatTime:function(t){if(!t)return"";var e=new Date("number"===typeof t?1e3*t:t);return e.toLocaleString()},formatCredits:function(t){return t||0===t?Number(t).toLocaleString("en-US",{minimumFractionDigits:0,maximumFractionDigits:2}):"0"},formatDate:function(t){if(!t)return"";var e=new Date(t);return e.toLocaleDateString()},isVipActive:function(t){return!!t&&new Date(t)>new Date},showCreditsModal:function(t){this.creditsEditingUser=t,this.newCredits=parseFloat(t.credits)||0,this.creditsRemark="",this.creditsModalVisible=!0},handleSetCredits:function(){var t=this;return(0,n.A)((0,i.A)().m(function e(){var a;return(0,i.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(!(t.newCredits<0)){e.n=1;break}return t.$message.error(t.$t("userManage.creditsNonNegative")||"Credits cannot be negative"),e.a(2);case 1:return t.creditsLoading=!0,e.p=2,e.n=3,(0,l.wq)({user_id:t.creditsEditingUser.id,credits:t.newCredits,remark:t.creditsRemark});case 3:a=e.v,1===a.code?(t.$message.success(a.msg||"Credits updated successfully"),t.creditsModalVisible=!1,t.loadUsers()):t.$message.error(a.msg||"Update failed"),e.n=5;break;case 4:e.p=4,e.v,t.$message.error("Update failed");case 5:return e.p=5,t.creditsLoading=!1,e.f(5);case 6:return e.a(2)}},e,null,[[2,4,5,6]])}))()},showVipModal:function(t){this.vipEditingUser=t,this.vipDays=30,this.vipCustomDate=null,this.vipRemark="",this.vipModalVisible=!0},handleSetVip:function(){var t=this;return(0,n.A)((0,i.A)().m(function e(){var a,s;return(0,i.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(a={user_id:t.vipEditingUser.id,remark:t.vipRemark},-1!==t.vipDays){e.n=2;break}if(t.vipCustomDate){e.n=1;break}return t.$message.error(t.$t("userManage.selectDate")||"Please select a date"),e.a(2);case 1:a.vip_expires_at=t.vipCustomDate.toISOString(),e.n=3;break;case 2:a.vip_days=t.vipDays;case 3:return t.vipLoading=!0,e.p=4,e.n=5,(0,l.nY)(a);case 5:s=e.v,1===s.code?(t.$message.success(s.msg||"VIP status updated successfully"),t.vipModalVisible=!1,t.loadUsers()):t.$message.error(s.msg||"Update failed"),e.n=7;break;case 6:e.p=6,e.v,t.$message.error("Update failed");case 7:return e.p=7,t.vipLoading=!1,e.f(7);case 8:return e.a(2)}},e,null,[[4,6,7,8]])}))()},loadOrders:function(){var t=this;return(0,n.A)((0,i.A)().m(function e(){var a;return(0,i.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return t.orderLoading=!0,e.p=1,e.n=2,(0,l.vi)({page:t.orderPagination.current,page_size:t.orderPagination.pageSize,status:"all"===t.orderStatusFilter?"":t.orderStatusFilter,search:t.orderSearchKeyword||""});case 2:a=e.v,1===a.code?(t.orders=a.data.items||[],t.orderPagination.total=a.data.total||0,t.orderSummary=a.data.summary||{},t.ordersLoaded=!0):t.$message.error(a.msg||"Failed to load orders"),e.n=4;break;case 3:e.p=3,e.v,t.$message.error("Failed to load orders");case 4:return e.p=4,t.orderLoading=!1,e.f(4);case 5:return e.a(2)}},e,null,[[1,3,4,5]])}))()},handleOrderSearch:function(){this.orderPagination.current=1,this.loadOrders()},handleOrderFilterChange:function(){this.orderPagination.current=1,this.loadOrders()},handleOrderTableChange:function(t){this.orderPagination.current=t.current,this.orderPagination.pageSize=t.pageSize,this.loadOrders()},getOrderStatusColor:function(t){var e={paid:"green",confirmed:"green",pending:"orange",expired:"grey",cancelled:"default",failed:"red"};return e[t]||"default"},getOrderStatusLabel:function(t){var e={paid:this.$t("adminOrders.statusPaid")||"Paid",confirmed:this.$t("adminOrders.statusConfirmed")||"Confirmed",pending:this.$t("adminOrders.statusPending")||"Pending",expired:this.$t("adminOrders.statusExpired")||"Expired",cancelled:this.$t("adminOrders.statusCancelled")||"Cancelled",failed:this.$t("adminOrders.statusFailed")||"Failed"};return e[t]||t},loadAiStats:function(){var t=this;return(0,n.A)((0,i.A)().m(function e(){var a;return(0,i.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return t.aiStatsLoading=!0,e.p=1,e.n=2,(0,l.d$)({page:t.aiStatsPagination.current,page_size:t.aiStatsPagination.pageSize,search:t.aiStatsSearchKeyword||""});case 2:a=e.v,1===a.code?(t.aiUserStats=a.data.user_stats||[],t.aiRecentRecords=a.data.recent||[],t.aiStatsPagination.total=a.data.user_total||0,t.aiStatsSummary=a.data.summary||{},t.aiStatsLoaded=!0):t.$message.error(a.msg||"Failed to load AI stats"),e.n=4;break;case 3:e.p=3,e.v,t.$message.error("Failed to load AI stats");case 4:return e.p=4,t.aiStatsLoading=!1,e.f(4);case 5:return e.a(2)}},e,null,[[1,3,4,5]])}))()},handleAiStatsSearch:function(){this.aiStatsPagination.current=1,this.loadAiStats()},handleAiStatsTableChange:function(t){this.aiStatsPagination.current=t.current,this.aiStatsPagination.pageSize=t.pageSize,this.loadAiStats()}}},m=u,p=a(845),g=(0,p.A)(m,s,r,!1,null,"f0405968",null),v=g.exports},84841:function(t,e,a){a.d(e,{DK:function(){return h},E$:function(){return c},Gl:function(){return p},O0:function(){return d},TK:function(){return n},aU:function(){return r},cw:function(){return l},d$:function(){return S},hG:function(){return o},kg:function(){return i},nY:function(){return y},r7:function(){return u},rx:function(){return v},v9:function(){return g},vF:function(){return m},vi:function(){return _},wq:function(){return f}});var s=a(75769);function r(t){return(0,s.Ay)({url:"/api/users/list",method:"get",params:t})}function i(t){return(0,s.Ay)({url:"/api/users/create",method:"post",data:t})}function n(t,e){return(0,s.Ay)({url:"/api/users/update",method:"put",params:{id:t},data:e})}function o(t){return(0,s.Ay)({url:"/api/users/delete",method:"delete",params:{id:t}})}function l(t){return(0,s.Ay)({url:"/api/users/reset-password",method:"post",data:t})}function d(){return(0,s.Ay)({url:"/api/users/roles",method:"get"})}function c(){return(0,s.Ay)({url:"/api/users/profile",method:"get"})}function u(t){return(0,s.Ay)({url:"/api/users/profile/update",method:"put",data:t})}function m(){return(0,s.Ay)({url:"/api/users/notification-settings",method:"get"})}function p(t){return(0,s.Ay)({url:"/api/users/notification-settings",method:"put",data:t})}function g(t){return(0,s.Ay)({url:"/api/users/my-credits-log",method:"get",params:t})}function v(t){return(0,s.Ay)({url:"/api/users/my-referrals",method:"get",params:t})}function f(t){return(0,s.Ay)({url:"/api/users/set-credits",method:"post",data:t})}function y(t){return(0,s.Ay)({url:"/api/users/set-vip",method:"post",data:t})}function h(t){return(0,s.Ay)({url:"/api/users/system-strategies",method:"get",params:t})}function _(t){return(0,s.Ay)({url:"/api/users/admin-orders",method:"get",params:t})}function S(t){return(0,s.Ay)({url:"/api/users/admin-ai-stats",method:"get",params:t})}}}]); \ No newline at end of file diff --git a/frontend/dist/js/488-legacy.c093a9e0.js b/frontend/dist/js/488-legacy.c093a9e0.js deleted file mode 100644 index 237a756..0000000 --- a/frontend/dist/js/488-legacy.c093a9e0.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self["webpackChunkvue_antd_pro"]=self["webpackChunkvue_antd_pro"]||[]).push([[488],{45487:function(t,a,e){e.r(a),e.d(a,{default:function(){return w}});e(62010),e(9868);var s=function(){var t=this,a=t._self._c;return a("div",{staticClass:"ai-asset-analysis-page",class:{"theme-dark":t.isDarkTheme}},[t.opportunities.length>0?a("div",{staticClass:"opp-section"},[a("div",{staticClass:"opp-header"},[a("span",{staticClass:"opp-title"},[a("a-icon",{attrs:{type:"radar-chart"}}),t._v(" "+t._s(t.$t("aiAssetAnalysis.opportunities.title")))],1),a("span",{staticClass:"opp-header-right"},[a("span",{staticClass:"opp-update-hint"},[a("a-icon",{attrs:{type:"clock-circle"}}),t._v(" "+t._s(t.$t("aiAssetAnalysis.opportunities.updateHint"))+" ")],1),a("a-button",{attrs:{type:"link",size:"small",icon:"reload",loading:t.oppLoading},on:{click:function(a){return t.loadOpportunities(!0)}}},[t._v(" "+t._s(t.$t("common.refresh")||"刷新")+" ")])],1)]),a("div",{staticClass:"opp-carousel-wrapper",on:{mouseenter:function(a){t.oppHover=!0},mouseleave:function(a){t.oppHover=!1}}},[a("div",{staticClass:"opp-track",class:{paused:t.oppHover},style:t.oppTrackStyle},t._l(t.carouselItems,function(e,s){return a("div",{key:"opp-"+s,staticClass:"opp-card",class:[e.impact,"market-"+(e.market||"").toLowerCase(),{"is-prediction-market":"PredictionMarket"===e.market}],on:{click:function(a){return t.analyzeOpportunity(e)}}},[a("div",{staticClass:"opp-top"},[a("span",{staticClass:"opp-symbol",class:{"prediction-title":"PredictionMarket"===e.market}},[t._v(" "+t._s("PredictionMarket"===e.market&&e.name||e.symbol)+" ")]),a("a-tag",{staticClass:"opp-market-tag",attrs:{color:t.getMarketTagColor(e.market),size:"small"}},[t._v(" "+t._s(t.getMarketLabel(e.market))+" ")])],1),"PredictionMarket"!==e.market?a("div",{staticClass:"opp-price"},[t._v("$"+t._s(t.formatOppPrice(e.price)))]):a("div",{staticClass:"opp-price"},[t._v(t._s((e.price||0).toFixed(1))+"%")]),"PredictionMarket"!==e.market?a("div",{staticClass:"opp-change",class:e.change_24h>=0?"up":"down"},[t._v(" "+t._s(e.change_24h>=0?"+":"")+t._s((e.change_24h||0).toFixed(1))+"% ")]):e.ai_analysis?a("div",{staticClass:"opp-change"},[a("a-tag",{attrs:{color:t.getRecommendationColor(e.ai_analysis.recommendation),size:"small"}},[t._v(" "+t._s(t.getRecommendationLabel(e.ai_analysis.recommendation))+" ")]),a("span",{staticStyle:{"margin-left":"8px","font-size":"12px",color:"rgba(0,0,0,0.65)"}},[t._v(" 机会评分: "+t._s(e.ai_analysis.opportunity_score.toFixed(0))+" ")])],1):t._e(),"PredictionMarket"!==e.market?a("div",{staticClass:"opp-signal"},[a("a-tag",{attrs:{color:t.getSignalColor(e.signal),size:"small"}},[t._v(t._s(t.getSignalLabel(e.signal)))])],1):t._e(),a("div",{staticClass:"opp-reason"},[t._v(t._s(t.getReasonText(e)))]),a("div",{staticClass:"opp-actions"},["PredictionMarket"!==e.market?a("span",{staticClass:"opp-action",on:{click:function(a){return a.stopPropagation(),t.analyzeOpportunity(e)}}},[a("a-icon",{attrs:{type:"thunderbolt"}}),t._v(" "+t._s(t.$t("aiAssetAnalysis.opportunities.analyze"))+" ")],1):a("span",{staticClass:"opp-action",on:{click:function(a){return a.stopPropagation(),t.analyzeOpportunity(e)}}},[a("a-icon",{attrs:{type:"link"}}),t._v(" "+t._s(t.$t("polymarket.action.viewDetail"))+" ")],1),"Crypto"===e.market?a("span",{staticClass:"opp-trade-btn",on:{click:function(a){return a.stopPropagation(),t.openQuickTradeFromOpp(e)}}},[a("a-icon",{attrs:{type:"transaction"}}),t._v(" "+t._s(t.$t("quickTrade.tradeNow"))+" ")],1):t._e()])])}),0)])]):t._e(),a("a-tooltip",{attrs:{title:t.$t("quickTrade.openPanel"),placement:"left"}},[!t.showQuickTrade&&t.currentAnalysisSymbol?a("div",{staticClass:"qt-floating-btn",on:{click:t.openQuickTradeFromCurrent}},[a("a-icon",{attrs:{type:"thunderbolt",theme:"filled"}})],1):t._e()]),a("quick-trade-panel",{attrs:{visible:t.showQuickTrade,symbol:t.qtSymbol,"preset-side":t.qtSide,"preset-price":t.qtPrice,source:t.qtSource,"market-type":"swap"},on:{close:function(a){t.showQuickTrade=!1},"order-success":t.onQuickTradeSuccess,"update:symbol":t.handleQuickTradeSymbolChange}}),a("a-card",{staticClass:"workspace-card",attrs:{bordered:!1}},[a("a-tabs",{staticClass:"workspace-tabs",attrs:{size:"large"},model:{value:t.activeTab,callback:function(a){t.activeTab=a},expression:"activeTab"}},[a("a-tab-pane",{key:"quick"},[a("span",{attrs:{slot:"tab"},slot:"tab"},[a("a-icon",{attrs:{type:"thunderbolt"}}),t._v(" "+t._s(t.$t("aiAssetAnalysis.tabs.quick"))+" ")],1),a("div",{staticClass:"tab-body"},["quick"===t.activeTab?a("AnalysisView",{attrs:{embedded:!0,"preset-symbol":t.presetSymbol,"auto-analyze-signal":t.autoAnalyzeSignal},on:{"symbol-change":t.onAnalysisSymbolChange}}):t._e()],1)]),a("a-tab-pane",{key:"polymarket"},[a("span",{attrs:{slot:"tab"},slot:"tab"},[a("a-icon",{attrs:{type:"radar-chart"}}),t._v(" "+t._s(t.$t("aiAssetAnalysis.tabs.polymarket"))+" ")],1),a("div",{staticClass:"tab-body"},[a("div",{staticClass:"polymarket-tab-content"},[a("div",{staticClass:"polymarket-placeholder"},[a("div",{staticClass:"placeholder-icon"},[a("a-icon",{attrs:{type:"radar-chart"}})],1),a("h3",[t._v(t._s(t.$t("polymarket.analysis.title")))]),a("p",[t._v(t._s(t.$t("polymarket.analysis.description")))]),a("a-button",{staticStyle:{"margin-top":"16px"},attrs:{type:"primary",size:"large",icon:"thunderbolt"},on:{click:function(a){t.showPolymarketModal=!0}}},[t._v(" "+t._s(t.$t("polymarket.analysis.startAnalysis"))+" ")])],1)])])])],1)],1),a("PolymarketAnalysisModal",{attrs:{visible:t.showPolymarketModal},on:{close:function(a){t.showPolymarketModal=!1}}})],1)},i=[],n=e(81127),r=e(56252),o=e(2403),l=e(76338),c=(e(28706),e(74423),e(34782),e(27495),e(21699),e(25440),e(95353)),p=e(86805),u=e(44146),y=e(83973),d=(e(42762),function(){var t=this,a=t._self._c;return a("a-modal",{attrs:{visible:t.visible,title:t.$t("polymarket.analysis.title"),width:900,footer:null,wrapClassName:t.isDarkTheme?"qd-dark-modal":"",maskClosable:!1},on:{cancel:t.handleClose}},[a("div",{staticClass:"polymarket-analysis-modal",class:{"theme-dark":t.isDarkTheme}},[a("a-tabs",{attrs:{"default-active-key":"analyze"},on:{change:t.handleTabChange}},[a("a-tab-pane",{key:"analyze",attrs:{tab:t.$t("polymarket.analysis.tabAnalyze")}},[t.analysisResult?t._e():a("div",{staticClass:"input-section"},[a("a-alert",{staticStyle:{"margin-bottom":"16px"},attrs:{message:t.$t("polymarket.analysis.inputHint"),type:"info","show-icon":""}}),a("a-textarea",{attrs:{placeholder:t.$t("polymarket.analysis.inputPlaceholder"),rows:3,disabled:t.analyzing},on:{pressEnter:t.handleAnalyze},model:{value:t.inputText,callback:function(a){t.inputText=a},expression:"inputText"}}),a("div",{staticClass:"input-actions"},[a("a-button",{staticStyle:{width:"100%","margin-top":"12px"},attrs:{type:"primary",size:"large",icon:"thunderbolt",loading:t.analyzing,disabled:!t.inputText.trim()},on:{click:t.handleAnalyze}},[t._v(" "+t._s(t.$t("polymarket.analysis.analyzeButton"))+" ")])],1)],1),t.analysisResult?a("div",{staticClass:"result-section"},[a("div",{staticClass:"market-info"},[a("h3",[t._v(t._s(t.analysisResult.market.question))]),a("div",{staticClass:"market-meta"},[a("a-tag",{attrs:{color:t.getStatusColor(t.analysisResult.market.status)}},[t._v(" "+t._s(t.analysisResult.market.status)+" ")]),a("span",{staticClass:"meta-item"},[a("a-icon",{attrs:{type:"percentage"}}),t._v(" "+t._s(t.analysisResult.market.current_probability)+"% ")],1),t.analysisResult.market.volume_24h?a("span",{staticClass:"meta-item"},[a("a-icon",{attrs:{type:"dollar"}}),t._v(" "+t._s(t.formatVolume(t.analysisResult.market.volume_24h))+" ")],1):t._e(),t.analysisResult.market.polymarket_url?a("a-button",{attrs:{type:"link",size:"small",icon:"link",href:t.analysisResult.market.polymarket_url,target:"_blank"}},[t._v(" "+t._s(t.$t("polymarket.analysis.viewOnPolymarket"))+" ")]):t._e()],1)]),a("div",{staticClass:"analysis-result"},[a("a-divider",[t._v(t._s(t.$t("polymarket.analysis.aiAnalysis")))]),a("div",{staticClass:"probability-comparison"},[a("div",{staticClass:"prob-item"},[a("div",{staticClass:"prob-label"},[t._v(t._s(t.$t("polymarket.analysis.marketProbability")))]),a("div",{staticClass:"prob-value"},[t._v(t._s(t.analysisResult.analysis.market_probability)+"%")])]),a("div",{staticClass:"prob-item"},[a("div",{staticClass:"prob-label"},[t._v(t._s(t.$t("polymarket.analysis.aiPredictedProbability")))]),a("div",{staticClass:"prob-value ai-prob"},[t._v(t._s(t.analysisResult.analysis.ai_predicted_probability)+"%")])]),a("div",{staticClass:"prob-item"},[a("div",{staticClass:"prob-label"},[t._v(t._s(t.$t("polymarket.analysis.divergence")))]),a("div",{staticClass:"prob-value",class:t.getDivergenceClass(t.analysisResult.analysis.divergence)},[t._v(" "+t._s(t.analysisResult.analysis.divergence>=0?"+":"")+t._s(t.analysisResult.analysis.divergence.toFixed(2))+"% ")])])]),a("div",{staticClass:"recommendation-section"},[a("a-row",{attrs:{gutter:16}},[a("a-col",{attrs:{span:8}},[a("div",{staticClass:"rec-card"},[a("div",{staticClass:"rec-label"},[t._v(t._s(t.$t("polymarket.analysis.recommendation")))]),a("a-tag",{staticStyle:{"font-size":"16px",padding:"4px 12px"},attrs:{color:t.getRecommendationColor(t.analysisResult.analysis.recommendation)}},[t._v(" "+t._s(t.getRecommendationLabel(t.analysisResult.analysis.recommendation))+" ")])],1)]),a("a-col",{attrs:{span:8}},[a("div",{staticClass:"rec-card"},[a("div",{staticClass:"rec-label"},[t._v(t._s(t.$t("polymarket.analysis.confidenceScore")))]),a("div",{staticClass:"rec-value"},[t._v(t._s(t.analysisResult.analysis.confidence_score.toFixed(0)))])])]),a("a-col",{attrs:{span:8}},[a("div",{staticClass:"rec-card"},[a("div",{staticClass:"rec-label"},[t._v(t._s(t.$t("polymarket.analysis.opportunityScore")))]),a("div",{staticClass:"rec-value"},[t._v(t._s(t.analysisResult.analysis.opportunity_score.toFixed(0)))])])])],1)],1),t.analysisResult.analysis.reasoning?a("div",{staticClass:"reasoning-section"},[a("h4",[t._v(t._s(t.$t("polymarket.analysis.reasoning")))]),a("p",{staticClass:"reasoning-text"},[t._v(t._s(t.analysisResult.analysis.reasoning))])]):t._e(),t.analysisResult.analysis.key_factors&&t.analysisResult.analysis.key_factors.length>0?a("div",{staticClass:"key-factors-section"},[a("h4",[t._v(t._s(t.$t("polymarket.analysis.keyFactors")))]),t._l(t.analysisResult.analysis.key_factors,function(e,s){return a("a-tag",{key:s,staticStyle:{margin:"4px"},attrs:{color:"blue"}},[t._v(" "+t._s(e)+" ")])})],2):t._e(),t.analysisResult.credits_charged>0?a("div",{staticClass:"billing-info"},[a("a-alert",{staticStyle:{"margin-top":"16px"},attrs:{message:t.$t("polymarket.analysis.creditsCharged",{credits:t.analysisResult.credits_charged}),type:"success","show-icon":""}}),void 0!==t.analysisResult.remaining_credits?a("div",{staticStyle:{"margin-top":"8px","text-align":"right"},style:{color:t.isDarkTheme?"rgba(255,255,255,0.75)":"rgba(0,0,0,0.65)"}},[t._v(" "+t._s(t.$t("polymarket.analysis.remainingCredits",{credits:t.analysisResult.remaining_credits.toFixed(0)}))+" ")]):t._e()],1):t._e()],1),a("div",{staticClass:"result-actions"},[a("a-button",{staticStyle:{"margin-right":"8px"},on:{click:t.handleNewAnalysis}},[t._v(" "+t._s(t.$t("polymarket.analysis.newAnalysis"))+" ")]),a("a-button",{attrs:{type:"primary"},on:{click:t.handleClose}},[t._v(" "+t._s(t.$t("common.close"))+" ")])],1)]):t._e(),t.analyzing?a("div",{staticClass:"loading-section"},[a("a-spin",{attrs:{size:"large"}}),a("p",{style:{marginTop:"16px",color:t.isDarkTheme?"rgba(255,255,255,0.75)":"rgba(0,0,0,0.65)"}},[t._v(" "+t._s(t.$t("polymarket.analysis.analyzing"))+" ")])],1):t._e()]),a("a-tab-pane",{key:"history",attrs:{tab:t.$t("polymarket.analysis.tabHistory")}},[a("div",{staticClass:"history-section"},[a("a-spin",{attrs:{spinning:t.historyLoading}},[a("a-table",{attrs:{columns:t.historyColumns,"data-source":t.historyList,pagination:t.historyPagination,"row-key":function(t){return t.id},size:"small"},on:{change:t.handleHistoryTableChange},scopedSlots:t._u([{key:"market_title",fn:function(e,s){return[a("a-button",{staticStyle:{padding:"0"},attrs:{type:"link"},on:{click:function(a){return t.viewHistoryItem(s)}}},[t._v(" "+t._s(e)+" ")])]}},{key:"recommendation",fn:function(e){return[a("a-tag",{attrs:{color:t.getRecommendationColor(e)}},[t._v(" "+t._s(t.getRecommendationLabel(e))+" ")])]}},{key:"created_at",fn:function(a){return[t._v(" "+t._s(t.formatDateTime(a))+" ")]}}])})],1)],1)])],1)],1)])}),m=[],h=(e(26099),e(75769)),k="/api/polymarket";function v(t){return(0,h.Ay)({url:"".concat(k,"/analyze"),method:"post",data:t,timeout:12e4})}function g(t){return(0,h.Ay)({url:"".concat(k,"/history"),method:"get",params:t})}var _={name:"PolymarketAnalysisModal",props:{visible:{type:Boolean,default:!1}},data:function(){var t=this;return{inputText:"",analyzing:!1,analysisResult:null,activeTab:"analyze",historyLoading:!1,historyList:[],historyPagination:{current:1,pageSize:20,total:0,showSizeChanger:!0,showTotal:function(a){return t.$t("polymarket.analysis.historyTotal",{total:a})}},historyColumns:[]}},computed:(0,l.A)((0,l.A)({},(0,c.aH)({navTheme:function(t){return t.app.theme}})),{},{isDarkTheme:function(){return"dark"===this.navTheme||"realdark"===this.navTheme}}),methods:{handleAnalyze:function(){var t=this;this.inputText.trim()?(this.analyzing=!0,this.analysisResult=null,v({input:this.inputText.trim(),language:this.$i18n.locale||"zh-CN"}).then(function(a){1===a.code?(t.analysisResult=a.data,t.$message.success(t.$t("polymarket.analysis.success"))):"Insufficient credits"===a.msg?(t.$message.error(t.$t("polymarket.analysis.insufficientCredits")),t.$router.push("/billing")):t.$message.error(a.msg||t.$t("polymarket.analysis.failed"))}).catch(function(a){a.response&&a.response.data&&"Insufficient credits"===a.response.data.msg?(t.$message.error(t.$t("polymarket.analysis.insufficientCredits")),t.$router.push("/billing")):t.$message.error(t.$t("polymarket.analysis.failed"))}).finally(function(){t.analyzing=!1})):this.$message.warning(this.$t("polymarket.analysis.inputRequired"))},handleNewAnalysis:function(){this.inputText="",this.analysisResult=null},handleClose:function(){var t=this;this.$emit("close"),setTimeout(function(){t.inputText="",t.analysisResult=null,t.analyzing=!1},300)},getStatusColor:function(t){var a={active:"green",closed:"default",resolved:"blue"};return a[t]||"default"},getRecommendationColor:function(t){var a={YES:"green",NO:"red",HOLD:"orange"};return a[t]||"default"},getRecommendationLabel:function(t){var a={YES:this.$t("polymarket.analysis.recommendationYes"),NO:this.$t("polymarket.analysis.recommendationNo"),HOLD:this.$t("polymarket.analysis.recommendationHold")};return a[t]||t},getDivergenceClass:function(t){return t>5?"divergence-positive":t<-5?"divergence-negative":"divergence-neutral"},formatVolume:function(t){return t>=1e6?"$".concat((t/1e6).toFixed(2),"M"):t>=1e3?"$".concat((t/1e3).toFixed(2),"K"):"$".concat(t.toFixed(2))},handleTabChange:function(t){this.activeTab=t,"history"===t&&0===this.historyList.length&&this.loadHistory()},loadHistory:function(){var t=this;return(0,r.A)((0,n.A)().m(function a(){var e;return(0,n.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return t.historyLoading=!0,a.p=1,a.n=2,g({page:t.historyPagination.current,page_size:t.historyPagination.pageSize});case 2:e=a.v,1===e.code&&e.data&&(t.historyList=e.data.items||[],t.historyPagination.total=e.data.total||0),a.n=4;break;case 3:a.p=3,a.v,t.$message.error(t.$t("polymarket.analysis.loadHistoryFailed"));case 4:return a.p=4,t.historyLoading=!1,a.f(4);case 5:return a.a(2)}},a,null,[[1,3,4,5]])}))()},handleHistoryTableChange:function(t){this.historyPagination.current=t.current,this.historyPagination.pageSize=t.pageSize,this.loadHistory()},viewHistoryItem:function(t){this.activeTab="analyze",this.analysisResult={market:{question:t.market_title,market_id:t.market_id,polymarket_url:t.market_url,current_probability:t.market_probability,status:"active"},analysis:{ai_predicted_probability:t.ai_predicted_probability,market_probability:t.market_probability,recommendation:t.recommendation,opportunity_score:t.opportunity_score,confidence_score:t.confidence_score}}},formatDateTime:function(t){if(!t)return"";var a=new Date(t);return a.toLocaleString("zh-CN"===this.$i18n.locale?"zh-CN":"en-US")}},mounted:function(){this.historyColumns=[{title:this.$t("polymarket.analysis.historyMarket"),dataIndex:"market_title",key:"market_title",scopedSlots:{customRender:"market_title"}},{title:this.$t("polymarket.analysis.historyRecommendation"),dataIndex:"recommendation",key:"recommendation",width:120,scopedSlots:{customRender:"recommendation"}},{title:this.$t("polymarket.analysis.historyOpportunityScore"),dataIndex:"opportunity_score",key:"opportunity_score",width:120,align:"right"},{title:this.$t("polymarket.analysis.historyCreatedAt"),dataIndex:"created_at",key:"created_at",width:180,scopedSlots:{customRender:"created_at"}}]}},b=_,f=e(845),C=(0,f.A)(b,d,m,!1,null,"67e891d2",null),S=C.exports,$={name:"AIAssetAnalysis",components:{AnalysisView:p["default"],QuickTradePanel:y.A,PolymarketAnalysisModal:S},data:function(){return{activeTab:"quick",opportunities:[],oppLoading:!1,oppHover:!1,presetSymbol:"",autoAnalyzeSignal:0,showQuickTrade:!1,qtSymbol:"",qtSide:"",qtPrice:0,qtSource:"ai_radar",currentAnalysisSymbol:"",currentAnalysisMarket:"",showPolymarketModal:!1}},computed:(0,l.A)((0,l.A)({},(0,c.aH)({navTheme:function(t){return t.app.theme}})),{},{isDarkTheme:function(){return"dark"===this.navTheme||"realdark"===this.navTheme},carouselItems:function(){return 0===this.opportunities.length?[]:[].concat((0,o.A)(this.opportunities),(0,o.A)(this.opportunities))},oppTrackStyle:function(){var t=3*this.opportunities.length;return{animationDuration:t+"s"}}}),created:function(){this.loadOpportunities()},methods:{loadOpportunities:function(){var t=arguments,a=this;return(0,r.A)((0,n.A)().m(function e(){var s,i,r;return(0,n.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return s=t.length>0&&void 0!==t[0]&&t[0],a.oppLoading=!0,e.p=1,i=s?{force:!0}:{},e.n=2,(0,u.r9)(i);case 2:r=e.v,r&&1===r.code&&Array.isArray(r.data)&&(a.opportunities=r.data.slice(0,20)),e.n=4;break;case 3:e.p=3,e.v;case 4:return e.p=4,a.oppLoading=!1,e.f(4);case 5:return e.a(2)}},e,null,[[1,3,4,5]])}))()},getSignalColor:function(t){var a={overbought:"volcano",oversold:"green",bullish_momentum:"cyan",bearish_momentum:"red"};return a[t]||"default"},getSignalLabel:function(t){var a="aiAssetAnalysis.opportunities.signal.".concat(t),e=this.$t(a);return e!==a?e:t},getMarketTagColor:function(t){var a={Crypto:"purple",USStock:"green",Forex:"gold",PredictionMarket:"cyan"};return a[t]||"default"},getMarketLabel:function(t){var a="aiAssetAnalysis.opportunities.market.".concat(t),e=this.$t(a);return e!==a?e:t},getReasonText:function(t){var a=(t.market||"Crypto").toLowerCase(),e=t.signal||"",s="aiAssetAnalysis.opportunities.reason.".concat(a,".").concat(e),i=this.$t(s);if(i===s)return t.reason||"";var n=Math.abs(t.change_24h||0).toFixed(1),r=Math.abs(t.change_7d||0).toFixed(1);return i.replace("{change}",n).replace("{change7d}",r)},formatOppPrice:function(t){return t?t>=1e4?(t/1e3).toFixed(1)+"K":t>=1?t.toFixed(2):t.toFixed(4):"--"},analyzeOpportunity:function(t){var a=this;if("PredictionMarket"===t.market)return this.activeTab="polymarket",void(this.showPolymarketModal=!0);this.activeTab="quick";var e=t.market||"Crypto";this.presetSymbol="".concat(e,":").concat(t.symbol),this.$nextTick(function(){a.autoAnalyzeSignal++})},getRecommendationColor:function(t){var a={YES:"green",NO:"red",HOLD:"default"};return a[t]||"default"},getRecommendationLabel:function(t){return this.$t("polymarket.recommendation.".concat(t))||t},onAnalysisSymbolChange:function(t){if(!t)return this.currentAnalysisSymbol="",void(this.currentAnalysisMarket="");var a=t.split(":"),e=a.length>1?a[0]:"Crypto",s=a.length>1?a[1]:a[0];this.currentAnalysisMarket=e,this.currentAnalysisSymbol="Crypto"===e?s:""},openQuickTradeFromCurrent:function(){this.currentAnalysisSymbol&&(this.qtSymbol=this.currentAnalysisSymbol,this.qtSide="",this.qtPrice=0,this.qtSource="ai_analysis",this.showQuickTrade=!0)},openQuickTradeFromOpp:function(t){if("Crypto"===t.market){this.qtSymbol=t.symbol||"";var a=(t.signal||"").toLowerCase();a.includes("oversold")||a.includes("bullish")?this.qtSide="buy":a.includes("overbought")||a.includes("bearish")?this.qtSide="sell":this.qtSide="",this.qtPrice=t.price||0,this.qtSource="ai_radar",this.showQuickTrade=!0}},onQuickTradeSuccess:function(){this.$message.success(this.$t("quickTrade.orderSuccess"))},handleQuickTradeSymbolChange:function(t){t&&(this.qtSymbol=t)}}},A=$,T=(0,f.A)(A,s,i,!1,null,"443699fa",null),w=T.exports}}]); \ No newline at end of file diff --git a/frontend/dist/js/506-legacy.07ea73fa.js b/frontend/dist/js/506-legacy.d95b4e4d.js similarity index 96% rename from frontend/dist/js/506-legacy.07ea73fa.js rename to frontend/dist/js/506-legacy.d95b4e4d.js index caea3bc..fa820a9 100644 --- a/frontend/dist/js/506-legacy.07ea73fa.js +++ b/frontend/dist/js/506-legacy.d95b4e4d.js @@ -1 +1 @@ -"use strict";(self["webpackChunkvue_antd_pro"]=self["webpackChunkvue_antd_pro"]||[]).push([[506],{27506:function(t,e,o){o.r(e),o.d(e,{default:function(){return _}});o(74423),o(62010),o(9868),o(21699);var s=function(){var t=this,e=t._self._c;return e("div",{staticClass:"portfolio-container",class:{"theme-dark":t.isDarkTheme,embedded:t.embedded}},[e("div",{staticClass:"summary-section"},[e("div",{staticClass:"summary-card total-value"},[e("div",{staticClass:"card-icon"},[e("a-icon",{attrs:{type:"wallet"}})],1),e("div",{staticClass:"card-content"},[e("div",{staticClass:"card-label"},[t._v(t._s(t.$t("portfolio.summary.totalValue")))]),e("div",{staticClass:"card-value"},[e("span",{staticClass:"currency"},[t._v("$")]),e("span",{staticClass:"amount"},[t._v(t._s(t.formatNumber(t.summary.total_market_value)))])]),void 0!==t.summary.today_change?e("div",{staticClass:"card-sub"},[e("span",{class:t.summary.today_change>=0?"positive":"negative"},[t._v(" "+t._s(t.$t("portfolio.summary.today"))+": "+t._s(t.summary.today_change>=0?"+":"")+"$"+t._s(t.formatNumber(t.summary.today_change))+" ")])]):t._e()])]),e("div",{staticClass:"summary-card"},[e("div",{staticClass:"card-icon cost"},[e("a-icon",{attrs:{type:"dollar"}})],1),e("div",{staticClass:"card-content"},[e("div",{staticClass:"card-label"},[t._v(t._s(t.$t("portfolio.summary.totalCost")))]),e("div",{staticClass:"card-value"},[t._v("$"+t._s(t.formatNumber(t.summary.total_cost)))])])]),e("div",{staticClass:"summary-card"},[e("div",{staticClass:"card-icon",class:t.summary.total_pnl>=0?"profit":"loss"},[e("a-icon",{attrs:{type:t.summary.total_pnl>=0?"rise":"fall"}})],1),e("div",{staticClass:"card-content"},[e("div",{staticClass:"card-label"},[t._v(t._s(t.$t("portfolio.summary.totalPnl")))]),e("div",{staticClass:"card-value",class:t.summary.total_pnl>=0?"positive":"negative"},[t._v(" "+t._s(t.summary.total_pnl>=0?"+":"")+"$"+t._s(t.formatNumber(t.summary.total_pnl))+" "),e("span",{staticClass:"percent"},[t._v("("+t._s(t.summary.total_pnl_percent>=0?"+":"")+t._s(t.summary.total_pnl_percent)+"%)")])])])]),e("div",{staticClass:"summary-card"},[e("div",{staticClass:"card-icon positions"},[e("a-icon",{attrs:{type:"fund"}})],1),e("div",{staticClass:"card-content"},[e("div",{staticClass:"card-label"},[t._v(t._s(t.$t("portfolio.summary.positionCount")))]),e("div",{staticClass:"card-value"},[t._v(" "+t._s(t.summary.position_count)+" "),t.profitLossStats.profit>0||t.profitLossStats.loss>0?e("span",{staticClass:"position-detail"},[t._v(" ("),e("span",{staticClass:"positive"},[t._v(t._s(t.profitLossStats.profit))]),t._v("/"),e("span",{staticClass:"negative"},[t._v(t._s(t.profitLossStats.loss))]),t._v(") ")]):t._e()]),e("div",{staticClass:"card-sub"},[t._v(" "+t._s(t.$t("portfolio.summary.profitLossRatio"))+" ")])])])]),e("div",{staticClass:"summary-section secondary"},[e("div",{staticClass:"summary-card mini"},[e("div",{staticClass:"card-icon today",class:t.summary.today_pnl>=0?"profit":"loss"},[e("a-icon",{attrs:{type:"stock"}})],1),e("div",{staticClass:"card-content"},[e("div",{staticClass:"card-label"},[t._v(t._s(t.$t("portfolio.summary.todayPnl")))]),e("div",{staticClass:"card-value",class:t.summary.today_pnl>=0?"positive":"negative"},[t._v(" "+t._s(t.summary.today_pnl>=0?"+":"")+"$"+t._s(t.formatNumber(t.summary.today_pnl||0))+" ")])])]),e("div",{staticClass:"summary-card mini"},[e("div",{staticClass:"card-icon best"},[e("a-icon",{attrs:{type:"trophy"}})],1),e("div",{staticClass:"card-content"},[e("div",{staticClass:"card-label"},[t._v(t._s(t.$t("portfolio.summary.bestPerformer")))]),t.bestPerformer?e("div",{staticClass:"card-value small positive"},[t._v(" "+t._s(t.bestPerformer.symbol)+" +"+t._s(t.bestPerformer.pnl_percent)+"% ")]):e("div",{staticClass:"card-value small"},[t._v("-")])])]),e("div",{staticClass:"summary-card mini"},[e("div",{staticClass:"card-icon worst"},[e("a-icon",{attrs:{type:"warning"}})],1),e("div",{staticClass:"card-content"},[e("div",{staticClass:"card-label"},[t._v(t._s(t.$t("portfolio.summary.worstPerformer")))]),t.worstPerformer?e("div",{staticClass:"card-value small negative"},[t._v(" "+t._s(t.worstPerformer.symbol)+" "+t._s(t.worstPerformer.pnl_percent)+"% ")]):e("div",{staticClass:"card-value small"},[t._v("-")])])]),e("div",{staticClass:"summary-card mini sync-card"},[e("div",{staticClass:"card-icon sync",class:{syncing:t.isSyncing}},[e("a-icon",{attrs:{type:"sync",spin:t.isSyncing}})],1),e("div",{staticClass:"card-content"},[e("div",{staticClass:"card-label"},[t._v(t._s(t.$t("portfolio.summary.priceSync")))]),e("div",{staticClass:"card-value small"},[t._v(" "+t._s(t.lastSyncTime?t.formatSyncTime(t.lastSyncTime):"-")+" ")]),e("div",{staticClass:"card-sub"},[t._v(" "+t._s(t.$t("portfolio.summary.syncInterval"))+": 30s "),e("a-button",{staticStyle:{padding:"0","margin-left":"8px"},attrs:{type:"link",size:"small",loading:t.isSyncing},on:{click:t.refreshPrices}},[t.isSyncing?t._e():e("a-icon",{attrs:{type:"reload"}})],1)],1)])])]),e("div",{staticClass:"main-content"},[e("div",{staticClass:"positions-section"},[e("div",{staticClass:"section-header"},[e("h3",[e("a-icon",{attrs:{type:"stock"}}),e("span",[t._v(t._s(t.$t("portfolio.positions.title")))])],1),e("div",{staticClass:"header-actions"},[e("a-radio-group",{staticStyle:{"margin-right":"12px"},attrs:{size:"small"},model:{value:t.viewMode,callback:function(e){t.viewMode=e},expression:"viewMode"}},[e("a-radio-button",{attrs:{value:"grid"}},[e("a-icon",{attrs:{type:"appstore"}})],1),e("a-radio-button",{attrs:{value:"group"}},[e("a-icon",{attrs:{type:"folder"}})],1)],1),"grid"===t.viewMode?e("a-select",{staticStyle:{width:"150px","margin-right":"12px"},attrs:{placeholder:t.$t("portfolio.groups.all"),"allow-clear":""},on:{change:t.filterByGroup},model:{value:t.selectedGroup,callback:function(e){t.selectedGroup=e},expression:"selectedGroup"}},[e("a-select-option",{attrs:{value:""}},[t._v(t._s(t.$t("portfolio.groups.all")))]),e("a-select-option",{attrs:{value:"__ungrouped__"}},[t._v(t._s(t.$t("portfolio.groups.ungrouped")))]),t._l(t.groups,function(o){return e("a-select-option",{key:o.name,attrs:{value:o.name}},[t._v(" "+t._s(o.name)+" ("+t._s(o.count)+") ")])})],2):t._e(),e("a-button",{attrs:{type:"primary"},on:{click:function(e){t.showAddPositionModal=!0}}},[e("a-icon",{attrs:{type:"plus"}}),t._v(" "+t._s(t.$t("portfolio.positions.add"))+" ")],1)],1)]),e("a-spin",{attrs:{spinning:t.loadingPositions}},[e("div",{staticClass:"positions-list"},[0===t.positions.length?e("div",{staticClass:"empty-state"},[e("a-empty",{attrs:{description:t.$t("portfolio.positions.empty")}},[e("a-button",{attrs:{type:"primary"},on:{click:function(e){t.showAddPositionModal=!0}}},[e("a-icon",{attrs:{type:"plus"}}),t._v(" "+t._s(t.$t("portfolio.positions.addFirst"))+" ")],1)],1)],1):"grid"===t.viewMode?e("div",{staticClass:"position-grid"},t._l(t.filteredPositions,function(o){return e("div",{key:o.id,staticClass:"position-card",class:{profit:o.pnl>=0,loss:o.pnl<0}},[e("div",{staticClass:"position-header"},[e("div",{staticClass:"symbol-info"},[e("a-tag",{attrs:{color:t.getMarketColor(o.market),size:"small"}},[t._v(t._s(t.getMarketName(o.market)))]),e("span",{staticClass:"symbol"},[t._v(t._s(o.symbol))]),e("span",{staticClass:"name"},[t._v(t._s(o.name))]),o.group_name?e("a-tag",{staticStyle:{"margin-left":"4px"},attrs:{size:"small",color:"blue"}},[e("a-icon",{attrs:{type:"folder"}}),t._v(" "+t._s(o.group_name)+" ")],1):t._e()],1),e("div",{staticClass:"position-actions"},[e("a-tooltip",{attrs:{title:t.hasAlertForPosition(o.id)?t.$t("portfolio.alerts.editAlert"):t.$t("portfolio.alerts.addAlert")}},[e("a-button",{class:{"has-alert":t.hasAlertForPosition(o.id)},attrs:{type:"link",size:"small"},on:{click:function(e){return t.showAddAlertForPosition(o)}}},[e("a-icon",{attrs:{type:"bell",theme:t.hasAlertForPosition(o.id)?"filled":"outlined"}})],1)],1),e("a-button",{attrs:{type:"link",size:"small"},on:{click:function(e){return t.editPosition(o)}}},[e("a-icon",{attrs:{type:"edit"}})],1),e("a-popconfirm",{attrs:{title:t.$t("portfolio.positions.deleteConfirm")},on:{confirm:function(e){return t.deletePosition(o.id)}}},[e("a-button",{staticClass:"delete-btn",attrs:{type:"link",size:"small"}},[e("a-icon",{attrs:{type:"delete"}})],1)],1)],1)]),e("div",{staticClass:"position-body"},[e("div",{staticClass:"price-row"},[e("div",{staticClass:"current-price"},[e("span",{staticClass:"label"},[t._v(t._s(t.$t("portfolio.positions.currentPrice")))]),e("span",{staticClass:"value"},[t._v(t._s(t.getCurrencySymbol(o.market))+t._s(t.formatPrice(o.current_price)))]),e("span",{staticClass:"change",class:o.price_change>=0?"up":"down"},[t._v(" "+t._s(o.price_change>=0?"▲":"▼")+t._s(Math.abs(o.price_change_percent).toFixed(2))+"% ")])]),e("div",{staticClass:"entry-price"},[e("span",{staticClass:"label"},[t._v(t._s(t.$t("portfolio.positions.entryPrice")))]),e("span",{staticClass:"value"},[t._v(t._s(t.getCurrencySymbol(o.market))+t._s(t.formatPrice(o.entry_price)))])])]),e("div",{staticClass:"quantity-row"},[e("div",{staticClass:"item"},[e("span",{staticClass:"label"},[t._v(t._s(t.$t("portfolio.positions.quantity")))]),e("span",{staticClass:"value"},[t._v(t._s(t.formatNumber(o.quantity,4)))])]),e("div",{staticClass:"item"},[e("span",{staticClass:"label"},[t._v(t._s(t.$t("portfolio.positions.side")))]),e("a-tag",{attrs:{color:"long"===o.side?"green":"red",size:"small"}},[t._v(" "+t._s("long"===o.side?t.$t("portfolio.positions.long"):t.$t("portfolio.positions.short"))+" ")])],1),e("div",{staticClass:"item"},[e("span",{staticClass:"label"},[t._v(t._s(t.$t("portfolio.positions.marketValue")))]),e("span",{staticClass:"value"},[t._v(t._s(t.getCurrencySymbol(o.market))+t._s(t.formatNumber(o.market_value)))])])])]),e("div",{staticClass:"position-footer"},[e("div",{staticClass:"pnl"},[e("span",{staticClass:"label"},[t._v(t._s(t.$t("portfolio.positions.pnl")))]),e("span",{staticClass:"value",class:o.pnl>=0?"positive":"negative"},[t._v(" "+t._s(o.pnl>=0?"+":"")+t._s(t.getCurrencySymbol(o.market))+t._s(t.formatNumber(o.pnl))+" "),e("span",{staticClass:"percent"},[t._v("("+t._s(o.pnl_percent>=0?"+":"")+t._s(o.pnl_percent)+"%)")])])])])])}),0):e("div",{staticClass:"position-collapse-view"},[e("a-collapse",{attrs:{bordered:!1},model:{value:t.activeGroups,callback:function(e){t.activeGroups=e},expression:"activeGroups"}},[t.ungroupedPositions.length>0?e("a-collapse-panel",{key:"__ungrouped__",staticClass:"group-panel"},[e("template",{slot:"header"},[e("div",{staticClass:"group-header"},[e("span",{staticClass:"group-name"},[e("a-icon",{staticStyle:{"margin-right":"8px"},attrs:{type:"inbox"}}),t._v(" "+t._s(t.$t("portfolio.groups.ungrouped"))+" ")],1),e("span",{staticClass:"group-stats"},[e("span",{staticClass:"count"},[t._v(t._s(t.ungroupedPositions.length)+" "+t._s(t.$t("portfolio.positions.items")))]),e("span",{staticClass:"group-pnl",class:t.getGroupPnl(t.ungroupedPositions)>=0?"positive":"negative"},[t._v(" "+t._s(t.getGroupPnl(t.ungroupedPositions)>=0?"+":"")+"$"+t._s(t.formatNumber(t.getGroupPnl(t.ungroupedPositions)))+" ")])])])]),e("div",{staticClass:"position-grid compact"},t._l(t.ungroupedPositions,function(o){return e("div",{key:o.id,staticClass:"position-card compact",class:{profit:o.pnl>=0,loss:o.pnl<0}},[e("div",{staticClass:"position-header"},[e("div",{staticClass:"symbol-info"},[e("a-tag",{attrs:{color:t.getMarketColor(o.market),size:"small"}},[t._v(t._s(t.getMarketName(o.market)))]),e("span",{staticClass:"symbol"},[t._v(t._s(o.symbol))]),e("span",{staticClass:"name"},[t._v(t._s(o.name))])],1),e("div",{staticClass:"position-actions"},[e("a-button",{attrs:{type:"link",size:"small"},on:{click:function(e){return t.editPosition(o)}}},[e("a-icon",{attrs:{type:"edit"}})],1),e("a-popconfirm",{attrs:{title:t.$t("portfolio.positions.deleteConfirm")},on:{confirm:function(e){return t.deletePosition(o.id)}}},[e("a-button",{staticClass:"delete-btn",attrs:{type:"link",size:"small"}},[e("a-icon",{attrs:{type:"delete"}})],1)],1)],1)]),e("div",{staticClass:"position-compact-body"},[e("div",{staticClass:"compact-item"},[e("span",{staticClass:"value"},[t._v(t._s(t.getCurrencySymbol(o.market))+t._s(t.formatPrice(o.current_price)))]),e("span",{staticClass:"change",class:o.price_change>=0?"up":"down"},[t._v(" "+t._s(o.price_change>=0?"▲":"▼")+t._s(Math.abs(o.price_change_percent).toFixed(2))+"% ")])]),e("div",{staticClass:"compact-item"},[e("span",{staticClass:"label"},[t._v(t._s(t.$t("portfolio.positions.quantity"))+":")]),e("span",{staticClass:"value"},[t._v(t._s(t.formatNumber(o.quantity,4)))])]),e("div",{staticClass:"compact-item pnl",class:o.pnl>=0?"positive":"negative"},[t._v(" "+t._s(o.pnl>=0?"+":"")+t._s(t.getCurrencySymbol(o.market))+t._s(t.formatNumber(o.pnl))+" "),e("span",{staticClass:"percent"},[t._v("("+t._s(o.pnl_percent>=0?"+":"")+t._s(o.pnl_percent)+"%)")])])])])}),0)],2):t._e(),t._l(t.groupsWithPositions,function(o){return e("a-collapse-panel",{key:o.name,staticClass:"group-panel"},[e("template",{slot:"header"},[e("div",{staticClass:"group-header"},[e("span",{staticClass:"group-name"},[e("a-icon",{staticStyle:{"margin-right":"8px",color:"#1890ff"},attrs:{type:"folder"}}),t._v(" "+t._s(o.name)+" ")],1),e("span",{staticClass:"group-stats"},[e("span",{staticClass:"count"},[t._v(t._s(o.positions.length)+" "+t._s(t.$t("portfolio.positions.items")))]),e("span",{staticClass:"group-pnl",class:t.getGroupPnl(o.positions)>=0?"positive":"negative"},[t._v(" "+t._s(t.getGroupPnl(o.positions)>=0?"+":"")+"$"+t._s(t.formatNumber(t.getGroupPnl(o.positions)))+" ")])])])]),e("div",{staticClass:"position-grid compact"},t._l(o.positions,function(o){return e("div",{key:o.id,staticClass:"position-card compact",class:{profit:o.pnl>=0,loss:o.pnl<0}},[e("div",{staticClass:"position-header"},[e("div",{staticClass:"symbol-info"},[e("a-tag",{attrs:{color:t.getMarketColor(o.market),size:"small"}},[t._v(t._s(t.getMarketName(o.market)))]),e("span",{staticClass:"symbol"},[t._v(t._s(o.symbol))]),e("span",{staticClass:"name"},[t._v(t._s(o.name))])],1),e("div",{staticClass:"position-actions"},[e("a-button",{attrs:{type:"link",size:"small"},on:{click:function(e){return t.editPosition(o)}}},[e("a-icon",{attrs:{type:"edit"}})],1),e("a-popconfirm",{attrs:{title:t.$t("portfolio.positions.deleteConfirm")},on:{confirm:function(e){return t.deletePosition(o.id)}}},[e("a-button",{staticClass:"delete-btn",attrs:{type:"link",size:"small"}},[e("a-icon",{attrs:{type:"delete"}})],1)],1)],1)]),e("div",{staticClass:"position-compact-body"},[e("div",{staticClass:"compact-item"},[e("span",{staticClass:"value"},[t._v(t._s(t.getCurrencySymbol(o.market))+t._s(t.formatPrice(o.current_price)))]),e("span",{staticClass:"change",class:o.price_change>=0?"up":"down"},[t._v(" "+t._s(o.price_change>=0?"▲":"▼")+t._s(Math.abs(o.price_change_percent).toFixed(2))+"% ")])]),e("div",{staticClass:"compact-item"},[e("span",{staticClass:"label"},[t._v(t._s(t.$t("portfolio.positions.quantity"))+":")]),e("span",{staticClass:"value"},[t._v(t._s(t.formatNumber(o.quantity,4)))])]),e("div",{staticClass:"compact-item pnl",class:o.pnl>=0?"positive":"negative"},[t._v(" "+t._s(o.pnl>=0?"+":"")+t._s(t.getCurrencySymbol(o.market))+t._s(t.formatNumber(o.pnl))+" "),e("span",{staticClass:"percent"},[t._v("("+t._s(o.pnl_percent>=0?"+":"")+t._s(o.pnl_percent)+"%)")])])])])}),0)],2)})],2)],1)])])],1),e("div",{ref:"monitorsSection",staticClass:"monitors-section"},[e("div",{staticClass:"section-header"},[e("h3",[e("a-icon",{attrs:{type:"eye"}}),e("span",[t._v(t._s(t.$t("portfolio.monitors.title")))])],1),e("a-button",{attrs:{type:"primary"},on:{click:t.openAddMonitorModal}},[e("a-icon",{attrs:{type:"plus"}}),t._v(" "+t._s(t.$t("portfolio.monitors.add"))+" ")],1)],1),e("a-spin",{attrs:{spinning:t.loadingMonitors}},[e("div",{staticClass:"monitors-list"},[0===t.monitors.length?e("div",{staticClass:"empty-state small"},[e("a-empty",{attrs:{description:t.$t("portfolio.monitors.empty"),image:t.simpleImage}},[e("a-button",{attrs:{type:"primary",size:"small"},on:{click:t.openAddMonitorModal}},[e("a-icon",{attrs:{type:"plus"}}),t._v(" "+t._s(t.$t("portfolio.monitors.addFirst"))+" ")],1)],1)],1):e("div",t._l(t.monitors,function(o){return e("div",{key:o.id,staticClass:"monitor-card"},[e("div",{staticClass:"monitor-header"},[e("div",{staticClass:"monitor-name"},[e("a-icon",{attrs:{type:"robot"}}),e("span",[t._v(t._s(o.name))])],1),e("a-switch",{attrs:{checked:o.is_active,size:"small"},on:{change:function(e){return t.toggleMonitor(o.id,e)}}})],1),e("div",{staticClass:"monitor-body"},[e("div",{staticClass:"monitor-info"},[e("span",{staticClass:"label"},[t._v(t._s(t.$t("portfolio.monitors.interval"))+":")]),e("span",{staticClass:"value"},[t._v(t._s(t.getIntervalText(o.config.interval_minutes)))])]),e("div",{staticClass:"monitor-info"},[e("span",{staticClass:"label"},[t._v(t._s(t.$t("portfolio.form.monitorScope"))+":")]),e("span",{staticClass:"value"},[t.getMonitorPositionIds(o).length>0?[e("a-tooltip",[e("template",{slot:"title"},t._l(t.getMonitorPositionIds(o),function(o){return e("div",{key:o},[t._v(" "+t._s(t.getPositionNameById(o))+" ")])}),0),e("span",{staticClass:"scope-selected"},[t._v(" "+t._s(t.$t("portfolio.form.selectedCount",{count:t.getMonitorPositionIds(o).length,total:t.positions.length}))+" ")])],2)]:e("span",{staticClass:"scope-all"},[t._v(t._s(t.$t("portfolio.form.allPositions")))])],2)]),o.last_run_at?e("div",{staticClass:"monitor-info"},[e("span",{staticClass:"label"},[t._v(t._s(t.$t("portfolio.monitors.lastRun"))+":")]),e("span",{staticClass:"value"},[t._v(t._s(t.formatTime(o.last_run_at)))])]):t._e(),o.next_run_at&&o.is_active?e("div",{staticClass:"monitor-info"},[e("span",{staticClass:"label"},[t._v(t._s(t.$t("portfolio.monitors.nextRun"))+":")]),e("span",{staticClass:"value"},[t._v(t._s(t.formatTime(o.next_run_at)))])]):t._e(),o.notification_config.channels?e("div",{staticClass:"monitor-channels"},[e("span",{staticClass:"label"},[t._v(t._s(t.$t("portfolio.monitors.channels"))+":")]),t._l(o.notification_config.channels,function(o){return e("a-tag",{key:o,attrs:{size:"small"}},[t._v(" "+t._s(o)+" ")])})],2):t._e()]),e("div",{staticClass:"monitor-actions"},[e("a-button",{attrs:{type:"link",size:"small",loading:t.runningMonitor===o.id},on:{click:function(e){return t.runMonitorNow(o.id)}}},[e("a-icon",{attrs:{type:"play-circle"}}),t._v(" "+t._s(t.$t("portfolio.monitors.runNow"))+" ")],1),e("a-button",{attrs:{type:"link",size:"small"},on:{click:function(e){return t.editMonitor(o)}}},[e("a-icon",{attrs:{type:"edit"}})],1),e("a-popconfirm",{attrs:{title:t.$t("portfolio.monitors.deleteConfirm")},on:{confirm:function(e){return t.deleteMonitor(o.id)}}},[e("a-button",{staticClass:"delete-btn",attrs:{type:"link",size:"small"}},[e("a-icon",{attrs:{type:"delete"}})],1)],1)],1)])}),0)])])],1)]),e("a-modal",{attrs:{title:t.editingPosition?t.$t("portfolio.modal.editPosition"):t.$t("portfolio.modal.addPosition"),visible:t.showAddPositionModal,confirmLoading:t.savingPosition,width:"600px"},on:{ok:t.handleSavePosition,cancel:t.closePositionModal}},[e("a-form",{attrs:{form:t.positionForm,"label-col":{span:6},"wrapper-col":{span:16}}},[e("a-form-item",{attrs:{label:t.$t("portfolio.form.market")}},[e("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["market",{rules:[{required:!0,message:t.$t("portfolio.form.marketRequired")}]}],expression:"['market', { rules: [{ required: true, message: $t('portfolio.form.marketRequired') }] }]"}],attrs:{placeholder:t.$t("portfolio.form.selectMarket"),disabled:!!t.editingPosition},on:{change:t.handleMarketChange}},t._l(t.marketTypes,function(o){return e("a-select-option",{key:o.value,attrs:{value:o.value}},[t._v(" "+t._s(t.$t(o.i18nKey))+" ")])}),1)],1),e("a-form-item",{attrs:{label:t.$t("portfolio.form.symbol")}},[e("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["symbol",{rules:[{required:!0,message:t.$t("portfolio.form.symbolRequired")}]}],expression:"['symbol', { rules: [{ required: true, message: $t('portfolio.form.symbolRequired') }] }]"}],staticStyle:{width:"100%"},attrs:{"show-search":"",placeholder:t.$t("portfolio.form.searchSymbol"),"default-active-first-option":!1,"show-arrow":!1,"filter-option":!1,"not-found-content":null,disabled:!!t.editingPosition},on:{search:t.handleSymbolSearch,change:t.handleSymbolSelect}},[t._l(t.symbolSearchResults,function(o){return e("a-select-option",{key:o.symbol,attrs:{value:o.symbol}},[e("div",{staticClass:"symbol-option"},[e("strong",[t._v(t._s(o.symbol))]),e("span",{staticClass:"symbol-name"},[t._v(t._s(o.name))])])])}),t.symbolSearchKeyword&&0===t.symbolSearchResults.length?e("a-select-option",{key:"__manual__"+t.symbolSearchKeyword.toUpperCase(),attrs:{value:t.symbolSearchKeyword.toUpperCase()}},[e("div",{staticClass:"symbol-option manual-input"},[e("a-icon",{staticStyle:{"margin-right":"6px",color:"#1890ff"},attrs:{type:"edit"}}),e("span",[t._v(t._s(t.$t("portfolio.form.useAsSymbol"))+" ")]),e("strong",{staticStyle:{color:"#1890ff"}},[t._v(t._s(t.symbolSearchKeyword.toUpperCase()))]),e("span",[t._v(" "+t._s(t.$t("portfolio.form.asSymbolCode")))])],1)]):t._e()],2),e("div",{staticClass:"symbol-hint",staticStyle:{"font-size":"12px",color:"#999","margin-top":"4px"}},[t._v(" "+t._s(t.$t("portfolio.form.symbolHint"))+" ")])],1),e("a-form-item",{attrs:{label:t.$t("portfolio.form.side")}},[e("a-radio-group",{directives:[{name:"decorator",rawName:"v-decorator",value:["side",{initialValue:"long"}],expression:"['side', { initialValue: 'long' }]"}],attrs:{disabled:!!t.editingPosition}},[e("a-radio-button",{attrs:{value:"long"}},[t._v(t._s(t.$t("portfolio.positions.long")))]),e("a-radio-button",{attrs:{value:"short"}},[t._v(t._s(t.$t("portfolio.positions.short")))])],1)],1),e("a-form-item",{attrs:{label:t.$t("portfolio.form.quantity")}},[e("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["quantity",{rules:[{required:!0,message:t.$t("portfolio.form.quantityRequired")}]}],expression:"['quantity', { rules: [{ required: true, message: $t('portfolio.form.quantityRequired') }] }]"}],staticStyle:{width:"100%"},attrs:{min:1e-8,step:1,placeholder:t.$t("portfolio.form.enterQuantity")}})],1),e("a-form-item",{attrs:{label:t.$t("portfolio.form.entryPrice")}},[e("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["entry_price",{rules:[{required:!0,message:t.$t("portfolio.form.entryPriceRequired")}]}],expression:"['entry_price', { rules: [{ required: true, message: $t('portfolio.form.entryPriceRequired') }] }]"}],staticStyle:{width:"100%"},attrs:{min:1e-8,step:.01,placeholder:t.$t("portfolio.form.enterEntryPrice")}})],1),e("a-form-item",{attrs:{label:t.$t("portfolio.form.notes")}},[e("a-textarea",{directives:[{name:"decorator",rawName:"v-decorator",value:["notes"],expression:"['notes']"}],attrs:{rows:2,placeholder:t.$t("portfolio.form.enterNotes")}})],1),e("a-form-item",{attrs:{label:t.$t("portfolio.form.group")}},[e("a-auto-complete",{directives:[{name:"decorator",rawName:"v-decorator",value:["group_name"],expression:"['group_name']"}],attrs:{placeholder:t.$t("portfolio.form.enterGroup"),dataSource:t.groupNames}})],1)],1)],1),e("a-modal",{attrs:{title:t.editingAlert?t.$t("portfolio.modal.editAlert"):t.$t("portfolio.modal.addAlert"),visible:t.showAddAlertModal,width:"560px"},on:{cancel:t.closeAlertModal}},[e("template",{slot:"footer"},[e("div",{staticClass:"alert-modal-footer"},[t.editingAlert?e("a-button",{attrs:{type:"danger",ghost:"",loading:t.deletingAlert},on:{click:t.confirmDeleteAlert}},[e("a-icon",{attrs:{type:"delete"}}),t._v(" "+t._s(t.$t("portfolio.alerts.delete"))+" ")],1):e("span"),e("div",{staticClass:"footer-right"},[e("a-button",{on:{click:t.closeAlertModal}},[t._v(t._s(t.$t("common.cancel")))]),e("a-button",{attrs:{type:"primary",loading:t.savingAlert},on:{click:t.handleSaveAlert}},[t._v(" "+t._s(t.$t("common.save"))+" ")])],1)],1)]),e("a-form",{attrs:{form:t.alertForm,"label-col":{span:6},"wrapper-col":{span:16}}},[e("a-form-item",{attrs:{label:t.$t("portfolio.form.symbol")}},[e("div",{staticClass:"alert-symbol-info"},[e("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["symbol"],expression:"['symbol']"}],staticClass:"symbol-input",attrs:{disabled:""}}),t.alertPosition?e("div",{staticClass:"current-price-info"},[e("span",{staticClass:"label"},[t._v(t._s(t.$t("portfolio.alerts.currentPrice"))+":")]),e("span",{staticClass:"price"},[t._v("$"+t._s(t.formatNumber(t.alertPosition.current_price||t.alertPosition.entry_price)))])]):t._e()],1)]),e("a-form-item",{attrs:{label:t.$t("portfolio.alerts.alertType")}},[e("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["alert_type",{initialValue:"price_above",rules:[{required:!0}]}],expression:"['alert_type', { initialValue: 'price_above', rules: [{ required: true }] }]"}]},[e("a-select-option",{attrs:{value:"price_above"}},[e("a-icon",{staticStyle:{color:"#52c41a","margin-right":"6px"},attrs:{type:"rise"}}),t._v(" "+t._s(t.$t("portfolio.alerts.priceAbove"))+" ")],1),e("a-select-option",{attrs:{value:"price_below"}},[e("a-icon",{staticStyle:{color:"#f5222d","margin-right":"6px"},attrs:{type:"fall"}}),t._v(" "+t._s(t.$t("portfolio.alerts.priceBelow"))+" ")],1),e("a-select-option",{attrs:{value:"pnl_above"}},[e("a-icon",{staticStyle:{color:"#52c41a","margin-right":"6px"},attrs:{type:"dollar"}}),t._v(" "+t._s(t.$t("portfolio.alerts.pnlAbove"))+" ")],1),e("a-select-option",{attrs:{value:"pnl_below"}},[e("a-icon",{staticStyle:{color:"#f5222d","margin-right":"6px"},attrs:{type:"dollar"}}),t._v(" "+t._s(t.$t("portfolio.alerts.pnlBelow"))+" ")],1)],1)],1),e("a-form-item",{attrs:{label:t.$t("portfolio.alerts.threshold")}},[e("div",{staticClass:"threshold-input-wrapper"},[e("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["threshold",{rules:[{required:!0,message:t.$t("portfolio.alerts.thresholdRequired")}]}],expression:"['threshold', { rules: [{ required: true, message: $t('portfolio.alerts.thresholdRequired') }] }]"}],staticStyle:{width:"100%"},attrs:{step:t.alertTypeIsPrice?.01:1,placeholder:t.alertTypeIsPrice?t.$t("portfolio.alerts.enterPrice"):t.$t("portfolio.alerts.enterPercent"),precision:t.alertTypeIsPrice?4:2}}),t.alertTypeIsPrice?e("span",{staticClass:"alert-unit"},[t._v("$")]):e("span",{staticClass:"alert-unit"},[t._v("%")])],1),t.alertPosition&&t.alertTypeIsPrice?e("div",{staticClass:"threshold-hint"},[t._v(" "+t._s(t.$t("portfolio.alerts.currentPriceHint"))+": $"+t._s(t.formatNumber(t.alertPosition.current_price||t.alertPosition.entry_price))+" ")]):t._e()]),e("a-form-item",{attrs:{label:t.$t("portfolio.alerts.repeatInterval")}},[e("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["repeat_interval",{initialValue:0}],expression:"['repeat_interval', { initialValue: 0 }]"}]},[e("a-select-option",{attrs:{value:0}},[t._v(t._s(t.$t("portfolio.alerts.noRepeat")))]),e("a-select-option",{attrs:{value:5}},[t._v(t._s(t.$t("portfolio.alerts.every5min")))]),e("a-select-option",{attrs:{value:15}},[t._v(t._s(t.$t("portfolio.alerts.every15min")))]),e("a-select-option",{attrs:{value:30}},[t._v(t._s(t.$t("portfolio.alerts.every30min")))]),e("a-select-option",{attrs:{value:60}},[t._v(t._s(t.$t("portfolio.alerts.every1hour")))]),e("a-select-option",{attrs:{value:240}},[t._v(t._s(t.$t("portfolio.alerts.every4hours")))]),e("a-select-option",{attrs:{value:1440}},[t._v(t._s(t.$t("portfolio.alerts.onceDaily")))])],1)],1),e("a-form-item",{attrs:{label:t.$t("portfolio.form.notifyChannels")}},[e("a-checkbox-group",{model:{value:t.alertChannels,callback:function(e){t.alertChannels=e},expression:"alertChannels"}},[e("a-checkbox",{attrs:{value:"browser"}},[e("a-icon",{attrs:{type:"bell"}}),t._v(" "+t._s(t.$t("portfolio.form.browser"))+" ")],1),e("a-checkbox",{attrs:{value:"telegram"}},[e("a-icon",{attrs:{type:"message"}}),t._v(" Telegram ")],1),e("a-checkbox",{attrs:{value:"email"}},[e("a-icon",{attrs:{type:"mail"}}),t._v(" "+t._s(t.$t("portfolio.form.email"))+" ")],1)],1)],1),t.alertChannels.includes("telegram")||t.alertChannels.includes("email")?e("a-alert",{staticStyle:{"margin-bottom":"16px"},attrs:{type:"info",showIcon:""},scopedSlots:t._u([{key:"message",fn:function(){return[e("span",[t._v(" "+t._s(t.$t("portfolio.form.notificationFromProfile"))+" "),e("router-link",{staticStyle:{"margin-left":"8px"},attrs:{to:"/profile"}},[e("a-icon",{attrs:{type:"setting"}}),t._v(" "+t._s(t.$t("portfolio.form.goToProfile"))+" ")],1)],1)]},proxy:!0}],null,!1,440262090)}):t._e(),e("a-form-item",{attrs:{label:t.$t("portfolio.alerts.enabled")}},[e("a-switch",{directives:[{name:"decorator",rawName:"v-decorator",value:["is_active",{initialValue:!0,valuePropName:"checked"}],expression:"['is_active', { initialValue: true, valuePropName: 'checked' }]"}]}),e("span",{staticClass:"switch-label"},[t._v(t._s(t.$t("portfolio.alerts.enabledDesc")))])],1),e("a-form-item",{attrs:{label:t.$t("portfolio.form.notes")}},[e("a-textarea",{directives:[{name:"decorator",rawName:"v-decorator",value:["notes"],expression:"['notes']"}],attrs:{placeholder:t.$t("portfolio.form.enterNotes"),autoSize:{minRows:2,maxRows:4}}})],1)],1)],2),e("a-modal",{attrs:{title:t.editingMonitor?t.$t("portfolio.modal.editMonitor"):t.$t("portfolio.modal.addMonitor"),visible:t.showAddMonitorModal,confirmLoading:t.savingMonitor,width:"600px"},on:{ok:t.handleSaveMonitor,cancel:t.closeMonitorModal}},[e("a-form",{attrs:{form:t.monitorForm,"label-col":{span:6},"wrapper-col":{span:16}}},[e("a-form-item",{attrs:{label:t.$t("portfolio.form.monitorName")}},[e("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["name",{rules:[{required:!0,message:t.$t("portfolio.form.monitorNameRequired")}]}],expression:"['name', { rules: [{ required: true, message: $t('portfolio.form.monitorNameRequired') }] }]"}],attrs:{placeholder:t.$t("portfolio.form.enterMonitorName")}})],1),e("a-form-item",{attrs:{label:t.$t("portfolio.form.interval")}},[e("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["interval_minutes",{initialValue:60,rules:[{required:!0}]}],expression:"['interval_minutes', { initialValue: 60, rules: [{ required: true }] }]"}]},[e("a-select-option",{attrs:{value:5}},[t._v("5 "+t._s(t.$t("portfolio.form.minutes")))]),e("a-select-option",{attrs:{value:10}},[t._v("10 "+t._s(t.$t("portfolio.form.minutes")))]),e("a-select-option",{attrs:{value:30}},[t._v("30 "+t._s(t.$t("portfolio.form.minutes")))]),e("a-select-option",{attrs:{value:60}},[t._v("1 "+t._s(t.$t("portfolio.form.hour")))]),e("a-select-option",{attrs:{value:120}},[t._v("2 "+t._s(t.$t("portfolio.form.hours")))]),e("a-select-option",{attrs:{value:240}},[t._v("4 "+t._s(t.$t("portfolio.form.hours")))]),e("a-select-option",{attrs:{value:480}},[t._v("8 "+t._s(t.$t("portfolio.form.hours")))]),e("a-select-option",{attrs:{value:1440}},[t._v("24 "+t._s(t.$t("portfolio.form.hours")))])],1)],1),e("a-form-item",{attrs:{label:t.$t("portfolio.form.notifyChannels")}},[e("a-checkbox-group",{model:{value:t.monitorChannels,callback:function(e){t.monitorChannels=e},expression:"monitorChannels"}},[e("a-checkbox",{attrs:{value:"browser"}},[t._v(t._s(t.$t("portfolio.form.browser")))]),e("a-checkbox",{attrs:{value:"telegram"}},[t._v("Telegram")]),e("a-checkbox",{attrs:{value:"email"}},[t._v(t._s(t.$t("portfolio.form.email")))])],1)],1),t.monitorChannels.includes("telegram")||t.monitorChannels.includes("email")?e("a-alert",{staticStyle:{"margin-bottom":"16px"},attrs:{type:"info",showIcon:""},scopedSlots:t._u([{key:"message",fn:function(){return[e("span",[t._v(" "+t._s(t.$t("portfolio.form.notificationFromProfile"))+" "),e("router-link",{staticStyle:{"margin-left":"8px"},attrs:{to:"/profile"}},[e("a-icon",{attrs:{type:"setting"}}),t._v(" "+t._s(t.$t("portfolio.form.goToProfile"))+" ")],1)],1)]},proxy:!0}],null,!1,440262090)}):t._e(),e("a-form-item",{attrs:{label:t.$t("portfolio.form.monitorScope")}},[e("a-radio-group",{on:{change:t.handleMonitorScopeChange},model:{value:t.monitorScope,callback:function(e){t.monitorScope=e},expression:"monitorScope"}},[e("a-radio",{attrs:{value:"all"}},[t._v(t._s(t.$t("portfolio.form.allPositions")))]),e("a-radio",{attrs:{value:"selected"}},[t._v(t._s(t.$t("portfolio.form.selectedPositions")))])],1)],1),"selected"===t.monitorScope?e("a-form-item",{attrs:{label:t.$t("portfolio.form.selectPositions")}},[e("a-checkbox-group",{staticClass:"position-checkbox-group",model:{value:t.selectedMonitorPositions,callback:function(e){t.selectedMonitorPositions=e},expression:"selectedMonitorPositions"}},t._l(t.positions,function(o){return e("div",{key:o.id,staticClass:"position-checkbox-item"},[e("a-checkbox",{staticClass:"position-checkbox",attrs:{value:o.id}},[e("div",{staticClass:"position-checkbox-label"},[e("div",{staticClass:"position-left"},[e("a-tag",{attrs:{color:t.getMarketColor(o.market),size:"small"}},[t._v(t._s(o.market))]),e("span",{staticClass:"symbol"},[t._v(t._s(o.symbol))])],1),e("div",{staticClass:"position-middle"},[e("span",{staticClass:"name",attrs:{title:o.name}},[t._v(t._s(o.name))])]),e("div",{staticClass:"position-right"},[e("span",{class:["pnl",o.pnl>=0?"positive":"negative"]},[t._v(" "+t._s(o.pnl>=0?"+":"")+t._s(t.formatNumber(o.pnl_percent))+"% ")])])])])],1)}),0),e("div",{staticClass:"position-select-actions"},[e("a-button",{attrs:{type:"link",size:"small"},on:{click:t.selectAllPositions}},[t._v(" "+t._s(t.$t("portfolio.form.selectAll"))+" ")]),e("a-divider",{attrs:{type:"vertical"}}),e("a-button",{attrs:{type:"link",size:"small"},on:{click:t.deselectAllPositions}},[t._v(" "+t._s(t.$t("portfolio.form.deselectAll"))+" ")]),e("span",{staticClass:"selected-count"},[t._v(" "+t._s(t.$t("portfolio.form.selectedCount",{count:t.selectedMonitorPositions.length,total:t.positions.length}))+" ")])],1)],1):t._e(),e("a-form-item",{attrs:{label:t.$t("portfolio.form.customPrompt")}},[e("a-textarea",{directives:[{name:"decorator",rawName:"v-decorator",value:["prompt"],expression:"['prompt']"}],attrs:{rows:3,placeholder:t.$t("portfolio.form.customPromptPlaceholder")}})],1)],1)],1)],1)},i=[],r=o(2403),a=o(81127),n=o(56252),l=o(76338),c=(o(93693),o(2970)),u=(o(28706),o(2008),o(50113),o(62062),o(26910),o(2892),o(79432),o(26099),o(16034),o(27495),o(47764),o(11392),o(23500),o(62953),o(95353)),p=o(24364),m=o(84841),d={name:"Portfolio",props:{embedded:{type:Boolean,default:!1}},data:function(){return{simpleImage:c.Ay.PRESENTED_IMAGE_SIMPLE,summary:{total_cost:0,total_market_value:0,total_pnl:0,total_pnl_percent:0,position_count:0,market_distribution:[],today_pnl:0,today_change:0},positions:[],loadingPositions:!1,showAddPositionModal:!1,savingPosition:!1,editingPosition:null,positionForm:null,monitors:[],loadingMonitors:!1,showAddMonitorModal:!1,savingMonitor:!1,editingMonitor:null,monitorForm:null,runningMonitor:null,marketTypes:[],symbolSearchResults:[],searchTimer:null,selectedSymbolName:"",symbolSearchKeyword:"",priceRefreshTimer:null,lastSyncTime:null,isSyncing:!1,groups:[],selectedGroup:"",viewMode:"grid",activeGroups:[],alerts:[],loadingAlerts:!1,showAddAlertModal:!1,savingAlert:!1,deletingAlert:!1,editingAlert:null,alertForm:null,alertPosition:null,alertChannels:["browser"],monitorChannels:["browser"],monitorScope:"all",selectedMonitorPositions:[],userNotificationSettings:{default_channels:["browser"],telegram_bot_token:"",telegram_chat_id:"",email:"",phone:"",discord_webhook:"",webhook_url:"",webhook_token:""}}},computed:(0,l.A)((0,l.A)({},(0,u.aH)({navTheme:function(t){return t.app.theme}})),{},{isDarkTheme:function(){return"dark"===this.navTheme||"realdark"===this.navTheme},selectedChannels:function(){return this.monitorChannels||[]},selectedAlertChannels:function(){return this.alertChannels||[]},filteredPositions:function(){var t=this;return this.selectedGroup?"__ungrouped__"===this.selectedGroup?this.positions.filter(function(t){return!t.group_name}):this.positions.filter(function(e){return e.group_name===t.selectedGroup}):this.positions},groupNames:function(){return this.groups.map(function(t){return t.name})},alertTypeIsPrice:function(){if(!this.alertForm)return!0;var t=this.alertForm.getFieldValue("alert_type");return t&&t.startsWith("price_")},profitLossStats:function(){var t=this.positions.filter(function(t){return t.pnl>=0}).length,e=this.positions.filter(function(t){return t.pnl<0}).length;return{profit:t,loss:e}},bestPerformer:function(){return 0===this.positions.length?null:this.positions.reduce(function(t,e){return!t||(e.pnl_percent||0)>(t.pnl_percent||0)?e:t},null)},worstPerformer:function(){return 0===this.positions.length?null:this.positions.reduce(function(t,e){return!t||(e.pnl_percent||0)<(t.pnl_percent||0)?e:t},null)},ungroupedPositions:function(){return this.positions.filter(function(t){return!t.group_name})},groupsWithPositions:function(){var t={};return this.positions.forEach(function(e){e.group_name&&(t[e.group_name]||(t[e.group_name]={name:e.group_name,positions:[]}),t[e.group_name].positions.push(e))}),Object.values(t).sort(function(t,e){return t.name.localeCompare(e.name)})}}),created:function(){this.positionForm=this.$form.createForm(this,{name:"position_form"}),this.monitorForm=this.$form.createForm(this,{name:"monitor_form"}),this.alertForm=this.$form.createForm(this,{name:"alert_form"}),this.loadMarketTypes(),this.loadData()},mounted:function(){var t=this;this.priceRefreshTimer=setInterval(function(){t.refreshPrices()},3e4),this.loadUserNotificationSettings()},beforeDestroy:function(){this.priceRefreshTimer&&clearInterval(this.priceRefreshTimer),this.searchTimer&&clearTimeout(this.searchTimer)},methods:{loadUserNotificationSettings:function(){var t=this;return(0,n.A)((0,a.A)().m(function e(){var o;return(0,a.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.p=0,e.n=1,(0,m.vF)();case 1:o=e.v,1===o.code&&o.data&&(t.userNotificationSettings={default_channels:o.data.default_channels||["browser"],telegram_bot_token:o.data.telegram_bot_token||"",telegram_chat_id:o.data.telegram_chat_id||"",email:o.data.email||"",phone:o.data.phone||"",discord_webhook:o.data.discord_webhook||"",webhook_url:o.data.webhook_url||"",webhook_token:o.data.webhook_token||""}),e.n=3;break;case 2:e.p=2,e.v;case 3:return e.a(2)}},e,null,[[0,2]])}))()},loadData:function(){var t=this;return(0,n.A)((0,a.A)().m(function e(){return(0,a.A)().w(function(e){while(1)switch(e.n){case 0:return e.n=1,Promise.all([t.loadPositions(),t.loadSummary(),t.loadMonitors(),t.loadGroups(),t.loadAlerts()]);case 1:t.lastSyncTime=new Date;case 2:return e.a(2)}},e)}))()},filterByGroup:function(){},refreshPrices:function(){var t=this;return(0,n.A)((0,a.A)().m(function e(){return(0,a.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(!t.isSyncing){e.n=1;break}return e.a(2);case 1:return t.isSyncing=!0,e.p=2,e.n=3,Promise.all([t.loadPositions(!0),t.loadSummary(!0)]);case 3:t.lastSyncTime=new Date;case 4:return e.p=4,t.isSyncing=!1,e.f(4);case 5:return e.a(2)}},e,null,[[2,,4,5]])}))()},formatSyncTime:function(t){if(!t)return"-";var e=new Date,o=Math.floor((e-t)/1e3);return o<60?this.$t("portfolio.summary.justNow"):o<3600?"".concat(Math.floor(o/60)," ").concat(this.$t("portfolio.form.minutes")).concat(this.$t("portfolio.summary.ago")):t.toLocaleTimeString()},getGroupPnl:function(t){return t.reduce(function(t,e){return t+(e.pnl||0)},0)},loadGroups:function(){var t=this;return(0,n.A)((0,a.A)().m(function e(){var o;return(0,a.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.p=0,e.n=1,(0,p.f)();case 1:o=e.v,o&&1===o.code&&o.data&&(t.groups=o.data.groups||[]),e.n=3;break;case 2:e.p=2,e.v;case 3:return e.a(2)}},e,null,[[0,2]])}))()},loadAlerts:function(){var t=this;return(0,n.A)((0,a.A)().m(function e(){var o;return(0,a.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return t.loadingAlerts=!0,e.p=1,e.n=2,(0,p.qu)();case 2:o=e.v,o&&1===o.code&&(t.alerts=o.data||[]),e.n=4;break;case 3:e.p=3,e.v;case 4:return e.p=4,t.loadingAlerts=!1,e.f(4);case 5:return e.a(2)}},e,null,[[1,3,4,5]])}))()},loadMarketTypes:function(){var t=this;return(0,n.A)((0,a.A)().m(function e(){var o;return(0,a.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.p=0,e.n=1,(0,p.iO)();case 1:o=e.v,o&&1===o.code&&o.data&&(t.marketTypes=o.data.map(function(t){return{value:t.value,i18nKey:t.i18nKey||"dashboard.analysis.market.".concat(t.value)}})),e.n=3;break;case 2:e.p=2,e.v,t.marketTypes=[{value:"USStock",i18nKey:"dashboard.analysis.market.USStock"},{value:"Crypto",i18nKey:"dashboard.analysis.market.Crypto"},{value:"Forex",i18nKey:"dashboard.analysis.market.Forex"},{value:"Futures",i18nKey:"dashboard.analysis.market.Futures"}];case 3:return e.a(2)}},e,null,[[0,2]])}))()},loadPositions:function(){var t=arguments,e=this;return(0,n.A)((0,a.A)().m(function o(){var s,i,r;return(0,a.A)().w(function(o){while(1)switch(o.p=o.n){case 0:return s=t.length>0&&void 0!==t[0]&&t[0],e.loadingPositions=!0,o.p=1,i=s?{refresh:"1"}:{},o.n=2,(0,p.Dt)(i);case 2:r=o.v,r&&1===r.code&&(e.positions=r.data||[]),o.n=4;break;case 3:o.p=3,o.v,e.$message.error(e.$t("portfolio.message.loadFailed"));case 4:return o.p=4,e.loadingPositions=!1,o.f(4);case 5:return o.a(2)}},o,null,[[1,3,4,5]])}))()},loadSummary:function(){var t=arguments,e=this;return(0,n.A)((0,a.A)().m(function o(){var s,i;return(0,a.A)().w(function(o){while(1)switch(o.p=o.n){case 0:return s=t.length>0&&void 0!==t[0]&&t[0],o.p=1,o.n=2,(0,p.bC)(s?{refresh:"1"}:{});case 2:i=o.v,i&&1===i.code&&(e.summary=i.data||e.summary),o.n=4;break;case 3:o.p=3,o.v;case 4:return o.a(2)}},o,null,[[1,3]])}))()},loadMonitors:function(){var t=this;return(0,n.A)((0,a.A)().m(function e(){var o;return(0,a.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return t.loadingMonitors=!0,e.p=1,e.n=2,(0,p.w1)();case 2:o=e.v,o&&1===o.code&&(t.monitors=o.data||[]),e.n=4;break;case 3:e.p=3,e.v;case 4:return e.p=4,t.loadingMonitors=!1,e.f(4);case 5:return e.a(2)}},e,null,[[1,3,4,5]])}))()},handleMarketChange:function(t){this.symbolSearchResults=[],this.symbolSearchKeyword="",this.positionForm.setFieldsValue({symbol:""})},handleSymbolSearch:function(t){var e=this;this.symbolSearchKeyword=t||"",this.searchTimer&&clearTimeout(this.searchTimer),!t||t.length<1?this.symbolSearchResults=[]:this.searchTimer=setTimeout((0,n.A)((0,a.A)().m(function o(){var s,i;return(0,a.A)().w(function(o){while(1)switch(o.p=o.n){case 0:if(s=e.positionForm.getFieldValue("market"),s){o.n=1;break}return o.a(2);case 1:return o.p=1,o.n=2,(0,p._3)({market:s,keyword:t,limit:10});case 2:i=o.v,i&&1===i.code?e.symbolSearchResults=i.data||[]:e.symbolSearchResults=[],o.n=4;break;case 3:o.p=3,o.v,e.symbolSearchResults=[];case 4:return o.a(2)}},o,null,[[1,3]])})),300)},handleSymbolSelect:function(t,e){var o=this.symbolSearchResults.find(function(e){return e.symbol===t});this.selectedSymbolName=o?o.name:"",this.symbolSearchKeyword=""},editPosition:function(t){var e=this;this.editingPosition=t,this.showAddPositionModal=!0,this.$nextTick(function(){e.positionForm.setFieldsValue({market:t.market,symbol:t.symbol,side:t.side,quantity:t.quantity,entry_price:t.entry_price,notes:t.notes,group_name:t.group_name||""})})},handleSavePosition:function(){var t=this;return(0,n.A)((0,a.A)().m(function e(){return(0,a.A)().w(function(e){while(1)switch(e.n){case 0:t.positionForm.validateFields(function(){var e=(0,n.A)((0,a.A)().m(function e(o,s){var i,r,n;return(0,a.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(!o){e.n=1;break}return e.a(2);case 1:if(t.savingPosition=!0,e.p=2,i={market:s.market,symbol:s.symbol.toUpperCase(),side:s.side,quantity:s.quantity,entry_price:s.entry_price,notes:s.notes||"",name:t.selectedSymbolName||"",group_name:s.group_name||""},!t.editingPosition){e.n=4;break}return e.n=3,(0,p.Xg)(t.editingPosition.id,i);case 3:r=e.v,e.n=6;break;case 4:return e.n=5,(0,p.Ps)(i);case 5:r=e.v;case 6:r&&1===r.code?(t.$message.success(t.$t("portfolio.message.saveSuccess")),t.closePositionModal(),t.loadData()):t.$message.error((null===(n=r)||void 0===n?void 0:n.msg)||t.$t("portfolio.message.saveFailed")),e.n=8;break;case 7:e.p=7,e.v,t.$message.error(t.$t("portfolio.message.saveFailed"));case 8:return e.p=8,t.savingPosition=!1,e.f(8);case 9:return e.a(2)}},e,null,[[2,7,8,9]])}));return function(t,o){return e.apply(this,arguments)}}());case 1:return e.a(2)}},e)}))()},deletePosition:function(t){var e=this;return(0,n.A)((0,a.A)().m(function o(){var s;return(0,a.A)().w(function(o){while(1)switch(o.p=o.n){case 0:return o.p=0,o.n=1,(0,p.$p)(t);case 1:s=o.v,s&&1===s.code?(e.$message.success(e.$t("portfolio.message.deleteSuccess")),e.loadData()):e.$message.error((null===s||void 0===s?void 0:s.msg)||e.$t("portfolio.message.deleteFailed")),o.n=3;break;case 2:o.p=2,o.v,e.$message.error(e.$t("portfolio.message.deleteFailed"));case 3:return o.a(2)}},o,null,[[0,2]])}))()},closePositionModal:function(){this.showAddPositionModal=!1,this.editingPosition=null,this.positionForm.resetFields(),this.symbolSearchResults=[],this.selectedSymbolName="",this.symbolSearchKeyword=""},handleAlertChannelsChange:function(t){this.alertChannels=t||[]},showAddAlertForPosition:function(t){var e=this,o=this.alerts.find(function(e){return e.position_id===t.id});o?this.editAlert(o):(this.editingAlert=null,this.alertPosition=t,this.alertChannels=(0,r.A)(this.userNotificationSettings.default_channels||["browser"]),this.showAddAlertModal=!0,this.$nextTick(function(){e.alertForm.setFieldsValue({symbol:"".concat(t.market,"/").concat(t.symbol),alert_type:"price_above",threshold:t.current_price||t.entry_price,repeat_interval:0,is_active:!0,notes:""})}))},editAlert:function(t){var e,o=this;this.editingAlert=t,this.alertPosition=this.positions.find(function(e){return e.id===t.position_id})||{market:t.market,symbol:t.symbol,current_price:0,entry_price:0},this.alertChannels=(0,r.A)((null===(e=t.notification_config)||void 0===e?void 0:e.channels)||["browser"]),this.showAddAlertModal=!0,this.$nextTick(function(){o.alertForm&&o.alertForm.setFieldsValue({symbol:"".concat(t.market,"/").concat(t.symbol),alert_type:t.alert_type||"price_above",threshold:t.threshold||0,repeat_interval:t.repeat_interval||0,is_active:!1!==t.is_active,notes:t.notes||""})})},handleSaveAlert:function(){var t=this;return(0,n.A)((0,a.A)().m(function e(){return(0,a.A)().w(function(e){while(1)switch(e.n){case 0:t.alertForm.validateFields(function(){var e=(0,n.A)((0,a.A)().m(function e(o,s){var i,r,n,l,c,u,m;return(0,a.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(!o){e.n=1;break}return e.a(2);case 1:if(t.savingAlert=!0,e.p=2,l={},t.alertChannels.includes("telegram")&&t.userNotificationSettings.telegram_chat_id&&(l.telegram=t.userNotificationSettings.telegram_chat_id,t.userNotificationSettings.telegram_bot_token&&(l.telegram_bot_token=t.userNotificationSettings.telegram_bot_token)),t.alertChannels.includes("email")&&t.userNotificationSettings.email&&(l.email=t.userNotificationSettings.email),t.alertChannels.includes("phone")&&t.userNotificationSettings.phone&&(l.phone=t.userNotificationSettings.phone),t.alertChannels.includes("discord")&&t.userNotificationSettings.discord_webhook&&(l.discord=t.userNotificationSettings.discord_webhook),t.alertChannels.includes("webhook")&&t.userNotificationSettings.webhook_url&&(l.webhook=t.userNotificationSettings.webhook_url,t.userNotificationSettings.webhook_token&&(l.webhook_token=t.userNotificationSettings.webhook_token)),c={position_id:null===(i=t.alertPosition)||void 0===i?void 0:i.id,market:null===(r=t.alertPosition)||void 0===r?void 0:r.market,symbol:null===(n=t.alertPosition)||void 0===n?void 0:n.symbol,alert_type:s.alert_type,threshold:s.threshold,notification_config:{channels:t.alertChannels.length>0?t.alertChannels:["browser"],targets:l,language:t.$store.getters.lang||"en-US"},is_active:!1!==s.is_active,repeat_interval:s.repeat_interval||0,notes:s.notes||""},!t.editingAlert){e.n=4;break}return e.n=3,(0,p.cg)(t.editingAlert.id,c);case 3:u=e.v,e.n=6;break;case 4:return e.n=5,(0,p.Iw)(c);case 5:u=e.v;case 6:u&&1===u.code?(t.$message.success(t.$t("portfolio.message.saveSuccess")),t.closeAlertModal(),t.loadAlerts()):t.$message.error((null===(m=u)||void 0===m?void 0:m.msg)||t.$t("portfolio.message.saveFailed")),e.n=8;break;case 7:e.p=7,e.v,t.$message.error(t.$t("portfolio.message.saveFailed"));case 8:return e.p=8,t.savingAlert=!1,e.f(8);case 9:return e.a(2)}},e,null,[[2,7,8,9]])}));return function(t,o){return e.apply(this,arguments)}}());case 1:return e.a(2)}},e)}))()},deleteAlert:function(t){var e=this;return(0,n.A)((0,a.A)().m(function o(){var s;return(0,a.A)().w(function(o){while(1)switch(o.p=o.n){case 0:return o.p=0,o.n=1,(0,p.qS)(t);case 1:s=o.v,s&&1===s.code?(e.$message.success(e.$t("portfolio.message.deleteSuccess")),e.loadAlerts()):e.$message.error((null===s||void 0===s?void 0:s.msg)||e.$t("portfolio.message.deleteFailed")),o.n=3;break;case 2:o.p=2,o.v,e.$message.error(e.$t("portfolio.message.deleteFailed"));case 3:return o.a(2)}},o,null,[[0,2]])}))()},closeAlertModal:function(){this.showAddAlertModal=!1,this.editingAlert=null,this.alertPosition=null,this.alertChannels=(0,r.A)(this.userNotificationSettings.default_channels||["browser"]),this.alertForm.resetFields()},confirmDeleteAlert:function(){if(this.editingAlert){var t=this;this.$confirm({title:this.$t("portfolio.alerts.deleteConfirm"),okText:this.$t("common.confirm"),okType:"danger",cancelText:this.$t("common.cancel"),onOk:function(){return(0,n.A)((0,a.A)().m(function e(){return(0,a.A)().w(function(e){while(1)switch(e.n){case 0:return e.n=1,t.handleDeleteAlert();case 1:return e.a(2)}},e)}))()}})}},handleDeleteAlert:function(){var t=this;return(0,n.A)((0,a.A)().m(function e(){var o;return(0,a.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.editingAlert){e.n=1;break}return e.a(2);case 1:return t.deletingAlert=!0,e.p=2,e.n=3,(0,p.qS)(t.editingAlert.id);case 3:if(o=e.v,!o||1!==o.code){e.n=5;break}return t.$message.success(t.$t("portfolio.message.deleteSuccess")),t.closeAlertModal(),e.n=4,t.loadAlerts();case 4:e.n=6;break;case 5:t.$message.error((null===o||void 0===o?void 0:o.msg)||t.$t("portfolio.message.deleteFailed"));case 6:e.n=8;break;case 7:e.p=7,e.v,t.$message.error(t.$t("portfolio.message.deleteFailed"));case 8:return e.p=8,t.deletingAlert=!1,e.f(8);case 9:return e.a(2)}},e,null,[[2,7,8,9]])}))()},focusMonitorsSection:function(){var t=this;this.$nextTick(function(){var e=t.$refs.monitorsSection;e&&"function"===typeof e.scrollIntoView&&e.scrollIntoView({behavior:"smooth",block:"start"})})},openAddMonitorModal:function(){var t=this;this.editingMonitor=null,this.monitorChannels=(0,r.A)(this.userNotificationSettings.default_channels||["browser"]),this.monitorScope="all",this.selectedMonitorPositions=[],this.showAddMonitorModal=!0,this.$nextTick(function(){t.monitorForm&&t.monitorForm.resetFields()})},handleMonitorChannelsChange:function(t){this.monitorChannels=t||[]},editMonitor:function(t){var e,o=this;this.editingMonitor=t,this.monitorChannels=(0,r.A)((null===(e=t.notification_config)||void 0===e?void 0:e.channels)||["browser"]);var s=[];if(t.position_ids)if("string"===typeof t.position_ids)try{s=JSON.parse(t.position_ids)||[]}catch(i){s=[]}else Array.isArray(t.position_ids)&&(s=t.position_ids);this.monitorScope=s.length>0?"selected":"all",this.selectedMonitorPositions=s,this.showAddMonitorModal=!0,this.$nextTick(function(){var e,s;o.monitorForm&&o.monitorForm.setFieldsValue({name:t.name,interval_minutes:(null===(e=t.config)||void 0===e?void 0:e.interval_minutes)||60,prompt:(null===(s=t.config)||void 0===s?void 0:s.prompt)||""})})},handleMonitorScopeChange:function(t){this.monitorScope=t.target.value,"all"===t.target.value&&(this.selectedMonitorPositions=[])},selectAllPositions:function(){this.selectedMonitorPositions=this.positions.map(function(t){return t.id})},deselectAllPositions:function(){this.selectedMonitorPositions=[]},handleSaveMonitor:function(){var t=this;return(0,n.A)((0,a.A)().m(function e(){return(0,a.A)().w(function(e){while(1)switch(e.n){case 0:t.monitorForm.validateFields(function(){var e=(0,n.A)((0,a.A)().m(function e(o,s){var i,r,n;return(0,a.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(!o){e.n=1;break}return e.a(2);case 1:if("selected"!==t.monitorScope||0!==t.selectedMonitorPositions.length){e.n=2;break}return t.$message.warning(t.$t("portfolio.form.pleaseSelectPositions")),e.a(2);case 2:if(t.savingMonitor=!0,e.p=3,i={name:s.name,monitor_type:"ai",position_ids:"selected"===t.monitorScope?t.selectedMonitorPositions:[],config:{interval_minutes:s.interval_minutes,prompt:s.prompt||"",language:t.$store.getters.lang||"en-US"},notification_config:{channels:t.monitorChannels.length>0?t.monitorChannels:["browser"],targets:{telegram:t.userNotificationSettings.telegram_chat_id||"",telegram_bot_token:t.userNotificationSettings.telegram_bot_token||"",email:t.userNotificationSettings.email||"",phone:t.userNotificationSettings.phone||"",discord:t.userNotificationSettings.discord_webhook||"",webhook:t.userNotificationSettings.webhook_url||"",webhook_token:t.userNotificationSettings.webhook_token||""}},is_active:!0},!t.editingMonitor){e.n=5;break}return e.n=4,(0,p.sk)(t.editingMonitor.id,i);case 4:r=e.v,e.n=7;break;case 5:return e.n=6,(0,p.yr)(i);case 6:r=e.v;case 7:r&&1===r.code?(t.$message.success(t.$t("portfolio.message.saveSuccess")),t.closeMonitorModal(),t.loadMonitors()):t.$message.error((null===(n=r)||void 0===n?void 0:n.msg)||t.$t("portfolio.message.saveFailed")),e.n=9;break;case 8:e.p=8,e.v,t.$message.error(t.$t("portfolio.message.saveFailed"));case 9:return e.p=9,t.savingMonitor=!1,e.f(9);case 10:return e.a(2)}},e,null,[[3,8,9,10]])}));return function(t,o){return e.apply(this,arguments)}}());case 1:return e.a(2)}},e)}))()},toggleMonitor:function(t,e){var o=this;return(0,n.A)((0,a.A)().m(function s(){var i;return(0,a.A)().w(function(s){while(1)switch(s.p=s.n){case 0:return s.p=0,s.n=1,(0,p.sk)(t,{is_active:e});case 1:i=s.v,i&&1===i.code&&(o.$message.success(e?o.$t("portfolio.message.monitorEnabled"):o.$t("portfolio.message.monitorDisabled")),o.loadMonitors()),s.n=3;break;case 2:s.p=2,s.v,o.$message.error(o.$t("portfolio.message.updateFailed"));case 3:return s.a(2)}},s,null,[[0,2]])}))()},runMonitorNow:function(t){var e=this;return(0,n.A)((0,a.A)().m(function o(){var s,i,r,n,l,c,u;return(0,a.A)().w(function(o){while(1)switch(o.p=o.n){case 0:return e.runningMonitor=t,o.p=1,s=e.$store.getters.lang||"en-US",o.n=2,(0,p.aU)(t,{language:s,async:!0});case 2:i=o.v,i&&1===i.code&&("running"===(null===(r=i.data)||void 0===r?void 0:r.status)?(e.$message.success(e.$t("portfolio.message.monitorRunning")),e.$notification.info({message:e.$t("portfolio.monitors.runningTitle"),description:e.$t("portfolio.monitors.runningDesc"),duration:5})):null!==(n=i.data)&&void 0!==n&&n.success?(e.$message.success(e.$t("portfolio.message.monitorRunSuccess")),i.data.analysis&&e.$notification.open({message:e.$t("portfolio.monitors.analysisResult"),description:i.data.analysis.substring(0,500)+(i.data.analysis.length>500?"...":""),duration:0})):null!==(l=i.data)&&void 0!==l&&l.error&&e.$message.error(i.data.error||e.$t("portfolio.message.monitorRunFailed")),e.loadMonitors()),o.n=4;break;case 3:o.p=3,u=o.v,"ECONNABORTED"===u.code||null!==(c=u.message)&&void 0!==c&&c.includes("timeout")?e.$notification.warning({message:e.$t("portfolio.monitors.timeoutTitle"),description:e.$t("portfolio.monitors.timeoutDesc"),duration:8}):e.$message.error(e.$t("portfolio.message.monitorRunFailed"));case 4:return o.p=4,e.runningMonitor=null,o.f(4);case 5:return o.a(2)}},o,null,[[1,3,4,5]])}))()},deleteMonitor:function(t){var e=this;return(0,n.A)((0,a.A)().m(function o(){var s;return(0,a.A)().w(function(o){while(1)switch(o.p=o.n){case 0:return o.p=0,o.n=1,(0,p.ei)(t);case 1:s=o.v,s&&1===s.code?(e.$message.success(e.$t("portfolio.message.deleteSuccess")),e.loadMonitors()):e.$message.error((null===s||void 0===s?void 0:s.msg)||e.$t("portfolio.message.deleteFailed")),o.n=3;break;case 2:o.p=2,o.v,e.$message.error(e.$t("portfolio.message.deleteFailed"));case 3:return o.a(2)}},o,null,[[0,2]])}))()},closeMonitorModal:function(){this.showAddMonitorModal=!1,this.editingMonitor=null,this.monitorForm.resetFields(),this.monitorChannels=(0,r.A)(this.userNotificationSettings.default_channels||["browser"]),this.monitorScope="all",this.selectedMonitorPositions=[]},getMonitorPositionIds:function(t){if(!t.position_ids)return[];if("string"===typeof t.position_ids)try{return JSON.parse(t.position_ids)||[]}catch(e){return[]}return Array.isArray(t.position_ids)?t.position_ids:[]},getPositionNameById:function(t){var e=this.positions.find(function(e){return e.id===t});return e?"".concat(e.symbol," (").concat(e.name||e.market,")"):"#".concat(t)},hasAlertForPosition:function(t){return this.alerts.some(function(e){return e.position_id===t})},getAlertForPosition:function(t){return this.alerts.find(function(e){return e.position_id===t})},getMarketColor:function(t){var e={USStock:"green",Crypto:"purple",Forex:"gold",Futures:"cyan"};return e[t]||"default"},getMarketName:function(t){return this.$t("dashboard.analysis.market.".concat(t))||t},getCurrencySymbol:function(t){var e=["USStock","Crypto","Forex","Futures"];return e.includes(t)?"$":"¥"},formatNumber:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2;return void 0===t||null===t?"0.00":Number(t).toLocaleString("en-US",{minimumFractionDigits:e,maximumFractionDigits:e})},formatPrice:function(t){return t?t>=1e3?this.formatNumber(t,2):t>=1?this.formatNumber(t,4):this.formatNumber(t,6):"0"},formatTime:function(t){if(!t)return"-";var e;if("number"===typeof t)e=new Date(1e3*t);else{if("string"!==typeof t)return"-";e=/^\d+$/.test(t)?new Date(1e3*parseInt(t,10)):new Date(t)}return isNaN(e.getTime())?"-":e.toLocaleString()},getIntervalText:function(t){if(!t)return"-";if(t<60)return"".concat(t," ").concat(this.$t("portfolio.form.minutes"));var e=t/60;return"".concat(e," ").concat(this.$t("portfolio.form.hours"))}}},f=d,v=o(845),h=(0,v.A)(f,s,i,!1,null,"398d904c",null),_=h.exports},24364:function(t,e,o){o.d(e,{$p:function(){return n},Dt:function(){return i},Iw:function(){return v},Ps:function(){return r},Xg:function(){return a},_3:function(){return y},aU:function(){return d},bC:function(){return l},cg:function(){return h},ei:function(){return m},f:function(){return g},iO:function(){return b},qS:function(){return _},qu:function(){return f},sk:function(){return p},w1:function(){return c},yr:function(){return u}});var s=o(75769);function i(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,s.Ay)({url:"/api/portfolio/positions",method:"get",params:t})}function r(t){return(0,s.Ay)({url:"/api/portfolio/positions",method:"post",data:t})}function a(t,e){return(0,s.Ay)({url:"/api/portfolio/positions/".concat(t),method:"put",data:e})}function n(t){return(0,s.Ay)({url:"/api/portfolio/positions/".concat(t),method:"delete"})}function l(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,s.Ay)({url:"/api/portfolio/summary",method:"get",params:t})}function c(){return(0,s.Ay)({url:"/api/portfolio/monitors",method:"get"})}function u(t){return(0,s.Ay)({url:"/api/portfolio/monitors",method:"post",data:t})}function p(t,e){return(0,s.Ay)({url:"/api/portfolio/monitors/".concat(t),method:"put",data:e})}function m(t){return(0,s.Ay)({url:"/api/portfolio/monitors/".concat(t),method:"delete"})}function d(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return(0,s.Ay)({url:"/api/portfolio/monitors/".concat(t,"/run"),method:"post",data:e})}function f(){return(0,s.Ay)({url:"/api/portfolio/alerts",method:"get"})}function v(t){return(0,s.Ay)({url:"/api/portfolio/alerts",method:"post",data:t})}function h(t,e){return(0,s.Ay)({url:"/api/portfolio/alerts/".concat(t),method:"put",data:e})}function _(t){return(0,s.Ay)({url:"/api/portfolio/alerts/".concat(t),method:"delete"})}function g(){return(0,s.Ay)({url:"/api/portfolio/groups",method:"get"})}function y(t){return(0,s.Ay)({url:"/api/market/symbols/search",method:"post",data:t})}function b(){return(0,s.Ay)({url:"/api/market/types",method:"get"})}},84841:function(t,e,o){o.d(e,{DK:function(){return g},E$:function(){return u},Gl:function(){return d},O0:function(){return c},TK:function(){return a},aU:function(){return i},cw:function(){return l},d$:function(){return b},hG:function(){return n},kg:function(){return r},nY:function(){return _},r7:function(){return p},rx:function(){return v},v9:function(){return f},vF:function(){return m},vi:function(){return y},wq:function(){return h}});var s=o(75769);function i(t){return(0,s.Ay)({url:"/api/users/list",method:"get",params:t})}function r(t){return(0,s.Ay)({url:"/api/users/create",method:"post",data:t})}function a(t,e){return(0,s.Ay)({url:"/api/users/update",method:"put",params:{id:t},data:e})}function n(t){return(0,s.Ay)({url:"/api/users/delete",method:"delete",params:{id:t}})}function l(t){return(0,s.Ay)({url:"/api/users/reset-password",method:"post",data:t})}function c(){return(0,s.Ay)({url:"/api/users/roles",method:"get"})}function u(){return(0,s.Ay)({url:"/api/users/profile",method:"get"})}function p(t){return(0,s.Ay)({url:"/api/users/profile/update",method:"put",data:t})}function m(){return(0,s.Ay)({url:"/api/users/notification-settings",method:"get"})}function d(t){return(0,s.Ay)({url:"/api/users/notification-settings",method:"put",data:t})}function f(t){return(0,s.Ay)({url:"/api/users/my-credits-log",method:"get",params:t})}function v(t){return(0,s.Ay)({url:"/api/users/my-referrals",method:"get",params:t})}function h(t){return(0,s.Ay)({url:"/api/users/set-credits",method:"post",data:t})}function _(t){return(0,s.Ay)({url:"/api/users/set-vip",method:"post",data:t})}function g(t){return(0,s.Ay)({url:"/api/users/system-strategies",method:"get",params:t})}function y(t){return(0,s.Ay)({url:"/api/users/admin-orders",method:"get",params:t})}function b(t){return(0,s.Ay)({url:"/api/users/admin-ai-stats",method:"get",params:t})}}}]); \ No newline at end of file +"use strict";(self["webpackChunkvue_antd_pro"]=self["webpackChunkvue_antd_pro"]||[]).push([[506],{27506:function(t,e,o){o.r(e),o.d(e,{default:function(){return _}});o(74423),o(62010),o(9868),o(21699);var s=function(){var t=this,e=t._self._c;return e("div",{staticClass:"portfolio-container",class:{"theme-dark":t.isDarkTheme,embedded:t.embedded}},[e("div",{staticClass:"summary-section"},[e("div",{staticClass:"summary-card total-value"},[e("div",{staticClass:"card-icon"},[e("a-icon",{attrs:{type:"wallet"}})],1),e("div",{staticClass:"card-content"},[e("div",{staticClass:"card-label"},[t._v(t._s(t.$t("portfolio.summary.totalValue")))]),e("div",{staticClass:"card-value"},[e("span",{staticClass:"currency"},[t._v("$")]),e("span",{staticClass:"amount"},[t._v(t._s(t.formatNumber(t.summary.total_market_value)))])]),void 0!==t.summary.today_change?e("div",{staticClass:"card-sub"},[e("span",{class:t.summary.today_change>=0?"positive":"negative"},[t._v(" "+t._s(t.$t("portfolio.summary.today"))+": "+t._s(t.summary.today_change>=0?"+":"")+"$"+t._s(t.formatNumber(t.summary.today_change))+" ")])]):t._e()])]),e("div",{staticClass:"summary-card"},[e("div",{staticClass:"card-icon cost"},[e("a-icon",{attrs:{type:"dollar"}})],1),e("div",{staticClass:"card-content"},[e("div",{staticClass:"card-label"},[t._v(t._s(t.$t("portfolio.summary.totalCost")))]),e("div",{staticClass:"card-value"},[t._v("$"+t._s(t.formatNumber(t.summary.total_cost)))])])]),e("div",{staticClass:"summary-card"},[e("div",{staticClass:"card-icon",class:t.summary.total_pnl>=0?"profit":"loss"},[e("a-icon",{attrs:{type:t.summary.total_pnl>=0?"rise":"fall"}})],1),e("div",{staticClass:"card-content"},[e("div",{staticClass:"card-label"},[t._v(t._s(t.$t("portfolio.summary.totalPnl")))]),e("div",{staticClass:"card-value",class:t.summary.total_pnl>=0?"positive":"negative"},[t._v(" "+t._s(t.summary.total_pnl>=0?"+":"")+"$"+t._s(t.formatNumber(t.summary.total_pnl))+" "),e("span",{staticClass:"percent"},[t._v("("+t._s(t.summary.total_pnl_percent>=0?"+":"")+t._s(t.summary.total_pnl_percent)+"%)")])])])]),e("div",{staticClass:"summary-card"},[e("div",{staticClass:"card-icon positions"},[e("a-icon",{attrs:{type:"fund"}})],1),e("div",{staticClass:"card-content"},[e("div",{staticClass:"card-label"},[t._v(t._s(t.$t("portfolio.summary.positionCount")))]),e("div",{staticClass:"card-value"},[t._v(" "+t._s(t.summary.position_count)+" "),t.profitLossStats.profit>0||t.profitLossStats.loss>0?e("span",{staticClass:"position-detail"},[t._v(" ("),e("span",{staticClass:"positive"},[t._v(t._s(t.profitLossStats.profit))]),t._v("/"),e("span",{staticClass:"negative"},[t._v(t._s(t.profitLossStats.loss))]),t._v(") ")]):t._e()]),e("div",{staticClass:"card-sub"},[t._v(" "+t._s(t.$t("portfolio.summary.profitLossRatio"))+" ")])])])]),e("div",{staticClass:"summary-section secondary"},[e("div",{staticClass:"summary-card mini"},[e("div",{staticClass:"card-icon today",class:t.summary.today_pnl>=0?"profit":"loss"},[e("a-icon",{attrs:{type:"stock"}})],1),e("div",{staticClass:"card-content"},[e("div",{staticClass:"card-label"},[t._v(t._s(t.$t("portfolio.summary.todayPnl")))]),e("div",{staticClass:"card-value",class:t.summary.today_pnl>=0?"positive":"negative"},[t._v(" "+t._s(t.summary.today_pnl>=0?"+":"")+"$"+t._s(t.formatNumber(t.summary.today_pnl||0))+" ")])])]),e("div",{staticClass:"summary-card mini"},[e("div",{staticClass:"card-icon best"},[e("a-icon",{attrs:{type:"trophy"}})],1),e("div",{staticClass:"card-content"},[e("div",{staticClass:"card-label"},[t._v(t._s(t.$t("portfolio.summary.bestPerformer")))]),t.bestPerformer?e("div",{staticClass:"card-value small positive"},[t._v(" "+t._s(t.bestPerformer.symbol)+" +"+t._s(t.bestPerformer.pnl_percent)+"% ")]):e("div",{staticClass:"card-value small"},[t._v("-")])])]),e("div",{staticClass:"summary-card mini"},[e("div",{staticClass:"card-icon worst"},[e("a-icon",{attrs:{type:"warning"}})],1),e("div",{staticClass:"card-content"},[e("div",{staticClass:"card-label"},[t._v(t._s(t.$t("portfolio.summary.worstPerformer")))]),t.worstPerformer?e("div",{staticClass:"card-value small negative"},[t._v(" "+t._s(t.worstPerformer.symbol)+" "+t._s(t.worstPerformer.pnl_percent)+"% ")]):e("div",{staticClass:"card-value small"},[t._v("-")])])]),e("div",{staticClass:"summary-card mini sync-card"},[e("div",{staticClass:"card-icon sync",class:{syncing:t.isSyncing}},[e("a-icon",{attrs:{type:"sync",spin:t.isSyncing}})],1),e("div",{staticClass:"card-content"},[e("div",{staticClass:"card-label"},[t._v(t._s(t.$t("portfolio.summary.priceSync")))]),e("div",{staticClass:"card-value small"},[t._v(" "+t._s(t.lastSyncTime?t.formatSyncTime(t.lastSyncTime):"-")+" ")]),e("div",{staticClass:"card-sub"},[t._v(" "+t._s(t.$t("portfolio.summary.syncInterval"))+": 30s "),e("a-button",{staticStyle:{padding:"0","margin-left":"8px"},attrs:{type:"link",size:"small",loading:t.isSyncing},on:{click:t.refreshPrices}},[t.isSyncing?t._e():e("a-icon",{attrs:{type:"reload"}})],1)],1)])])]),e("div",{staticClass:"main-content"},[e("div",{staticClass:"positions-section"},[e("div",{staticClass:"section-header"},[e("h3",[e("a-icon",{attrs:{type:"stock"}}),e("span",[t._v(t._s(t.$t("portfolio.positions.title")))])],1),e("div",{staticClass:"header-actions"},[e("a-radio-group",{staticStyle:{"margin-right":"12px"},attrs:{size:"small"},model:{value:t.viewMode,callback:function(e){t.viewMode=e},expression:"viewMode"}},[e("a-radio-button",{attrs:{value:"grid"}},[e("a-icon",{attrs:{type:"appstore"}})],1),e("a-radio-button",{attrs:{value:"group"}},[e("a-icon",{attrs:{type:"folder"}})],1)],1),"grid"===t.viewMode?e("a-select",{staticStyle:{width:"150px","margin-right":"12px"},attrs:{placeholder:t.$t("portfolio.groups.all"),"allow-clear":""},on:{change:t.filterByGroup},model:{value:t.selectedGroup,callback:function(e){t.selectedGroup=e},expression:"selectedGroup"}},[e("a-select-option",{attrs:{value:""}},[t._v(t._s(t.$t("portfolio.groups.all")))]),e("a-select-option",{attrs:{value:"__ungrouped__"}},[t._v(t._s(t.$t("portfolio.groups.ungrouped")))]),t._l(t.groups,function(o){return e("a-select-option",{key:o.name,attrs:{value:o.name}},[t._v(" "+t._s(o.name)+" ("+t._s(o.count)+") ")])})],2):t._e(),e("a-button",{attrs:{type:"primary"},on:{click:function(e){t.showAddPositionModal=!0}}},[e("a-icon",{attrs:{type:"plus"}}),t._v(" "+t._s(t.$t("portfolio.positions.add"))+" ")],1)],1)]),e("a-spin",{attrs:{spinning:t.loadingPositions}},[e("div",{staticClass:"positions-list"},[0===t.positions.length?e("div",{staticClass:"empty-state"},[e("a-empty",{attrs:{description:t.$t("portfolio.positions.empty")}},[e("a-button",{attrs:{type:"primary"},on:{click:function(e){t.showAddPositionModal=!0}}},[e("a-icon",{attrs:{type:"plus"}}),t._v(" "+t._s(t.$t("portfolio.positions.addFirst"))+" ")],1)],1)],1):"grid"===t.viewMode?e("div",{staticClass:"position-grid"},t._l(t.filteredPositions,function(o){return e("div",{key:o.id,staticClass:"position-card",class:{profit:o.pnl>=0,loss:o.pnl<0}},[e("div",{staticClass:"position-header"},[e("div",{staticClass:"symbol-info"},[e("a-tag",{attrs:{color:t.getMarketColor(o.market),size:"small"}},[t._v(t._s(t.getMarketName(o.market)))]),e("span",{staticClass:"symbol"},[t._v(t._s(o.symbol))]),e("span",{staticClass:"name"},[t._v(t._s(o.name))]),o.group_name?e("a-tag",{staticStyle:{"margin-left":"4px"},attrs:{size:"small",color:"blue"}},[e("a-icon",{attrs:{type:"folder"}}),t._v(" "+t._s(o.group_name)+" ")],1):t._e()],1),e("div",{staticClass:"position-actions"},[e("a-tooltip",{attrs:{title:t.hasAlertForPosition(o.id)?t.$t("portfolio.alerts.editAlert"):t.$t("portfolio.alerts.addAlert")}},[e("a-button",{class:{"has-alert":t.hasAlertForPosition(o.id)},attrs:{type:"link",size:"small"},on:{click:function(e){return t.showAddAlertForPosition(o)}}},[e("a-icon",{attrs:{type:"bell",theme:t.hasAlertForPosition(o.id)?"filled":"outlined"}})],1)],1),e("a-button",{attrs:{type:"link",size:"small"},on:{click:function(e){return t.editPosition(o)}}},[e("a-icon",{attrs:{type:"edit"}})],1),e("a-popconfirm",{attrs:{title:t.$t("portfolio.positions.deleteConfirm")},on:{confirm:function(e){return t.deletePosition(o.id)}}},[e("a-button",{staticClass:"delete-btn",attrs:{type:"link",size:"small"}},[e("a-icon",{attrs:{type:"delete"}})],1)],1)],1)]),e("div",{staticClass:"position-body"},[e("div",{staticClass:"price-row"},[e("div",{staticClass:"current-price"},[e("span",{staticClass:"label"},[t._v(t._s(t.$t("portfolio.positions.currentPrice")))]),e("span",{staticClass:"value"},[t._v(t._s(t.getCurrencySymbol(o.market))+t._s(t.formatPrice(o.current_price)))]),e("span",{staticClass:"change",class:o.price_change>=0?"up":"down"},[t._v(" "+t._s(o.price_change>=0?"▲":"▼")+t._s(Math.abs(o.price_change_percent).toFixed(2))+"% ")])]),e("div",{staticClass:"entry-price"},[e("span",{staticClass:"label"},[t._v(t._s(t.$t("portfolio.positions.entryPrice")))]),e("span",{staticClass:"value"},[t._v(t._s(t.getCurrencySymbol(o.market))+t._s(t.formatPrice(o.entry_price)))])])]),e("div",{staticClass:"quantity-row"},[e("div",{staticClass:"item"},[e("span",{staticClass:"label"},[t._v(t._s(t.$t("portfolio.positions.quantity")))]),e("span",{staticClass:"value"},[t._v(t._s(t.formatNumber(o.quantity,4)))])]),e("div",{staticClass:"item"},[e("span",{staticClass:"label"},[t._v(t._s(t.$t("portfolio.positions.side")))]),e("a-tag",{attrs:{color:"long"===o.side?"green":"red",size:"small"}},[t._v(" "+t._s("long"===o.side?t.$t("portfolio.positions.long"):t.$t("portfolio.positions.short"))+" ")])],1),e("div",{staticClass:"item"},[e("span",{staticClass:"label"},[t._v(t._s(t.$t("portfolio.positions.marketValue")))]),e("span",{staticClass:"value"},[t._v(t._s(t.getCurrencySymbol(o.market))+t._s(t.formatNumber(o.market_value)))])])])]),e("div",{staticClass:"position-footer"},[e("div",{staticClass:"pnl"},[e("span",{staticClass:"label"},[t._v(t._s(t.$t("portfolio.positions.pnl")))]),e("span",{staticClass:"value",class:o.pnl>=0?"positive":"negative"},[t._v(" "+t._s(o.pnl>=0?"+":"")+t._s(t.getCurrencySymbol(o.market))+t._s(t.formatNumber(o.pnl))+" "),e("span",{staticClass:"percent"},[t._v("("+t._s(o.pnl_percent>=0?"+":"")+t._s(o.pnl_percent)+"%)")])])])])])}),0):e("div",{staticClass:"position-collapse-view"},[e("a-collapse",{attrs:{bordered:!1},model:{value:t.activeGroups,callback:function(e){t.activeGroups=e},expression:"activeGroups"}},[t.ungroupedPositions.length>0?e("a-collapse-panel",{key:"__ungrouped__",staticClass:"group-panel"},[e("template",{slot:"header"},[e("div",{staticClass:"group-header"},[e("span",{staticClass:"group-name"},[e("a-icon",{staticStyle:{"margin-right":"8px"},attrs:{type:"inbox"}}),t._v(" "+t._s(t.$t("portfolio.groups.ungrouped"))+" ")],1),e("span",{staticClass:"group-stats"},[e("span",{staticClass:"count"},[t._v(t._s(t.ungroupedPositions.length)+" "+t._s(t.$t("portfolio.positions.items")))]),e("span",{staticClass:"group-pnl",class:t.getGroupPnl(t.ungroupedPositions)>=0?"positive":"negative"},[t._v(" "+t._s(t.getGroupPnl(t.ungroupedPositions)>=0?"+":"")+"$"+t._s(t.formatNumber(t.getGroupPnl(t.ungroupedPositions)))+" ")])])])]),e("div",{staticClass:"position-grid compact"},t._l(t.ungroupedPositions,function(o){return e("div",{key:o.id,staticClass:"position-card compact",class:{profit:o.pnl>=0,loss:o.pnl<0}},[e("div",{staticClass:"position-header"},[e("div",{staticClass:"symbol-info"},[e("a-tag",{attrs:{color:t.getMarketColor(o.market),size:"small"}},[t._v(t._s(t.getMarketName(o.market)))]),e("span",{staticClass:"symbol"},[t._v(t._s(o.symbol))]),e("span",{staticClass:"name"},[t._v(t._s(o.name))])],1),e("div",{staticClass:"position-actions"},[e("a-button",{attrs:{type:"link",size:"small"},on:{click:function(e){return t.editPosition(o)}}},[e("a-icon",{attrs:{type:"edit"}})],1),e("a-popconfirm",{attrs:{title:t.$t("portfolio.positions.deleteConfirm")},on:{confirm:function(e){return t.deletePosition(o.id)}}},[e("a-button",{staticClass:"delete-btn",attrs:{type:"link",size:"small"}},[e("a-icon",{attrs:{type:"delete"}})],1)],1)],1)]),e("div",{staticClass:"position-compact-body"},[e("div",{staticClass:"compact-item"},[e("span",{staticClass:"value"},[t._v(t._s(t.getCurrencySymbol(o.market))+t._s(t.formatPrice(o.current_price)))]),e("span",{staticClass:"change",class:o.price_change>=0?"up":"down"},[t._v(" "+t._s(o.price_change>=0?"▲":"▼")+t._s(Math.abs(o.price_change_percent).toFixed(2))+"% ")])]),e("div",{staticClass:"compact-item"},[e("span",{staticClass:"label"},[t._v(t._s(t.$t("portfolio.positions.quantity"))+":")]),e("span",{staticClass:"value"},[t._v(t._s(t.formatNumber(o.quantity,4)))])]),e("div",{staticClass:"compact-item pnl",class:o.pnl>=0?"positive":"negative"},[t._v(" "+t._s(o.pnl>=0?"+":"")+t._s(t.getCurrencySymbol(o.market))+t._s(t.formatNumber(o.pnl))+" "),e("span",{staticClass:"percent"},[t._v("("+t._s(o.pnl_percent>=0?"+":"")+t._s(o.pnl_percent)+"%)")])])])])}),0)],2):t._e(),t._l(t.groupsWithPositions,function(o){return e("a-collapse-panel",{key:o.name,staticClass:"group-panel"},[e("template",{slot:"header"},[e("div",{staticClass:"group-header"},[e("span",{staticClass:"group-name"},[e("a-icon",{staticStyle:{"margin-right":"8px",color:"#1890ff"},attrs:{type:"folder"}}),t._v(" "+t._s(o.name)+" ")],1),e("span",{staticClass:"group-stats"},[e("span",{staticClass:"count"},[t._v(t._s(o.positions.length)+" "+t._s(t.$t("portfolio.positions.items")))]),e("span",{staticClass:"group-pnl",class:t.getGroupPnl(o.positions)>=0?"positive":"negative"},[t._v(" "+t._s(t.getGroupPnl(o.positions)>=0?"+":"")+"$"+t._s(t.formatNumber(t.getGroupPnl(o.positions)))+" ")])])])]),e("div",{staticClass:"position-grid compact"},t._l(o.positions,function(o){return e("div",{key:o.id,staticClass:"position-card compact",class:{profit:o.pnl>=0,loss:o.pnl<0}},[e("div",{staticClass:"position-header"},[e("div",{staticClass:"symbol-info"},[e("a-tag",{attrs:{color:t.getMarketColor(o.market),size:"small"}},[t._v(t._s(t.getMarketName(o.market)))]),e("span",{staticClass:"symbol"},[t._v(t._s(o.symbol))]),e("span",{staticClass:"name"},[t._v(t._s(o.name))])],1),e("div",{staticClass:"position-actions"},[e("a-button",{attrs:{type:"link",size:"small"},on:{click:function(e){return t.editPosition(o)}}},[e("a-icon",{attrs:{type:"edit"}})],1),e("a-popconfirm",{attrs:{title:t.$t("portfolio.positions.deleteConfirm")},on:{confirm:function(e){return t.deletePosition(o.id)}}},[e("a-button",{staticClass:"delete-btn",attrs:{type:"link",size:"small"}},[e("a-icon",{attrs:{type:"delete"}})],1)],1)],1)]),e("div",{staticClass:"position-compact-body"},[e("div",{staticClass:"compact-item"},[e("span",{staticClass:"value"},[t._v(t._s(t.getCurrencySymbol(o.market))+t._s(t.formatPrice(o.current_price)))]),e("span",{staticClass:"change",class:o.price_change>=0?"up":"down"},[t._v(" "+t._s(o.price_change>=0?"▲":"▼")+t._s(Math.abs(o.price_change_percent).toFixed(2))+"% ")])]),e("div",{staticClass:"compact-item"},[e("span",{staticClass:"label"},[t._v(t._s(t.$t("portfolio.positions.quantity"))+":")]),e("span",{staticClass:"value"},[t._v(t._s(t.formatNumber(o.quantity,4)))])]),e("div",{staticClass:"compact-item pnl",class:o.pnl>=0?"positive":"negative"},[t._v(" "+t._s(o.pnl>=0?"+":"")+t._s(t.getCurrencySymbol(o.market))+t._s(t.formatNumber(o.pnl))+" "),e("span",{staticClass:"percent"},[t._v("("+t._s(o.pnl_percent>=0?"+":"")+t._s(o.pnl_percent)+"%)")])])])])}),0)],2)})],2)],1)])])],1),e("div",{ref:"monitorsSection",staticClass:"monitors-section"},[e("div",{staticClass:"section-header"},[e("h3",[e("a-icon",{attrs:{type:"eye"}}),e("span",[t._v(t._s(t.$t("portfolio.monitors.title")))])],1),e("a-button",{attrs:{type:"primary"},on:{click:t.openAddMonitorModal}},[e("a-icon",{attrs:{type:"plus"}}),t._v(" "+t._s(t.$t("portfolio.monitors.add"))+" ")],1)],1),e("a-spin",{attrs:{spinning:t.loadingMonitors}},[e("div",{staticClass:"monitors-list"},[0===t.monitors.length?e("div",{staticClass:"empty-state small"},[e("a-empty",{attrs:{description:t.$t("portfolio.monitors.empty"),image:t.simpleImage}},[e("a-button",{attrs:{type:"primary",size:"small"},on:{click:t.openAddMonitorModal}},[e("a-icon",{attrs:{type:"plus"}}),t._v(" "+t._s(t.$t("portfolio.monitors.addFirst"))+" ")],1)],1)],1):e("div",t._l(t.monitors,function(o){return e("div",{key:o.id,staticClass:"monitor-card"},[e("div",{staticClass:"monitor-header"},[e("div",{staticClass:"monitor-name"},[e("a-icon",{attrs:{type:"robot"}}),e("span",[t._v(t._s(o.name))])],1),e("a-switch",{attrs:{checked:o.is_active,size:"small"},on:{change:function(e){return t.toggleMonitor(o.id,e)}}})],1),e("div",{staticClass:"monitor-body"},[e("div",{staticClass:"monitor-info"},[e("span",{staticClass:"label"},[t._v(t._s(t.$t("portfolio.monitors.interval"))+":")]),e("span",{staticClass:"value"},[t._v(t._s(t.getIntervalText(o.config.interval_minutes)))])]),e("div",{staticClass:"monitor-info"},[e("span",{staticClass:"label"},[t._v(t._s(t.$t("portfolio.form.monitorScope"))+":")]),e("span",{staticClass:"value"},[t.getMonitorPositionIds(o).length>0?[e("a-tooltip",[e("template",{slot:"title"},t._l(t.getMonitorPositionIds(o),function(o){return e("div",{key:o},[t._v(" "+t._s(t.getPositionNameById(o))+" ")])}),0),e("span",{staticClass:"scope-selected"},[t._v(" "+t._s(t.$t("portfolio.form.selectedCount",{count:t.getMonitorPositionIds(o).length,total:t.positions.length}))+" ")])],2)]:e("span",{staticClass:"scope-all"},[t._v(t._s(t.$t("portfolio.form.allPositions")))])],2)]),o.last_run_at?e("div",{staticClass:"monitor-info"},[e("span",{staticClass:"label"},[t._v(t._s(t.$t("portfolio.monitors.lastRun"))+":")]),e("span",{staticClass:"value"},[t._v(t._s(t.formatTime(o.last_run_at)))])]):t._e(),o.next_run_at&&o.is_active?e("div",{staticClass:"monitor-info"},[e("span",{staticClass:"label"},[t._v(t._s(t.$t("portfolio.monitors.nextRun"))+":")]),e("span",{staticClass:"value"},[t._v(t._s(t.formatTime(o.next_run_at)))])]):t._e(),o.notification_config.channels?e("div",{staticClass:"monitor-channels"},[e("span",{staticClass:"label"},[t._v(t._s(t.$t("portfolio.monitors.channels"))+":")]),t._l(o.notification_config.channels,function(o){return e("a-tag",{key:o,attrs:{size:"small"}},[t._v(" "+t._s(o)+" ")])})],2):t._e()]),e("div",{staticClass:"monitor-actions"},[e("a-button",{attrs:{type:"link",size:"small",loading:t.runningMonitor===o.id},on:{click:function(e){return t.runMonitorNow(o.id)}}},[e("a-icon",{attrs:{type:"play-circle"}}),t._v(" "+t._s(t.$t("portfolio.monitors.runNow"))+" ")],1),e("a-button",{attrs:{type:"link",size:"small"},on:{click:function(e){return t.editMonitor(o)}}},[e("a-icon",{attrs:{type:"edit"}})],1),e("a-popconfirm",{attrs:{title:t.$t("portfolio.monitors.deleteConfirm")},on:{confirm:function(e){return t.deleteMonitor(o.id)}}},[e("a-button",{staticClass:"delete-btn",attrs:{type:"link",size:"small"}},[e("a-icon",{attrs:{type:"delete"}})],1)],1)],1)])}),0)])])],1)]),e("a-modal",{attrs:{title:t.editingPosition?t.$t("portfolio.modal.editPosition"):t.$t("portfolio.modal.addPosition"),visible:t.showAddPositionModal,confirmLoading:t.savingPosition,width:"600px"},on:{ok:t.handleSavePosition,cancel:t.closePositionModal}},[e("a-form",{attrs:{form:t.positionForm,"label-col":{span:6},"wrapper-col":{span:16}}},[e("a-form-item",{attrs:{label:t.$t("portfolio.form.market")}},[e("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["market",{rules:[{required:!0,message:t.$t("portfolio.form.marketRequired")}]}],expression:"['market', { rules: [{ required: true, message: $t('portfolio.form.marketRequired') }] }]"}],attrs:{placeholder:t.$t("portfolio.form.selectMarket"),disabled:!!t.editingPosition},on:{change:t.handleMarketChange}},t._l(t.marketTypes,function(o){return e("a-select-option",{key:o.value,attrs:{value:o.value}},[t._v(" "+t._s(t.$t(o.i18nKey))+" ")])}),1)],1),e("a-form-item",{attrs:{label:t.$t("portfolio.form.symbol")}},[e("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["symbol",{rules:[{required:!0,message:t.$t("portfolio.form.symbolRequired")}]}],expression:"['symbol', { rules: [{ required: true, message: $t('portfolio.form.symbolRequired') }] }]"}],staticStyle:{width:"100%"},attrs:{"show-search":"",placeholder:t.$t("portfolio.form.searchSymbol"),"default-active-first-option":!1,"show-arrow":!1,"filter-option":!1,"not-found-content":null,disabled:!!t.editingPosition},on:{search:t.handleSymbolSearch,change:t.handleSymbolSelect}},[t._l(t.symbolSearchResults,function(o){return e("a-select-option",{key:o.symbol,attrs:{value:o.symbol}},[e("div",{staticClass:"symbol-option"},[e("strong",[t._v(t._s(o.symbol))]),e("span",{staticClass:"symbol-name"},[t._v(t._s(o.name))])])])}),t.symbolSearchKeyword&&0===t.symbolSearchResults.length?e("a-select-option",{key:"__manual__"+t.symbolSearchKeyword.toUpperCase(),attrs:{value:t.symbolSearchKeyword.toUpperCase()}},[e("div",{staticClass:"symbol-option manual-input"},[e("a-icon",{staticStyle:{"margin-right":"6px",color:"#1890ff"},attrs:{type:"edit"}}),e("span",[t._v(t._s(t.$t("portfolio.form.useAsSymbol"))+" ")]),e("strong",{staticStyle:{color:"#1890ff"}},[t._v(t._s(t.symbolSearchKeyword.toUpperCase()))]),e("span",[t._v(" "+t._s(t.$t("portfolio.form.asSymbolCode")))])],1)]):t._e()],2),e("div",{staticClass:"symbol-hint",staticStyle:{"font-size":"12px",color:"#999","margin-top":"4px"}},[t._v(" "+t._s(t.$t("portfolio.form.symbolHint"))+" ")])],1),e("a-form-item",{attrs:{label:t.$t("portfolio.form.side")}},[e("a-radio-group",{directives:[{name:"decorator",rawName:"v-decorator",value:["side",{initialValue:"long"}],expression:"['side', { initialValue: 'long' }]"}],attrs:{disabled:!!t.editingPosition}},[e("a-radio-button",{attrs:{value:"long"}},[t._v(t._s(t.$t("portfolio.positions.long")))]),e("a-radio-button",{attrs:{value:"short"}},[t._v(t._s(t.$t("portfolio.positions.short")))])],1)],1),e("a-form-item",{attrs:{label:t.$t("portfolio.form.quantity")}},[e("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["quantity",{rules:[{required:!0,message:t.$t("portfolio.form.quantityRequired")}]}],expression:"['quantity', { rules: [{ required: true, message: $t('portfolio.form.quantityRequired') }] }]"}],staticStyle:{width:"100%"},attrs:{min:1e-8,step:1,placeholder:t.$t("portfolio.form.enterQuantity")}})],1),e("a-form-item",{attrs:{label:t.$t("portfolio.form.entryPrice")}},[e("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["entry_price",{rules:[{required:!0,message:t.$t("portfolio.form.entryPriceRequired")}]}],expression:"['entry_price', { rules: [{ required: true, message: $t('portfolio.form.entryPriceRequired') }] }]"}],staticStyle:{width:"100%"},attrs:{min:1e-8,step:.01,placeholder:t.$t("portfolio.form.enterEntryPrice")}})],1),e("a-form-item",{attrs:{label:t.$t("portfolio.form.notes")}},[e("a-textarea",{directives:[{name:"decorator",rawName:"v-decorator",value:["notes"],expression:"['notes']"}],attrs:{rows:2,placeholder:t.$t("portfolio.form.enterNotes")}})],1),e("a-form-item",{attrs:{label:t.$t("portfolio.form.group")}},[e("a-auto-complete",{directives:[{name:"decorator",rawName:"v-decorator",value:["group_name"],expression:"['group_name']"}],attrs:{placeholder:t.$t("portfolio.form.enterGroup"),dataSource:t.groupNames}})],1)],1)],1),e("a-modal",{attrs:{title:t.editingAlert?t.$t("portfolio.modal.editAlert"):t.$t("portfolio.modal.addAlert"),visible:t.showAddAlertModal,width:"560px"},on:{cancel:t.closeAlertModal}},[e("template",{slot:"footer"},[e("div",{staticClass:"alert-modal-footer"},[t.editingAlert?e("a-button",{attrs:{type:"danger",ghost:"",loading:t.deletingAlert},on:{click:t.confirmDeleteAlert}},[e("a-icon",{attrs:{type:"delete"}}),t._v(" "+t._s(t.$t("portfolio.alerts.delete"))+" ")],1):e("span"),e("div",{staticClass:"footer-right"},[e("a-button",{on:{click:t.closeAlertModal}},[t._v(t._s(t.$t("common.cancel")))]),e("a-button",{attrs:{type:"primary",loading:t.savingAlert},on:{click:t.handleSaveAlert}},[t._v(" "+t._s(t.$t("common.save"))+" ")])],1)],1)]),e("a-form",{attrs:{form:t.alertForm,"label-col":{span:6},"wrapper-col":{span:16}}},[e("a-form-item",{attrs:{label:t.$t("portfolio.form.symbol")}},[e("div",{staticClass:"alert-symbol-info"},[e("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["symbol"],expression:"['symbol']"}],staticClass:"symbol-input",attrs:{disabled:""}}),t.alertPosition?e("div",{staticClass:"current-price-info"},[e("span",{staticClass:"label"},[t._v(t._s(t.$t("portfolio.alerts.currentPrice"))+":")]),e("span",{staticClass:"price"},[t._v("$"+t._s(t.formatNumber(t.alertPosition.current_price||t.alertPosition.entry_price)))])]):t._e()],1)]),e("a-form-item",{attrs:{label:t.$t("portfolio.alerts.alertType")}},[e("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["alert_type",{initialValue:"price_above",rules:[{required:!0}]}],expression:"['alert_type', { initialValue: 'price_above', rules: [{ required: true }] }]"}]},[e("a-select-option",{attrs:{value:"price_above"}},[e("a-icon",{staticStyle:{color:"#52c41a","margin-right":"6px"},attrs:{type:"rise"}}),t._v(" "+t._s(t.$t("portfolio.alerts.priceAbove"))+" ")],1),e("a-select-option",{attrs:{value:"price_below"}},[e("a-icon",{staticStyle:{color:"#f5222d","margin-right":"6px"},attrs:{type:"fall"}}),t._v(" "+t._s(t.$t("portfolio.alerts.priceBelow"))+" ")],1),e("a-select-option",{attrs:{value:"pnl_above"}},[e("a-icon",{staticStyle:{color:"#52c41a","margin-right":"6px"},attrs:{type:"dollar"}}),t._v(" "+t._s(t.$t("portfolio.alerts.pnlAbove"))+" ")],1),e("a-select-option",{attrs:{value:"pnl_below"}},[e("a-icon",{staticStyle:{color:"#f5222d","margin-right":"6px"},attrs:{type:"dollar"}}),t._v(" "+t._s(t.$t("portfolio.alerts.pnlBelow"))+" ")],1)],1)],1),e("a-form-item",{attrs:{label:t.$t("portfolio.alerts.threshold")}},[e("div",{staticClass:"threshold-input-wrapper"},[e("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["threshold",{rules:[{required:!0,message:t.$t("portfolio.alerts.thresholdRequired")}]}],expression:"['threshold', { rules: [{ required: true, message: $t('portfolio.alerts.thresholdRequired') }] }]"}],staticStyle:{width:"100%"},attrs:{step:t.alertTypeIsPrice?.01:1,placeholder:t.alertTypeIsPrice?t.$t("portfolio.alerts.enterPrice"):t.$t("portfolio.alerts.enterPercent"),precision:t.alertTypeIsPrice?4:2}}),t.alertTypeIsPrice?e("span",{staticClass:"alert-unit"},[t._v("$")]):e("span",{staticClass:"alert-unit"},[t._v("%")])],1),t.alertPosition&&t.alertTypeIsPrice?e("div",{staticClass:"threshold-hint"},[t._v(" "+t._s(t.$t("portfolio.alerts.currentPriceHint"))+": $"+t._s(t.formatNumber(t.alertPosition.current_price||t.alertPosition.entry_price))+" ")]):t._e()]),e("a-form-item",{attrs:{label:t.$t("portfolio.alerts.repeatInterval")}},[e("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["repeat_interval",{initialValue:0}],expression:"['repeat_interval', { initialValue: 0 }]"}]},[e("a-select-option",{attrs:{value:0}},[t._v(t._s(t.$t("portfolio.alerts.noRepeat")))]),e("a-select-option",{attrs:{value:5}},[t._v(t._s(t.$t("portfolio.alerts.every5min")))]),e("a-select-option",{attrs:{value:15}},[t._v(t._s(t.$t("portfolio.alerts.every15min")))]),e("a-select-option",{attrs:{value:30}},[t._v(t._s(t.$t("portfolio.alerts.every30min")))]),e("a-select-option",{attrs:{value:60}},[t._v(t._s(t.$t("portfolio.alerts.every1hour")))]),e("a-select-option",{attrs:{value:240}},[t._v(t._s(t.$t("portfolio.alerts.every4hours")))]),e("a-select-option",{attrs:{value:1440}},[t._v(t._s(t.$t("portfolio.alerts.onceDaily")))])],1)],1),e("a-form-item",{attrs:{label:t.$t("portfolio.form.notifyChannels")}},[e("a-checkbox-group",{model:{value:t.alertChannels,callback:function(e){t.alertChannels=e},expression:"alertChannels"}},[e("a-checkbox",{attrs:{value:"browser"}},[e("a-icon",{attrs:{type:"bell"}}),t._v(" "+t._s(t.$t("portfolio.form.browser"))+" ")],1),e("a-checkbox",{attrs:{value:"telegram"}},[e("a-icon",{attrs:{type:"message"}}),t._v(" Telegram ")],1),e("a-checkbox",{attrs:{value:"email"}},[e("a-icon",{attrs:{type:"mail"}}),t._v(" "+t._s(t.$t("portfolio.form.email"))+" ")],1)],1)],1),t.alertChannels.includes("telegram")||t.alertChannels.includes("email")?e("a-alert",{staticStyle:{"margin-bottom":"16px"},attrs:{type:"info",showIcon:""},scopedSlots:t._u([{key:"message",fn:function(){return[e("span",[t._v(" "+t._s(t.$t("portfolio.form.notificationFromProfile"))+" "),e("router-link",{staticStyle:{"margin-left":"8px"},attrs:{to:"/profile"}},[e("a-icon",{attrs:{type:"setting"}}),t._v(" "+t._s(t.$t("portfolio.form.goToProfile"))+" ")],1)],1)]},proxy:!0}],null,!1,440262090)}):t._e(),e("a-form-item",{attrs:{label:t.$t("portfolio.alerts.enabled")}},[e("a-switch",{directives:[{name:"decorator",rawName:"v-decorator",value:["is_active",{initialValue:!0,valuePropName:"checked"}],expression:"['is_active', { initialValue: true, valuePropName: 'checked' }]"}]}),e("span",{staticClass:"switch-label"},[t._v(t._s(t.$t("portfolio.alerts.enabledDesc")))])],1),e("a-form-item",{attrs:{label:t.$t("portfolio.form.notes")}},[e("a-textarea",{directives:[{name:"decorator",rawName:"v-decorator",value:["notes"],expression:"['notes']"}],attrs:{placeholder:t.$t("portfolio.form.enterNotes"),autoSize:{minRows:2,maxRows:4}}})],1)],1)],2),e("a-modal",{attrs:{title:t.editingMonitor?t.$t("portfolio.modal.editMonitor"):t.$t("portfolio.modal.addMonitor"),visible:t.showAddMonitorModal,confirmLoading:t.savingMonitor,width:"600px"},on:{ok:t.handleSaveMonitor,cancel:t.closeMonitorModal}},[e("a-form",{attrs:{form:t.monitorForm,"label-col":{span:6},"wrapper-col":{span:16}}},[e("a-form-item",{attrs:{label:t.$t("portfolio.form.monitorName")}},[e("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["name",{rules:[{required:!0,message:t.$t("portfolio.form.monitorNameRequired")}]}],expression:"['name', { rules: [{ required: true, message: $t('portfolio.form.monitorNameRequired') }] }]"}],attrs:{placeholder:t.$t("portfolio.form.enterMonitorName")}})],1),e("a-form-item",{attrs:{label:t.$t("portfolio.form.interval")}},[e("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["interval_minutes",{initialValue:60,rules:[{required:!0}]}],expression:"['interval_minutes', { initialValue: 60, rules: [{ required: true }] }]"}]},[e("a-select-option",{attrs:{value:5}},[t._v("5 "+t._s(t.$t("portfolio.form.minutes")))]),e("a-select-option",{attrs:{value:10}},[t._v("10 "+t._s(t.$t("portfolio.form.minutes")))]),e("a-select-option",{attrs:{value:30}},[t._v("30 "+t._s(t.$t("portfolio.form.minutes")))]),e("a-select-option",{attrs:{value:60}},[t._v("1 "+t._s(t.$t("portfolio.form.hour")))]),e("a-select-option",{attrs:{value:120}},[t._v("2 "+t._s(t.$t("portfolio.form.hours")))]),e("a-select-option",{attrs:{value:240}},[t._v("4 "+t._s(t.$t("portfolio.form.hours")))]),e("a-select-option",{attrs:{value:480}},[t._v("8 "+t._s(t.$t("portfolio.form.hours")))]),e("a-select-option",{attrs:{value:1440}},[t._v("24 "+t._s(t.$t("portfolio.form.hours")))])],1)],1),e("a-form-item",{attrs:{label:t.$t("portfolio.form.notifyChannels")}},[e("a-checkbox-group",{model:{value:t.monitorChannels,callback:function(e){t.monitorChannels=e},expression:"monitorChannels"}},[e("a-checkbox",{attrs:{value:"browser"}},[t._v(t._s(t.$t("portfolio.form.browser")))]),e("a-checkbox",{attrs:{value:"telegram"}},[t._v("Telegram")]),e("a-checkbox",{attrs:{value:"email"}},[t._v(t._s(t.$t("portfolio.form.email")))])],1)],1),t.monitorChannels.includes("telegram")||t.monitorChannels.includes("email")?e("a-alert",{staticStyle:{"margin-bottom":"16px"},attrs:{type:"info",showIcon:""},scopedSlots:t._u([{key:"message",fn:function(){return[e("span",[t._v(" "+t._s(t.$t("portfolio.form.notificationFromProfile"))+" "),e("router-link",{staticStyle:{"margin-left":"8px"},attrs:{to:"/profile"}},[e("a-icon",{attrs:{type:"setting"}}),t._v(" "+t._s(t.$t("portfolio.form.goToProfile"))+" ")],1)],1)]},proxy:!0}],null,!1,440262090)}):t._e(),e("a-form-item",{attrs:{label:t.$t("portfolio.form.monitorScope")}},[e("a-radio-group",{on:{change:t.handleMonitorScopeChange},model:{value:t.monitorScope,callback:function(e){t.monitorScope=e},expression:"monitorScope"}},[e("a-radio",{attrs:{value:"all"}},[t._v(t._s(t.$t("portfolio.form.allPositions")))]),e("a-radio",{attrs:{value:"selected"}},[t._v(t._s(t.$t("portfolio.form.selectedPositions")))])],1)],1),"selected"===t.monitorScope?e("a-form-item",{attrs:{label:t.$t("portfolio.form.selectPositions")}},[e("a-checkbox-group",{staticClass:"position-checkbox-group",model:{value:t.selectedMonitorPositions,callback:function(e){t.selectedMonitorPositions=e},expression:"selectedMonitorPositions"}},t._l(t.positions,function(o){return e("div",{key:o.id,staticClass:"position-checkbox-item"},[e("a-checkbox",{staticClass:"position-checkbox",attrs:{value:o.id}},[e("div",{staticClass:"position-checkbox-label"},[e("div",{staticClass:"position-left"},[e("a-tag",{attrs:{color:t.getMarketColor(o.market),size:"small"}},[t._v(t._s(o.market))]),e("span",{staticClass:"symbol"},[t._v(t._s(o.symbol))])],1),e("div",{staticClass:"position-middle"},[e("span",{staticClass:"name",attrs:{title:o.name}},[t._v(t._s(o.name))])]),e("div",{staticClass:"position-right"},[e("span",{class:["pnl",o.pnl>=0?"positive":"negative"]},[t._v(" "+t._s(o.pnl>=0?"+":"")+t._s(t.formatNumber(o.pnl_percent))+"% ")])])])])],1)}),0),e("div",{staticClass:"position-select-actions"},[e("a-button",{attrs:{type:"link",size:"small"},on:{click:t.selectAllPositions}},[t._v(" "+t._s(t.$t("portfolio.form.selectAll"))+" ")]),e("a-divider",{attrs:{type:"vertical"}}),e("a-button",{attrs:{type:"link",size:"small"},on:{click:t.deselectAllPositions}},[t._v(" "+t._s(t.$t("portfolio.form.deselectAll"))+" ")]),e("span",{staticClass:"selected-count"},[t._v(" "+t._s(t.$t("portfolio.form.selectedCount",{count:t.selectedMonitorPositions.length,total:t.positions.length}))+" ")])],1)],1):t._e(),e("a-form-item",{attrs:{label:t.$t("portfolio.form.customPrompt")}},[e("a-textarea",{directives:[{name:"decorator",rawName:"v-decorator",value:["prompt"],expression:"['prompt']"}],attrs:{rows:3,placeholder:t.$t("portfolio.form.customPromptPlaceholder")}})],1)],1)],1)],1)},i=[],r=o(2403),a=o(81127),n=o(56252),l=o(76338),c=(o(93693),o(2970)),u=(o(28706),o(2008),o(50113),o(62062),o(26910),o(2892),o(79432),o(26099),o(16034),o(27495),o(47764),o(11392),o(23500),o(62953),o(95353)),p=o(24364),m=o(84841),d={name:"Portfolio",props:{embedded:{type:Boolean,default:!1}},data:function(){return{simpleImage:c.Ay.PRESENTED_IMAGE_SIMPLE,summary:{total_cost:0,total_market_value:0,total_pnl:0,total_pnl_percent:0,position_count:0,market_distribution:[],today_pnl:0,today_change:0},positions:[],loadingPositions:!1,showAddPositionModal:!1,savingPosition:!1,editingPosition:null,positionForm:null,monitors:[],loadingMonitors:!1,showAddMonitorModal:!1,savingMonitor:!1,editingMonitor:null,monitorForm:null,runningMonitor:null,marketTypes:[],symbolSearchResults:[],searchTimer:null,selectedSymbolName:"",symbolSearchKeyword:"",priceRefreshTimer:null,lastSyncTime:null,isSyncing:!1,groups:[],selectedGroup:"",viewMode:"grid",activeGroups:[],alerts:[],loadingAlerts:!1,showAddAlertModal:!1,savingAlert:!1,deletingAlert:!1,editingAlert:null,alertForm:null,alertPosition:null,alertChannels:["browser"],monitorChannels:["browser"],monitorScope:"all",selectedMonitorPositions:[],userNotificationSettings:{default_channels:["browser"],telegram_bot_token:"",telegram_chat_id:"",email:"",phone:"",discord_webhook:"",webhook_url:"",webhook_token:""}}},computed:(0,l.A)((0,l.A)({},(0,u.aH)({navTheme:function(t){return t.app.theme}})),{},{isDarkTheme:function(){return"dark"===this.navTheme||"realdark"===this.navTheme},selectedChannels:function(){return this.monitorChannels||[]},selectedAlertChannels:function(){return this.alertChannels||[]},filteredPositions:function(){var t=this;return this.selectedGroup?"__ungrouped__"===this.selectedGroup?this.positions.filter(function(t){return!t.group_name}):this.positions.filter(function(e){return e.group_name===t.selectedGroup}):this.positions},groupNames:function(){return this.groups.map(function(t){return t.name})},alertTypeIsPrice:function(){if(!this.alertForm)return!0;var t=this.alertForm.getFieldValue("alert_type");return t&&t.startsWith("price_")},profitLossStats:function(){var t=this.positions.filter(function(t){return t.pnl>=0}).length,e=this.positions.filter(function(t){return t.pnl<0}).length;return{profit:t,loss:e}},bestPerformer:function(){return 0===this.positions.length?null:this.positions.reduce(function(t,e){return!t||(e.pnl_percent||0)>(t.pnl_percent||0)?e:t},null)},worstPerformer:function(){return 0===this.positions.length?null:this.positions.reduce(function(t,e){return!t||(e.pnl_percent||0)<(t.pnl_percent||0)?e:t},null)},ungroupedPositions:function(){return this.positions.filter(function(t){return!t.group_name})},groupsWithPositions:function(){var t={};return this.positions.forEach(function(e){e.group_name&&(t[e.group_name]||(t[e.group_name]={name:e.group_name,positions:[]}),t[e.group_name].positions.push(e))}),Object.values(t).sort(function(t,e){return t.name.localeCompare(e.name)})}}),created:function(){this.positionForm=this.$form.createForm(this,{name:"position_form"}),this.monitorForm=this.$form.createForm(this,{name:"monitor_form"}),this.alertForm=this.$form.createForm(this,{name:"alert_form"}),this.loadMarketTypes(),this.loadData()},mounted:function(){var t=this;this.priceRefreshTimer=setInterval(function(){t.refreshPrices()},3e4),this.loadUserNotificationSettings()},beforeDestroy:function(){this.priceRefreshTimer&&clearInterval(this.priceRefreshTimer),this.searchTimer&&clearTimeout(this.searchTimer)},methods:{loadUserNotificationSettings:function(){var t=this;return(0,n.A)((0,a.A)().m(function e(){var o;return(0,a.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.p=0,e.n=1,(0,m.vF)();case 1:o=e.v,1===o.code&&o.data&&(t.userNotificationSettings={default_channels:o.data.default_channels||["browser"],telegram_bot_token:o.data.telegram_bot_token||"",telegram_chat_id:o.data.telegram_chat_id||"",email:o.data.email||"",phone:o.data.phone||"",discord_webhook:o.data.discord_webhook||"",webhook_url:o.data.webhook_url||"",webhook_token:o.data.webhook_token||""}),e.n=3;break;case 2:e.p=2,e.v;case 3:return e.a(2)}},e,null,[[0,2]])}))()},loadData:function(){var t=this;return(0,n.A)((0,a.A)().m(function e(){return(0,a.A)().w(function(e){while(1)switch(e.n){case 0:return e.n=1,Promise.all([t.loadPositions(),t.loadSummary(),t.loadMonitors(),t.loadGroups(),t.loadAlerts()]);case 1:t.lastSyncTime=new Date;case 2:return e.a(2)}},e)}))()},filterByGroup:function(){},refreshPrices:function(){var t=this;return(0,n.A)((0,a.A)().m(function e(){return(0,a.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(!t.isSyncing){e.n=1;break}return e.a(2);case 1:return t.isSyncing=!0,e.p=2,e.n=3,Promise.all([t.loadPositions(!0),t.loadSummary(!0)]);case 3:t.lastSyncTime=new Date;case 4:return e.p=4,t.isSyncing=!1,e.f(4);case 5:return e.a(2)}},e,null,[[2,,4,5]])}))()},formatSyncTime:function(t){if(!t)return"-";var e=new Date,o=Math.floor((e-t)/1e3);return o<60?this.$t("portfolio.summary.justNow"):o<3600?"".concat(Math.floor(o/60)," ").concat(this.$t("portfolio.form.minutes")).concat(this.$t("portfolio.summary.ago")):t.toLocaleTimeString()},getGroupPnl:function(t){return t.reduce(function(t,e){return t+(e.pnl||0)},0)},loadGroups:function(){var t=this;return(0,n.A)((0,a.A)().m(function e(){var o;return(0,a.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.p=0,e.n=1,(0,p.f)();case 1:o=e.v,o&&1===o.code&&o.data&&(t.groups=o.data.groups||[]),e.n=3;break;case 2:e.p=2,e.v;case 3:return e.a(2)}},e,null,[[0,2]])}))()},loadAlerts:function(){var t=this;return(0,n.A)((0,a.A)().m(function e(){var o;return(0,a.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return t.loadingAlerts=!0,e.p=1,e.n=2,(0,p.qu)();case 2:o=e.v,o&&1===o.code&&(t.alerts=o.data||[]),e.n=4;break;case 3:e.p=3,e.v;case 4:return e.p=4,t.loadingAlerts=!1,e.f(4);case 5:return e.a(2)}},e,null,[[1,3,4,5]])}))()},loadMarketTypes:function(){var t=this;return(0,n.A)((0,a.A)().m(function e(){var o;return(0,a.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.p=0,e.n=1,(0,p.iO)();case 1:o=e.v,o&&1===o.code&&o.data&&(t.marketTypes=o.data.map(function(t){return{value:t.value,i18nKey:t.i18nKey||"dashboard.analysis.market.".concat(t.value)}})),e.n=3;break;case 2:e.p=2,e.v,t.marketTypes=[{value:"USStock",i18nKey:"dashboard.analysis.market.USStock"},{value:"Crypto",i18nKey:"dashboard.analysis.market.Crypto"},{value:"Forex",i18nKey:"dashboard.analysis.market.Forex"},{value:"Futures",i18nKey:"dashboard.analysis.market.Futures"}];case 3:return e.a(2)}},e,null,[[0,2]])}))()},loadPositions:function(){var t=arguments,e=this;return(0,n.A)((0,a.A)().m(function o(){var s,i,r;return(0,a.A)().w(function(o){while(1)switch(o.p=o.n){case 0:return s=t.length>0&&void 0!==t[0]&&t[0],e.loadingPositions=!0,o.p=1,i=s?{refresh:"1"}:{},o.n=2,(0,p.Dt)(i);case 2:r=o.v,r&&1===r.code&&(e.positions=r.data||[]),o.n=4;break;case 3:o.p=3,o.v,e.$message.error(e.$t("portfolio.message.loadFailed"));case 4:return o.p=4,e.loadingPositions=!1,o.f(4);case 5:return o.a(2)}},o,null,[[1,3,4,5]])}))()},loadSummary:function(){var t=arguments,e=this;return(0,n.A)((0,a.A)().m(function o(){var s,i;return(0,a.A)().w(function(o){while(1)switch(o.p=o.n){case 0:return s=t.length>0&&void 0!==t[0]&&t[0],o.p=1,o.n=2,(0,p.bC)(s?{refresh:"1"}:{});case 2:i=o.v,i&&1===i.code&&(e.summary=i.data||e.summary),o.n=4;break;case 3:o.p=3,o.v;case 4:return o.a(2)}},o,null,[[1,3]])}))()},loadMonitors:function(){var t=this;return(0,n.A)((0,a.A)().m(function e(){var o;return(0,a.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return t.loadingMonitors=!0,e.p=1,e.n=2,(0,p.w1)();case 2:o=e.v,o&&1===o.code&&(t.monitors=o.data||[]),e.n=4;break;case 3:e.p=3,e.v;case 4:return e.p=4,t.loadingMonitors=!1,e.f(4);case 5:return e.a(2)}},e,null,[[1,3,4,5]])}))()},handleMarketChange:function(t){this.symbolSearchResults=[],this.symbolSearchKeyword="",this.positionForm.setFieldsValue({symbol:""})},handleSymbolSearch:function(t){var e=this;this.symbolSearchKeyword=t||"",this.searchTimer&&clearTimeout(this.searchTimer),!t||t.length<1?this.symbolSearchResults=[]:this.searchTimer=setTimeout((0,n.A)((0,a.A)().m(function o(){var s,i;return(0,a.A)().w(function(o){while(1)switch(o.p=o.n){case 0:if(s=e.positionForm.getFieldValue("market"),s){o.n=1;break}return o.a(2);case 1:return o.p=1,o.n=2,(0,p._3)({market:s,keyword:t,limit:10});case 2:i=o.v,i&&1===i.code?e.symbolSearchResults=i.data||[]:e.symbolSearchResults=[],o.n=4;break;case 3:o.p=3,o.v,e.symbolSearchResults=[];case 4:return o.a(2)}},o,null,[[1,3]])})),300)},handleSymbolSelect:function(t,e){var o=this.symbolSearchResults.find(function(e){return e.symbol===t});this.selectedSymbolName=o?o.name:"",this.symbolSearchKeyword=""},editPosition:function(t){var e=this;this.editingPosition=t,this.showAddPositionModal=!0,this.$nextTick(function(){e.positionForm.setFieldsValue({market:t.market,symbol:t.symbol,side:t.side,quantity:t.quantity,entry_price:t.entry_price,notes:t.notes,group_name:t.group_name||""})})},handleSavePosition:function(){var t=this;return(0,n.A)((0,a.A)().m(function e(){return(0,a.A)().w(function(e){while(1)switch(e.n){case 0:t.positionForm.validateFields(function(){var e=(0,n.A)((0,a.A)().m(function e(o,s){var i,r,n;return(0,a.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(!o){e.n=1;break}return e.a(2);case 1:if(t.savingPosition=!0,e.p=2,i={market:s.market,symbol:s.symbol.toUpperCase(),side:s.side,quantity:s.quantity,entry_price:s.entry_price,notes:s.notes||"",name:t.selectedSymbolName||"",group_name:s.group_name||""},!t.editingPosition){e.n=4;break}return e.n=3,(0,p.Xg)(t.editingPosition.id,i);case 3:r=e.v,e.n=6;break;case 4:return e.n=5,(0,p.Ps)(i);case 5:r=e.v;case 6:r&&1===r.code?(t.$message.success(t.$t("portfolio.message.saveSuccess")),t.closePositionModal(),t.loadData()):t.$message.error((null===(n=r)||void 0===n?void 0:n.msg)||t.$t("portfolio.message.saveFailed")),e.n=8;break;case 7:e.p=7,e.v,t.$message.error(t.$t("portfolio.message.saveFailed"));case 8:return e.p=8,t.savingPosition=!1,e.f(8);case 9:return e.a(2)}},e,null,[[2,7,8,9]])}));return function(t,o){return e.apply(this,arguments)}}());case 1:return e.a(2)}},e)}))()},deletePosition:function(t){var e=this;return(0,n.A)((0,a.A)().m(function o(){var s;return(0,a.A)().w(function(o){while(1)switch(o.p=o.n){case 0:return o.p=0,o.n=1,(0,p.$p)(t);case 1:s=o.v,s&&1===s.code?(e.$message.success(e.$t("portfolio.message.deleteSuccess")),e.loadData()):e.$message.error((null===s||void 0===s?void 0:s.msg)||e.$t("portfolio.message.deleteFailed")),o.n=3;break;case 2:o.p=2,o.v,e.$message.error(e.$t("portfolio.message.deleteFailed"));case 3:return o.a(2)}},o,null,[[0,2]])}))()},closePositionModal:function(){this.showAddPositionModal=!1,this.editingPosition=null,this.positionForm.resetFields(),this.symbolSearchResults=[],this.selectedSymbolName="",this.symbolSearchKeyword=""},handleAlertChannelsChange:function(t){this.alertChannels=t||[]},showAddAlertForPosition:function(t){var e=this,o=this.alerts.find(function(e){return e.position_id===t.id});o?this.editAlert(o):(this.editingAlert=null,this.alertPosition=t,this.alertChannels=(0,r.A)(this.userNotificationSettings.default_channels||["browser"]),this.showAddAlertModal=!0,this.$nextTick(function(){e.alertForm.setFieldsValue({symbol:"".concat(t.market,"/").concat(t.symbol),alert_type:"price_above",threshold:t.current_price||t.entry_price,repeat_interval:0,is_active:!0,notes:""})}))},editAlert:function(t){var e,o=this;this.editingAlert=t,this.alertPosition=this.positions.find(function(e){return e.id===t.position_id})||{market:t.market,symbol:t.symbol,current_price:0,entry_price:0},this.alertChannels=(0,r.A)((null===(e=t.notification_config)||void 0===e?void 0:e.channels)||["browser"]),this.showAddAlertModal=!0,this.$nextTick(function(){o.alertForm&&o.alertForm.setFieldsValue({symbol:"".concat(t.market,"/").concat(t.symbol),alert_type:t.alert_type||"price_above",threshold:t.threshold||0,repeat_interval:t.repeat_interval||0,is_active:!1!==t.is_active,notes:t.notes||""})})},handleSaveAlert:function(){var t=this;return(0,n.A)((0,a.A)().m(function e(){return(0,a.A)().w(function(e){while(1)switch(e.n){case 0:t.alertForm.validateFields(function(){var e=(0,n.A)((0,a.A)().m(function e(o,s){var i,r,n,l,c,u,m;return(0,a.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(!o){e.n=1;break}return e.a(2);case 1:if(t.savingAlert=!0,e.p=2,l={},t.alertChannels.includes("telegram")&&t.userNotificationSettings.telegram_chat_id&&(l.telegram=t.userNotificationSettings.telegram_chat_id,t.userNotificationSettings.telegram_bot_token&&(l.telegram_bot_token=t.userNotificationSettings.telegram_bot_token)),t.alertChannels.includes("email")&&t.userNotificationSettings.email&&(l.email=t.userNotificationSettings.email),t.alertChannels.includes("phone")&&t.userNotificationSettings.phone&&(l.phone=t.userNotificationSettings.phone),t.alertChannels.includes("discord")&&t.userNotificationSettings.discord_webhook&&(l.discord=t.userNotificationSettings.discord_webhook),t.alertChannels.includes("webhook")&&t.userNotificationSettings.webhook_url&&(l.webhook=t.userNotificationSettings.webhook_url,t.userNotificationSettings.webhook_token&&(l.webhook_token=t.userNotificationSettings.webhook_token)),c={position_id:null===(i=t.alertPosition)||void 0===i?void 0:i.id,market:null===(r=t.alertPosition)||void 0===r?void 0:r.market,symbol:null===(n=t.alertPosition)||void 0===n?void 0:n.symbol,alert_type:s.alert_type,threshold:s.threshold,notification_config:{channels:t.alertChannels.length>0?t.alertChannels:["browser"],targets:l,language:t.$store.getters.lang||"en-US"},is_active:!1!==s.is_active,repeat_interval:s.repeat_interval||0,notes:s.notes||""},!t.editingAlert){e.n=4;break}return e.n=3,(0,p.cg)(t.editingAlert.id,c);case 3:u=e.v,e.n=6;break;case 4:return e.n=5,(0,p.Iw)(c);case 5:u=e.v;case 6:u&&1===u.code?(t.$message.success(t.$t("portfolio.message.saveSuccess")),t.closeAlertModal(),t.loadAlerts()):t.$message.error((null===(m=u)||void 0===m?void 0:m.msg)||t.$t("portfolio.message.saveFailed")),e.n=8;break;case 7:e.p=7,e.v,t.$message.error(t.$t("portfolio.message.saveFailed"));case 8:return e.p=8,t.savingAlert=!1,e.f(8);case 9:return e.a(2)}},e,null,[[2,7,8,9]])}));return function(t,o){return e.apply(this,arguments)}}());case 1:return e.a(2)}},e)}))()},deleteAlert:function(t){var e=this;return(0,n.A)((0,a.A)().m(function o(){var s;return(0,a.A)().w(function(o){while(1)switch(o.p=o.n){case 0:return o.p=0,o.n=1,(0,p.qS)(t);case 1:s=o.v,s&&1===s.code?(e.$message.success(e.$t("portfolio.message.deleteSuccess")),e.loadAlerts()):e.$message.error((null===s||void 0===s?void 0:s.msg)||e.$t("portfolio.message.deleteFailed")),o.n=3;break;case 2:o.p=2,o.v,e.$message.error(e.$t("portfolio.message.deleteFailed"));case 3:return o.a(2)}},o,null,[[0,2]])}))()},closeAlertModal:function(){this.showAddAlertModal=!1,this.editingAlert=null,this.alertPosition=null,this.alertChannels=(0,r.A)(this.userNotificationSettings.default_channels||["browser"]),this.alertForm.resetFields()},confirmDeleteAlert:function(){if(this.editingAlert){var t=this;this.$confirm({title:this.$t("portfolio.alerts.deleteConfirm"),okText:this.$t("common.confirm"),okType:"danger",cancelText:this.$t("common.cancel"),onOk:function(){return(0,n.A)((0,a.A)().m(function e(){return(0,a.A)().w(function(e){while(1)switch(e.n){case 0:return e.n=1,t.handleDeleteAlert();case 1:return e.a(2)}},e)}))()}})}},handleDeleteAlert:function(){var t=this;return(0,n.A)((0,a.A)().m(function e(){var o;return(0,a.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.editingAlert){e.n=1;break}return e.a(2);case 1:return t.deletingAlert=!0,e.p=2,e.n=3,(0,p.qS)(t.editingAlert.id);case 3:if(o=e.v,!o||1!==o.code){e.n=5;break}return t.$message.success(t.$t("portfolio.message.deleteSuccess")),t.closeAlertModal(),e.n=4,t.loadAlerts();case 4:e.n=6;break;case 5:t.$message.error((null===o||void 0===o?void 0:o.msg)||t.$t("portfolio.message.deleteFailed"));case 6:e.n=8;break;case 7:e.p=7,e.v,t.$message.error(t.$t("portfolio.message.deleteFailed"));case 8:return e.p=8,t.deletingAlert=!1,e.f(8);case 9:return e.a(2)}},e,null,[[2,7,8,9]])}))()},focusMonitorsSection:function(){var t=this;this.$nextTick(function(){var e=t.$refs.monitorsSection;e&&"function"===typeof e.scrollIntoView&&e.scrollIntoView({behavior:"smooth",block:"start"})})},openAddMonitorModal:function(){var t=this;this.editingMonitor=null,this.monitorChannels=(0,r.A)(this.userNotificationSettings.default_channels||["browser"]),this.monitorScope="all",this.selectedMonitorPositions=[],this.showAddMonitorModal=!0,this.$nextTick(function(){t.monitorForm&&t.monitorForm.resetFields()})},handleMonitorChannelsChange:function(t){this.monitorChannels=t||[]},editMonitor:function(t){var e,o=this;this.editingMonitor=t,this.monitorChannels=(0,r.A)((null===(e=t.notification_config)||void 0===e?void 0:e.channels)||["browser"]);var s=[];if(t.position_ids)if("string"===typeof t.position_ids)try{s=JSON.parse(t.position_ids)||[]}catch(i){s=[]}else Array.isArray(t.position_ids)&&(s=t.position_ids);this.monitorScope=s.length>0?"selected":"all",this.selectedMonitorPositions=s,this.showAddMonitorModal=!0,this.$nextTick(function(){var e,s;o.monitorForm&&o.monitorForm.setFieldsValue({name:t.name,interval_minutes:(null===(e=t.config)||void 0===e?void 0:e.interval_minutes)||60,prompt:(null===(s=t.config)||void 0===s?void 0:s.prompt)||""})})},handleMonitorScopeChange:function(t){this.monitorScope=t.target.value,"all"===t.target.value&&(this.selectedMonitorPositions=[])},selectAllPositions:function(){this.selectedMonitorPositions=this.positions.map(function(t){return t.id})},deselectAllPositions:function(){this.selectedMonitorPositions=[]},handleSaveMonitor:function(){var t=this;return(0,n.A)((0,a.A)().m(function e(){return(0,a.A)().w(function(e){while(1)switch(e.n){case 0:t.monitorForm.validateFields(function(){var e=(0,n.A)((0,a.A)().m(function e(o,s){var i,r,n;return(0,a.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(!o){e.n=1;break}return e.a(2);case 1:if("selected"!==t.monitorScope||0!==t.selectedMonitorPositions.length){e.n=2;break}return t.$message.warning(t.$t("portfolio.form.pleaseSelectPositions")),e.a(2);case 2:if(t.savingMonitor=!0,e.p=3,i={name:s.name,monitor_type:"ai",position_ids:"selected"===t.monitorScope?t.selectedMonitorPositions:[],config:{interval_minutes:s.interval_minutes,prompt:s.prompt||"",language:t.$store.getters.lang||"en-US"},notification_config:{channels:t.monitorChannels.length>0?t.monitorChannels:["browser"],targets:{telegram:t.userNotificationSettings.telegram_chat_id||"",telegram_bot_token:t.userNotificationSettings.telegram_bot_token||"",email:t.userNotificationSettings.email||"",phone:t.userNotificationSettings.phone||"",discord:t.userNotificationSettings.discord_webhook||"",webhook:t.userNotificationSettings.webhook_url||"",webhook_token:t.userNotificationSettings.webhook_token||""}},is_active:!0},!t.editingMonitor){e.n=5;break}return e.n=4,(0,p.sk)(t.editingMonitor.id,i);case 4:r=e.v,e.n=7;break;case 5:return e.n=6,(0,p.yr)(i);case 6:r=e.v;case 7:r&&1===r.code?(t.$message.success(t.$t("portfolio.message.saveSuccess")),t.closeMonitorModal(),t.loadMonitors()):t.$message.error((null===(n=r)||void 0===n?void 0:n.msg)||t.$t("portfolio.message.saveFailed")),e.n=9;break;case 8:e.p=8,e.v,t.$message.error(t.$t("portfolio.message.saveFailed"));case 9:return e.p=9,t.savingMonitor=!1,e.f(9);case 10:return e.a(2)}},e,null,[[3,8,9,10]])}));return function(t,o){return e.apply(this,arguments)}}());case 1:return e.a(2)}},e)}))()},toggleMonitor:function(t,e){var o=this;return(0,n.A)((0,a.A)().m(function s(){var i;return(0,a.A)().w(function(s){while(1)switch(s.p=s.n){case 0:return s.p=0,s.n=1,(0,p.sk)(t,{is_active:e});case 1:i=s.v,i&&1===i.code&&(o.$message.success(e?o.$t("portfolio.message.monitorEnabled"):o.$t("portfolio.message.monitorDisabled")),o.loadMonitors()),s.n=3;break;case 2:s.p=2,s.v,o.$message.error(o.$t("portfolio.message.updateFailed"));case 3:return s.a(2)}},s,null,[[0,2]])}))()},runMonitorNow:function(t){var e=this;return(0,n.A)((0,a.A)().m(function o(){var s,i,r,n,l,c,u;return(0,a.A)().w(function(o){while(1)switch(o.p=o.n){case 0:return e.runningMonitor=t,o.p=1,s=e.$store.getters.lang||"en-US",o.n=2,(0,p.aU)(t,{language:s,async:!0});case 2:i=o.v,i&&1===i.code&&("running"===(null===(r=i.data)||void 0===r?void 0:r.status)?(e.$message.success(e.$t("portfolio.message.monitorRunning")),e.$notification.info({message:e.$t("portfolio.monitors.runningTitle"),description:e.$t("portfolio.monitors.runningDesc"),duration:5})):null!==(n=i.data)&&void 0!==n&&n.success?(e.$message.success(e.$t("portfolio.message.monitorRunSuccess")),i.data.analysis&&e.$notification.open({message:e.$t("portfolio.monitors.analysisResult"),description:i.data.analysis.substring(0,500)+(i.data.analysis.length>500?"...":""),duration:0})):null!==(l=i.data)&&void 0!==l&&l.error&&e.$message.error(i.data.error||e.$t("portfolio.message.monitorRunFailed")),e.loadMonitors()),o.n=4;break;case 3:o.p=3,u=o.v,"ECONNABORTED"===u.code||null!==(c=u.message)&&void 0!==c&&c.includes("timeout")?e.$notification.warning({message:e.$t("portfolio.monitors.timeoutTitle"),description:e.$t("portfolio.monitors.timeoutDesc"),duration:8}):e.$message.error(e.$t("portfolio.message.monitorRunFailed"));case 4:return o.p=4,e.runningMonitor=null,o.f(4);case 5:return o.a(2)}},o,null,[[1,3,4,5]])}))()},deleteMonitor:function(t){var e=this;return(0,n.A)((0,a.A)().m(function o(){var s;return(0,a.A)().w(function(o){while(1)switch(o.p=o.n){case 0:return o.p=0,o.n=1,(0,p.ei)(t);case 1:s=o.v,s&&1===s.code?(e.$message.success(e.$t("portfolio.message.deleteSuccess")),e.loadMonitors()):e.$message.error((null===s||void 0===s?void 0:s.msg)||e.$t("portfolio.message.deleteFailed")),o.n=3;break;case 2:o.p=2,o.v,e.$message.error(e.$t("portfolio.message.deleteFailed"));case 3:return o.a(2)}},o,null,[[0,2]])}))()},closeMonitorModal:function(){this.showAddMonitorModal=!1,this.editingMonitor=null,this.monitorForm.resetFields(),this.monitorChannels=(0,r.A)(this.userNotificationSettings.default_channels||["browser"]),this.monitorScope="all",this.selectedMonitorPositions=[]},getMonitorPositionIds:function(t){if(!t.position_ids)return[];if("string"===typeof t.position_ids)try{return JSON.parse(t.position_ids)||[]}catch(e){return[]}return Array.isArray(t.position_ids)?t.position_ids:[]},getPositionNameById:function(t){var e=this.positions.find(function(e){return e.id===t});return e?"".concat(e.symbol," (").concat(e.name||e.market,")"):"#".concat(t)},hasAlertForPosition:function(t){return this.alerts.some(function(e){return e.position_id===t})},getAlertForPosition:function(t){return this.alerts.find(function(e){return e.position_id===t})},getMarketColor:function(t){var e={USStock:"green",Crypto:"purple",Forex:"gold",Futures:"cyan"};return e[t]||"default"},getMarketName:function(t){return this.$t("dashboard.analysis.market.".concat(t))||t},getCurrencySymbol:function(t){var e=["USStock","Crypto","Forex","Futures"];return e.includes(t)?"$":"¥"},formatNumber:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2;return void 0===t||null===t?"0.00":Number(t).toLocaleString("en-US",{minimumFractionDigits:e,maximumFractionDigits:e})},formatPrice:function(t){return t?t>=1e3?this.formatNumber(t,2):t>=1?this.formatNumber(t,4):this.formatNumber(t,6):"0"},formatTime:function(t){if(!t)return"-";var e;if("number"===typeof t)e=new Date(1e3*t);else{if("string"!==typeof t)return"-";e=/^\d+$/.test(t)?new Date(1e3*parseInt(t,10)):new Date(t)}return isNaN(e.getTime())?"-":e.toLocaleString()},getIntervalText:function(t){if(!t)return"-";if(t<60)return"".concat(t," ").concat(this.$t("portfolio.form.minutes"));var e=t/60;return"".concat(e," ").concat(this.$t("portfolio.form.hours"))}}},f=d,v=o(845),h=(0,v.A)(f,s,i,!1,null,"398d904c",null),_=h.exports},24364:function(t,e,o){o.d(e,{$p:function(){return n},Dt:function(){return i},Iw:function(){return v},Ps:function(){return r},Xg:function(){return a},_3:function(){return y},aU:function(){return d},bC:function(){return l},cg:function(){return h},ei:function(){return m},f:function(){return g},iO:function(){return b},qS:function(){return _},qu:function(){return f},sk:function(){return p},w1:function(){return c},yr:function(){return u}});var s=o(75769);function i(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,s.Ay)({url:"/api/portfolio/positions",method:"get",params:t})}function r(t){return(0,s.Ay)({url:"/api/portfolio/positions",method:"post",data:t})}function a(t,e){return(0,s.Ay)({url:"/api/portfolio/positions/".concat(t),method:"put",data:e})}function n(t){return(0,s.Ay)({url:"/api/portfolio/positions/".concat(t),method:"delete"})}function l(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,s.Ay)({url:"/api/portfolio/summary",method:"get",params:t})}function c(){return(0,s.Ay)({url:"/api/portfolio/monitors",method:"get"})}function u(t){return(0,s.Ay)({url:"/api/portfolio/monitors",method:"post",data:t})}function p(t,e){return(0,s.Ay)({url:"/api/portfolio/monitors/".concat(t),method:"put",data:e})}function m(t){return(0,s.Ay)({url:"/api/portfolio/monitors/".concat(t),method:"delete"})}function d(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return(0,s.Ay)({url:"/api/portfolio/monitors/".concat(t,"/run"),method:"post",data:e})}function f(){return(0,s.Ay)({url:"/api/portfolio/alerts",method:"get"})}function v(t){return(0,s.Ay)({url:"/api/portfolio/alerts",method:"post",data:t})}function h(t,e){return(0,s.Ay)({url:"/api/portfolio/alerts/".concat(t),method:"put",data:e})}function _(t){return(0,s.Ay)({url:"/api/portfolio/alerts/".concat(t),method:"delete"})}function g(){return(0,s.Ay)({url:"/api/portfolio/groups",method:"get"})}function y(t){return(0,s.Ay)({url:"/api/market/symbols/search",method:"post",data:t})}function b(){return(0,s.Ay)({url:"/api/market/types",method:"get"})}},84841:function(t,e,o){o.d(e,{DK:function(){return y},E$:function(){return u},Gl:function(){return d},O0:function(){return c},TK:function(){return a},aU:function(){return i},cw:function(){return l},d$:function(){return C},hG:function(){return n},hl:function(){return f},kg:function(){return r},nY:function(){return g},r7:function(){return p},rx:function(){return h},v9:function(){return v},vF:function(){return m},vi:function(){return b},wq:function(){return _}});var s=o(75769);function i(t){return(0,s.Ay)({url:"/api/users/list",method:"get",params:t})}function r(t){return(0,s.Ay)({url:"/api/users/create",method:"post",data:t})}function a(t,e){return(0,s.Ay)({url:"/api/users/update",method:"put",params:{id:t},data:e})}function n(t){return(0,s.Ay)({url:"/api/users/delete",method:"delete",params:{id:t}})}function l(t){return(0,s.Ay)({url:"/api/users/reset-password",method:"post",data:t})}function c(){return(0,s.Ay)({url:"/api/users/roles",method:"get"})}function u(){return(0,s.Ay)({url:"/api/users/profile",method:"get"})}function p(t){return(0,s.Ay)({url:"/api/users/profile/update",method:"put",data:t})}function m(){return(0,s.Ay)({url:"/api/users/notification-settings",method:"get"})}function d(t){return(0,s.Ay)({url:"/api/users/notification-settings",method:"put",data:t})}function f(){return(0,s.Ay)({url:"/api/users/notification-settings/test",method:"post",data:{}})}function v(t){return(0,s.Ay)({url:"/api/users/my-credits-log",method:"get",params:t})}function h(t){return(0,s.Ay)({url:"/api/users/my-referrals",method:"get",params:t})}function _(t){return(0,s.Ay)({url:"/api/users/set-credits",method:"post",data:t})}function g(t){return(0,s.Ay)({url:"/api/users/set-vip",method:"post",data:t})}function y(t){return(0,s.Ay)({url:"/api/users/system-strategies",method:"get",params:t})}function b(t){return(0,s.Ay)({url:"/api/users/admin-orders",method:"get",params:t})}function C(t){return(0,s.Ay)({url:"/api/users/admin-ai-stats",method:"get",params:t})}}}]); \ No newline at end of file diff --git a/frontend/dist/js/506.7a09321c.js b/frontend/dist/js/506.dbfbc559.js similarity index 97% rename from frontend/dist/js/506.7a09321c.js rename to frontend/dist/js/506.dbfbc559.js index 3c2501d..ac71df2 100644 --- a/frontend/dist/js/506.7a09321c.js +++ b/frontend/dist/js/506.dbfbc559.js @@ -1 +1 @@ -"use strict";(self["webpackChunkvue_antd_pro"]=self["webpackChunkvue_antd_pro"]||[]).push([[506],{27506:function(t,e,o){o.r(e),o.d(e,{default:function(){return _}});o(74423);var s=function(){var t=this,e=t._self._c;return e("div",{staticClass:"portfolio-container",class:{"theme-dark":t.isDarkTheme,embedded:t.embedded}},[e("div",{staticClass:"summary-section"},[e("div",{staticClass:"summary-card total-value"},[e("div",{staticClass:"card-icon"},[e("a-icon",{attrs:{type:"wallet"}})],1),e("div",{staticClass:"card-content"},[e("div",{staticClass:"card-label"},[t._v(t._s(t.$t("portfolio.summary.totalValue")))]),e("div",{staticClass:"card-value"},[e("span",{staticClass:"currency"},[t._v("$")]),e("span",{staticClass:"amount"},[t._v(t._s(t.formatNumber(t.summary.total_market_value)))])]),void 0!==t.summary.today_change?e("div",{staticClass:"card-sub"},[e("span",{class:t.summary.today_change>=0?"positive":"negative"},[t._v(" "+t._s(t.$t("portfolio.summary.today"))+": "+t._s(t.summary.today_change>=0?"+":"")+"$"+t._s(t.formatNumber(t.summary.today_change))+" ")])]):t._e()])]),e("div",{staticClass:"summary-card"},[e("div",{staticClass:"card-icon cost"},[e("a-icon",{attrs:{type:"dollar"}})],1),e("div",{staticClass:"card-content"},[e("div",{staticClass:"card-label"},[t._v(t._s(t.$t("portfolio.summary.totalCost")))]),e("div",{staticClass:"card-value"},[t._v("$"+t._s(t.formatNumber(t.summary.total_cost)))])])]),e("div",{staticClass:"summary-card"},[e("div",{staticClass:"card-icon",class:t.summary.total_pnl>=0?"profit":"loss"},[e("a-icon",{attrs:{type:t.summary.total_pnl>=0?"rise":"fall"}})],1),e("div",{staticClass:"card-content"},[e("div",{staticClass:"card-label"},[t._v(t._s(t.$t("portfolio.summary.totalPnl")))]),e("div",{staticClass:"card-value",class:t.summary.total_pnl>=0?"positive":"negative"},[t._v(" "+t._s(t.summary.total_pnl>=0?"+":"")+"$"+t._s(t.formatNumber(t.summary.total_pnl))+" "),e("span",{staticClass:"percent"},[t._v("("+t._s(t.summary.total_pnl_percent>=0?"+":"")+t._s(t.summary.total_pnl_percent)+"%)")])])])]),e("div",{staticClass:"summary-card"},[e("div",{staticClass:"card-icon positions"},[e("a-icon",{attrs:{type:"fund"}})],1),e("div",{staticClass:"card-content"},[e("div",{staticClass:"card-label"},[t._v(t._s(t.$t("portfolio.summary.positionCount")))]),e("div",{staticClass:"card-value"},[t._v(" "+t._s(t.summary.position_count)+" "),t.profitLossStats.profit>0||t.profitLossStats.loss>0?e("span",{staticClass:"position-detail"},[t._v(" ("),e("span",{staticClass:"positive"},[t._v(t._s(t.profitLossStats.profit))]),t._v("/"),e("span",{staticClass:"negative"},[t._v(t._s(t.profitLossStats.loss))]),t._v(") ")]):t._e()]),e("div",{staticClass:"card-sub"},[t._v(" "+t._s(t.$t("portfolio.summary.profitLossRatio"))+" ")])])])]),e("div",{staticClass:"summary-section secondary"},[e("div",{staticClass:"summary-card mini"},[e("div",{staticClass:"card-icon today",class:t.summary.today_pnl>=0?"profit":"loss"},[e("a-icon",{attrs:{type:"stock"}})],1),e("div",{staticClass:"card-content"},[e("div",{staticClass:"card-label"},[t._v(t._s(t.$t("portfolio.summary.todayPnl")))]),e("div",{staticClass:"card-value",class:t.summary.today_pnl>=0?"positive":"negative"},[t._v(" "+t._s(t.summary.today_pnl>=0?"+":"")+"$"+t._s(t.formatNumber(t.summary.today_pnl||0))+" ")])])]),e("div",{staticClass:"summary-card mini"},[e("div",{staticClass:"card-icon best"},[e("a-icon",{attrs:{type:"trophy"}})],1),e("div",{staticClass:"card-content"},[e("div",{staticClass:"card-label"},[t._v(t._s(t.$t("portfolio.summary.bestPerformer")))]),t.bestPerformer?e("div",{staticClass:"card-value small positive"},[t._v(" "+t._s(t.bestPerformer.symbol)+" +"+t._s(t.bestPerformer.pnl_percent)+"% ")]):e("div",{staticClass:"card-value small"},[t._v("-")])])]),e("div",{staticClass:"summary-card mini"},[e("div",{staticClass:"card-icon worst"},[e("a-icon",{attrs:{type:"warning"}})],1),e("div",{staticClass:"card-content"},[e("div",{staticClass:"card-label"},[t._v(t._s(t.$t("portfolio.summary.worstPerformer")))]),t.worstPerformer?e("div",{staticClass:"card-value small negative"},[t._v(" "+t._s(t.worstPerformer.symbol)+" "+t._s(t.worstPerformer.pnl_percent)+"% ")]):e("div",{staticClass:"card-value small"},[t._v("-")])])]),e("div",{staticClass:"summary-card mini sync-card"},[e("div",{staticClass:"card-icon sync",class:{syncing:t.isSyncing}},[e("a-icon",{attrs:{type:"sync",spin:t.isSyncing}})],1),e("div",{staticClass:"card-content"},[e("div",{staticClass:"card-label"},[t._v(t._s(t.$t("portfolio.summary.priceSync")))]),e("div",{staticClass:"card-value small"},[t._v(" "+t._s(t.lastSyncTime?t.formatSyncTime(t.lastSyncTime):"-")+" ")]),e("div",{staticClass:"card-sub"},[t._v(" "+t._s(t.$t("portfolio.summary.syncInterval"))+": 30s "),e("a-button",{staticStyle:{padding:"0","margin-left":"8px"},attrs:{type:"link",size:"small",loading:t.isSyncing},on:{click:t.refreshPrices}},[t.isSyncing?t._e():e("a-icon",{attrs:{type:"reload"}})],1)],1)])])]),e("div",{staticClass:"main-content"},[e("div",{staticClass:"positions-section"},[e("div",{staticClass:"section-header"},[e("h3",[e("a-icon",{attrs:{type:"stock"}}),e("span",[t._v(t._s(t.$t("portfolio.positions.title")))])],1),e("div",{staticClass:"header-actions"},[e("a-radio-group",{staticStyle:{"margin-right":"12px"},attrs:{size:"small"},model:{value:t.viewMode,callback:function(e){t.viewMode=e},expression:"viewMode"}},[e("a-radio-button",{attrs:{value:"grid"}},[e("a-icon",{attrs:{type:"appstore"}})],1),e("a-radio-button",{attrs:{value:"group"}},[e("a-icon",{attrs:{type:"folder"}})],1)],1),"grid"===t.viewMode?e("a-select",{staticStyle:{width:"150px","margin-right":"12px"},attrs:{placeholder:t.$t("portfolio.groups.all"),"allow-clear":""},on:{change:t.filterByGroup},model:{value:t.selectedGroup,callback:function(e){t.selectedGroup=e},expression:"selectedGroup"}},[e("a-select-option",{attrs:{value:""}},[t._v(t._s(t.$t("portfolio.groups.all")))]),e("a-select-option",{attrs:{value:"__ungrouped__"}},[t._v(t._s(t.$t("portfolio.groups.ungrouped")))]),t._l(t.groups,function(o){return e("a-select-option",{key:o.name,attrs:{value:o.name}},[t._v(" "+t._s(o.name)+" ("+t._s(o.count)+") ")])})],2):t._e(),e("a-button",{attrs:{type:"primary"},on:{click:function(e){t.showAddPositionModal=!0}}},[e("a-icon",{attrs:{type:"plus"}}),t._v(" "+t._s(t.$t("portfolio.positions.add"))+" ")],1)],1)]),e("a-spin",{attrs:{spinning:t.loadingPositions}},[e("div",{staticClass:"positions-list"},[0===t.positions.length?e("div",{staticClass:"empty-state"},[e("a-empty",{attrs:{description:t.$t("portfolio.positions.empty")}},[e("a-button",{attrs:{type:"primary"},on:{click:function(e){t.showAddPositionModal=!0}}},[e("a-icon",{attrs:{type:"plus"}}),t._v(" "+t._s(t.$t("portfolio.positions.addFirst"))+" ")],1)],1)],1):"grid"===t.viewMode?e("div",{staticClass:"position-grid"},t._l(t.filteredPositions,function(o){return e("div",{key:o.id,staticClass:"position-card",class:{profit:o.pnl>=0,loss:o.pnl<0}},[e("div",{staticClass:"position-header"},[e("div",{staticClass:"symbol-info"},[e("a-tag",{attrs:{color:t.getMarketColor(o.market),size:"small"}},[t._v(t._s(t.getMarketName(o.market)))]),e("span",{staticClass:"symbol"},[t._v(t._s(o.symbol))]),e("span",{staticClass:"name"},[t._v(t._s(o.name))]),o.group_name?e("a-tag",{staticStyle:{"margin-left":"4px"},attrs:{size:"small",color:"blue"}},[e("a-icon",{attrs:{type:"folder"}}),t._v(" "+t._s(o.group_name)+" ")],1):t._e()],1),e("div",{staticClass:"position-actions"},[e("a-tooltip",{attrs:{title:t.hasAlertForPosition(o.id)?t.$t("portfolio.alerts.editAlert"):t.$t("portfolio.alerts.addAlert")}},[e("a-button",{class:{"has-alert":t.hasAlertForPosition(o.id)},attrs:{type:"link",size:"small"},on:{click:function(e){return t.showAddAlertForPosition(o)}}},[e("a-icon",{attrs:{type:"bell",theme:t.hasAlertForPosition(o.id)?"filled":"outlined"}})],1)],1),e("a-button",{attrs:{type:"link",size:"small"},on:{click:function(e){return t.editPosition(o)}}},[e("a-icon",{attrs:{type:"edit"}})],1),e("a-popconfirm",{attrs:{title:t.$t("portfolio.positions.deleteConfirm")},on:{confirm:function(e){return t.deletePosition(o.id)}}},[e("a-button",{staticClass:"delete-btn",attrs:{type:"link",size:"small"}},[e("a-icon",{attrs:{type:"delete"}})],1)],1)],1)]),e("div",{staticClass:"position-body"},[e("div",{staticClass:"price-row"},[e("div",{staticClass:"current-price"},[e("span",{staticClass:"label"},[t._v(t._s(t.$t("portfolio.positions.currentPrice")))]),e("span",{staticClass:"value"},[t._v(t._s(t.getCurrencySymbol(o.market))+t._s(t.formatPrice(o.current_price)))]),e("span",{staticClass:"change",class:o.price_change>=0?"up":"down"},[t._v(" "+t._s(o.price_change>=0?"▲":"▼")+t._s(Math.abs(o.price_change_percent).toFixed(2))+"% ")])]),e("div",{staticClass:"entry-price"},[e("span",{staticClass:"label"},[t._v(t._s(t.$t("portfolio.positions.entryPrice")))]),e("span",{staticClass:"value"},[t._v(t._s(t.getCurrencySymbol(o.market))+t._s(t.formatPrice(o.entry_price)))])])]),e("div",{staticClass:"quantity-row"},[e("div",{staticClass:"item"},[e("span",{staticClass:"label"},[t._v(t._s(t.$t("portfolio.positions.quantity")))]),e("span",{staticClass:"value"},[t._v(t._s(t.formatNumber(o.quantity,4)))])]),e("div",{staticClass:"item"},[e("span",{staticClass:"label"},[t._v(t._s(t.$t("portfolio.positions.side")))]),e("a-tag",{attrs:{color:"long"===o.side?"green":"red",size:"small"}},[t._v(" "+t._s("long"===o.side?t.$t("portfolio.positions.long"):t.$t("portfolio.positions.short"))+" ")])],1),e("div",{staticClass:"item"},[e("span",{staticClass:"label"},[t._v(t._s(t.$t("portfolio.positions.marketValue")))]),e("span",{staticClass:"value"},[t._v(t._s(t.getCurrencySymbol(o.market))+t._s(t.formatNumber(o.market_value)))])])])]),e("div",{staticClass:"position-footer"},[e("div",{staticClass:"pnl"},[e("span",{staticClass:"label"},[t._v(t._s(t.$t("portfolio.positions.pnl")))]),e("span",{staticClass:"value",class:o.pnl>=0?"positive":"negative"},[t._v(" "+t._s(o.pnl>=0?"+":"")+t._s(t.getCurrencySymbol(o.market))+t._s(t.formatNumber(o.pnl))+" "),e("span",{staticClass:"percent"},[t._v("("+t._s(o.pnl_percent>=0?"+":"")+t._s(o.pnl_percent)+"%)")])])])])])}),0):e("div",{staticClass:"position-collapse-view"},[e("a-collapse",{attrs:{bordered:!1},model:{value:t.activeGroups,callback:function(e){t.activeGroups=e},expression:"activeGroups"}},[t.ungroupedPositions.length>0?e("a-collapse-panel",{key:"__ungrouped__",staticClass:"group-panel"},[e("template",{slot:"header"},[e("div",{staticClass:"group-header"},[e("span",{staticClass:"group-name"},[e("a-icon",{staticStyle:{"margin-right":"8px"},attrs:{type:"inbox"}}),t._v(" "+t._s(t.$t("portfolio.groups.ungrouped"))+" ")],1),e("span",{staticClass:"group-stats"},[e("span",{staticClass:"count"},[t._v(t._s(t.ungroupedPositions.length)+" "+t._s(t.$t("portfolio.positions.items")))]),e("span",{staticClass:"group-pnl",class:t.getGroupPnl(t.ungroupedPositions)>=0?"positive":"negative"},[t._v(" "+t._s(t.getGroupPnl(t.ungroupedPositions)>=0?"+":"")+"$"+t._s(t.formatNumber(t.getGroupPnl(t.ungroupedPositions)))+" ")])])])]),e("div",{staticClass:"position-grid compact"},t._l(t.ungroupedPositions,function(o){return e("div",{key:o.id,staticClass:"position-card compact",class:{profit:o.pnl>=0,loss:o.pnl<0}},[e("div",{staticClass:"position-header"},[e("div",{staticClass:"symbol-info"},[e("a-tag",{attrs:{color:t.getMarketColor(o.market),size:"small"}},[t._v(t._s(t.getMarketName(o.market)))]),e("span",{staticClass:"symbol"},[t._v(t._s(o.symbol))]),e("span",{staticClass:"name"},[t._v(t._s(o.name))])],1),e("div",{staticClass:"position-actions"},[e("a-button",{attrs:{type:"link",size:"small"},on:{click:function(e){return t.editPosition(o)}}},[e("a-icon",{attrs:{type:"edit"}})],1),e("a-popconfirm",{attrs:{title:t.$t("portfolio.positions.deleteConfirm")},on:{confirm:function(e){return t.deletePosition(o.id)}}},[e("a-button",{staticClass:"delete-btn",attrs:{type:"link",size:"small"}},[e("a-icon",{attrs:{type:"delete"}})],1)],1)],1)]),e("div",{staticClass:"position-compact-body"},[e("div",{staticClass:"compact-item"},[e("span",{staticClass:"value"},[t._v(t._s(t.getCurrencySymbol(o.market))+t._s(t.formatPrice(o.current_price)))]),e("span",{staticClass:"change",class:o.price_change>=0?"up":"down"},[t._v(" "+t._s(o.price_change>=0?"▲":"▼")+t._s(Math.abs(o.price_change_percent).toFixed(2))+"% ")])]),e("div",{staticClass:"compact-item"},[e("span",{staticClass:"label"},[t._v(t._s(t.$t("portfolio.positions.quantity"))+":")]),e("span",{staticClass:"value"},[t._v(t._s(t.formatNumber(o.quantity,4)))])]),e("div",{staticClass:"compact-item pnl",class:o.pnl>=0?"positive":"negative"},[t._v(" "+t._s(o.pnl>=0?"+":"")+t._s(t.getCurrencySymbol(o.market))+t._s(t.formatNumber(o.pnl))+" "),e("span",{staticClass:"percent"},[t._v("("+t._s(o.pnl_percent>=0?"+":"")+t._s(o.pnl_percent)+"%)")])])])])}),0)],2):t._e(),t._l(t.groupsWithPositions,function(o){return e("a-collapse-panel",{key:o.name,staticClass:"group-panel"},[e("template",{slot:"header"},[e("div",{staticClass:"group-header"},[e("span",{staticClass:"group-name"},[e("a-icon",{staticStyle:{"margin-right":"8px",color:"#1890ff"},attrs:{type:"folder"}}),t._v(" "+t._s(o.name)+" ")],1),e("span",{staticClass:"group-stats"},[e("span",{staticClass:"count"},[t._v(t._s(o.positions.length)+" "+t._s(t.$t("portfolio.positions.items")))]),e("span",{staticClass:"group-pnl",class:t.getGroupPnl(o.positions)>=0?"positive":"negative"},[t._v(" "+t._s(t.getGroupPnl(o.positions)>=0?"+":"")+"$"+t._s(t.formatNumber(t.getGroupPnl(o.positions)))+" ")])])])]),e("div",{staticClass:"position-grid compact"},t._l(o.positions,function(o){return e("div",{key:o.id,staticClass:"position-card compact",class:{profit:o.pnl>=0,loss:o.pnl<0}},[e("div",{staticClass:"position-header"},[e("div",{staticClass:"symbol-info"},[e("a-tag",{attrs:{color:t.getMarketColor(o.market),size:"small"}},[t._v(t._s(t.getMarketName(o.market)))]),e("span",{staticClass:"symbol"},[t._v(t._s(o.symbol))]),e("span",{staticClass:"name"},[t._v(t._s(o.name))])],1),e("div",{staticClass:"position-actions"},[e("a-button",{attrs:{type:"link",size:"small"},on:{click:function(e){return t.editPosition(o)}}},[e("a-icon",{attrs:{type:"edit"}})],1),e("a-popconfirm",{attrs:{title:t.$t("portfolio.positions.deleteConfirm")},on:{confirm:function(e){return t.deletePosition(o.id)}}},[e("a-button",{staticClass:"delete-btn",attrs:{type:"link",size:"small"}},[e("a-icon",{attrs:{type:"delete"}})],1)],1)],1)]),e("div",{staticClass:"position-compact-body"},[e("div",{staticClass:"compact-item"},[e("span",{staticClass:"value"},[t._v(t._s(t.getCurrencySymbol(o.market))+t._s(t.formatPrice(o.current_price)))]),e("span",{staticClass:"change",class:o.price_change>=0?"up":"down"},[t._v(" "+t._s(o.price_change>=0?"▲":"▼")+t._s(Math.abs(o.price_change_percent).toFixed(2))+"% ")])]),e("div",{staticClass:"compact-item"},[e("span",{staticClass:"label"},[t._v(t._s(t.$t("portfolio.positions.quantity"))+":")]),e("span",{staticClass:"value"},[t._v(t._s(t.formatNumber(o.quantity,4)))])]),e("div",{staticClass:"compact-item pnl",class:o.pnl>=0?"positive":"negative"},[t._v(" "+t._s(o.pnl>=0?"+":"")+t._s(t.getCurrencySymbol(o.market))+t._s(t.formatNumber(o.pnl))+" "),e("span",{staticClass:"percent"},[t._v("("+t._s(o.pnl_percent>=0?"+":"")+t._s(o.pnl_percent)+"%)")])])])])}),0)],2)})],2)],1)])])],1),e("div",{ref:"monitorsSection",staticClass:"monitors-section"},[e("div",{staticClass:"section-header"},[e("h3",[e("a-icon",{attrs:{type:"eye"}}),e("span",[t._v(t._s(t.$t("portfolio.monitors.title")))])],1),e("a-button",{attrs:{type:"primary"},on:{click:t.openAddMonitorModal}},[e("a-icon",{attrs:{type:"plus"}}),t._v(" "+t._s(t.$t("portfolio.monitors.add"))+" ")],1)],1),e("a-spin",{attrs:{spinning:t.loadingMonitors}},[e("div",{staticClass:"monitors-list"},[0===t.monitors.length?e("div",{staticClass:"empty-state small"},[e("a-empty",{attrs:{description:t.$t("portfolio.monitors.empty"),image:t.simpleImage}},[e("a-button",{attrs:{type:"primary",size:"small"},on:{click:t.openAddMonitorModal}},[e("a-icon",{attrs:{type:"plus"}}),t._v(" "+t._s(t.$t("portfolio.monitors.addFirst"))+" ")],1)],1)],1):e("div",t._l(t.monitors,function(o){return e("div",{key:o.id,staticClass:"monitor-card"},[e("div",{staticClass:"monitor-header"},[e("div",{staticClass:"monitor-name"},[e("a-icon",{attrs:{type:"robot"}}),e("span",[t._v(t._s(o.name))])],1),e("a-switch",{attrs:{checked:o.is_active,size:"small"},on:{change:function(e){return t.toggleMonitor(o.id,e)}}})],1),e("div",{staticClass:"monitor-body"},[e("div",{staticClass:"monitor-info"},[e("span",{staticClass:"label"},[t._v(t._s(t.$t("portfolio.monitors.interval"))+":")]),e("span",{staticClass:"value"},[t._v(t._s(t.getIntervalText(o.config.interval_minutes)))])]),e("div",{staticClass:"monitor-info"},[e("span",{staticClass:"label"},[t._v(t._s(t.$t("portfolio.form.monitorScope"))+":")]),e("span",{staticClass:"value"},[t.getMonitorPositionIds(o).length>0?[e("a-tooltip",[e("template",{slot:"title"},t._l(t.getMonitorPositionIds(o),function(o){return e("div",{key:o},[t._v(" "+t._s(t.getPositionNameById(o))+" ")])}),0),e("span",{staticClass:"scope-selected"},[t._v(" "+t._s(t.$t("portfolio.form.selectedCount",{count:t.getMonitorPositionIds(o).length,total:t.positions.length}))+" ")])],2)]:e("span",{staticClass:"scope-all"},[t._v(t._s(t.$t("portfolio.form.allPositions")))])],2)]),o.last_run_at?e("div",{staticClass:"monitor-info"},[e("span",{staticClass:"label"},[t._v(t._s(t.$t("portfolio.monitors.lastRun"))+":")]),e("span",{staticClass:"value"},[t._v(t._s(t.formatTime(o.last_run_at)))])]):t._e(),o.next_run_at&&o.is_active?e("div",{staticClass:"monitor-info"},[e("span",{staticClass:"label"},[t._v(t._s(t.$t("portfolio.monitors.nextRun"))+":")]),e("span",{staticClass:"value"},[t._v(t._s(t.formatTime(o.next_run_at)))])]):t._e(),o.notification_config.channels?e("div",{staticClass:"monitor-channels"},[e("span",{staticClass:"label"},[t._v(t._s(t.$t("portfolio.monitors.channels"))+":")]),t._l(o.notification_config.channels,function(o){return e("a-tag",{key:o,attrs:{size:"small"}},[t._v(" "+t._s(o)+" ")])})],2):t._e()]),e("div",{staticClass:"monitor-actions"},[e("a-button",{attrs:{type:"link",size:"small",loading:t.runningMonitor===o.id},on:{click:function(e){return t.runMonitorNow(o.id)}}},[e("a-icon",{attrs:{type:"play-circle"}}),t._v(" "+t._s(t.$t("portfolio.monitors.runNow"))+" ")],1),e("a-button",{attrs:{type:"link",size:"small"},on:{click:function(e){return t.editMonitor(o)}}},[e("a-icon",{attrs:{type:"edit"}})],1),e("a-popconfirm",{attrs:{title:t.$t("portfolio.monitors.deleteConfirm")},on:{confirm:function(e){return t.deleteMonitor(o.id)}}},[e("a-button",{staticClass:"delete-btn",attrs:{type:"link",size:"small"}},[e("a-icon",{attrs:{type:"delete"}})],1)],1)],1)])}),0)])])],1)]),e("a-modal",{attrs:{title:t.editingPosition?t.$t("portfolio.modal.editPosition"):t.$t("portfolio.modal.addPosition"),visible:t.showAddPositionModal,confirmLoading:t.savingPosition,width:"600px"},on:{ok:t.handleSavePosition,cancel:t.closePositionModal}},[e("a-form",{attrs:{form:t.positionForm,"label-col":{span:6},"wrapper-col":{span:16}}},[e("a-form-item",{attrs:{label:t.$t("portfolio.form.market")}},[e("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["market",{rules:[{required:!0,message:t.$t("portfolio.form.marketRequired")}]}],expression:"['market', { rules: [{ required: true, message: $t('portfolio.form.marketRequired') }] }]"}],attrs:{placeholder:t.$t("portfolio.form.selectMarket"),disabled:!!t.editingPosition},on:{change:t.handleMarketChange}},t._l(t.marketTypes,function(o){return e("a-select-option",{key:o.value,attrs:{value:o.value}},[t._v(" "+t._s(t.$t(o.i18nKey))+" ")])}),1)],1),e("a-form-item",{attrs:{label:t.$t("portfolio.form.symbol")}},[e("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["symbol",{rules:[{required:!0,message:t.$t("portfolio.form.symbolRequired")}]}],expression:"['symbol', { rules: [{ required: true, message: $t('portfolio.form.symbolRequired') }] }]"}],staticStyle:{width:"100%"},attrs:{"show-search":"",placeholder:t.$t("portfolio.form.searchSymbol"),"default-active-first-option":!1,"show-arrow":!1,"filter-option":!1,"not-found-content":null,disabled:!!t.editingPosition},on:{search:t.handleSymbolSearch,change:t.handleSymbolSelect}},[t._l(t.symbolSearchResults,function(o){return e("a-select-option",{key:o.symbol,attrs:{value:o.symbol}},[e("div",{staticClass:"symbol-option"},[e("strong",[t._v(t._s(o.symbol))]),e("span",{staticClass:"symbol-name"},[t._v(t._s(o.name))])])])}),t.symbolSearchKeyword&&0===t.symbolSearchResults.length?e("a-select-option",{key:"__manual__"+t.symbolSearchKeyword.toUpperCase(),attrs:{value:t.symbolSearchKeyword.toUpperCase()}},[e("div",{staticClass:"symbol-option manual-input"},[e("a-icon",{staticStyle:{"margin-right":"6px",color:"#1890ff"},attrs:{type:"edit"}}),e("span",[t._v(t._s(t.$t("portfolio.form.useAsSymbol"))+" ")]),e("strong",{staticStyle:{color:"#1890ff"}},[t._v(t._s(t.symbolSearchKeyword.toUpperCase()))]),e("span",[t._v(" "+t._s(t.$t("portfolio.form.asSymbolCode")))])],1)]):t._e()],2),e("div",{staticClass:"symbol-hint",staticStyle:{"font-size":"12px",color:"#999","margin-top":"4px"}},[t._v(" "+t._s(t.$t("portfolio.form.symbolHint"))+" ")])],1),e("a-form-item",{attrs:{label:t.$t("portfolio.form.side")}},[e("a-radio-group",{directives:[{name:"decorator",rawName:"v-decorator",value:["side",{initialValue:"long"}],expression:"['side', { initialValue: 'long' }]"}],attrs:{disabled:!!t.editingPosition}},[e("a-radio-button",{attrs:{value:"long"}},[t._v(t._s(t.$t("portfolio.positions.long")))]),e("a-radio-button",{attrs:{value:"short"}},[t._v(t._s(t.$t("portfolio.positions.short")))])],1)],1),e("a-form-item",{attrs:{label:t.$t("portfolio.form.quantity")}},[e("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["quantity",{rules:[{required:!0,message:t.$t("portfolio.form.quantityRequired")}]}],expression:"['quantity', { rules: [{ required: true, message: $t('portfolio.form.quantityRequired') }] }]"}],staticStyle:{width:"100%"},attrs:{min:1e-8,step:1,placeholder:t.$t("portfolio.form.enterQuantity")}})],1),e("a-form-item",{attrs:{label:t.$t("portfolio.form.entryPrice")}},[e("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["entry_price",{rules:[{required:!0,message:t.$t("portfolio.form.entryPriceRequired")}]}],expression:"['entry_price', { rules: [{ required: true, message: $t('portfolio.form.entryPriceRequired') }] }]"}],staticStyle:{width:"100%"},attrs:{min:1e-8,step:.01,placeholder:t.$t("portfolio.form.enterEntryPrice")}})],1),e("a-form-item",{attrs:{label:t.$t("portfolio.form.notes")}},[e("a-textarea",{directives:[{name:"decorator",rawName:"v-decorator",value:["notes"],expression:"['notes']"}],attrs:{rows:2,placeholder:t.$t("portfolio.form.enterNotes")}})],1),e("a-form-item",{attrs:{label:t.$t("portfolio.form.group")}},[e("a-auto-complete",{directives:[{name:"decorator",rawName:"v-decorator",value:["group_name"],expression:"['group_name']"}],attrs:{placeholder:t.$t("portfolio.form.enterGroup"),dataSource:t.groupNames}})],1)],1)],1),e("a-modal",{attrs:{title:t.editingAlert?t.$t("portfolio.modal.editAlert"):t.$t("portfolio.modal.addAlert"),visible:t.showAddAlertModal,width:"560px"},on:{cancel:t.closeAlertModal}},[e("template",{slot:"footer"},[e("div",{staticClass:"alert-modal-footer"},[t.editingAlert?e("a-button",{attrs:{type:"danger",ghost:"",loading:t.deletingAlert},on:{click:t.confirmDeleteAlert}},[e("a-icon",{attrs:{type:"delete"}}),t._v(" "+t._s(t.$t("portfolio.alerts.delete"))+" ")],1):e("span"),e("div",{staticClass:"footer-right"},[e("a-button",{on:{click:t.closeAlertModal}},[t._v(t._s(t.$t("common.cancel")))]),e("a-button",{attrs:{type:"primary",loading:t.savingAlert},on:{click:t.handleSaveAlert}},[t._v(" "+t._s(t.$t("common.save"))+" ")])],1)],1)]),e("a-form",{attrs:{form:t.alertForm,"label-col":{span:6},"wrapper-col":{span:16}}},[e("a-form-item",{attrs:{label:t.$t("portfolio.form.symbol")}},[e("div",{staticClass:"alert-symbol-info"},[e("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["symbol"],expression:"['symbol']"}],staticClass:"symbol-input",attrs:{disabled:""}}),t.alertPosition?e("div",{staticClass:"current-price-info"},[e("span",{staticClass:"label"},[t._v(t._s(t.$t("portfolio.alerts.currentPrice"))+":")]),e("span",{staticClass:"price"},[t._v("$"+t._s(t.formatNumber(t.alertPosition.current_price||t.alertPosition.entry_price)))])]):t._e()],1)]),e("a-form-item",{attrs:{label:t.$t("portfolio.alerts.alertType")}},[e("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["alert_type",{initialValue:"price_above",rules:[{required:!0}]}],expression:"['alert_type', { initialValue: 'price_above', rules: [{ required: true }] }]"}]},[e("a-select-option",{attrs:{value:"price_above"}},[e("a-icon",{staticStyle:{color:"#52c41a","margin-right":"6px"},attrs:{type:"rise"}}),t._v(" "+t._s(t.$t("portfolio.alerts.priceAbove"))+" ")],1),e("a-select-option",{attrs:{value:"price_below"}},[e("a-icon",{staticStyle:{color:"#f5222d","margin-right":"6px"},attrs:{type:"fall"}}),t._v(" "+t._s(t.$t("portfolio.alerts.priceBelow"))+" ")],1),e("a-select-option",{attrs:{value:"pnl_above"}},[e("a-icon",{staticStyle:{color:"#52c41a","margin-right":"6px"},attrs:{type:"dollar"}}),t._v(" "+t._s(t.$t("portfolio.alerts.pnlAbove"))+" ")],1),e("a-select-option",{attrs:{value:"pnl_below"}},[e("a-icon",{staticStyle:{color:"#f5222d","margin-right":"6px"},attrs:{type:"dollar"}}),t._v(" "+t._s(t.$t("portfolio.alerts.pnlBelow"))+" ")],1)],1)],1),e("a-form-item",{attrs:{label:t.$t("portfolio.alerts.threshold")}},[e("div",{staticClass:"threshold-input-wrapper"},[e("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["threshold",{rules:[{required:!0,message:t.$t("portfolio.alerts.thresholdRequired")}]}],expression:"['threshold', { rules: [{ required: true, message: $t('portfolio.alerts.thresholdRequired') }] }]"}],staticStyle:{width:"100%"},attrs:{step:t.alertTypeIsPrice?.01:1,placeholder:t.alertTypeIsPrice?t.$t("portfolio.alerts.enterPrice"):t.$t("portfolio.alerts.enterPercent"),precision:t.alertTypeIsPrice?4:2}}),t.alertTypeIsPrice?e("span",{staticClass:"alert-unit"},[t._v("$")]):e("span",{staticClass:"alert-unit"},[t._v("%")])],1),t.alertPosition&&t.alertTypeIsPrice?e("div",{staticClass:"threshold-hint"},[t._v(" "+t._s(t.$t("portfolio.alerts.currentPriceHint"))+": $"+t._s(t.formatNumber(t.alertPosition.current_price||t.alertPosition.entry_price))+" ")]):t._e()]),e("a-form-item",{attrs:{label:t.$t("portfolio.alerts.repeatInterval")}},[e("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["repeat_interval",{initialValue:0}],expression:"['repeat_interval', { initialValue: 0 }]"}]},[e("a-select-option",{attrs:{value:0}},[t._v(t._s(t.$t("portfolio.alerts.noRepeat")))]),e("a-select-option",{attrs:{value:5}},[t._v(t._s(t.$t("portfolio.alerts.every5min")))]),e("a-select-option",{attrs:{value:15}},[t._v(t._s(t.$t("portfolio.alerts.every15min")))]),e("a-select-option",{attrs:{value:30}},[t._v(t._s(t.$t("portfolio.alerts.every30min")))]),e("a-select-option",{attrs:{value:60}},[t._v(t._s(t.$t("portfolio.alerts.every1hour")))]),e("a-select-option",{attrs:{value:240}},[t._v(t._s(t.$t("portfolio.alerts.every4hours")))]),e("a-select-option",{attrs:{value:1440}},[t._v(t._s(t.$t("portfolio.alerts.onceDaily")))])],1)],1),e("a-form-item",{attrs:{label:t.$t("portfolio.form.notifyChannels")}},[e("a-checkbox-group",{model:{value:t.alertChannels,callback:function(e){t.alertChannels=e},expression:"alertChannels"}},[e("a-checkbox",{attrs:{value:"browser"}},[e("a-icon",{attrs:{type:"bell"}}),t._v(" "+t._s(t.$t("portfolio.form.browser"))+" ")],1),e("a-checkbox",{attrs:{value:"telegram"}},[e("a-icon",{attrs:{type:"message"}}),t._v(" Telegram ")],1),e("a-checkbox",{attrs:{value:"email"}},[e("a-icon",{attrs:{type:"mail"}}),t._v(" "+t._s(t.$t("portfolio.form.email"))+" ")],1)],1)],1),t.alertChannels.includes("telegram")||t.alertChannels.includes("email")?e("a-alert",{staticStyle:{"margin-bottom":"16px"},attrs:{type:"info",showIcon:""},scopedSlots:t._u([{key:"message",fn:function(){return[e("span",[t._v(" "+t._s(t.$t("portfolio.form.notificationFromProfile"))+" "),e("router-link",{staticStyle:{"margin-left":"8px"},attrs:{to:"/profile"}},[e("a-icon",{attrs:{type:"setting"}}),t._v(" "+t._s(t.$t("portfolio.form.goToProfile"))+" ")],1)],1)]},proxy:!0}],null,!1,440262090)}):t._e(),e("a-form-item",{attrs:{label:t.$t("portfolio.alerts.enabled")}},[e("a-switch",{directives:[{name:"decorator",rawName:"v-decorator",value:["is_active",{initialValue:!0,valuePropName:"checked"}],expression:"['is_active', { initialValue: true, valuePropName: 'checked' }]"}]}),e("span",{staticClass:"switch-label"},[t._v(t._s(t.$t("portfolio.alerts.enabledDesc")))])],1),e("a-form-item",{attrs:{label:t.$t("portfolio.form.notes")}},[e("a-textarea",{directives:[{name:"decorator",rawName:"v-decorator",value:["notes"],expression:"['notes']"}],attrs:{placeholder:t.$t("portfolio.form.enterNotes"),autoSize:{minRows:2,maxRows:4}}})],1)],1)],2),e("a-modal",{attrs:{title:t.editingMonitor?t.$t("portfolio.modal.editMonitor"):t.$t("portfolio.modal.addMonitor"),visible:t.showAddMonitorModal,confirmLoading:t.savingMonitor,width:"600px"},on:{ok:t.handleSaveMonitor,cancel:t.closeMonitorModal}},[e("a-form",{attrs:{form:t.monitorForm,"label-col":{span:6},"wrapper-col":{span:16}}},[e("a-form-item",{attrs:{label:t.$t("portfolio.form.monitorName")}},[e("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["name",{rules:[{required:!0,message:t.$t("portfolio.form.monitorNameRequired")}]}],expression:"['name', { rules: [{ required: true, message: $t('portfolio.form.monitorNameRequired') }] }]"}],attrs:{placeholder:t.$t("portfolio.form.enterMonitorName")}})],1),e("a-form-item",{attrs:{label:t.$t("portfolio.form.interval")}},[e("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["interval_minutes",{initialValue:60,rules:[{required:!0}]}],expression:"['interval_minutes', { initialValue: 60, rules: [{ required: true }] }]"}]},[e("a-select-option",{attrs:{value:5}},[t._v("5 "+t._s(t.$t("portfolio.form.minutes")))]),e("a-select-option",{attrs:{value:10}},[t._v("10 "+t._s(t.$t("portfolio.form.minutes")))]),e("a-select-option",{attrs:{value:30}},[t._v("30 "+t._s(t.$t("portfolio.form.minutes")))]),e("a-select-option",{attrs:{value:60}},[t._v("1 "+t._s(t.$t("portfolio.form.hour")))]),e("a-select-option",{attrs:{value:120}},[t._v("2 "+t._s(t.$t("portfolio.form.hours")))]),e("a-select-option",{attrs:{value:240}},[t._v("4 "+t._s(t.$t("portfolio.form.hours")))]),e("a-select-option",{attrs:{value:480}},[t._v("8 "+t._s(t.$t("portfolio.form.hours")))]),e("a-select-option",{attrs:{value:1440}},[t._v("24 "+t._s(t.$t("portfolio.form.hours")))])],1)],1),e("a-form-item",{attrs:{label:t.$t("portfolio.form.notifyChannels")}},[e("a-checkbox-group",{model:{value:t.monitorChannels,callback:function(e){t.monitorChannels=e},expression:"monitorChannels"}},[e("a-checkbox",{attrs:{value:"browser"}},[t._v(t._s(t.$t("portfolio.form.browser")))]),e("a-checkbox",{attrs:{value:"telegram"}},[t._v("Telegram")]),e("a-checkbox",{attrs:{value:"email"}},[t._v(t._s(t.$t("portfolio.form.email")))])],1)],1),t.monitorChannels.includes("telegram")||t.monitorChannels.includes("email")?e("a-alert",{staticStyle:{"margin-bottom":"16px"},attrs:{type:"info",showIcon:""},scopedSlots:t._u([{key:"message",fn:function(){return[e("span",[t._v(" "+t._s(t.$t("portfolio.form.notificationFromProfile"))+" "),e("router-link",{staticStyle:{"margin-left":"8px"},attrs:{to:"/profile"}},[e("a-icon",{attrs:{type:"setting"}}),t._v(" "+t._s(t.$t("portfolio.form.goToProfile"))+" ")],1)],1)]},proxy:!0}],null,!1,440262090)}):t._e(),e("a-form-item",{attrs:{label:t.$t("portfolio.form.monitorScope")}},[e("a-radio-group",{on:{change:t.handleMonitorScopeChange},model:{value:t.monitorScope,callback:function(e){t.monitorScope=e},expression:"monitorScope"}},[e("a-radio",{attrs:{value:"all"}},[t._v(t._s(t.$t("portfolio.form.allPositions")))]),e("a-radio",{attrs:{value:"selected"}},[t._v(t._s(t.$t("portfolio.form.selectedPositions")))])],1)],1),"selected"===t.monitorScope?e("a-form-item",{attrs:{label:t.$t("portfolio.form.selectPositions")}},[e("a-checkbox-group",{staticClass:"position-checkbox-group",model:{value:t.selectedMonitorPositions,callback:function(e){t.selectedMonitorPositions=e},expression:"selectedMonitorPositions"}},t._l(t.positions,function(o){return e("div",{key:o.id,staticClass:"position-checkbox-item"},[e("a-checkbox",{staticClass:"position-checkbox",attrs:{value:o.id}},[e("div",{staticClass:"position-checkbox-label"},[e("div",{staticClass:"position-left"},[e("a-tag",{attrs:{color:t.getMarketColor(o.market),size:"small"}},[t._v(t._s(o.market))]),e("span",{staticClass:"symbol"},[t._v(t._s(o.symbol))])],1),e("div",{staticClass:"position-middle"},[e("span",{staticClass:"name",attrs:{title:o.name}},[t._v(t._s(o.name))])]),e("div",{staticClass:"position-right"},[e("span",{class:["pnl",o.pnl>=0?"positive":"negative"]},[t._v(" "+t._s(o.pnl>=0?"+":"")+t._s(t.formatNumber(o.pnl_percent))+"% ")])])])])],1)}),0),e("div",{staticClass:"position-select-actions"},[e("a-button",{attrs:{type:"link",size:"small"},on:{click:t.selectAllPositions}},[t._v(" "+t._s(t.$t("portfolio.form.selectAll"))+" ")]),e("a-divider",{attrs:{type:"vertical"}}),e("a-button",{attrs:{type:"link",size:"small"},on:{click:t.deselectAllPositions}},[t._v(" "+t._s(t.$t("portfolio.form.deselectAll"))+" ")]),e("span",{staticClass:"selected-count"},[t._v(" "+t._s(t.$t("portfolio.form.selectedCount",{count:t.selectedMonitorPositions.length,total:t.positions.length}))+" ")])],1)],1):t._e(),e("a-form-item",{attrs:{label:t.$t("portfolio.form.customPrompt")}},[e("a-textarea",{directives:[{name:"decorator",rawName:"v-decorator",value:["prompt"],expression:"['prompt']"}],attrs:{rows:3,placeholder:t.$t("portfolio.form.customPromptPlaceholder")}})],1)],1)],1)],1)},i=[],r=o(2403),a=o(81127),n=o(56252),l=o(76338),c=(o(93693),o(2970)),u=o(95353),p=o(24364),m=o(84841),d={name:"Portfolio",props:{embedded:{type:Boolean,default:!1}},data:function(){return{simpleImage:c.Ay.PRESENTED_IMAGE_SIMPLE,summary:{total_cost:0,total_market_value:0,total_pnl:0,total_pnl_percent:0,position_count:0,market_distribution:[],today_pnl:0,today_change:0},positions:[],loadingPositions:!1,showAddPositionModal:!1,savingPosition:!1,editingPosition:null,positionForm:null,monitors:[],loadingMonitors:!1,showAddMonitorModal:!1,savingMonitor:!1,editingMonitor:null,monitorForm:null,runningMonitor:null,marketTypes:[],symbolSearchResults:[],searchTimer:null,selectedSymbolName:"",symbolSearchKeyword:"",priceRefreshTimer:null,lastSyncTime:null,isSyncing:!1,groups:[],selectedGroup:"",viewMode:"grid",activeGroups:[],alerts:[],loadingAlerts:!1,showAddAlertModal:!1,savingAlert:!1,deletingAlert:!1,editingAlert:null,alertForm:null,alertPosition:null,alertChannels:["browser"],monitorChannels:["browser"],monitorScope:"all",selectedMonitorPositions:[],userNotificationSettings:{default_channels:["browser"],telegram_bot_token:"",telegram_chat_id:"",email:"",phone:"",discord_webhook:"",webhook_url:"",webhook_token:""}}},computed:(0,l.A)((0,l.A)({},(0,u.aH)({navTheme:function(t){return t.app.theme}})),{},{isDarkTheme:function(){return"dark"===this.navTheme||"realdark"===this.navTheme},selectedChannels:function(){return this.monitorChannels||[]},selectedAlertChannels:function(){return this.alertChannels||[]},filteredPositions:function(){var t=this;return this.selectedGroup?"__ungrouped__"===this.selectedGroup?this.positions.filter(function(t){return!t.group_name}):this.positions.filter(function(e){return e.group_name===t.selectedGroup}):this.positions},groupNames:function(){return this.groups.map(function(t){return t.name})},alertTypeIsPrice:function(){if(!this.alertForm)return!0;var t=this.alertForm.getFieldValue("alert_type");return t&&t.startsWith("price_")},profitLossStats:function(){var t=this.positions.filter(function(t){return t.pnl>=0}).length,e=this.positions.filter(function(t){return t.pnl<0}).length;return{profit:t,loss:e}},bestPerformer:function(){return 0===this.positions.length?null:this.positions.reduce(function(t,e){return!t||(e.pnl_percent||0)>(t.pnl_percent||0)?e:t},null)},worstPerformer:function(){return 0===this.positions.length?null:this.positions.reduce(function(t,e){return!t||(e.pnl_percent||0)<(t.pnl_percent||0)?e:t},null)},ungroupedPositions:function(){return this.positions.filter(function(t){return!t.group_name})},groupsWithPositions:function(){var t={};return this.positions.forEach(function(e){e.group_name&&(t[e.group_name]||(t[e.group_name]={name:e.group_name,positions:[]}),t[e.group_name].positions.push(e))}),Object.values(t).sort(function(t,e){return t.name.localeCompare(e.name)})}}),created:function(){this.positionForm=this.$form.createForm(this,{name:"position_form"}),this.monitorForm=this.$form.createForm(this,{name:"monitor_form"}),this.alertForm=this.$form.createForm(this,{name:"alert_form"}),this.loadMarketTypes(),this.loadData()},mounted:function(){var t=this;this.priceRefreshTimer=setInterval(function(){t.refreshPrices()},3e4),this.loadUserNotificationSettings()},beforeDestroy:function(){this.priceRefreshTimer&&clearInterval(this.priceRefreshTimer),this.searchTimer&&clearTimeout(this.searchTimer)},methods:{loadUserNotificationSettings:function(){var t=this;return(0,n.A)((0,a.A)().m(function e(){var o;return(0,a.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.p=0,e.n=1,(0,m.vF)();case 1:o=e.v,1===o.code&&o.data&&(t.userNotificationSettings={default_channels:o.data.default_channels||["browser"],telegram_bot_token:o.data.telegram_bot_token||"",telegram_chat_id:o.data.telegram_chat_id||"",email:o.data.email||"",phone:o.data.phone||"",discord_webhook:o.data.discord_webhook||"",webhook_url:o.data.webhook_url||"",webhook_token:o.data.webhook_token||""}),e.n=3;break;case 2:e.p=2,e.v;case 3:return e.a(2)}},e,null,[[0,2]])}))()},loadData:function(){var t=this;return(0,n.A)((0,a.A)().m(function e(){return(0,a.A)().w(function(e){while(1)switch(e.n){case 0:return e.n=1,Promise.all([t.loadPositions(),t.loadSummary(),t.loadMonitors(),t.loadGroups(),t.loadAlerts()]);case 1:t.lastSyncTime=new Date;case 2:return e.a(2)}},e)}))()},filterByGroup:function(){},refreshPrices:function(){var t=this;return(0,n.A)((0,a.A)().m(function e(){return(0,a.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(!t.isSyncing){e.n=1;break}return e.a(2);case 1:return t.isSyncing=!0,e.p=2,e.n=3,Promise.all([t.loadPositions(!0),t.loadSummary(!0)]);case 3:t.lastSyncTime=new Date;case 4:return e.p=4,t.isSyncing=!1,e.f(4);case 5:return e.a(2)}},e,null,[[2,,4,5]])}))()},formatSyncTime:function(t){if(!t)return"-";var e=new Date,o=Math.floor((e-t)/1e3);return o<60?this.$t("portfolio.summary.justNow"):o<3600?"".concat(Math.floor(o/60)," ").concat(this.$t("portfolio.form.minutes")).concat(this.$t("portfolio.summary.ago")):t.toLocaleTimeString()},getGroupPnl:function(t){return t.reduce(function(t,e){return t+(e.pnl||0)},0)},loadGroups:function(){var t=this;return(0,n.A)((0,a.A)().m(function e(){var o;return(0,a.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.p=0,e.n=1,(0,p.f)();case 1:o=e.v,o&&1===o.code&&o.data&&(t.groups=o.data.groups||[]),e.n=3;break;case 2:e.p=2,e.v;case 3:return e.a(2)}},e,null,[[0,2]])}))()},loadAlerts:function(){var t=this;return(0,n.A)((0,a.A)().m(function e(){var o;return(0,a.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return t.loadingAlerts=!0,e.p=1,e.n=2,(0,p.qu)();case 2:o=e.v,o&&1===o.code&&(t.alerts=o.data||[]),e.n=4;break;case 3:e.p=3,e.v;case 4:return e.p=4,t.loadingAlerts=!1,e.f(4);case 5:return e.a(2)}},e,null,[[1,3,4,5]])}))()},loadMarketTypes:function(){var t=this;return(0,n.A)((0,a.A)().m(function e(){var o;return(0,a.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.p=0,e.n=1,(0,p.iO)();case 1:o=e.v,o&&1===o.code&&o.data&&(t.marketTypes=o.data.map(function(t){return{value:t.value,i18nKey:t.i18nKey||"dashboard.analysis.market.".concat(t.value)}})),e.n=3;break;case 2:e.p=2,e.v,t.marketTypes=[{value:"USStock",i18nKey:"dashboard.analysis.market.USStock"},{value:"Crypto",i18nKey:"dashboard.analysis.market.Crypto"},{value:"Forex",i18nKey:"dashboard.analysis.market.Forex"},{value:"Futures",i18nKey:"dashboard.analysis.market.Futures"}];case 3:return e.a(2)}},e,null,[[0,2]])}))()},loadPositions:function(){var t=arguments,e=this;return(0,n.A)((0,a.A)().m(function o(){var s,i,r;return(0,a.A)().w(function(o){while(1)switch(o.p=o.n){case 0:return s=t.length>0&&void 0!==t[0]&&t[0],e.loadingPositions=!0,o.p=1,i=s?{refresh:"1"}:{},o.n=2,(0,p.Dt)(i);case 2:r=o.v,r&&1===r.code&&(e.positions=r.data||[]),o.n=4;break;case 3:o.p=3,o.v,e.$message.error(e.$t("portfolio.message.loadFailed"));case 4:return o.p=4,e.loadingPositions=!1,o.f(4);case 5:return o.a(2)}},o,null,[[1,3,4,5]])}))()},loadSummary:function(){var t=arguments,e=this;return(0,n.A)((0,a.A)().m(function o(){var s,i;return(0,a.A)().w(function(o){while(1)switch(o.p=o.n){case 0:return s=t.length>0&&void 0!==t[0]&&t[0],o.p=1,o.n=2,(0,p.bC)(s?{refresh:"1"}:{});case 2:i=o.v,i&&1===i.code&&(e.summary=i.data||e.summary),o.n=4;break;case 3:o.p=3,o.v;case 4:return o.a(2)}},o,null,[[1,3]])}))()},loadMonitors:function(){var t=this;return(0,n.A)((0,a.A)().m(function e(){var o;return(0,a.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return t.loadingMonitors=!0,e.p=1,e.n=2,(0,p.w1)();case 2:o=e.v,o&&1===o.code&&(t.monitors=o.data||[]),e.n=4;break;case 3:e.p=3,e.v;case 4:return e.p=4,t.loadingMonitors=!1,e.f(4);case 5:return e.a(2)}},e,null,[[1,3,4,5]])}))()},handleMarketChange:function(t){this.symbolSearchResults=[],this.symbolSearchKeyword="",this.positionForm.setFieldsValue({symbol:""})},handleSymbolSearch:function(t){var e=this;this.symbolSearchKeyword=t||"",this.searchTimer&&clearTimeout(this.searchTimer),!t||t.length<1?this.symbolSearchResults=[]:this.searchTimer=setTimeout((0,n.A)((0,a.A)().m(function o(){var s,i;return(0,a.A)().w(function(o){while(1)switch(o.p=o.n){case 0:if(s=e.positionForm.getFieldValue("market"),s){o.n=1;break}return o.a(2);case 1:return o.p=1,o.n=2,(0,p._3)({market:s,keyword:t,limit:10});case 2:i=o.v,i&&1===i.code?e.symbolSearchResults=i.data||[]:e.symbolSearchResults=[],o.n=4;break;case 3:o.p=3,o.v,e.symbolSearchResults=[];case 4:return o.a(2)}},o,null,[[1,3]])})),300)},handleSymbolSelect:function(t,e){var o=this.symbolSearchResults.find(function(e){return e.symbol===t});this.selectedSymbolName=o?o.name:"",this.symbolSearchKeyword=""},editPosition:function(t){var e=this;this.editingPosition=t,this.showAddPositionModal=!0,this.$nextTick(function(){e.positionForm.setFieldsValue({market:t.market,symbol:t.symbol,side:t.side,quantity:t.quantity,entry_price:t.entry_price,notes:t.notes,group_name:t.group_name||""})})},handleSavePosition:function(){var t=this;return(0,n.A)((0,a.A)().m(function e(){return(0,a.A)().w(function(e){while(1)switch(e.n){case 0:t.positionForm.validateFields(function(){var e=(0,n.A)((0,a.A)().m(function e(o,s){var i,r,n;return(0,a.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(!o){e.n=1;break}return e.a(2);case 1:if(t.savingPosition=!0,e.p=2,i={market:s.market,symbol:s.symbol.toUpperCase(),side:s.side,quantity:s.quantity,entry_price:s.entry_price,notes:s.notes||"",name:t.selectedSymbolName||"",group_name:s.group_name||""},!t.editingPosition){e.n=4;break}return e.n=3,(0,p.Xg)(t.editingPosition.id,i);case 3:r=e.v,e.n=6;break;case 4:return e.n=5,(0,p.Ps)(i);case 5:r=e.v;case 6:r&&1===r.code?(t.$message.success(t.$t("portfolio.message.saveSuccess")),t.closePositionModal(),t.loadData()):t.$message.error((null===(n=r)||void 0===n?void 0:n.msg)||t.$t("portfolio.message.saveFailed")),e.n=8;break;case 7:e.p=7,e.v,t.$message.error(t.$t("portfolio.message.saveFailed"));case 8:return e.p=8,t.savingPosition=!1,e.f(8);case 9:return e.a(2)}},e,null,[[2,7,8,9]])}));return function(t,o){return e.apply(this,arguments)}}());case 1:return e.a(2)}},e)}))()},deletePosition:function(t){var e=this;return(0,n.A)((0,a.A)().m(function o(){var s;return(0,a.A)().w(function(o){while(1)switch(o.p=o.n){case 0:return o.p=0,o.n=1,(0,p.$p)(t);case 1:s=o.v,s&&1===s.code?(e.$message.success(e.$t("portfolio.message.deleteSuccess")),e.loadData()):e.$message.error((null===s||void 0===s?void 0:s.msg)||e.$t("portfolio.message.deleteFailed")),o.n=3;break;case 2:o.p=2,o.v,e.$message.error(e.$t("portfolio.message.deleteFailed"));case 3:return o.a(2)}},o,null,[[0,2]])}))()},closePositionModal:function(){this.showAddPositionModal=!1,this.editingPosition=null,this.positionForm.resetFields(),this.symbolSearchResults=[],this.selectedSymbolName="",this.symbolSearchKeyword=""},handleAlertChannelsChange:function(t){this.alertChannels=t||[]},showAddAlertForPosition:function(t){var e=this,o=this.alerts.find(function(e){return e.position_id===t.id});o?this.editAlert(o):(this.editingAlert=null,this.alertPosition=t,this.alertChannels=(0,r.A)(this.userNotificationSettings.default_channels||["browser"]),this.showAddAlertModal=!0,this.$nextTick(function(){e.alertForm.setFieldsValue({symbol:"".concat(t.market,"/").concat(t.symbol),alert_type:"price_above",threshold:t.current_price||t.entry_price,repeat_interval:0,is_active:!0,notes:""})}))},editAlert:function(t){var e,o=this;this.editingAlert=t,this.alertPosition=this.positions.find(function(e){return e.id===t.position_id})||{market:t.market,symbol:t.symbol,current_price:0,entry_price:0},this.alertChannels=(0,r.A)((null===(e=t.notification_config)||void 0===e?void 0:e.channels)||["browser"]),this.showAddAlertModal=!0,this.$nextTick(function(){o.alertForm&&o.alertForm.setFieldsValue({symbol:"".concat(t.market,"/").concat(t.symbol),alert_type:t.alert_type||"price_above",threshold:t.threshold||0,repeat_interval:t.repeat_interval||0,is_active:!1!==t.is_active,notes:t.notes||""})})},handleSaveAlert:function(){var t=this;return(0,n.A)((0,a.A)().m(function e(){return(0,a.A)().w(function(e){while(1)switch(e.n){case 0:t.alertForm.validateFields(function(){var e=(0,n.A)((0,a.A)().m(function e(o,s){var i,r,n,l,c,u,m;return(0,a.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(!o){e.n=1;break}return e.a(2);case 1:if(t.savingAlert=!0,e.p=2,l={},t.alertChannels.includes("telegram")&&t.userNotificationSettings.telegram_chat_id&&(l.telegram=t.userNotificationSettings.telegram_chat_id,t.userNotificationSettings.telegram_bot_token&&(l.telegram_bot_token=t.userNotificationSettings.telegram_bot_token)),t.alertChannels.includes("email")&&t.userNotificationSettings.email&&(l.email=t.userNotificationSettings.email),t.alertChannels.includes("phone")&&t.userNotificationSettings.phone&&(l.phone=t.userNotificationSettings.phone),t.alertChannels.includes("discord")&&t.userNotificationSettings.discord_webhook&&(l.discord=t.userNotificationSettings.discord_webhook),t.alertChannels.includes("webhook")&&t.userNotificationSettings.webhook_url&&(l.webhook=t.userNotificationSettings.webhook_url,t.userNotificationSettings.webhook_token&&(l.webhook_token=t.userNotificationSettings.webhook_token)),c={position_id:null===(i=t.alertPosition)||void 0===i?void 0:i.id,market:null===(r=t.alertPosition)||void 0===r?void 0:r.market,symbol:null===(n=t.alertPosition)||void 0===n?void 0:n.symbol,alert_type:s.alert_type,threshold:s.threshold,notification_config:{channels:t.alertChannels.length>0?t.alertChannels:["browser"],targets:l,language:t.$store.getters.lang||"en-US"},is_active:!1!==s.is_active,repeat_interval:s.repeat_interval||0,notes:s.notes||""},!t.editingAlert){e.n=4;break}return e.n=3,(0,p.cg)(t.editingAlert.id,c);case 3:u=e.v,e.n=6;break;case 4:return e.n=5,(0,p.Iw)(c);case 5:u=e.v;case 6:u&&1===u.code?(t.$message.success(t.$t("portfolio.message.saveSuccess")),t.closeAlertModal(),t.loadAlerts()):t.$message.error((null===(m=u)||void 0===m?void 0:m.msg)||t.$t("portfolio.message.saveFailed")),e.n=8;break;case 7:e.p=7,e.v,t.$message.error(t.$t("portfolio.message.saveFailed"));case 8:return e.p=8,t.savingAlert=!1,e.f(8);case 9:return e.a(2)}},e,null,[[2,7,8,9]])}));return function(t,o){return e.apply(this,arguments)}}());case 1:return e.a(2)}},e)}))()},deleteAlert:function(t){var e=this;return(0,n.A)((0,a.A)().m(function o(){var s;return(0,a.A)().w(function(o){while(1)switch(o.p=o.n){case 0:return o.p=0,o.n=1,(0,p.qS)(t);case 1:s=o.v,s&&1===s.code?(e.$message.success(e.$t("portfolio.message.deleteSuccess")),e.loadAlerts()):e.$message.error((null===s||void 0===s?void 0:s.msg)||e.$t("portfolio.message.deleteFailed")),o.n=3;break;case 2:o.p=2,o.v,e.$message.error(e.$t("portfolio.message.deleteFailed"));case 3:return o.a(2)}},o,null,[[0,2]])}))()},closeAlertModal:function(){this.showAddAlertModal=!1,this.editingAlert=null,this.alertPosition=null,this.alertChannels=(0,r.A)(this.userNotificationSettings.default_channels||["browser"]),this.alertForm.resetFields()},confirmDeleteAlert:function(){if(this.editingAlert){var t=this;this.$confirm({title:this.$t("portfolio.alerts.deleteConfirm"),okText:this.$t("common.confirm"),okType:"danger",cancelText:this.$t("common.cancel"),onOk:function(){return(0,n.A)((0,a.A)().m(function e(){return(0,a.A)().w(function(e){while(1)switch(e.n){case 0:return e.n=1,t.handleDeleteAlert();case 1:return e.a(2)}},e)}))()}})}},handleDeleteAlert:function(){var t=this;return(0,n.A)((0,a.A)().m(function e(){var o;return(0,a.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.editingAlert){e.n=1;break}return e.a(2);case 1:return t.deletingAlert=!0,e.p=2,e.n=3,(0,p.qS)(t.editingAlert.id);case 3:if(o=e.v,!o||1!==o.code){e.n=5;break}return t.$message.success(t.$t("portfolio.message.deleteSuccess")),t.closeAlertModal(),e.n=4,t.loadAlerts();case 4:e.n=6;break;case 5:t.$message.error((null===o||void 0===o?void 0:o.msg)||t.$t("portfolio.message.deleteFailed"));case 6:e.n=8;break;case 7:e.p=7,e.v,t.$message.error(t.$t("portfolio.message.deleteFailed"));case 8:return e.p=8,t.deletingAlert=!1,e.f(8);case 9:return e.a(2)}},e,null,[[2,7,8,9]])}))()},focusMonitorsSection:function(){var t=this;this.$nextTick(function(){var e=t.$refs.monitorsSection;e&&"function"===typeof e.scrollIntoView&&e.scrollIntoView({behavior:"smooth",block:"start"})})},openAddMonitorModal:function(){var t=this;this.editingMonitor=null,this.monitorChannels=(0,r.A)(this.userNotificationSettings.default_channels||["browser"]),this.monitorScope="all",this.selectedMonitorPositions=[],this.showAddMonitorModal=!0,this.$nextTick(function(){t.monitorForm&&t.monitorForm.resetFields()})},handleMonitorChannelsChange:function(t){this.monitorChannels=t||[]},editMonitor:function(t){var e,o=this;this.editingMonitor=t,this.monitorChannels=(0,r.A)((null===(e=t.notification_config)||void 0===e?void 0:e.channels)||["browser"]);var s=[];if(t.position_ids)if("string"===typeof t.position_ids)try{s=JSON.parse(t.position_ids)||[]}catch(i){s=[]}else Array.isArray(t.position_ids)&&(s=t.position_ids);this.monitorScope=s.length>0?"selected":"all",this.selectedMonitorPositions=s,this.showAddMonitorModal=!0,this.$nextTick(function(){var e,s;o.monitorForm&&o.monitorForm.setFieldsValue({name:t.name,interval_minutes:(null===(e=t.config)||void 0===e?void 0:e.interval_minutes)||60,prompt:(null===(s=t.config)||void 0===s?void 0:s.prompt)||""})})},handleMonitorScopeChange:function(t){this.monitorScope=t.target.value,"all"===t.target.value&&(this.selectedMonitorPositions=[])},selectAllPositions:function(){this.selectedMonitorPositions=this.positions.map(function(t){return t.id})},deselectAllPositions:function(){this.selectedMonitorPositions=[]},handleSaveMonitor:function(){var t=this;return(0,n.A)((0,a.A)().m(function e(){return(0,a.A)().w(function(e){while(1)switch(e.n){case 0:t.monitorForm.validateFields(function(){var e=(0,n.A)((0,a.A)().m(function e(o,s){var i,r,n;return(0,a.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(!o){e.n=1;break}return e.a(2);case 1:if("selected"!==t.monitorScope||0!==t.selectedMonitorPositions.length){e.n=2;break}return t.$message.warning(t.$t("portfolio.form.pleaseSelectPositions")),e.a(2);case 2:if(t.savingMonitor=!0,e.p=3,i={name:s.name,monitor_type:"ai",position_ids:"selected"===t.monitorScope?t.selectedMonitorPositions:[],config:{interval_minutes:s.interval_minutes,prompt:s.prompt||"",language:t.$store.getters.lang||"en-US"},notification_config:{channels:t.monitorChannels.length>0?t.monitorChannels:["browser"],targets:{telegram:t.userNotificationSettings.telegram_chat_id||"",telegram_bot_token:t.userNotificationSettings.telegram_bot_token||"",email:t.userNotificationSettings.email||"",phone:t.userNotificationSettings.phone||"",discord:t.userNotificationSettings.discord_webhook||"",webhook:t.userNotificationSettings.webhook_url||"",webhook_token:t.userNotificationSettings.webhook_token||""}},is_active:!0},!t.editingMonitor){e.n=5;break}return e.n=4,(0,p.sk)(t.editingMonitor.id,i);case 4:r=e.v,e.n=7;break;case 5:return e.n=6,(0,p.yr)(i);case 6:r=e.v;case 7:r&&1===r.code?(t.$message.success(t.$t("portfolio.message.saveSuccess")),t.closeMonitorModal(),t.loadMonitors()):t.$message.error((null===(n=r)||void 0===n?void 0:n.msg)||t.$t("portfolio.message.saveFailed")),e.n=9;break;case 8:e.p=8,e.v,t.$message.error(t.$t("portfolio.message.saveFailed"));case 9:return e.p=9,t.savingMonitor=!1,e.f(9);case 10:return e.a(2)}},e,null,[[3,8,9,10]])}));return function(t,o){return e.apply(this,arguments)}}());case 1:return e.a(2)}},e)}))()},toggleMonitor:function(t,e){var o=this;return(0,n.A)((0,a.A)().m(function s(){var i;return(0,a.A)().w(function(s){while(1)switch(s.p=s.n){case 0:return s.p=0,s.n=1,(0,p.sk)(t,{is_active:e});case 1:i=s.v,i&&1===i.code&&(o.$message.success(e?o.$t("portfolio.message.monitorEnabled"):o.$t("portfolio.message.monitorDisabled")),o.loadMonitors()),s.n=3;break;case 2:s.p=2,s.v,o.$message.error(o.$t("portfolio.message.updateFailed"));case 3:return s.a(2)}},s,null,[[0,2]])}))()},runMonitorNow:function(t){var e=this;return(0,n.A)((0,a.A)().m(function o(){var s,i,r,n,l,c,u;return(0,a.A)().w(function(o){while(1)switch(o.p=o.n){case 0:return e.runningMonitor=t,o.p=1,s=e.$store.getters.lang||"en-US",o.n=2,(0,p.aU)(t,{language:s,async:!0});case 2:i=o.v,i&&1===i.code&&("running"===(null===(r=i.data)||void 0===r?void 0:r.status)?(e.$message.success(e.$t("portfolio.message.monitorRunning")),e.$notification.info({message:e.$t("portfolio.monitors.runningTitle"),description:e.$t("portfolio.monitors.runningDesc"),duration:5})):null!==(n=i.data)&&void 0!==n&&n.success?(e.$message.success(e.$t("portfolio.message.monitorRunSuccess")),i.data.analysis&&e.$notification.open({message:e.$t("portfolio.monitors.analysisResult"),description:i.data.analysis.substring(0,500)+(i.data.analysis.length>500?"...":""),duration:0})):null!==(l=i.data)&&void 0!==l&&l.error&&e.$message.error(i.data.error||e.$t("portfolio.message.monitorRunFailed")),e.loadMonitors()),o.n=4;break;case 3:o.p=3,u=o.v,"ECONNABORTED"===u.code||null!==(c=u.message)&&void 0!==c&&c.includes("timeout")?e.$notification.warning({message:e.$t("portfolio.monitors.timeoutTitle"),description:e.$t("portfolio.monitors.timeoutDesc"),duration:8}):e.$message.error(e.$t("portfolio.message.monitorRunFailed"));case 4:return o.p=4,e.runningMonitor=null,o.f(4);case 5:return o.a(2)}},o,null,[[1,3,4,5]])}))()},deleteMonitor:function(t){var e=this;return(0,n.A)((0,a.A)().m(function o(){var s;return(0,a.A)().w(function(o){while(1)switch(o.p=o.n){case 0:return o.p=0,o.n=1,(0,p.ei)(t);case 1:s=o.v,s&&1===s.code?(e.$message.success(e.$t("portfolio.message.deleteSuccess")),e.loadMonitors()):e.$message.error((null===s||void 0===s?void 0:s.msg)||e.$t("portfolio.message.deleteFailed")),o.n=3;break;case 2:o.p=2,o.v,e.$message.error(e.$t("portfolio.message.deleteFailed"));case 3:return o.a(2)}},o,null,[[0,2]])}))()},closeMonitorModal:function(){this.showAddMonitorModal=!1,this.editingMonitor=null,this.monitorForm.resetFields(),this.monitorChannels=(0,r.A)(this.userNotificationSettings.default_channels||["browser"]),this.monitorScope="all",this.selectedMonitorPositions=[]},getMonitorPositionIds:function(t){if(!t.position_ids)return[];if("string"===typeof t.position_ids)try{return JSON.parse(t.position_ids)||[]}catch(e){return[]}return Array.isArray(t.position_ids)?t.position_ids:[]},getPositionNameById:function(t){var e=this.positions.find(function(e){return e.id===t});return e?"".concat(e.symbol," (").concat(e.name||e.market,")"):"#".concat(t)},hasAlertForPosition:function(t){return this.alerts.some(function(e){return e.position_id===t})},getAlertForPosition:function(t){return this.alerts.find(function(e){return e.position_id===t})},getMarketColor:function(t){var e={USStock:"green",Crypto:"purple",Forex:"gold",Futures:"cyan"};return e[t]||"default"},getMarketName:function(t){return this.$t("dashboard.analysis.market.".concat(t))||t},getCurrencySymbol:function(t){var e=["USStock","Crypto","Forex","Futures"];return e.includes(t)?"$":"¥"},formatNumber:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2;return void 0===t||null===t?"0.00":Number(t).toLocaleString("en-US",{minimumFractionDigits:e,maximumFractionDigits:e})},formatPrice:function(t){return t?t>=1e3?this.formatNumber(t,2):t>=1?this.formatNumber(t,4):this.formatNumber(t,6):"0"},formatTime:function(t){if(!t)return"-";var e;if("number"===typeof t)e=new Date(1e3*t);else{if("string"!==typeof t)return"-";e=/^\d+$/.test(t)?new Date(1e3*parseInt(t,10)):new Date(t)}return isNaN(e.getTime())?"-":e.toLocaleString()},getIntervalText:function(t){if(!t)return"-";if(t<60)return"".concat(t," ").concat(this.$t("portfolio.form.minutes"));var e=t/60;return"".concat(e," ").concat(this.$t("portfolio.form.hours"))}}},f=d,v=o(845),h=(0,v.A)(f,s,i,!1,null,"398d904c",null),_=h.exports},24364:function(t,e,o){o.d(e,{$p:function(){return n},Dt:function(){return i},Iw:function(){return v},Ps:function(){return r},Xg:function(){return a},_3:function(){return y},aU:function(){return d},bC:function(){return l},cg:function(){return h},ei:function(){return m},f:function(){return g},iO:function(){return b},qS:function(){return _},qu:function(){return f},sk:function(){return p},w1:function(){return c},yr:function(){return u}});var s=o(75769);function i(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,s.Ay)({url:"/api/portfolio/positions",method:"get",params:t})}function r(t){return(0,s.Ay)({url:"/api/portfolio/positions",method:"post",data:t})}function a(t,e){return(0,s.Ay)({url:"/api/portfolio/positions/".concat(t),method:"put",data:e})}function n(t){return(0,s.Ay)({url:"/api/portfolio/positions/".concat(t),method:"delete"})}function l(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,s.Ay)({url:"/api/portfolio/summary",method:"get",params:t})}function c(){return(0,s.Ay)({url:"/api/portfolio/monitors",method:"get"})}function u(t){return(0,s.Ay)({url:"/api/portfolio/monitors",method:"post",data:t})}function p(t,e){return(0,s.Ay)({url:"/api/portfolio/monitors/".concat(t),method:"put",data:e})}function m(t){return(0,s.Ay)({url:"/api/portfolio/monitors/".concat(t),method:"delete"})}function d(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return(0,s.Ay)({url:"/api/portfolio/monitors/".concat(t,"/run"),method:"post",data:e})}function f(){return(0,s.Ay)({url:"/api/portfolio/alerts",method:"get"})}function v(t){return(0,s.Ay)({url:"/api/portfolio/alerts",method:"post",data:t})}function h(t,e){return(0,s.Ay)({url:"/api/portfolio/alerts/".concat(t),method:"put",data:e})}function _(t){return(0,s.Ay)({url:"/api/portfolio/alerts/".concat(t),method:"delete"})}function g(){return(0,s.Ay)({url:"/api/portfolio/groups",method:"get"})}function y(t){return(0,s.Ay)({url:"/api/market/symbols/search",method:"post",data:t})}function b(){return(0,s.Ay)({url:"/api/market/types",method:"get"})}},84841:function(t,e,o){o.d(e,{DK:function(){return g},E$:function(){return u},Gl:function(){return d},O0:function(){return c},TK:function(){return a},aU:function(){return i},cw:function(){return l},d$:function(){return b},hG:function(){return n},kg:function(){return r},nY:function(){return _},r7:function(){return p},rx:function(){return v},v9:function(){return f},vF:function(){return m},vi:function(){return y},wq:function(){return h}});var s=o(75769);function i(t){return(0,s.Ay)({url:"/api/users/list",method:"get",params:t})}function r(t){return(0,s.Ay)({url:"/api/users/create",method:"post",data:t})}function a(t,e){return(0,s.Ay)({url:"/api/users/update",method:"put",params:{id:t},data:e})}function n(t){return(0,s.Ay)({url:"/api/users/delete",method:"delete",params:{id:t}})}function l(t){return(0,s.Ay)({url:"/api/users/reset-password",method:"post",data:t})}function c(){return(0,s.Ay)({url:"/api/users/roles",method:"get"})}function u(){return(0,s.Ay)({url:"/api/users/profile",method:"get"})}function p(t){return(0,s.Ay)({url:"/api/users/profile/update",method:"put",data:t})}function m(){return(0,s.Ay)({url:"/api/users/notification-settings",method:"get"})}function d(t){return(0,s.Ay)({url:"/api/users/notification-settings",method:"put",data:t})}function f(t){return(0,s.Ay)({url:"/api/users/my-credits-log",method:"get",params:t})}function v(t){return(0,s.Ay)({url:"/api/users/my-referrals",method:"get",params:t})}function h(t){return(0,s.Ay)({url:"/api/users/set-credits",method:"post",data:t})}function _(t){return(0,s.Ay)({url:"/api/users/set-vip",method:"post",data:t})}function g(t){return(0,s.Ay)({url:"/api/users/system-strategies",method:"get",params:t})}function y(t){return(0,s.Ay)({url:"/api/users/admin-orders",method:"get",params:t})}function b(t){return(0,s.Ay)({url:"/api/users/admin-ai-stats",method:"get",params:t})}}}]); \ No newline at end of file +"use strict";(self["webpackChunkvue_antd_pro"]=self["webpackChunkvue_antd_pro"]||[]).push([[506],{27506:function(t,e,o){o.r(e),o.d(e,{default:function(){return _}});o(74423);var s=function(){var t=this,e=t._self._c;return e("div",{staticClass:"portfolio-container",class:{"theme-dark":t.isDarkTheme,embedded:t.embedded}},[e("div",{staticClass:"summary-section"},[e("div",{staticClass:"summary-card total-value"},[e("div",{staticClass:"card-icon"},[e("a-icon",{attrs:{type:"wallet"}})],1),e("div",{staticClass:"card-content"},[e("div",{staticClass:"card-label"},[t._v(t._s(t.$t("portfolio.summary.totalValue")))]),e("div",{staticClass:"card-value"},[e("span",{staticClass:"currency"},[t._v("$")]),e("span",{staticClass:"amount"},[t._v(t._s(t.formatNumber(t.summary.total_market_value)))])]),void 0!==t.summary.today_change?e("div",{staticClass:"card-sub"},[e("span",{class:t.summary.today_change>=0?"positive":"negative"},[t._v(" "+t._s(t.$t("portfolio.summary.today"))+": "+t._s(t.summary.today_change>=0?"+":"")+"$"+t._s(t.formatNumber(t.summary.today_change))+" ")])]):t._e()])]),e("div",{staticClass:"summary-card"},[e("div",{staticClass:"card-icon cost"},[e("a-icon",{attrs:{type:"dollar"}})],1),e("div",{staticClass:"card-content"},[e("div",{staticClass:"card-label"},[t._v(t._s(t.$t("portfolio.summary.totalCost")))]),e("div",{staticClass:"card-value"},[t._v("$"+t._s(t.formatNumber(t.summary.total_cost)))])])]),e("div",{staticClass:"summary-card"},[e("div",{staticClass:"card-icon",class:t.summary.total_pnl>=0?"profit":"loss"},[e("a-icon",{attrs:{type:t.summary.total_pnl>=0?"rise":"fall"}})],1),e("div",{staticClass:"card-content"},[e("div",{staticClass:"card-label"},[t._v(t._s(t.$t("portfolio.summary.totalPnl")))]),e("div",{staticClass:"card-value",class:t.summary.total_pnl>=0?"positive":"negative"},[t._v(" "+t._s(t.summary.total_pnl>=0?"+":"")+"$"+t._s(t.formatNumber(t.summary.total_pnl))+" "),e("span",{staticClass:"percent"},[t._v("("+t._s(t.summary.total_pnl_percent>=0?"+":"")+t._s(t.summary.total_pnl_percent)+"%)")])])])]),e("div",{staticClass:"summary-card"},[e("div",{staticClass:"card-icon positions"},[e("a-icon",{attrs:{type:"fund"}})],1),e("div",{staticClass:"card-content"},[e("div",{staticClass:"card-label"},[t._v(t._s(t.$t("portfolio.summary.positionCount")))]),e("div",{staticClass:"card-value"},[t._v(" "+t._s(t.summary.position_count)+" "),t.profitLossStats.profit>0||t.profitLossStats.loss>0?e("span",{staticClass:"position-detail"},[t._v(" ("),e("span",{staticClass:"positive"},[t._v(t._s(t.profitLossStats.profit))]),t._v("/"),e("span",{staticClass:"negative"},[t._v(t._s(t.profitLossStats.loss))]),t._v(") ")]):t._e()]),e("div",{staticClass:"card-sub"},[t._v(" "+t._s(t.$t("portfolio.summary.profitLossRatio"))+" ")])])])]),e("div",{staticClass:"summary-section secondary"},[e("div",{staticClass:"summary-card mini"},[e("div",{staticClass:"card-icon today",class:t.summary.today_pnl>=0?"profit":"loss"},[e("a-icon",{attrs:{type:"stock"}})],1),e("div",{staticClass:"card-content"},[e("div",{staticClass:"card-label"},[t._v(t._s(t.$t("portfolio.summary.todayPnl")))]),e("div",{staticClass:"card-value",class:t.summary.today_pnl>=0?"positive":"negative"},[t._v(" "+t._s(t.summary.today_pnl>=0?"+":"")+"$"+t._s(t.formatNumber(t.summary.today_pnl||0))+" ")])])]),e("div",{staticClass:"summary-card mini"},[e("div",{staticClass:"card-icon best"},[e("a-icon",{attrs:{type:"trophy"}})],1),e("div",{staticClass:"card-content"},[e("div",{staticClass:"card-label"},[t._v(t._s(t.$t("portfolio.summary.bestPerformer")))]),t.bestPerformer?e("div",{staticClass:"card-value small positive"},[t._v(" "+t._s(t.bestPerformer.symbol)+" +"+t._s(t.bestPerformer.pnl_percent)+"% ")]):e("div",{staticClass:"card-value small"},[t._v("-")])])]),e("div",{staticClass:"summary-card mini"},[e("div",{staticClass:"card-icon worst"},[e("a-icon",{attrs:{type:"warning"}})],1),e("div",{staticClass:"card-content"},[e("div",{staticClass:"card-label"},[t._v(t._s(t.$t("portfolio.summary.worstPerformer")))]),t.worstPerformer?e("div",{staticClass:"card-value small negative"},[t._v(" "+t._s(t.worstPerformer.symbol)+" "+t._s(t.worstPerformer.pnl_percent)+"% ")]):e("div",{staticClass:"card-value small"},[t._v("-")])])]),e("div",{staticClass:"summary-card mini sync-card"},[e("div",{staticClass:"card-icon sync",class:{syncing:t.isSyncing}},[e("a-icon",{attrs:{type:"sync",spin:t.isSyncing}})],1),e("div",{staticClass:"card-content"},[e("div",{staticClass:"card-label"},[t._v(t._s(t.$t("portfolio.summary.priceSync")))]),e("div",{staticClass:"card-value small"},[t._v(" "+t._s(t.lastSyncTime?t.formatSyncTime(t.lastSyncTime):"-")+" ")]),e("div",{staticClass:"card-sub"},[t._v(" "+t._s(t.$t("portfolio.summary.syncInterval"))+": 30s "),e("a-button",{staticStyle:{padding:"0","margin-left":"8px"},attrs:{type:"link",size:"small",loading:t.isSyncing},on:{click:t.refreshPrices}},[t.isSyncing?t._e():e("a-icon",{attrs:{type:"reload"}})],1)],1)])])]),e("div",{staticClass:"main-content"},[e("div",{staticClass:"positions-section"},[e("div",{staticClass:"section-header"},[e("h3",[e("a-icon",{attrs:{type:"stock"}}),e("span",[t._v(t._s(t.$t("portfolio.positions.title")))])],1),e("div",{staticClass:"header-actions"},[e("a-radio-group",{staticStyle:{"margin-right":"12px"},attrs:{size:"small"},model:{value:t.viewMode,callback:function(e){t.viewMode=e},expression:"viewMode"}},[e("a-radio-button",{attrs:{value:"grid"}},[e("a-icon",{attrs:{type:"appstore"}})],1),e("a-radio-button",{attrs:{value:"group"}},[e("a-icon",{attrs:{type:"folder"}})],1)],1),"grid"===t.viewMode?e("a-select",{staticStyle:{width:"150px","margin-right":"12px"},attrs:{placeholder:t.$t("portfolio.groups.all"),"allow-clear":""},on:{change:t.filterByGroup},model:{value:t.selectedGroup,callback:function(e){t.selectedGroup=e},expression:"selectedGroup"}},[e("a-select-option",{attrs:{value:""}},[t._v(t._s(t.$t("portfolio.groups.all")))]),e("a-select-option",{attrs:{value:"__ungrouped__"}},[t._v(t._s(t.$t("portfolio.groups.ungrouped")))]),t._l(t.groups,function(o){return e("a-select-option",{key:o.name,attrs:{value:o.name}},[t._v(" "+t._s(o.name)+" ("+t._s(o.count)+") ")])})],2):t._e(),e("a-button",{attrs:{type:"primary"},on:{click:function(e){t.showAddPositionModal=!0}}},[e("a-icon",{attrs:{type:"plus"}}),t._v(" "+t._s(t.$t("portfolio.positions.add"))+" ")],1)],1)]),e("a-spin",{attrs:{spinning:t.loadingPositions}},[e("div",{staticClass:"positions-list"},[0===t.positions.length?e("div",{staticClass:"empty-state"},[e("a-empty",{attrs:{description:t.$t("portfolio.positions.empty")}},[e("a-button",{attrs:{type:"primary"},on:{click:function(e){t.showAddPositionModal=!0}}},[e("a-icon",{attrs:{type:"plus"}}),t._v(" "+t._s(t.$t("portfolio.positions.addFirst"))+" ")],1)],1)],1):"grid"===t.viewMode?e("div",{staticClass:"position-grid"},t._l(t.filteredPositions,function(o){return e("div",{key:o.id,staticClass:"position-card",class:{profit:o.pnl>=0,loss:o.pnl<0}},[e("div",{staticClass:"position-header"},[e("div",{staticClass:"symbol-info"},[e("a-tag",{attrs:{color:t.getMarketColor(o.market),size:"small"}},[t._v(t._s(t.getMarketName(o.market)))]),e("span",{staticClass:"symbol"},[t._v(t._s(o.symbol))]),e("span",{staticClass:"name"},[t._v(t._s(o.name))]),o.group_name?e("a-tag",{staticStyle:{"margin-left":"4px"},attrs:{size:"small",color:"blue"}},[e("a-icon",{attrs:{type:"folder"}}),t._v(" "+t._s(o.group_name)+" ")],1):t._e()],1),e("div",{staticClass:"position-actions"},[e("a-tooltip",{attrs:{title:t.hasAlertForPosition(o.id)?t.$t("portfolio.alerts.editAlert"):t.$t("portfolio.alerts.addAlert")}},[e("a-button",{class:{"has-alert":t.hasAlertForPosition(o.id)},attrs:{type:"link",size:"small"},on:{click:function(e){return t.showAddAlertForPosition(o)}}},[e("a-icon",{attrs:{type:"bell",theme:t.hasAlertForPosition(o.id)?"filled":"outlined"}})],1)],1),e("a-button",{attrs:{type:"link",size:"small"},on:{click:function(e){return t.editPosition(o)}}},[e("a-icon",{attrs:{type:"edit"}})],1),e("a-popconfirm",{attrs:{title:t.$t("portfolio.positions.deleteConfirm")},on:{confirm:function(e){return t.deletePosition(o.id)}}},[e("a-button",{staticClass:"delete-btn",attrs:{type:"link",size:"small"}},[e("a-icon",{attrs:{type:"delete"}})],1)],1)],1)]),e("div",{staticClass:"position-body"},[e("div",{staticClass:"price-row"},[e("div",{staticClass:"current-price"},[e("span",{staticClass:"label"},[t._v(t._s(t.$t("portfolio.positions.currentPrice")))]),e("span",{staticClass:"value"},[t._v(t._s(t.getCurrencySymbol(o.market))+t._s(t.formatPrice(o.current_price)))]),e("span",{staticClass:"change",class:o.price_change>=0?"up":"down"},[t._v(" "+t._s(o.price_change>=0?"▲":"▼")+t._s(Math.abs(o.price_change_percent).toFixed(2))+"% ")])]),e("div",{staticClass:"entry-price"},[e("span",{staticClass:"label"},[t._v(t._s(t.$t("portfolio.positions.entryPrice")))]),e("span",{staticClass:"value"},[t._v(t._s(t.getCurrencySymbol(o.market))+t._s(t.formatPrice(o.entry_price)))])])]),e("div",{staticClass:"quantity-row"},[e("div",{staticClass:"item"},[e("span",{staticClass:"label"},[t._v(t._s(t.$t("portfolio.positions.quantity")))]),e("span",{staticClass:"value"},[t._v(t._s(t.formatNumber(o.quantity,4)))])]),e("div",{staticClass:"item"},[e("span",{staticClass:"label"},[t._v(t._s(t.$t("portfolio.positions.side")))]),e("a-tag",{attrs:{color:"long"===o.side?"green":"red",size:"small"}},[t._v(" "+t._s("long"===o.side?t.$t("portfolio.positions.long"):t.$t("portfolio.positions.short"))+" ")])],1),e("div",{staticClass:"item"},[e("span",{staticClass:"label"},[t._v(t._s(t.$t("portfolio.positions.marketValue")))]),e("span",{staticClass:"value"},[t._v(t._s(t.getCurrencySymbol(o.market))+t._s(t.formatNumber(o.market_value)))])])])]),e("div",{staticClass:"position-footer"},[e("div",{staticClass:"pnl"},[e("span",{staticClass:"label"},[t._v(t._s(t.$t("portfolio.positions.pnl")))]),e("span",{staticClass:"value",class:o.pnl>=0?"positive":"negative"},[t._v(" "+t._s(o.pnl>=0?"+":"")+t._s(t.getCurrencySymbol(o.market))+t._s(t.formatNumber(o.pnl))+" "),e("span",{staticClass:"percent"},[t._v("("+t._s(o.pnl_percent>=0?"+":"")+t._s(o.pnl_percent)+"%)")])])])])])}),0):e("div",{staticClass:"position-collapse-view"},[e("a-collapse",{attrs:{bordered:!1},model:{value:t.activeGroups,callback:function(e){t.activeGroups=e},expression:"activeGroups"}},[t.ungroupedPositions.length>0?e("a-collapse-panel",{key:"__ungrouped__",staticClass:"group-panel"},[e("template",{slot:"header"},[e("div",{staticClass:"group-header"},[e("span",{staticClass:"group-name"},[e("a-icon",{staticStyle:{"margin-right":"8px"},attrs:{type:"inbox"}}),t._v(" "+t._s(t.$t("portfolio.groups.ungrouped"))+" ")],1),e("span",{staticClass:"group-stats"},[e("span",{staticClass:"count"},[t._v(t._s(t.ungroupedPositions.length)+" "+t._s(t.$t("portfolio.positions.items")))]),e("span",{staticClass:"group-pnl",class:t.getGroupPnl(t.ungroupedPositions)>=0?"positive":"negative"},[t._v(" "+t._s(t.getGroupPnl(t.ungroupedPositions)>=0?"+":"")+"$"+t._s(t.formatNumber(t.getGroupPnl(t.ungroupedPositions)))+" ")])])])]),e("div",{staticClass:"position-grid compact"},t._l(t.ungroupedPositions,function(o){return e("div",{key:o.id,staticClass:"position-card compact",class:{profit:o.pnl>=0,loss:o.pnl<0}},[e("div",{staticClass:"position-header"},[e("div",{staticClass:"symbol-info"},[e("a-tag",{attrs:{color:t.getMarketColor(o.market),size:"small"}},[t._v(t._s(t.getMarketName(o.market)))]),e("span",{staticClass:"symbol"},[t._v(t._s(o.symbol))]),e("span",{staticClass:"name"},[t._v(t._s(o.name))])],1),e("div",{staticClass:"position-actions"},[e("a-button",{attrs:{type:"link",size:"small"},on:{click:function(e){return t.editPosition(o)}}},[e("a-icon",{attrs:{type:"edit"}})],1),e("a-popconfirm",{attrs:{title:t.$t("portfolio.positions.deleteConfirm")},on:{confirm:function(e){return t.deletePosition(o.id)}}},[e("a-button",{staticClass:"delete-btn",attrs:{type:"link",size:"small"}},[e("a-icon",{attrs:{type:"delete"}})],1)],1)],1)]),e("div",{staticClass:"position-compact-body"},[e("div",{staticClass:"compact-item"},[e("span",{staticClass:"value"},[t._v(t._s(t.getCurrencySymbol(o.market))+t._s(t.formatPrice(o.current_price)))]),e("span",{staticClass:"change",class:o.price_change>=0?"up":"down"},[t._v(" "+t._s(o.price_change>=0?"▲":"▼")+t._s(Math.abs(o.price_change_percent).toFixed(2))+"% ")])]),e("div",{staticClass:"compact-item"},[e("span",{staticClass:"label"},[t._v(t._s(t.$t("portfolio.positions.quantity"))+":")]),e("span",{staticClass:"value"},[t._v(t._s(t.formatNumber(o.quantity,4)))])]),e("div",{staticClass:"compact-item pnl",class:o.pnl>=0?"positive":"negative"},[t._v(" "+t._s(o.pnl>=0?"+":"")+t._s(t.getCurrencySymbol(o.market))+t._s(t.formatNumber(o.pnl))+" "),e("span",{staticClass:"percent"},[t._v("("+t._s(o.pnl_percent>=0?"+":"")+t._s(o.pnl_percent)+"%)")])])])])}),0)],2):t._e(),t._l(t.groupsWithPositions,function(o){return e("a-collapse-panel",{key:o.name,staticClass:"group-panel"},[e("template",{slot:"header"},[e("div",{staticClass:"group-header"},[e("span",{staticClass:"group-name"},[e("a-icon",{staticStyle:{"margin-right":"8px",color:"#1890ff"},attrs:{type:"folder"}}),t._v(" "+t._s(o.name)+" ")],1),e("span",{staticClass:"group-stats"},[e("span",{staticClass:"count"},[t._v(t._s(o.positions.length)+" "+t._s(t.$t("portfolio.positions.items")))]),e("span",{staticClass:"group-pnl",class:t.getGroupPnl(o.positions)>=0?"positive":"negative"},[t._v(" "+t._s(t.getGroupPnl(o.positions)>=0?"+":"")+"$"+t._s(t.formatNumber(t.getGroupPnl(o.positions)))+" ")])])])]),e("div",{staticClass:"position-grid compact"},t._l(o.positions,function(o){return e("div",{key:o.id,staticClass:"position-card compact",class:{profit:o.pnl>=0,loss:o.pnl<0}},[e("div",{staticClass:"position-header"},[e("div",{staticClass:"symbol-info"},[e("a-tag",{attrs:{color:t.getMarketColor(o.market),size:"small"}},[t._v(t._s(t.getMarketName(o.market)))]),e("span",{staticClass:"symbol"},[t._v(t._s(o.symbol))]),e("span",{staticClass:"name"},[t._v(t._s(o.name))])],1),e("div",{staticClass:"position-actions"},[e("a-button",{attrs:{type:"link",size:"small"},on:{click:function(e){return t.editPosition(o)}}},[e("a-icon",{attrs:{type:"edit"}})],1),e("a-popconfirm",{attrs:{title:t.$t("portfolio.positions.deleteConfirm")},on:{confirm:function(e){return t.deletePosition(o.id)}}},[e("a-button",{staticClass:"delete-btn",attrs:{type:"link",size:"small"}},[e("a-icon",{attrs:{type:"delete"}})],1)],1)],1)]),e("div",{staticClass:"position-compact-body"},[e("div",{staticClass:"compact-item"},[e("span",{staticClass:"value"},[t._v(t._s(t.getCurrencySymbol(o.market))+t._s(t.formatPrice(o.current_price)))]),e("span",{staticClass:"change",class:o.price_change>=0?"up":"down"},[t._v(" "+t._s(o.price_change>=0?"▲":"▼")+t._s(Math.abs(o.price_change_percent).toFixed(2))+"% ")])]),e("div",{staticClass:"compact-item"},[e("span",{staticClass:"label"},[t._v(t._s(t.$t("portfolio.positions.quantity"))+":")]),e("span",{staticClass:"value"},[t._v(t._s(t.formatNumber(o.quantity,4)))])]),e("div",{staticClass:"compact-item pnl",class:o.pnl>=0?"positive":"negative"},[t._v(" "+t._s(o.pnl>=0?"+":"")+t._s(t.getCurrencySymbol(o.market))+t._s(t.formatNumber(o.pnl))+" "),e("span",{staticClass:"percent"},[t._v("("+t._s(o.pnl_percent>=0?"+":"")+t._s(o.pnl_percent)+"%)")])])])])}),0)],2)})],2)],1)])])],1),e("div",{ref:"monitorsSection",staticClass:"monitors-section"},[e("div",{staticClass:"section-header"},[e("h3",[e("a-icon",{attrs:{type:"eye"}}),e("span",[t._v(t._s(t.$t("portfolio.monitors.title")))])],1),e("a-button",{attrs:{type:"primary"},on:{click:t.openAddMonitorModal}},[e("a-icon",{attrs:{type:"plus"}}),t._v(" "+t._s(t.$t("portfolio.monitors.add"))+" ")],1)],1),e("a-spin",{attrs:{spinning:t.loadingMonitors}},[e("div",{staticClass:"monitors-list"},[0===t.monitors.length?e("div",{staticClass:"empty-state small"},[e("a-empty",{attrs:{description:t.$t("portfolio.monitors.empty"),image:t.simpleImage}},[e("a-button",{attrs:{type:"primary",size:"small"},on:{click:t.openAddMonitorModal}},[e("a-icon",{attrs:{type:"plus"}}),t._v(" "+t._s(t.$t("portfolio.monitors.addFirst"))+" ")],1)],1)],1):e("div",t._l(t.monitors,function(o){return e("div",{key:o.id,staticClass:"monitor-card"},[e("div",{staticClass:"monitor-header"},[e("div",{staticClass:"monitor-name"},[e("a-icon",{attrs:{type:"robot"}}),e("span",[t._v(t._s(o.name))])],1),e("a-switch",{attrs:{checked:o.is_active,size:"small"},on:{change:function(e){return t.toggleMonitor(o.id,e)}}})],1),e("div",{staticClass:"monitor-body"},[e("div",{staticClass:"monitor-info"},[e("span",{staticClass:"label"},[t._v(t._s(t.$t("portfolio.monitors.interval"))+":")]),e("span",{staticClass:"value"},[t._v(t._s(t.getIntervalText(o.config.interval_minutes)))])]),e("div",{staticClass:"monitor-info"},[e("span",{staticClass:"label"},[t._v(t._s(t.$t("portfolio.form.monitorScope"))+":")]),e("span",{staticClass:"value"},[t.getMonitorPositionIds(o).length>0?[e("a-tooltip",[e("template",{slot:"title"},t._l(t.getMonitorPositionIds(o),function(o){return e("div",{key:o},[t._v(" "+t._s(t.getPositionNameById(o))+" ")])}),0),e("span",{staticClass:"scope-selected"},[t._v(" "+t._s(t.$t("portfolio.form.selectedCount",{count:t.getMonitorPositionIds(o).length,total:t.positions.length}))+" ")])],2)]:e("span",{staticClass:"scope-all"},[t._v(t._s(t.$t("portfolio.form.allPositions")))])],2)]),o.last_run_at?e("div",{staticClass:"monitor-info"},[e("span",{staticClass:"label"},[t._v(t._s(t.$t("portfolio.monitors.lastRun"))+":")]),e("span",{staticClass:"value"},[t._v(t._s(t.formatTime(o.last_run_at)))])]):t._e(),o.next_run_at&&o.is_active?e("div",{staticClass:"monitor-info"},[e("span",{staticClass:"label"},[t._v(t._s(t.$t("portfolio.monitors.nextRun"))+":")]),e("span",{staticClass:"value"},[t._v(t._s(t.formatTime(o.next_run_at)))])]):t._e(),o.notification_config.channels?e("div",{staticClass:"monitor-channels"},[e("span",{staticClass:"label"},[t._v(t._s(t.$t("portfolio.monitors.channels"))+":")]),t._l(o.notification_config.channels,function(o){return e("a-tag",{key:o,attrs:{size:"small"}},[t._v(" "+t._s(o)+" ")])})],2):t._e()]),e("div",{staticClass:"monitor-actions"},[e("a-button",{attrs:{type:"link",size:"small",loading:t.runningMonitor===o.id},on:{click:function(e){return t.runMonitorNow(o.id)}}},[e("a-icon",{attrs:{type:"play-circle"}}),t._v(" "+t._s(t.$t("portfolio.monitors.runNow"))+" ")],1),e("a-button",{attrs:{type:"link",size:"small"},on:{click:function(e){return t.editMonitor(o)}}},[e("a-icon",{attrs:{type:"edit"}})],1),e("a-popconfirm",{attrs:{title:t.$t("portfolio.monitors.deleteConfirm")},on:{confirm:function(e){return t.deleteMonitor(o.id)}}},[e("a-button",{staticClass:"delete-btn",attrs:{type:"link",size:"small"}},[e("a-icon",{attrs:{type:"delete"}})],1)],1)],1)])}),0)])])],1)]),e("a-modal",{attrs:{title:t.editingPosition?t.$t("portfolio.modal.editPosition"):t.$t("portfolio.modal.addPosition"),visible:t.showAddPositionModal,confirmLoading:t.savingPosition,width:"600px"},on:{ok:t.handleSavePosition,cancel:t.closePositionModal}},[e("a-form",{attrs:{form:t.positionForm,"label-col":{span:6},"wrapper-col":{span:16}}},[e("a-form-item",{attrs:{label:t.$t("portfolio.form.market")}},[e("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["market",{rules:[{required:!0,message:t.$t("portfolio.form.marketRequired")}]}],expression:"['market', { rules: [{ required: true, message: $t('portfolio.form.marketRequired') }] }]"}],attrs:{placeholder:t.$t("portfolio.form.selectMarket"),disabled:!!t.editingPosition},on:{change:t.handleMarketChange}},t._l(t.marketTypes,function(o){return e("a-select-option",{key:o.value,attrs:{value:o.value}},[t._v(" "+t._s(t.$t(o.i18nKey))+" ")])}),1)],1),e("a-form-item",{attrs:{label:t.$t("portfolio.form.symbol")}},[e("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["symbol",{rules:[{required:!0,message:t.$t("portfolio.form.symbolRequired")}]}],expression:"['symbol', { rules: [{ required: true, message: $t('portfolio.form.symbolRequired') }] }]"}],staticStyle:{width:"100%"},attrs:{"show-search":"",placeholder:t.$t("portfolio.form.searchSymbol"),"default-active-first-option":!1,"show-arrow":!1,"filter-option":!1,"not-found-content":null,disabled:!!t.editingPosition},on:{search:t.handleSymbolSearch,change:t.handleSymbolSelect}},[t._l(t.symbolSearchResults,function(o){return e("a-select-option",{key:o.symbol,attrs:{value:o.symbol}},[e("div",{staticClass:"symbol-option"},[e("strong",[t._v(t._s(o.symbol))]),e("span",{staticClass:"symbol-name"},[t._v(t._s(o.name))])])])}),t.symbolSearchKeyword&&0===t.symbolSearchResults.length?e("a-select-option",{key:"__manual__"+t.symbolSearchKeyword.toUpperCase(),attrs:{value:t.symbolSearchKeyword.toUpperCase()}},[e("div",{staticClass:"symbol-option manual-input"},[e("a-icon",{staticStyle:{"margin-right":"6px",color:"#1890ff"},attrs:{type:"edit"}}),e("span",[t._v(t._s(t.$t("portfolio.form.useAsSymbol"))+" ")]),e("strong",{staticStyle:{color:"#1890ff"}},[t._v(t._s(t.symbolSearchKeyword.toUpperCase()))]),e("span",[t._v(" "+t._s(t.$t("portfolio.form.asSymbolCode")))])],1)]):t._e()],2),e("div",{staticClass:"symbol-hint",staticStyle:{"font-size":"12px",color:"#999","margin-top":"4px"}},[t._v(" "+t._s(t.$t("portfolio.form.symbolHint"))+" ")])],1),e("a-form-item",{attrs:{label:t.$t("portfolio.form.side")}},[e("a-radio-group",{directives:[{name:"decorator",rawName:"v-decorator",value:["side",{initialValue:"long"}],expression:"['side', { initialValue: 'long' }]"}],attrs:{disabled:!!t.editingPosition}},[e("a-radio-button",{attrs:{value:"long"}},[t._v(t._s(t.$t("portfolio.positions.long")))]),e("a-radio-button",{attrs:{value:"short"}},[t._v(t._s(t.$t("portfolio.positions.short")))])],1)],1),e("a-form-item",{attrs:{label:t.$t("portfolio.form.quantity")}},[e("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["quantity",{rules:[{required:!0,message:t.$t("portfolio.form.quantityRequired")}]}],expression:"['quantity', { rules: [{ required: true, message: $t('portfolio.form.quantityRequired') }] }]"}],staticStyle:{width:"100%"},attrs:{min:1e-8,step:1,placeholder:t.$t("portfolio.form.enterQuantity")}})],1),e("a-form-item",{attrs:{label:t.$t("portfolio.form.entryPrice")}},[e("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["entry_price",{rules:[{required:!0,message:t.$t("portfolio.form.entryPriceRequired")}]}],expression:"['entry_price', { rules: [{ required: true, message: $t('portfolio.form.entryPriceRequired') }] }]"}],staticStyle:{width:"100%"},attrs:{min:1e-8,step:.01,placeholder:t.$t("portfolio.form.enterEntryPrice")}})],1),e("a-form-item",{attrs:{label:t.$t("portfolio.form.notes")}},[e("a-textarea",{directives:[{name:"decorator",rawName:"v-decorator",value:["notes"],expression:"['notes']"}],attrs:{rows:2,placeholder:t.$t("portfolio.form.enterNotes")}})],1),e("a-form-item",{attrs:{label:t.$t("portfolio.form.group")}},[e("a-auto-complete",{directives:[{name:"decorator",rawName:"v-decorator",value:["group_name"],expression:"['group_name']"}],attrs:{placeholder:t.$t("portfolio.form.enterGroup"),dataSource:t.groupNames}})],1)],1)],1),e("a-modal",{attrs:{title:t.editingAlert?t.$t("portfolio.modal.editAlert"):t.$t("portfolio.modal.addAlert"),visible:t.showAddAlertModal,width:"560px"},on:{cancel:t.closeAlertModal}},[e("template",{slot:"footer"},[e("div",{staticClass:"alert-modal-footer"},[t.editingAlert?e("a-button",{attrs:{type:"danger",ghost:"",loading:t.deletingAlert},on:{click:t.confirmDeleteAlert}},[e("a-icon",{attrs:{type:"delete"}}),t._v(" "+t._s(t.$t("portfolio.alerts.delete"))+" ")],1):e("span"),e("div",{staticClass:"footer-right"},[e("a-button",{on:{click:t.closeAlertModal}},[t._v(t._s(t.$t("common.cancel")))]),e("a-button",{attrs:{type:"primary",loading:t.savingAlert},on:{click:t.handleSaveAlert}},[t._v(" "+t._s(t.$t("common.save"))+" ")])],1)],1)]),e("a-form",{attrs:{form:t.alertForm,"label-col":{span:6},"wrapper-col":{span:16}}},[e("a-form-item",{attrs:{label:t.$t("portfolio.form.symbol")}},[e("div",{staticClass:"alert-symbol-info"},[e("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["symbol"],expression:"['symbol']"}],staticClass:"symbol-input",attrs:{disabled:""}}),t.alertPosition?e("div",{staticClass:"current-price-info"},[e("span",{staticClass:"label"},[t._v(t._s(t.$t("portfolio.alerts.currentPrice"))+":")]),e("span",{staticClass:"price"},[t._v("$"+t._s(t.formatNumber(t.alertPosition.current_price||t.alertPosition.entry_price)))])]):t._e()],1)]),e("a-form-item",{attrs:{label:t.$t("portfolio.alerts.alertType")}},[e("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["alert_type",{initialValue:"price_above",rules:[{required:!0}]}],expression:"['alert_type', { initialValue: 'price_above', rules: [{ required: true }] }]"}]},[e("a-select-option",{attrs:{value:"price_above"}},[e("a-icon",{staticStyle:{color:"#52c41a","margin-right":"6px"},attrs:{type:"rise"}}),t._v(" "+t._s(t.$t("portfolio.alerts.priceAbove"))+" ")],1),e("a-select-option",{attrs:{value:"price_below"}},[e("a-icon",{staticStyle:{color:"#f5222d","margin-right":"6px"},attrs:{type:"fall"}}),t._v(" "+t._s(t.$t("portfolio.alerts.priceBelow"))+" ")],1),e("a-select-option",{attrs:{value:"pnl_above"}},[e("a-icon",{staticStyle:{color:"#52c41a","margin-right":"6px"},attrs:{type:"dollar"}}),t._v(" "+t._s(t.$t("portfolio.alerts.pnlAbove"))+" ")],1),e("a-select-option",{attrs:{value:"pnl_below"}},[e("a-icon",{staticStyle:{color:"#f5222d","margin-right":"6px"},attrs:{type:"dollar"}}),t._v(" "+t._s(t.$t("portfolio.alerts.pnlBelow"))+" ")],1)],1)],1),e("a-form-item",{attrs:{label:t.$t("portfolio.alerts.threshold")}},[e("div",{staticClass:"threshold-input-wrapper"},[e("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["threshold",{rules:[{required:!0,message:t.$t("portfolio.alerts.thresholdRequired")}]}],expression:"['threshold', { rules: [{ required: true, message: $t('portfolio.alerts.thresholdRequired') }] }]"}],staticStyle:{width:"100%"},attrs:{step:t.alertTypeIsPrice?.01:1,placeholder:t.alertTypeIsPrice?t.$t("portfolio.alerts.enterPrice"):t.$t("portfolio.alerts.enterPercent"),precision:t.alertTypeIsPrice?4:2}}),t.alertTypeIsPrice?e("span",{staticClass:"alert-unit"},[t._v("$")]):e("span",{staticClass:"alert-unit"},[t._v("%")])],1),t.alertPosition&&t.alertTypeIsPrice?e("div",{staticClass:"threshold-hint"},[t._v(" "+t._s(t.$t("portfolio.alerts.currentPriceHint"))+": $"+t._s(t.formatNumber(t.alertPosition.current_price||t.alertPosition.entry_price))+" ")]):t._e()]),e("a-form-item",{attrs:{label:t.$t("portfolio.alerts.repeatInterval")}},[e("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["repeat_interval",{initialValue:0}],expression:"['repeat_interval', { initialValue: 0 }]"}]},[e("a-select-option",{attrs:{value:0}},[t._v(t._s(t.$t("portfolio.alerts.noRepeat")))]),e("a-select-option",{attrs:{value:5}},[t._v(t._s(t.$t("portfolio.alerts.every5min")))]),e("a-select-option",{attrs:{value:15}},[t._v(t._s(t.$t("portfolio.alerts.every15min")))]),e("a-select-option",{attrs:{value:30}},[t._v(t._s(t.$t("portfolio.alerts.every30min")))]),e("a-select-option",{attrs:{value:60}},[t._v(t._s(t.$t("portfolio.alerts.every1hour")))]),e("a-select-option",{attrs:{value:240}},[t._v(t._s(t.$t("portfolio.alerts.every4hours")))]),e("a-select-option",{attrs:{value:1440}},[t._v(t._s(t.$t("portfolio.alerts.onceDaily")))])],1)],1),e("a-form-item",{attrs:{label:t.$t("portfolio.form.notifyChannels")}},[e("a-checkbox-group",{model:{value:t.alertChannels,callback:function(e){t.alertChannels=e},expression:"alertChannels"}},[e("a-checkbox",{attrs:{value:"browser"}},[e("a-icon",{attrs:{type:"bell"}}),t._v(" "+t._s(t.$t("portfolio.form.browser"))+" ")],1),e("a-checkbox",{attrs:{value:"telegram"}},[e("a-icon",{attrs:{type:"message"}}),t._v(" Telegram ")],1),e("a-checkbox",{attrs:{value:"email"}},[e("a-icon",{attrs:{type:"mail"}}),t._v(" "+t._s(t.$t("portfolio.form.email"))+" ")],1)],1)],1),t.alertChannels.includes("telegram")||t.alertChannels.includes("email")?e("a-alert",{staticStyle:{"margin-bottom":"16px"},attrs:{type:"info",showIcon:""},scopedSlots:t._u([{key:"message",fn:function(){return[e("span",[t._v(" "+t._s(t.$t("portfolio.form.notificationFromProfile"))+" "),e("router-link",{staticStyle:{"margin-left":"8px"},attrs:{to:"/profile"}},[e("a-icon",{attrs:{type:"setting"}}),t._v(" "+t._s(t.$t("portfolio.form.goToProfile"))+" ")],1)],1)]},proxy:!0}],null,!1,440262090)}):t._e(),e("a-form-item",{attrs:{label:t.$t("portfolio.alerts.enabled")}},[e("a-switch",{directives:[{name:"decorator",rawName:"v-decorator",value:["is_active",{initialValue:!0,valuePropName:"checked"}],expression:"['is_active', { initialValue: true, valuePropName: 'checked' }]"}]}),e("span",{staticClass:"switch-label"},[t._v(t._s(t.$t("portfolio.alerts.enabledDesc")))])],1),e("a-form-item",{attrs:{label:t.$t("portfolio.form.notes")}},[e("a-textarea",{directives:[{name:"decorator",rawName:"v-decorator",value:["notes"],expression:"['notes']"}],attrs:{placeholder:t.$t("portfolio.form.enterNotes"),autoSize:{minRows:2,maxRows:4}}})],1)],1)],2),e("a-modal",{attrs:{title:t.editingMonitor?t.$t("portfolio.modal.editMonitor"):t.$t("portfolio.modal.addMonitor"),visible:t.showAddMonitorModal,confirmLoading:t.savingMonitor,width:"600px"},on:{ok:t.handleSaveMonitor,cancel:t.closeMonitorModal}},[e("a-form",{attrs:{form:t.monitorForm,"label-col":{span:6},"wrapper-col":{span:16}}},[e("a-form-item",{attrs:{label:t.$t("portfolio.form.monitorName")}},[e("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["name",{rules:[{required:!0,message:t.$t("portfolio.form.monitorNameRequired")}]}],expression:"['name', { rules: [{ required: true, message: $t('portfolio.form.monitorNameRequired') }] }]"}],attrs:{placeholder:t.$t("portfolio.form.enterMonitorName")}})],1),e("a-form-item",{attrs:{label:t.$t("portfolio.form.interval")}},[e("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["interval_minutes",{initialValue:60,rules:[{required:!0}]}],expression:"['interval_minutes', { initialValue: 60, rules: [{ required: true }] }]"}]},[e("a-select-option",{attrs:{value:5}},[t._v("5 "+t._s(t.$t("portfolio.form.minutes")))]),e("a-select-option",{attrs:{value:10}},[t._v("10 "+t._s(t.$t("portfolio.form.minutes")))]),e("a-select-option",{attrs:{value:30}},[t._v("30 "+t._s(t.$t("portfolio.form.minutes")))]),e("a-select-option",{attrs:{value:60}},[t._v("1 "+t._s(t.$t("portfolio.form.hour")))]),e("a-select-option",{attrs:{value:120}},[t._v("2 "+t._s(t.$t("portfolio.form.hours")))]),e("a-select-option",{attrs:{value:240}},[t._v("4 "+t._s(t.$t("portfolio.form.hours")))]),e("a-select-option",{attrs:{value:480}},[t._v("8 "+t._s(t.$t("portfolio.form.hours")))]),e("a-select-option",{attrs:{value:1440}},[t._v("24 "+t._s(t.$t("portfolio.form.hours")))])],1)],1),e("a-form-item",{attrs:{label:t.$t("portfolio.form.notifyChannels")}},[e("a-checkbox-group",{model:{value:t.monitorChannels,callback:function(e){t.monitorChannels=e},expression:"monitorChannels"}},[e("a-checkbox",{attrs:{value:"browser"}},[t._v(t._s(t.$t("portfolio.form.browser")))]),e("a-checkbox",{attrs:{value:"telegram"}},[t._v("Telegram")]),e("a-checkbox",{attrs:{value:"email"}},[t._v(t._s(t.$t("portfolio.form.email")))])],1)],1),t.monitorChannels.includes("telegram")||t.monitorChannels.includes("email")?e("a-alert",{staticStyle:{"margin-bottom":"16px"},attrs:{type:"info",showIcon:""},scopedSlots:t._u([{key:"message",fn:function(){return[e("span",[t._v(" "+t._s(t.$t("portfolio.form.notificationFromProfile"))+" "),e("router-link",{staticStyle:{"margin-left":"8px"},attrs:{to:"/profile"}},[e("a-icon",{attrs:{type:"setting"}}),t._v(" "+t._s(t.$t("portfolio.form.goToProfile"))+" ")],1)],1)]},proxy:!0}],null,!1,440262090)}):t._e(),e("a-form-item",{attrs:{label:t.$t("portfolio.form.monitorScope")}},[e("a-radio-group",{on:{change:t.handleMonitorScopeChange},model:{value:t.monitorScope,callback:function(e){t.monitorScope=e},expression:"monitorScope"}},[e("a-radio",{attrs:{value:"all"}},[t._v(t._s(t.$t("portfolio.form.allPositions")))]),e("a-radio",{attrs:{value:"selected"}},[t._v(t._s(t.$t("portfolio.form.selectedPositions")))])],1)],1),"selected"===t.monitorScope?e("a-form-item",{attrs:{label:t.$t("portfolio.form.selectPositions")}},[e("a-checkbox-group",{staticClass:"position-checkbox-group",model:{value:t.selectedMonitorPositions,callback:function(e){t.selectedMonitorPositions=e},expression:"selectedMonitorPositions"}},t._l(t.positions,function(o){return e("div",{key:o.id,staticClass:"position-checkbox-item"},[e("a-checkbox",{staticClass:"position-checkbox",attrs:{value:o.id}},[e("div",{staticClass:"position-checkbox-label"},[e("div",{staticClass:"position-left"},[e("a-tag",{attrs:{color:t.getMarketColor(o.market),size:"small"}},[t._v(t._s(o.market))]),e("span",{staticClass:"symbol"},[t._v(t._s(o.symbol))])],1),e("div",{staticClass:"position-middle"},[e("span",{staticClass:"name",attrs:{title:o.name}},[t._v(t._s(o.name))])]),e("div",{staticClass:"position-right"},[e("span",{class:["pnl",o.pnl>=0?"positive":"negative"]},[t._v(" "+t._s(o.pnl>=0?"+":"")+t._s(t.formatNumber(o.pnl_percent))+"% ")])])])])],1)}),0),e("div",{staticClass:"position-select-actions"},[e("a-button",{attrs:{type:"link",size:"small"},on:{click:t.selectAllPositions}},[t._v(" "+t._s(t.$t("portfolio.form.selectAll"))+" ")]),e("a-divider",{attrs:{type:"vertical"}}),e("a-button",{attrs:{type:"link",size:"small"},on:{click:t.deselectAllPositions}},[t._v(" "+t._s(t.$t("portfolio.form.deselectAll"))+" ")]),e("span",{staticClass:"selected-count"},[t._v(" "+t._s(t.$t("portfolio.form.selectedCount",{count:t.selectedMonitorPositions.length,total:t.positions.length}))+" ")])],1)],1):t._e(),e("a-form-item",{attrs:{label:t.$t("portfolio.form.customPrompt")}},[e("a-textarea",{directives:[{name:"decorator",rawName:"v-decorator",value:["prompt"],expression:"['prompt']"}],attrs:{rows:3,placeholder:t.$t("portfolio.form.customPromptPlaceholder")}})],1)],1)],1)],1)},i=[],r=o(2403),a=o(81127),n=o(56252),l=o(76338),c=(o(93693),o(2970)),u=o(95353),p=o(24364),m=o(84841),d={name:"Portfolio",props:{embedded:{type:Boolean,default:!1}},data:function(){return{simpleImage:c.Ay.PRESENTED_IMAGE_SIMPLE,summary:{total_cost:0,total_market_value:0,total_pnl:0,total_pnl_percent:0,position_count:0,market_distribution:[],today_pnl:0,today_change:0},positions:[],loadingPositions:!1,showAddPositionModal:!1,savingPosition:!1,editingPosition:null,positionForm:null,monitors:[],loadingMonitors:!1,showAddMonitorModal:!1,savingMonitor:!1,editingMonitor:null,monitorForm:null,runningMonitor:null,marketTypes:[],symbolSearchResults:[],searchTimer:null,selectedSymbolName:"",symbolSearchKeyword:"",priceRefreshTimer:null,lastSyncTime:null,isSyncing:!1,groups:[],selectedGroup:"",viewMode:"grid",activeGroups:[],alerts:[],loadingAlerts:!1,showAddAlertModal:!1,savingAlert:!1,deletingAlert:!1,editingAlert:null,alertForm:null,alertPosition:null,alertChannels:["browser"],monitorChannels:["browser"],monitorScope:"all",selectedMonitorPositions:[],userNotificationSettings:{default_channels:["browser"],telegram_bot_token:"",telegram_chat_id:"",email:"",phone:"",discord_webhook:"",webhook_url:"",webhook_token:""}}},computed:(0,l.A)((0,l.A)({},(0,u.aH)({navTheme:function(t){return t.app.theme}})),{},{isDarkTheme:function(){return"dark"===this.navTheme||"realdark"===this.navTheme},selectedChannels:function(){return this.monitorChannels||[]},selectedAlertChannels:function(){return this.alertChannels||[]},filteredPositions:function(){var t=this;return this.selectedGroup?"__ungrouped__"===this.selectedGroup?this.positions.filter(function(t){return!t.group_name}):this.positions.filter(function(e){return e.group_name===t.selectedGroup}):this.positions},groupNames:function(){return this.groups.map(function(t){return t.name})},alertTypeIsPrice:function(){if(!this.alertForm)return!0;var t=this.alertForm.getFieldValue("alert_type");return t&&t.startsWith("price_")},profitLossStats:function(){var t=this.positions.filter(function(t){return t.pnl>=0}).length,e=this.positions.filter(function(t){return t.pnl<0}).length;return{profit:t,loss:e}},bestPerformer:function(){return 0===this.positions.length?null:this.positions.reduce(function(t,e){return!t||(e.pnl_percent||0)>(t.pnl_percent||0)?e:t},null)},worstPerformer:function(){return 0===this.positions.length?null:this.positions.reduce(function(t,e){return!t||(e.pnl_percent||0)<(t.pnl_percent||0)?e:t},null)},ungroupedPositions:function(){return this.positions.filter(function(t){return!t.group_name})},groupsWithPositions:function(){var t={};return this.positions.forEach(function(e){e.group_name&&(t[e.group_name]||(t[e.group_name]={name:e.group_name,positions:[]}),t[e.group_name].positions.push(e))}),Object.values(t).sort(function(t,e){return t.name.localeCompare(e.name)})}}),created:function(){this.positionForm=this.$form.createForm(this,{name:"position_form"}),this.monitorForm=this.$form.createForm(this,{name:"monitor_form"}),this.alertForm=this.$form.createForm(this,{name:"alert_form"}),this.loadMarketTypes(),this.loadData()},mounted:function(){var t=this;this.priceRefreshTimer=setInterval(function(){t.refreshPrices()},3e4),this.loadUserNotificationSettings()},beforeDestroy:function(){this.priceRefreshTimer&&clearInterval(this.priceRefreshTimer),this.searchTimer&&clearTimeout(this.searchTimer)},methods:{loadUserNotificationSettings:function(){var t=this;return(0,n.A)((0,a.A)().m(function e(){var o;return(0,a.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.p=0,e.n=1,(0,m.vF)();case 1:o=e.v,1===o.code&&o.data&&(t.userNotificationSettings={default_channels:o.data.default_channels||["browser"],telegram_bot_token:o.data.telegram_bot_token||"",telegram_chat_id:o.data.telegram_chat_id||"",email:o.data.email||"",phone:o.data.phone||"",discord_webhook:o.data.discord_webhook||"",webhook_url:o.data.webhook_url||"",webhook_token:o.data.webhook_token||""}),e.n=3;break;case 2:e.p=2,e.v;case 3:return e.a(2)}},e,null,[[0,2]])}))()},loadData:function(){var t=this;return(0,n.A)((0,a.A)().m(function e(){return(0,a.A)().w(function(e){while(1)switch(e.n){case 0:return e.n=1,Promise.all([t.loadPositions(),t.loadSummary(),t.loadMonitors(),t.loadGroups(),t.loadAlerts()]);case 1:t.lastSyncTime=new Date;case 2:return e.a(2)}},e)}))()},filterByGroup:function(){},refreshPrices:function(){var t=this;return(0,n.A)((0,a.A)().m(function e(){return(0,a.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(!t.isSyncing){e.n=1;break}return e.a(2);case 1:return t.isSyncing=!0,e.p=2,e.n=3,Promise.all([t.loadPositions(!0),t.loadSummary(!0)]);case 3:t.lastSyncTime=new Date;case 4:return e.p=4,t.isSyncing=!1,e.f(4);case 5:return e.a(2)}},e,null,[[2,,4,5]])}))()},formatSyncTime:function(t){if(!t)return"-";var e=new Date,o=Math.floor((e-t)/1e3);return o<60?this.$t("portfolio.summary.justNow"):o<3600?"".concat(Math.floor(o/60)," ").concat(this.$t("portfolio.form.minutes")).concat(this.$t("portfolio.summary.ago")):t.toLocaleTimeString()},getGroupPnl:function(t){return t.reduce(function(t,e){return t+(e.pnl||0)},0)},loadGroups:function(){var t=this;return(0,n.A)((0,a.A)().m(function e(){var o;return(0,a.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.p=0,e.n=1,(0,p.f)();case 1:o=e.v,o&&1===o.code&&o.data&&(t.groups=o.data.groups||[]),e.n=3;break;case 2:e.p=2,e.v;case 3:return e.a(2)}},e,null,[[0,2]])}))()},loadAlerts:function(){var t=this;return(0,n.A)((0,a.A)().m(function e(){var o;return(0,a.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return t.loadingAlerts=!0,e.p=1,e.n=2,(0,p.qu)();case 2:o=e.v,o&&1===o.code&&(t.alerts=o.data||[]),e.n=4;break;case 3:e.p=3,e.v;case 4:return e.p=4,t.loadingAlerts=!1,e.f(4);case 5:return e.a(2)}},e,null,[[1,3,4,5]])}))()},loadMarketTypes:function(){var t=this;return(0,n.A)((0,a.A)().m(function e(){var o;return(0,a.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.p=0,e.n=1,(0,p.iO)();case 1:o=e.v,o&&1===o.code&&o.data&&(t.marketTypes=o.data.map(function(t){return{value:t.value,i18nKey:t.i18nKey||"dashboard.analysis.market.".concat(t.value)}})),e.n=3;break;case 2:e.p=2,e.v,t.marketTypes=[{value:"USStock",i18nKey:"dashboard.analysis.market.USStock"},{value:"Crypto",i18nKey:"dashboard.analysis.market.Crypto"},{value:"Forex",i18nKey:"dashboard.analysis.market.Forex"},{value:"Futures",i18nKey:"dashboard.analysis.market.Futures"}];case 3:return e.a(2)}},e,null,[[0,2]])}))()},loadPositions:function(){var t=arguments,e=this;return(0,n.A)((0,a.A)().m(function o(){var s,i,r;return(0,a.A)().w(function(o){while(1)switch(o.p=o.n){case 0:return s=t.length>0&&void 0!==t[0]&&t[0],e.loadingPositions=!0,o.p=1,i=s?{refresh:"1"}:{},o.n=2,(0,p.Dt)(i);case 2:r=o.v,r&&1===r.code&&(e.positions=r.data||[]),o.n=4;break;case 3:o.p=3,o.v,e.$message.error(e.$t("portfolio.message.loadFailed"));case 4:return o.p=4,e.loadingPositions=!1,o.f(4);case 5:return o.a(2)}},o,null,[[1,3,4,5]])}))()},loadSummary:function(){var t=arguments,e=this;return(0,n.A)((0,a.A)().m(function o(){var s,i;return(0,a.A)().w(function(o){while(1)switch(o.p=o.n){case 0:return s=t.length>0&&void 0!==t[0]&&t[0],o.p=1,o.n=2,(0,p.bC)(s?{refresh:"1"}:{});case 2:i=o.v,i&&1===i.code&&(e.summary=i.data||e.summary),o.n=4;break;case 3:o.p=3,o.v;case 4:return o.a(2)}},o,null,[[1,3]])}))()},loadMonitors:function(){var t=this;return(0,n.A)((0,a.A)().m(function e(){var o;return(0,a.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return t.loadingMonitors=!0,e.p=1,e.n=2,(0,p.w1)();case 2:o=e.v,o&&1===o.code&&(t.monitors=o.data||[]),e.n=4;break;case 3:e.p=3,e.v;case 4:return e.p=4,t.loadingMonitors=!1,e.f(4);case 5:return e.a(2)}},e,null,[[1,3,4,5]])}))()},handleMarketChange:function(t){this.symbolSearchResults=[],this.symbolSearchKeyword="",this.positionForm.setFieldsValue({symbol:""})},handleSymbolSearch:function(t){var e=this;this.symbolSearchKeyword=t||"",this.searchTimer&&clearTimeout(this.searchTimer),!t||t.length<1?this.symbolSearchResults=[]:this.searchTimer=setTimeout((0,n.A)((0,a.A)().m(function o(){var s,i;return(0,a.A)().w(function(o){while(1)switch(o.p=o.n){case 0:if(s=e.positionForm.getFieldValue("market"),s){o.n=1;break}return o.a(2);case 1:return o.p=1,o.n=2,(0,p._3)({market:s,keyword:t,limit:10});case 2:i=o.v,i&&1===i.code?e.symbolSearchResults=i.data||[]:e.symbolSearchResults=[],o.n=4;break;case 3:o.p=3,o.v,e.symbolSearchResults=[];case 4:return o.a(2)}},o,null,[[1,3]])})),300)},handleSymbolSelect:function(t,e){var o=this.symbolSearchResults.find(function(e){return e.symbol===t});this.selectedSymbolName=o?o.name:"",this.symbolSearchKeyword=""},editPosition:function(t){var e=this;this.editingPosition=t,this.showAddPositionModal=!0,this.$nextTick(function(){e.positionForm.setFieldsValue({market:t.market,symbol:t.symbol,side:t.side,quantity:t.quantity,entry_price:t.entry_price,notes:t.notes,group_name:t.group_name||""})})},handleSavePosition:function(){var t=this;return(0,n.A)((0,a.A)().m(function e(){return(0,a.A)().w(function(e){while(1)switch(e.n){case 0:t.positionForm.validateFields(function(){var e=(0,n.A)((0,a.A)().m(function e(o,s){var i,r,n;return(0,a.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(!o){e.n=1;break}return e.a(2);case 1:if(t.savingPosition=!0,e.p=2,i={market:s.market,symbol:s.symbol.toUpperCase(),side:s.side,quantity:s.quantity,entry_price:s.entry_price,notes:s.notes||"",name:t.selectedSymbolName||"",group_name:s.group_name||""},!t.editingPosition){e.n=4;break}return e.n=3,(0,p.Xg)(t.editingPosition.id,i);case 3:r=e.v,e.n=6;break;case 4:return e.n=5,(0,p.Ps)(i);case 5:r=e.v;case 6:r&&1===r.code?(t.$message.success(t.$t("portfolio.message.saveSuccess")),t.closePositionModal(),t.loadData()):t.$message.error((null===(n=r)||void 0===n?void 0:n.msg)||t.$t("portfolio.message.saveFailed")),e.n=8;break;case 7:e.p=7,e.v,t.$message.error(t.$t("portfolio.message.saveFailed"));case 8:return e.p=8,t.savingPosition=!1,e.f(8);case 9:return e.a(2)}},e,null,[[2,7,8,9]])}));return function(t,o){return e.apply(this,arguments)}}());case 1:return e.a(2)}},e)}))()},deletePosition:function(t){var e=this;return(0,n.A)((0,a.A)().m(function o(){var s;return(0,a.A)().w(function(o){while(1)switch(o.p=o.n){case 0:return o.p=0,o.n=1,(0,p.$p)(t);case 1:s=o.v,s&&1===s.code?(e.$message.success(e.$t("portfolio.message.deleteSuccess")),e.loadData()):e.$message.error((null===s||void 0===s?void 0:s.msg)||e.$t("portfolio.message.deleteFailed")),o.n=3;break;case 2:o.p=2,o.v,e.$message.error(e.$t("portfolio.message.deleteFailed"));case 3:return o.a(2)}},o,null,[[0,2]])}))()},closePositionModal:function(){this.showAddPositionModal=!1,this.editingPosition=null,this.positionForm.resetFields(),this.symbolSearchResults=[],this.selectedSymbolName="",this.symbolSearchKeyword=""},handleAlertChannelsChange:function(t){this.alertChannels=t||[]},showAddAlertForPosition:function(t){var e=this,o=this.alerts.find(function(e){return e.position_id===t.id});o?this.editAlert(o):(this.editingAlert=null,this.alertPosition=t,this.alertChannels=(0,r.A)(this.userNotificationSettings.default_channels||["browser"]),this.showAddAlertModal=!0,this.$nextTick(function(){e.alertForm.setFieldsValue({symbol:"".concat(t.market,"/").concat(t.symbol),alert_type:"price_above",threshold:t.current_price||t.entry_price,repeat_interval:0,is_active:!0,notes:""})}))},editAlert:function(t){var e,o=this;this.editingAlert=t,this.alertPosition=this.positions.find(function(e){return e.id===t.position_id})||{market:t.market,symbol:t.symbol,current_price:0,entry_price:0},this.alertChannels=(0,r.A)((null===(e=t.notification_config)||void 0===e?void 0:e.channels)||["browser"]),this.showAddAlertModal=!0,this.$nextTick(function(){o.alertForm&&o.alertForm.setFieldsValue({symbol:"".concat(t.market,"/").concat(t.symbol),alert_type:t.alert_type||"price_above",threshold:t.threshold||0,repeat_interval:t.repeat_interval||0,is_active:!1!==t.is_active,notes:t.notes||""})})},handleSaveAlert:function(){var t=this;return(0,n.A)((0,a.A)().m(function e(){return(0,a.A)().w(function(e){while(1)switch(e.n){case 0:t.alertForm.validateFields(function(){var e=(0,n.A)((0,a.A)().m(function e(o,s){var i,r,n,l,c,u,m;return(0,a.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(!o){e.n=1;break}return e.a(2);case 1:if(t.savingAlert=!0,e.p=2,l={},t.alertChannels.includes("telegram")&&t.userNotificationSettings.telegram_chat_id&&(l.telegram=t.userNotificationSettings.telegram_chat_id,t.userNotificationSettings.telegram_bot_token&&(l.telegram_bot_token=t.userNotificationSettings.telegram_bot_token)),t.alertChannels.includes("email")&&t.userNotificationSettings.email&&(l.email=t.userNotificationSettings.email),t.alertChannels.includes("phone")&&t.userNotificationSettings.phone&&(l.phone=t.userNotificationSettings.phone),t.alertChannels.includes("discord")&&t.userNotificationSettings.discord_webhook&&(l.discord=t.userNotificationSettings.discord_webhook),t.alertChannels.includes("webhook")&&t.userNotificationSettings.webhook_url&&(l.webhook=t.userNotificationSettings.webhook_url,t.userNotificationSettings.webhook_token&&(l.webhook_token=t.userNotificationSettings.webhook_token)),c={position_id:null===(i=t.alertPosition)||void 0===i?void 0:i.id,market:null===(r=t.alertPosition)||void 0===r?void 0:r.market,symbol:null===(n=t.alertPosition)||void 0===n?void 0:n.symbol,alert_type:s.alert_type,threshold:s.threshold,notification_config:{channels:t.alertChannels.length>0?t.alertChannels:["browser"],targets:l,language:t.$store.getters.lang||"en-US"},is_active:!1!==s.is_active,repeat_interval:s.repeat_interval||0,notes:s.notes||""},!t.editingAlert){e.n=4;break}return e.n=3,(0,p.cg)(t.editingAlert.id,c);case 3:u=e.v,e.n=6;break;case 4:return e.n=5,(0,p.Iw)(c);case 5:u=e.v;case 6:u&&1===u.code?(t.$message.success(t.$t("portfolio.message.saveSuccess")),t.closeAlertModal(),t.loadAlerts()):t.$message.error((null===(m=u)||void 0===m?void 0:m.msg)||t.$t("portfolio.message.saveFailed")),e.n=8;break;case 7:e.p=7,e.v,t.$message.error(t.$t("portfolio.message.saveFailed"));case 8:return e.p=8,t.savingAlert=!1,e.f(8);case 9:return e.a(2)}},e,null,[[2,7,8,9]])}));return function(t,o){return e.apply(this,arguments)}}());case 1:return e.a(2)}},e)}))()},deleteAlert:function(t){var e=this;return(0,n.A)((0,a.A)().m(function o(){var s;return(0,a.A)().w(function(o){while(1)switch(o.p=o.n){case 0:return o.p=0,o.n=1,(0,p.qS)(t);case 1:s=o.v,s&&1===s.code?(e.$message.success(e.$t("portfolio.message.deleteSuccess")),e.loadAlerts()):e.$message.error((null===s||void 0===s?void 0:s.msg)||e.$t("portfolio.message.deleteFailed")),o.n=3;break;case 2:o.p=2,o.v,e.$message.error(e.$t("portfolio.message.deleteFailed"));case 3:return o.a(2)}},o,null,[[0,2]])}))()},closeAlertModal:function(){this.showAddAlertModal=!1,this.editingAlert=null,this.alertPosition=null,this.alertChannels=(0,r.A)(this.userNotificationSettings.default_channels||["browser"]),this.alertForm.resetFields()},confirmDeleteAlert:function(){if(this.editingAlert){var t=this;this.$confirm({title:this.$t("portfolio.alerts.deleteConfirm"),okText:this.$t("common.confirm"),okType:"danger",cancelText:this.$t("common.cancel"),onOk:function(){return(0,n.A)((0,a.A)().m(function e(){return(0,a.A)().w(function(e){while(1)switch(e.n){case 0:return e.n=1,t.handleDeleteAlert();case 1:return e.a(2)}},e)}))()}})}},handleDeleteAlert:function(){var t=this;return(0,n.A)((0,a.A)().m(function e(){var o;return(0,a.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.editingAlert){e.n=1;break}return e.a(2);case 1:return t.deletingAlert=!0,e.p=2,e.n=3,(0,p.qS)(t.editingAlert.id);case 3:if(o=e.v,!o||1!==o.code){e.n=5;break}return t.$message.success(t.$t("portfolio.message.deleteSuccess")),t.closeAlertModal(),e.n=4,t.loadAlerts();case 4:e.n=6;break;case 5:t.$message.error((null===o||void 0===o?void 0:o.msg)||t.$t("portfolio.message.deleteFailed"));case 6:e.n=8;break;case 7:e.p=7,e.v,t.$message.error(t.$t("portfolio.message.deleteFailed"));case 8:return e.p=8,t.deletingAlert=!1,e.f(8);case 9:return e.a(2)}},e,null,[[2,7,8,9]])}))()},focusMonitorsSection:function(){var t=this;this.$nextTick(function(){var e=t.$refs.monitorsSection;e&&"function"===typeof e.scrollIntoView&&e.scrollIntoView({behavior:"smooth",block:"start"})})},openAddMonitorModal:function(){var t=this;this.editingMonitor=null,this.monitorChannels=(0,r.A)(this.userNotificationSettings.default_channels||["browser"]),this.monitorScope="all",this.selectedMonitorPositions=[],this.showAddMonitorModal=!0,this.$nextTick(function(){t.monitorForm&&t.monitorForm.resetFields()})},handleMonitorChannelsChange:function(t){this.monitorChannels=t||[]},editMonitor:function(t){var e,o=this;this.editingMonitor=t,this.monitorChannels=(0,r.A)((null===(e=t.notification_config)||void 0===e?void 0:e.channels)||["browser"]);var s=[];if(t.position_ids)if("string"===typeof t.position_ids)try{s=JSON.parse(t.position_ids)||[]}catch(i){s=[]}else Array.isArray(t.position_ids)&&(s=t.position_ids);this.monitorScope=s.length>0?"selected":"all",this.selectedMonitorPositions=s,this.showAddMonitorModal=!0,this.$nextTick(function(){var e,s;o.monitorForm&&o.monitorForm.setFieldsValue({name:t.name,interval_minutes:(null===(e=t.config)||void 0===e?void 0:e.interval_minutes)||60,prompt:(null===(s=t.config)||void 0===s?void 0:s.prompt)||""})})},handleMonitorScopeChange:function(t){this.monitorScope=t.target.value,"all"===t.target.value&&(this.selectedMonitorPositions=[])},selectAllPositions:function(){this.selectedMonitorPositions=this.positions.map(function(t){return t.id})},deselectAllPositions:function(){this.selectedMonitorPositions=[]},handleSaveMonitor:function(){var t=this;return(0,n.A)((0,a.A)().m(function e(){return(0,a.A)().w(function(e){while(1)switch(e.n){case 0:t.monitorForm.validateFields(function(){var e=(0,n.A)((0,a.A)().m(function e(o,s){var i,r,n;return(0,a.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(!o){e.n=1;break}return e.a(2);case 1:if("selected"!==t.monitorScope||0!==t.selectedMonitorPositions.length){e.n=2;break}return t.$message.warning(t.$t("portfolio.form.pleaseSelectPositions")),e.a(2);case 2:if(t.savingMonitor=!0,e.p=3,i={name:s.name,monitor_type:"ai",position_ids:"selected"===t.monitorScope?t.selectedMonitorPositions:[],config:{interval_minutes:s.interval_minutes,prompt:s.prompt||"",language:t.$store.getters.lang||"en-US"},notification_config:{channels:t.monitorChannels.length>0?t.monitorChannels:["browser"],targets:{telegram:t.userNotificationSettings.telegram_chat_id||"",telegram_bot_token:t.userNotificationSettings.telegram_bot_token||"",email:t.userNotificationSettings.email||"",phone:t.userNotificationSettings.phone||"",discord:t.userNotificationSettings.discord_webhook||"",webhook:t.userNotificationSettings.webhook_url||"",webhook_token:t.userNotificationSettings.webhook_token||""}},is_active:!0},!t.editingMonitor){e.n=5;break}return e.n=4,(0,p.sk)(t.editingMonitor.id,i);case 4:r=e.v,e.n=7;break;case 5:return e.n=6,(0,p.yr)(i);case 6:r=e.v;case 7:r&&1===r.code?(t.$message.success(t.$t("portfolio.message.saveSuccess")),t.closeMonitorModal(),t.loadMonitors()):t.$message.error((null===(n=r)||void 0===n?void 0:n.msg)||t.$t("portfolio.message.saveFailed")),e.n=9;break;case 8:e.p=8,e.v,t.$message.error(t.$t("portfolio.message.saveFailed"));case 9:return e.p=9,t.savingMonitor=!1,e.f(9);case 10:return e.a(2)}},e,null,[[3,8,9,10]])}));return function(t,o){return e.apply(this,arguments)}}());case 1:return e.a(2)}},e)}))()},toggleMonitor:function(t,e){var o=this;return(0,n.A)((0,a.A)().m(function s(){var i;return(0,a.A)().w(function(s){while(1)switch(s.p=s.n){case 0:return s.p=0,s.n=1,(0,p.sk)(t,{is_active:e});case 1:i=s.v,i&&1===i.code&&(o.$message.success(e?o.$t("portfolio.message.monitorEnabled"):o.$t("portfolio.message.monitorDisabled")),o.loadMonitors()),s.n=3;break;case 2:s.p=2,s.v,o.$message.error(o.$t("portfolio.message.updateFailed"));case 3:return s.a(2)}},s,null,[[0,2]])}))()},runMonitorNow:function(t){var e=this;return(0,n.A)((0,a.A)().m(function o(){var s,i,r,n,l,c,u;return(0,a.A)().w(function(o){while(1)switch(o.p=o.n){case 0:return e.runningMonitor=t,o.p=1,s=e.$store.getters.lang||"en-US",o.n=2,(0,p.aU)(t,{language:s,async:!0});case 2:i=o.v,i&&1===i.code&&("running"===(null===(r=i.data)||void 0===r?void 0:r.status)?(e.$message.success(e.$t("portfolio.message.monitorRunning")),e.$notification.info({message:e.$t("portfolio.monitors.runningTitle"),description:e.$t("portfolio.monitors.runningDesc"),duration:5})):null!==(n=i.data)&&void 0!==n&&n.success?(e.$message.success(e.$t("portfolio.message.monitorRunSuccess")),i.data.analysis&&e.$notification.open({message:e.$t("portfolio.monitors.analysisResult"),description:i.data.analysis.substring(0,500)+(i.data.analysis.length>500?"...":""),duration:0})):null!==(l=i.data)&&void 0!==l&&l.error&&e.$message.error(i.data.error||e.$t("portfolio.message.monitorRunFailed")),e.loadMonitors()),o.n=4;break;case 3:o.p=3,u=o.v,"ECONNABORTED"===u.code||null!==(c=u.message)&&void 0!==c&&c.includes("timeout")?e.$notification.warning({message:e.$t("portfolio.monitors.timeoutTitle"),description:e.$t("portfolio.monitors.timeoutDesc"),duration:8}):e.$message.error(e.$t("portfolio.message.monitorRunFailed"));case 4:return o.p=4,e.runningMonitor=null,o.f(4);case 5:return o.a(2)}},o,null,[[1,3,4,5]])}))()},deleteMonitor:function(t){var e=this;return(0,n.A)((0,a.A)().m(function o(){var s;return(0,a.A)().w(function(o){while(1)switch(o.p=o.n){case 0:return o.p=0,o.n=1,(0,p.ei)(t);case 1:s=o.v,s&&1===s.code?(e.$message.success(e.$t("portfolio.message.deleteSuccess")),e.loadMonitors()):e.$message.error((null===s||void 0===s?void 0:s.msg)||e.$t("portfolio.message.deleteFailed")),o.n=3;break;case 2:o.p=2,o.v,e.$message.error(e.$t("portfolio.message.deleteFailed"));case 3:return o.a(2)}},o,null,[[0,2]])}))()},closeMonitorModal:function(){this.showAddMonitorModal=!1,this.editingMonitor=null,this.monitorForm.resetFields(),this.monitorChannels=(0,r.A)(this.userNotificationSettings.default_channels||["browser"]),this.monitorScope="all",this.selectedMonitorPositions=[]},getMonitorPositionIds:function(t){if(!t.position_ids)return[];if("string"===typeof t.position_ids)try{return JSON.parse(t.position_ids)||[]}catch(e){return[]}return Array.isArray(t.position_ids)?t.position_ids:[]},getPositionNameById:function(t){var e=this.positions.find(function(e){return e.id===t});return e?"".concat(e.symbol," (").concat(e.name||e.market,")"):"#".concat(t)},hasAlertForPosition:function(t){return this.alerts.some(function(e){return e.position_id===t})},getAlertForPosition:function(t){return this.alerts.find(function(e){return e.position_id===t})},getMarketColor:function(t){var e={USStock:"green",Crypto:"purple",Forex:"gold",Futures:"cyan"};return e[t]||"default"},getMarketName:function(t){return this.$t("dashboard.analysis.market.".concat(t))||t},getCurrencySymbol:function(t){var e=["USStock","Crypto","Forex","Futures"];return e.includes(t)?"$":"¥"},formatNumber:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2;return void 0===t||null===t?"0.00":Number(t).toLocaleString("en-US",{minimumFractionDigits:e,maximumFractionDigits:e})},formatPrice:function(t){return t?t>=1e3?this.formatNumber(t,2):t>=1?this.formatNumber(t,4):this.formatNumber(t,6):"0"},formatTime:function(t){if(!t)return"-";var e;if("number"===typeof t)e=new Date(1e3*t);else{if("string"!==typeof t)return"-";e=/^\d+$/.test(t)?new Date(1e3*parseInt(t,10)):new Date(t)}return isNaN(e.getTime())?"-":e.toLocaleString()},getIntervalText:function(t){if(!t)return"-";if(t<60)return"".concat(t," ").concat(this.$t("portfolio.form.minutes"));var e=t/60;return"".concat(e," ").concat(this.$t("portfolio.form.hours"))}}},f=d,v=o(845),h=(0,v.A)(f,s,i,!1,null,"398d904c",null),_=h.exports},24364:function(t,e,o){o.d(e,{$p:function(){return n},Dt:function(){return i},Iw:function(){return v},Ps:function(){return r},Xg:function(){return a},_3:function(){return y},aU:function(){return d},bC:function(){return l},cg:function(){return h},ei:function(){return m},f:function(){return g},iO:function(){return b},qS:function(){return _},qu:function(){return f},sk:function(){return p},w1:function(){return c},yr:function(){return u}});var s=o(75769);function i(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,s.Ay)({url:"/api/portfolio/positions",method:"get",params:t})}function r(t){return(0,s.Ay)({url:"/api/portfolio/positions",method:"post",data:t})}function a(t,e){return(0,s.Ay)({url:"/api/portfolio/positions/".concat(t),method:"put",data:e})}function n(t){return(0,s.Ay)({url:"/api/portfolio/positions/".concat(t),method:"delete"})}function l(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,s.Ay)({url:"/api/portfolio/summary",method:"get",params:t})}function c(){return(0,s.Ay)({url:"/api/portfolio/monitors",method:"get"})}function u(t){return(0,s.Ay)({url:"/api/portfolio/monitors",method:"post",data:t})}function p(t,e){return(0,s.Ay)({url:"/api/portfolio/monitors/".concat(t),method:"put",data:e})}function m(t){return(0,s.Ay)({url:"/api/portfolio/monitors/".concat(t),method:"delete"})}function d(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return(0,s.Ay)({url:"/api/portfolio/monitors/".concat(t,"/run"),method:"post",data:e})}function f(){return(0,s.Ay)({url:"/api/portfolio/alerts",method:"get"})}function v(t){return(0,s.Ay)({url:"/api/portfolio/alerts",method:"post",data:t})}function h(t,e){return(0,s.Ay)({url:"/api/portfolio/alerts/".concat(t),method:"put",data:e})}function _(t){return(0,s.Ay)({url:"/api/portfolio/alerts/".concat(t),method:"delete"})}function g(){return(0,s.Ay)({url:"/api/portfolio/groups",method:"get"})}function y(t){return(0,s.Ay)({url:"/api/market/symbols/search",method:"post",data:t})}function b(){return(0,s.Ay)({url:"/api/market/types",method:"get"})}},84841:function(t,e,o){o.d(e,{DK:function(){return y},E$:function(){return u},Gl:function(){return d},O0:function(){return c},TK:function(){return a},aU:function(){return i},cw:function(){return l},d$:function(){return C},hG:function(){return n},hl:function(){return f},kg:function(){return r},nY:function(){return g},r7:function(){return p},rx:function(){return h},v9:function(){return v},vF:function(){return m},vi:function(){return b},wq:function(){return _}});var s=o(75769);function i(t){return(0,s.Ay)({url:"/api/users/list",method:"get",params:t})}function r(t){return(0,s.Ay)({url:"/api/users/create",method:"post",data:t})}function a(t,e){return(0,s.Ay)({url:"/api/users/update",method:"put",params:{id:t},data:e})}function n(t){return(0,s.Ay)({url:"/api/users/delete",method:"delete",params:{id:t}})}function l(t){return(0,s.Ay)({url:"/api/users/reset-password",method:"post",data:t})}function c(){return(0,s.Ay)({url:"/api/users/roles",method:"get"})}function u(){return(0,s.Ay)({url:"/api/users/profile",method:"get"})}function p(t){return(0,s.Ay)({url:"/api/users/profile/update",method:"put",data:t})}function m(){return(0,s.Ay)({url:"/api/users/notification-settings",method:"get"})}function d(t){return(0,s.Ay)({url:"/api/users/notification-settings",method:"put",data:t})}function f(){return(0,s.Ay)({url:"/api/users/notification-settings/test",method:"post",data:{}})}function v(t){return(0,s.Ay)({url:"/api/users/my-credits-log",method:"get",params:t})}function h(t){return(0,s.Ay)({url:"/api/users/my-referrals",method:"get",params:t})}function _(t){return(0,s.Ay)({url:"/api/users/set-credits",method:"post",data:t})}function g(t){return(0,s.Ay)({url:"/api/users/set-vip",method:"post",data:t})}function y(t){return(0,s.Ay)({url:"/api/users/system-strategies",method:"get",params:t})}function b(t){return(0,s.Ay)({url:"/api/users/admin-orders",method:"get",params:t})}function C(t){return(0,s.Ay)({url:"/api/users/admin-ai-stats",method:"get",params:t})}}}]); \ No newline at end of file diff --git a/frontend/dist/js/611.a7ee790d.js b/frontend/dist/js/611.caffc5da.js similarity index 97% rename from frontend/dist/js/611.a7ee790d.js rename to frontend/dist/js/611.caffc5da.js index c29dd95..1ab1c72 100644 --- a/frontend/dist/js/611.a7ee790d.js +++ b/frontend/dist/js/611.caffc5da.js @@ -1 +1 @@ -"use strict";(self["webpackChunkvue_antd_pro"]=self["webpackChunkvue_antd_pro"]||[]).push([[611],{62611:function(e,t,a){a.d(t,{A:function(){return P}});var i=function(){var e=this,t=e._self._c;return t("a-drawer",{staticClass:"quick-trade-drawer",class:{"theme-dark":e.isDark},attrs:{title:null,width:380,visible:e.visible,closable:!1,bodyStyle:{padding:0},maskStyle:{background:"rgba(0,0,0,0.45)"}},on:{close:e.handleClose}},[t("div",{staticClass:"qt-header"},[t("div",{staticClass:"qt-header-left"},[t("a-icon",{staticClass:"qt-icon",attrs:{type:"thunderbolt",theme:"filled"}}),t("span",{staticClass:"qt-header-title"},[e._v(e._s(e.$t("quickTrade.title")))])],1),t("a-icon",{staticClass:"qt-close",attrs:{type:"close"},on:{click:e.handleClose}})],1),t("div",{staticClass:"qt-symbol-bar"},[t("div",{staticClass:"qt-symbol-selector"},[t("a-select",{staticStyle:{width:"100%"},attrs:{"show-search":"",placeholder:e.$t("quickTrade.selectSymbol"),"filter-option":!1,"not-found-content":e.symbolSearching?null:void 0,loading:e.symbolSearching},on:{search:e.handleSymbolSearch,change:e.handleSymbolChange,focus:e.handleSymbolFocus},model:{value:e.currentSymbol,callback:function(t){e.currentSymbol=t},expression:"currentSymbol"}},[t("a-icon",{staticStyle:{color:"#999"},attrs:{slot:"suffixIcon",type:"search"},slot:"suffixIcon"}),e._l(e.symbolSuggestions,function(a){return t("a-select-option",{key:a.value,attrs:{value:a.value}},[t("div",{staticClass:"qt-symbol-option"},[t("span",{staticClass:"qt-symbol-option-name"},[e._v(e._s(a.symbol))]),a.name?t("span",{staticClass:"qt-symbol-option-desc"},[e._v(e._s(a.name))]):e._e()])])})],2)],1),t("div",{staticClass:"qt-price-display",class:e.priceChangeClass},[t("span",{staticClass:"qt-current-price"},[e._v("$"+e._s(e.formatPrice(e.currentPrice)))])])]),t("div",{staticClass:"qt-section"},[t("div",{staticClass:"qt-label"},[e._v(e._s(e.$t("quickTrade.exchange"))+" "),t("span",{staticClass:"qt-crypto-hint"},[e._v(e._s(e.$t("quickTrade.cryptoOnly")))])]),t("a-select",{staticStyle:{width:"100%"},attrs:{placeholder:e.$t("quickTrade.selectExchange"),loading:e.credLoading,notFoundContent:e.$t("quickTrade.noExchange")},on:{change:e.onCredentialChange},model:{value:e.selectedCredentialId,callback:function(t){e.selectedCredentialId=t},expression:"selectedCredentialId"}},e._l(e.credentials,function(a){return t("a-select-option",{key:a.id,attrs:{value:a.id}},[t("span",{staticStyle:{"text-transform":"capitalize"}},[e._v(e._s(a.exchange_id||a.name))]),a.market_type?t("a-tag",{staticStyle:{"margin-left":"6px"},attrs:{size:"small"}},[e._v(e._s(a.market_type))]):e._e()],1)}),1),e.balance.available>0?t("div",{staticClass:"qt-balance"},[t("span",{staticClass:"qt-balance-label"},[e._v(e._s(e.$t("quickTrade.available"))+":")]),t("span",{staticClass:"qt-balance-value"},[e._v("$"+e._s(e.formatPrice(e.balance.available)))])]):e._e()],1),t("div",{staticClass:"qt-section"},[t("div",{staticClass:"qt-direction-toggle"},[t("div",{staticClass:"qt-dir-btn qt-dir-long",class:{active:"buy"===e.side},on:{click:function(t){e.side="buy"}}},[t("a-icon",{attrs:{type:"arrow-up"}}),e._v(" "+e._s(e.$t("quickTrade.long"))+" ")],1),t("div",{staticClass:"qt-dir-btn qt-dir-short",class:{active:"sell"===e.side},on:{click:function(t){e.side="sell"}}},[t("a-icon",{attrs:{type:"arrow-down"}}),e._v(" "+e._s(e.$t("quickTrade.short"))+" ")],1)])]),t("div",{staticClass:"qt-section"},[t("a-radio-group",{staticStyle:{width:"100%"},attrs:{"button-style":"solid",size:"small"},model:{value:e.orderType,callback:function(t){e.orderType=t},expression:"orderType"}},[t("a-radio-button",{staticStyle:{width:"50%","text-align":"center"},attrs:{value:"market"}},[e._v(" "+e._s(e.$t("quickTrade.market"))+" ")]),t("a-radio-button",{staticStyle:{width:"50%","text-align":"center"},attrs:{value:"limit"}},[e._v(" "+e._s(e.$t("quickTrade.limit"))+" ")])],1)],1),"limit"===e.orderType?t("div",{staticClass:"qt-section"},[t("div",{staticClass:"qt-label"},[e._v(e._s(e.$t("quickTrade.limitPrice")))]),t("a-input-number",{staticStyle:{width:"100%"},attrs:{min:0,step:e.priceStep,precision:e.pricePrecision,placeholder:e.$t("quickTrade.enterPrice")},model:{value:e.limitPrice,callback:function(t){e.limitPrice=t},expression:"limitPrice"}})],1):e._e(),t("div",{staticClass:"qt-section"},[t("div",{staticClass:"qt-label"},[e._v(e._s(e.$t("quickTrade.amount"))+" (USDT)")]),t("a-input-number",{staticStyle:{width:"100%"},attrs:{min:1,step:10,precision:2,placeholder:e.$t("quickTrade.enterAmount")},model:{value:e.amount,callback:function(t){e.amount=t},expression:"amount"}}),t("div",{staticClass:"qt-quick-amounts"},e._l(e.quickAmountPcts,function(a){return t("a-button",{key:a,attrs:{size:"small",disabled:e.balance.available<=0},on:{click:function(t){return e.setAmountByPercent(a)}}},[e._v(" "+e._s(a)+"% ")])}),1)],1),"spot"!==e.marketType?t("div",{staticClass:"qt-section"},[t("div",{staticClass:"qt-label"},[e._v(e._s(e.$t("quickTrade.leverage")))]),t("div",{staticClass:"qt-leverage-row"},[t("a-slider",{staticStyle:{flex:"1","margin-right":"12px"},attrs:{min:1,max:125,marks:e.leverageMarks,tipFormatter:function(e){return e+"x"}},model:{value:e.leverage,callback:function(t){e.leverage=t},expression:"leverage"}}),t("a-input-number",{staticStyle:{width:"80px"},attrs:{min:1,max:125,formatter:function(e){return"".concat(e,"x")},parser:function(e){return e.replace("x","")}},model:{value:e.leverage,callback:function(t){e.leverage=t},expression:"leverage"}})],1)]):e._e(),t("a-collapse",{staticStyle:{background:"transparent",margin:"0 16px"},attrs:{bordered:!1}},[t("a-collapse-panel",{key:"tpsl",style:e.collapseStyle,attrs:{header:e.$t("quickTrade.tpsl")}},[t("div",{staticClass:"qt-tpsl-row"},[t("div",{staticClass:"qt-tpsl-item"},[t("span",{staticClass:"qt-label",staticStyle:{color:"#52c41a"}},[e._v(e._s(e.$t("quickTrade.tp")))]),t("a-input-number",{staticStyle:{width:"100%"},attrs:{min:0,step:e.priceStep,precision:e.pricePrecision,placeholder:e.$t("quickTrade.tpPlaceholder")},model:{value:e.tpPrice,callback:function(t){e.tpPrice=t},expression:"tpPrice"}})],1),t("div",{staticClass:"qt-tpsl-item"},[t("span",{staticClass:"qt-label",staticStyle:{color:"#f5222d"}},[e._v(e._s(e.$t("quickTrade.sl")))]),t("a-input-number",{staticStyle:{width:"100%"},attrs:{min:0,step:e.priceStep,precision:e.pricePrecision,placeholder:e.$t("quickTrade.slPlaceholder")},model:{value:e.slPrice,callback:function(t){e.slPrice=t},expression:"slPrice"}})],1)])])],1),t("div",{staticClass:"qt-submit-section"},[t("a-button",{staticClass:"qt-submit-btn",class:["buy"===e.side?"qt-btn-long":"qt-btn-short"],attrs:{type:"buy"===e.side?"primary":"danger",size:"large",block:"",loading:e.submitting,disabled:!e.canSubmit},on:{click:e.handleSubmit}},[t("a-icon",{attrs:{type:"buy"===e.side?"arrow-up":"arrow-down"}}),e._v(" "+e._s("buy"===e.side?e.$t("quickTrade.buyLong"):e.$t("quickTrade.sellShort"))+" "+e._s(e.symbol)+" ")],1)],1),t("div",{staticClass:"qt-position-section"},[t("div",{staticClass:"qt-section-header"},[t("a-icon",{attrs:{type:"wallet"}}),e._v(" "+e._s(e.$t("quickTrade.currentPosition"))+" ")],1),e.currentPosition?t("div",{staticClass:"qt-position-card",class:e.currentPosition.side},[t("div",{staticClass:"qt-pos-row"},[t("span",[e._v(e._s(e.$t("quickTrade.side")))]),t("a-tag",{attrs:{color:"long"===e.currentPosition.side?"#52c41a":"#f5222d",size:"small"}},[e._v(" "+e._s("long"===e.currentPosition.side?e.$t("quickTrade.long"):e.$t("quickTrade.short"))+" ")])],1),t("div",{staticClass:"qt-pos-row"},[t("span",[e._v(e._s(e.$t("quickTrade.posSize")))]),t("span",[e._v(e._s(e.currentPosition.size))])]),t("div",{staticClass:"qt-pos-row"},[t("span",[e._v(e._s(e.$t("quickTrade.entryPrice")))]),t("span",[e._v("$"+e._s(e.formatPrice(e.currentPosition.entry_price)))])]),e.currentPosition.mark_price?t("div",{staticClass:"qt-pos-row"},[t("span",[e._v(e._s(e.$t("quickTrade.markPrice")))]),t("span",[e._v("$"+e._s(e.formatPrice(e.currentPosition.mark_price)))])]):e._e(),e.currentPosition.leverage&&e.currentPosition.leverage>1?t("div",{staticClass:"qt-pos-row"},[t("span",[e._v(e._s(e.$t("quickTrade.leverage")))]),t("span",[e._v(e._s(e.currentPosition.leverage)+"x")])]):e._e(),t("div",{staticClass:"qt-pos-row"},[t("span",[e._v(e._s(e.$t("quickTrade.unrealizedPnl")))]),t("span",{class:e.currentPosition.unrealized_pnl>=0?"qt-green":"qt-red"},[e._v(" $"+e._s(e.formatPrice(e.currentPosition.unrealized_pnl))+" ")])]),t("a-button",{staticStyle:{"margin-top":"8px"},attrs:{type:"danger",size:"small",block:"",ghost:"",loading:e.closingPosition},on:{click:e.handleClosePosition}},[e._v(" "+e._s(e.$t("quickTrade.closePosition"))+" ")])],1):t("div",{staticClass:"qt-position-empty"},[t("a-empty",{staticStyle:{padding:"20px 0"},attrs:{description:e.$t("quickTrade.noPosition"),image:!1}},[t("template",{slot:"description"},[t("span",{staticStyle:{color:"#999","font-size":"12px"}},[e._v(e._s(e.$t("quickTrade.noPositionHint")))])])],2)],1)]),e.recentTrades.length>0?t("div",{staticClass:"qt-history-section"},[t("a-collapse",{attrs:{bordered:!1,activeKey:e.historyCollapsed?[]:["history"]},on:{change:e.handleHistoryCollapse}},[t("a-collapse-panel",{key:"history",style:e.collapseStyle,attrs:{showArrow:!1}},[t("template",{slot:"header"},[t("div",{staticClass:"qt-section-header",staticStyle:{margin:"0",padding:"0"}},[t("a-icon",{attrs:{type:"history"}}),e._v(" "+e._s(e.$t("quickTrade.recentTrades"))+" "),t("span",{staticClass:"qt-history-count"},[e._v("("+e._s(e.recentTrades.length)+")")])],1)]),t("div",{staticClass:"qt-trade-list"},e._l(e.recentTrades,function(a){return t("div",{key:a.id,staticClass:"qt-trade-item"},[t("div",{staticClass:"qt-trade-main"},[t("a-tag",{attrs:{color:"buy"===a.side?"#52c41a":"#f5222d",size:"small"}},[e._v(" "+e._s("buy"===a.side?"LONG":"SHORT")+" ")]),t("span",{staticClass:"qt-trade-symbol"},[e._v(e._s(a.symbol))]),t("span",{staticClass:"qt-trade-amount"},[e._v("$"+e._s(e.formatPrice(a.amount)))])],1),t("div",{staticClass:"qt-trade-meta"},[t("a-tag",{attrs:{color:"filled"===a.status?"#52c41a":"failed"===a.status?"#f5222d":"#faad14",size:"small"}},[e._v(" "+e._s(a.status)+" ")]),t("span",{staticClass:"qt-trade-time"},[e._v(e._s(e.formatTime(a.created_at)))])],1)])}),0)],2)],1)],1):e._e()],1)},r=[],s=a(81127),n=a(56252),c=a(76338),l=(a(74423),a(95353)),o=a(42430),u=a(75769);function d(e){return(0,u.Ay)({url:"/api/quick-trade/place-order",method:"post",data:e})}function m(e){return(0,u.Ay)({url:"/api/quick-trade/balance",method:"get",params:e})}function p(e){return(0,u.Ay)({url:"/api/quick-trade/position",method:"get",params:e})}function h(e){return(0,u.Ay)({url:"/api/quick-trade/history",method:"get",params:e})}function v(e){return(0,u.Ay)({url:"/api/quick-trade/close-position",method:"post",data:e})}var b=a(35038),y=a(505),f={name:"QuickTradePanel",props:{visible:{type:Boolean,default:!1},symbol:{type:String,default:""},presetSide:{type:String,default:""},presetPrice:{type:Number,default:0},source:{type:String,default:"manual"},marketType:{type:String,default:"swap"}},data:function(){return{credentials:[],selectedCredentialId:void 0,credLoading:!1,balance:{available:0,total:0},side:"buy",orderType:"market",limitPrice:0,amount:100,leverage:5,tpPrice:null,slPrice:null,submitting:!1,closingPosition:!1,currentPrice:0,currentPosition:null,recentTrades:[],historyCollapsed:!1,currentSymbol:"",symbolSuggestions:[],symbolSearching:!1,symbolSearchTimer:null,userId:null,quickAmountPcts:[10,25,50,75,100],leverageMarks:{1:"1x",5:"5x",10:"10x",25:"25x",50:"50x",100:"100x",125:"125x"},pollTimer:null}},computed:(0,c.A)((0,c.A)({},(0,l.aH)({navTheme:function(e){return e.app.theme}})),{},{isDark:function(){return"dark"===this.navTheme||"realdark"===this.navTheme},priceStep:function(){return this.currentPrice>1e4?1:this.currentPrice>100?.1:this.currentPrice>1?.01:1e-4},pricePrecision:function(){return this.currentPrice>1e4?0:this.currentPrice>100?1:this.currentPrice>1?2:4},canSubmit:function(){return this.selectedCredentialId&&this.currentSymbol&&this.amount>0&&!this.submitting},priceChangeClass:function(){return""},collapseStyle:function(){return{background:"transparent",borderRadius:"4px",border:0,overflow:"hidden"}}}),watch:{visible:function(e){e?this.init():this.stopPolling()},symbol:function(e){e&&(this.currentSymbol=e)},currentSymbol:function(e){e&&(this.loadPrice(),this.selectedCredentialId&&this.loadPosition(),this.$emit("update:symbol",e))},selectedCredentialId:function(e){e&&this.currentSymbol&&this.loadPosition()},presetSide:function(e){e&&(this.side=e)},presetPrice:function(e){e>0&&(this.currentPrice=e,this.limitPrice=e)}},methods:{init:function(){var e=this;return(0,n.A)((0,s.A)().m(function t(){return(0,s.A)().w(function(t){while(1)switch(t.n){case 0:return e.currentSymbol=e.symbol||"",e.presetSide&&(e.side=e.presetSide),e.presetPrice>0&&(e.currentPrice=e.presetPrice,e.limitPrice=e.presetPrice),t.n=1,e.loadCredentials();case 1:return t.n=2,e.loadUserInfo();case 2:return t.n=3,e.loadWatchlistSymbols();case 3:if(!e.currentSymbol){t.n=4;break}return t.n=4,e.loadPrice();case 4:if(!e.selectedCredentialId||!e.currentSymbol){t.n=5;break}return t.n=5,e.loadPosition();case 5:e.loadHistory(),e.startPolling();case 6:return t.a(2)}},t)}))()},loadUserInfo:function(){var e=this;return(0,n.A)((0,s.A)().m(function t(){var a,i,r,n;return(0,s.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(t.p=0,i=e.$store,r=(null===i||void 0===i||null===(a=i.getters)||void 0===a?void 0:a.userInfo)||{},!r||!r.id){t.n=1;break}return e.userId=r.id,t.a(2);case 1:return t.n=2,(0,y.ug)();case 2:n=t.v,n&&1===n.code&&n.data&&(e.userId=n.data.id,i&&i.commit("SET_INFO",n.data)),t.n=4;break;case 3:t.p=3,t.v;case 4:return t.a(2)}},t,null,[[0,3]])}))()},loadWatchlistSymbols:function(){var e=this;return(0,n.A)((0,s.A)().m(function t(){var a,i;return(0,s.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(e.userId){t.n=2;break}return t.n=1,e.loadUserInfo();case 1:if(e.userId){t.n=2;break}return t.a(2);case 2:return t.p=2,t.n=3,(0,b.Qo)({userid:e.userId});case 3:a=t.v,a&&1===a.code&&a.data&&(i=(a.data||[]).filter(function(e){return"crypto"===(e.market||"").toLowerCase()}).map(function(e){return{value:e.symbol||"",symbol:e.symbol||"",name:e.name||""}}).filter(function(e){return e.value}),e.symbolSuggestions=i),t.n=5;break;case 4:t.p=4,t.v;case 5:return t.a(2)}},t,null,[[2,4]])}))()},handleSymbolSearch:function(e){var t=this;this.symbolSearchTimer&&clearTimeout(this.symbolSearchTimer),e&&""!==e.trim()?this.symbolSearchTimer=setTimeout((0,n.A)((0,s.A)().m(function a(){var i;return(0,s.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return t.symbolSearching=!0,a.p=1,a.n=2,(0,b._3)({market:"Crypto",keyword:e.trim(),limit:20});case 2:i=a.v,i&&1===i.code&&i.data?t.symbolSuggestions=(i.data.items||i.data||[]).map(function(e){return{value:e.symbol||"",symbol:e.symbol||"",name:e.name||""}}).filter(function(e){return e.value}):t.symbolSuggestions=[],a.n=4;break;case 3:a.p=3,a.v,t.symbolSuggestions=[];case 4:return a.p=4,t.symbolSearching=!1,a.f(4);case 5:return a.a(2)}},a,null,[[1,3,4,5]])})),300):this.loadWatchlistSymbols()},handleSymbolChange:function(e){e&&e!==this.currentSymbol&&(this.currentSymbol=e,this.loadPrice(),this.selectedCredentialId&&this.loadPosition(),this.$emit("update:symbol",e))},loadPrice:function(){var e=this;return(0,n.A)((0,s.A)().m(function t(){var a,i;return(0,s.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(e.currentSymbol){t.n=1;break}return e.currentPrice=0,t.a(2);case 1:return t.p=1,t.n=2,(0,u.Ay)({url:"/api/market/price",method:"get",params:{market:"Crypto",symbol:e.currentSymbol}});case 2:a=t.v,a&&1===a.code&&a.data&&(i=parseFloat(a.data.price||0),i>0&&(e.currentPrice=i,0!==e.limitPrice&&e.limitPrice!==e.presetPrice||(e.limitPrice=i))),t.n=4;break;case 3:t.p=3,t.v;case 4:return t.a(2)}},t,null,[[1,3]])}))()},handleSymbolFocus:function(){0===this.symbolSuggestions.length&&this.loadWatchlistSymbols()},loadCredentials:function(){var e=this;return(0,n.A)((0,s.A)().m(function t(){var a,i,r;return(0,s.A)().w(function(t){while(1)switch(t.p=t.n){case 0:return e.credLoading=!0,t.p=1,t.n=2,(0,o.IA)();case 2:a=t.v,1===a.code&&a.data&&(i=a.data.items||a.data||[],r=["ibkr","mt5"],e.credentials=i.filter(function(e){var t=(e.exchange_id||e.name||"").toLowerCase();return!r.includes(t)}),!e.selectedCredentialId&&e.credentials.length>0&&(e.selectedCredentialId=e.credentials[0].id,e.onCredentialChange(e.selectedCredentialId))),t.n=4;break;case 3:t.p=3,t.v;case 4:return t.p=4,e.credLoading=!1,t.f(4);case 5:return t.a(2)}},t,null,[[1,3,4,5]])}))()},onCredentialChange:function(e){var t=this;return(0,n.A)((0,s.A)().m(function a(){return(0,s.A)().w(function(a){while(1)switch(a.n){case 0:return t.selectedCredentialId=e,a.n=1,t.loadBalance();case 1:return a.n=2,t.loadPosition();case 2:return a.a(2)}},a)}))()},loadBalance:function(){var e=this;return(0,n.A)((0,s.A)().m(function t(){var a;return(0,s.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(e.selectedCredentialId){t.n=1;break}return t.a(2);case 1:return t.p=1,t.n=2,m({credential_id:e.selectedCredentialId,market_type:e.marketType});case 2:a=t.v,1===a.code&&a.data&&(e.balance=a.data),t.n=4;break;case 3:t.p=3,t.v;case 4:return t.a(2)}},t,null,[[1,3]])}))()},loadPosition:function(){var e=this;return(0,n.A)((0,s.A)().m(function t(){var a;return(0,s.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(e.selectedCredentialId&&e.currentSymbol){t.n=1;break}return t.a(2);case 1:return t.p=1,t.n=2,p({credential_id:e.selectedCredentialId,symbol:e.currentSymbol,market_type:e.marketType});case 2:if(a=t.v,!(1===a.code&&a.data&&a.data.positions&&a.data.positions.length>0)){t.n=3;break}return e.currentPosition=a.data.positions[0],t.a(2,!0);case 3:return e.currentPosition=null,t.a(2,!1);case 4:t.n=6;break;case 5:return t.p=5,t.v,e.currentPosition=null,t.a(2,!1);case 6:return t.a(2)}},t,null,[[1,5]])}))()},loadPositionWithRetry:function(){var e=arguments,t=this;return(0,n.A)((0,s.A)().m(function a(){var i,r,n,c;return(0,s.A)().w(function(a){while(1)switch(a.n){case 0:return i=e.length>0&&void 0!==e[0]?e[0]:3,r=e.length>1&&void 0!==e[1]?e[1]:2e3,a.n=1,t.loadPosition();case 1:if(n=a.v,!n){a.n=2;break}return a.a(2);case 2:c=0;case 3:if(!(c0&&(this.amount=Math.floor(this.balance.available*e/100*100)/100)},handleSubmit:function(){var e=this;return(0,n.A)((0,s.A)().m(function t(){var a,i,r;return(0,s.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(e.canSubmit){t.n=1;break}return t.a(2);case 1:return e.submitting=!0,t.p=2,a={credential_id:e.selectedCredentialId,symbol:e.currentSymbol,side:e.side,order_type:e.orderType,amount:e.amount,price:"limit"===e.orderType?e.limitPrice:0,leverage:"spot"!==e.marketType?e.leverage:1,market_type:e.marketType,tp_price:e.tpPrice||0,sl_price:e.slPrice||0,source:e.source},t.n=3,d(a);case 3:if(i=t.v,1!==i.code){t.n=7;break}return e.$emit("order-success",i.data),t.n=4,e.loadBalance();case 4:return t.n=5,e.loadHistory();case 5:return t.n=6,e.loadPositionWithRetry();case 6:t.n=8;break;case 7:e.$message.error(i.msg||e.$t("quickTrade.orderFailed"));case 8:t.n=10;break;case 9:t.p=9,r=t.v,e.$message.error(r.message||e.$t("quickTrade.orderFailed"));case 10:return t.p=10,e.submitting=!1,t.f(10);case 11:return t.a(2)}},t,null,[[2,9,10,11]])}))()},handleClosePosition:function(){var e=this;return(0,n.A)((0,s.A)().m(function t(){var a,i,r;return(0,s.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(e.currentPosition&&e.selectedCredentialId){t.n=1;break}return t.a(2);case 1:return e.closingPosition=!0,t.p=2,a={credential_id:e.selectedCredentialId,symbol:e.currentSymbol,market_type:e.marketType,size:0,source:"manual"},t.n=3,v(a);case 3:if(i=t.v,1!==i.code){t.n=6;break}return e.$message.success(e.$t("quickTrade.positionClosed")),t.n=4,e.loadBalance();case 4:return t.n=5,e.loadHistory();case 5:e.currentPosition=null,setTimeout((0,n.A)((0,s.A)().m(function t(){return(0,s.A)().w(function(t){while(1)switch(t.n){case 0:return t.n=1,e.loadPosition();case 1:return t.a(2)}},t)})),2e3),t.n=7;break;case 6:e.$message.error(i.msg||e.$t("quickTrade.orderFailed"));case 7:t.n=9;break;case 8:t.p=8,r=t.v,e.$message.error(r.message||e.$t("quickTrade.orderFailed"));case 9:return t.p=9,e.closingPosition=!1,t.f(9);case 10:return t.a(2)}},t,null,[[2,8,9,10]])}))()},startPolling:function(){var e=this;this.stopPolling(),this.pollTimer=setInterval(function(){e.currentSymbol&&e.loadPrice(),e.selectedCredentialId&&e.currentSymbol&&(e.loadBalance(),e.loadPosition())},1e4)},stopPolling:function(){this.pollTimer&&(clearInterval(this.pollTimer),this.pollTimer=null)},handleClose:function(){this.$emit("close"),this.$emit("update:visible",!1)},handleHistoryCollapse:function(e){this.historyCollapsed=!e.includes("history")},formatPrice:function(e){var t=parseFloat(e||0);return Math.abs(t)>=1e4?t.toLocaleString("en-US",{minimumFractionDigits:0,maximumFractionDigits:0}):Math.abs(t)>=100?t.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2}):Math.abs(t)>=1?t.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:4}):t.toLocaleString("en-US",{minimumFractionDigits:4,maximumFractionDigits:6})},formatTime:function(e){if(!e)return"";var t=new Date(e),a=function(e){return String(e).padStart(2,"0")};return"".concat(a(t.getMonth()+1),"-").concat(a(t.getDate())," ").concat(a(t.getHours()),":").concat(a(t.getMinutes()))}},beforeDestroy:function(){this.stopPolling()}},g=f,k=a(845),_=(0,k.A)(g,i,r,!1,null,"0d547552",null),P=_.exports},42430:function(e,t,a){a.d(t,{IA:function(){return n},PR:function(){return c},kI:function(){return l}});var i=a(76338),r=a(75769),s={list:"/api/credentials/list",get:"/api/credentials/get",create:"/api/credentials/create",delete:"/api/credentials/delete"};function n(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,r.Ay)({url:s.list,method:"get",params:e})}function c(e){return(0,r.Ay)({url:s.create,method:"post",data:e})}function l(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return(0,r.Ay)({url:s.delete,method:"delete",params:(0,i.A)({id:e},t)})}}}]); \ No newline at end of file +"use strict";(self["webpackChunkvue_antd_pro"]=self["webpackChunkvue_antd_pro"]||[]).push([[611],{62611:function(e,t,a){a.d(t,{A:function(){return P}});var i=function(){var e=this,t=e._self._c;return t("a-drawer",{staticClass:"quick-trade-drawer",class:{"theme-dark":e.isDark},attrs:{title:null,width:380,visible:e.visible,closable:!1,bodyStyle:{padding:0},maskStyle:{background:"rgba(0,0,0,0.45)"}},on:{close:e.handleClose}},[t("div",{staticClass:"qt-header"},[t("div",{staticClass:"qt-header-left"},[t("a-icon",{staticClass:"qt-icon",attrs:{type:"thunderbolt",theme:"filled"}}),t("span",{staticClass:"qt-header-title"},[e._v(e._s(e.$t("quickTrade.title")))])],1),t("a-icon",{staticClass:"qt-close",attrs:{type:"close"},on:{click:e.handleClose}})],1),t("div",{staticClass:"qt-symbol-bar"},[t("div",{staticClass:"qt-symbol-selector"},[t("a-select",{staticStyle:{width:"100%"},attrs:{"show-search":"",placeholder:e.$t("quickTrade.selectSymbol"),"filter-option":!1,"not-found-content":e.symbolSearching?null:void 0,loading:e.symbolSearching},on:{search:e.handleSymbolSearch,change:e.handleSymbolChange,focus:e.handleSymbolFocus},model:{value:e.currentSymbol,callback:function(t){e.currentSymbol=t},expression:"currentSymbol"}},[t("a-icon",{staticStyle:{color:"#999"},attrs:{slot:"suffixIcon",type:"search"},slot:"suffixIcon"}),e._l(e.symbolSuggestions,function(a){return t("a-select-option",{key:a.value,attrs:{value:a.value}},[t("div",{staticClass:"qt-symbol-option"},[t("span",{staticClass:"qt-symbol-option-name"},[e._v(e._s(a.symbol))]),a.name?t("span",{staticClass:"qt-symbol-option-desc"},[e._v(e._s(a.name))]):e._e()])])})],2)],1),t("div",{staticClass:"qt-price-display",class:e.priceChangeClass},[t("span",{staticClass:"qt-current-price"},[e._v("$"+e._s(e.formatPrice(e.currentPrice)))])])]),t("div",{staticClass:"qt-section"},[t("div",{staticClass:"qt-label"},[e._v(e._s(e.$t("quickTrade.exchange"))+" "),t("span",{staticClass:"qt-crypto-hint"},[e._v(e._s(e.$t("quickTrade.cryptoOnly")))])]),t("a-select",{staticStyle:{width:"100%"},attrs:{placeholder:e.$t("quickTrade.selectExchange"),loading:e.credLoading,notFoundContent:e.$t("quickTrade.noExchange")},on:{change:e.onCredentialChange},model:{value:e.selectedCredentialId,callback:function(t){e.selectedCredentialId=t},expression:"selectedCredentialId"}},e._l(e.credentials,function(a){return t("a-select-option",{key:a.id,attrs:{value:a.id}},[t("span",{staticStyle:{"text-transform":"capitalize"}},[e._v(e._s(a.exchange_id||a.name))]),a.market_type?t("a-tag",{staticStyle:{"margin-left":"6px"},attrs:{size:"small"}},[e._v(e._s(a.market_type))]):e._e()],1)}),1),e.balance.available>0?t("div",{staticClass:"qt-balance"},[t("span",{staticClass:"qt-balance-label"},[e._v(e._s(e.$t("quickTrade.available"))+":")]),t("span",{staticClass:"qt-balance-value"},[e._v("$"+e._s(e.formatPrice(e.balance.available)))])]):e._e()],1),t("div",{staticClass:"qt-section"},[t("div",{staticClass:"qt-direction-toggle"},[t("div",{staticClass:"qt-dir-btn qt-dir-long",class:{active:"buy"===e.side},on:{click:function(t){e.side="buy"}}},[t("a-icon",{attrs:{type:"arrow-up"}}),e._v(" "+e._s(e.$t("quickTrade.long"))+" ")],1),t("div",{staticClass:"qt-dir-btn qt-dir-short",class:{active:"sell"===e.side},on:{click:function(t){e.side="sell"}}},[t("a-icon",{attrs:{type:"arrow-down"}}),e._v(" "+e._s(e.$t("quickTrade.short"))+" ")],1)])]),t("div",{staticClass:"qt-section"},[t("a-radio-group",{staticStyle:{width:"100%"},attrs:{"button-style":"solid",size:"small"},model:{value:e.orderType,callback:function(t){e.orderType=t},expression:"orderType"}},[t("a-radio-button",{staticStyle:{width:"50%","text-align":"center"},attrs:{value:"market"}},[e._v(" "+e._s(e.$t("quickTrade.market"))+" ")]),t("a-radio-button",{staticStyle:{width:"50%","text-align":"center"},attrs:{value:"limit"}},[e._v(" "+e._s(e.$t("quickTrade.limit"))+" ")])],1)],1),"limit"===e.orderType?t("div",{staticClass:"qt-section"},[t("div",{staticClass:"qt-label"},[e._v(e._s(e.$t("quickTrade.limitPrice")))]),t("a-input-number",{staticStyle:{width:"100%"},attrs:{min:0,step:e.priceStep,precision:e.pricePrecision,placeholder:e.$t("quickTrade.enterPrice")},model:{value:e.limitPrice,callback:function(t){e.limitPrice=t},expression:"limitPrice"}})],1):e._e(),t("div",{staticClass:"qt-section"},[t("div",{staticClass:"qt-label"},[e._v(e._s(e.$t("quickTrade.amount"))+" (USDT)")]),t("a-input-number",{staticStyle:{width:"100%"},attrs:{min:1,step:10,precision:2,placeholder:e.$t("quickTrade.enterAmount")},model:{value:e.amount,callback:function(t){e.amount=t},expression:"amount"}}),t("div",{staticClass:"qt-quick-amounts"},e._l(e.quickAmountPcts,function(a){return t("a-button",{key:a,attrs:{size:"small",disabled:e.balance.available<=0},on:{click:function(t){return e.setAmountByPercent(a)}}},[e._v(" "+e._s(a)+"% ")])}),1)],1),"spot"!==e.marketType?t("div",{staticClass:"qt-section"},[t("div",{staticClass:"qt-label"},[e._v(e._s(e.$t("quickTrade.leverage")))]),t("div",{staticClass:"qt-leverage-row"},[t("a-slider",{staticStyle:{flex:"1","margin-right":"12px"},attrs:{min:1,max:125,marks:e.leverageMarks,tipFormatter:function(e){return e+"x"}},model:{value:e.leverage,callback:function(t){e.leverage=t},expression:"leverage"}}),t("a-input-number",{staticStyle:{width:"80px"},attrs:{min:1,max:125,formatter:function(e){return"".concat(e,"x")},parser:function(e){return e.replace("x","")}},model:{value:e.leverage,callback:function(t){e.leverage=t},expression:"leverage"}})],1)]):e._e(),t("a-collapse",{staticStyle:{background:"transparent",margin:"0 16px"},attrs:{bordered:!1}},[t("a-collapse-panel",{key:"tpsl",style:e.collapseStyle,attrs:{header:e.$t("quickTrade.tpsl")}},[t("div",{staticClass:"qt-tpsl-row"},[t("div",{staticClass:"qt-tpsl-item"},[t("span",{staticClass:"qt-label",staticStyle:{color:"#52c41a"}},[e._v(e._s(e.$t("quickTrade.tp")))]),t("a-input-number",{staticStyle:{width:"100%"},attrs:{min:0,step:e.priceStep,precision:e.pricePrecision,placeholder:e.$t("quickTrade.tpPlaceholder")},model:{value:e.tpPrice,callback:function(t){e.tpPrice=t},expression:"tpPrice"}})],1),t("div",{staticClass:"qt-tpsl-item"},[t("span",{staticClass:"qt-label",staticStyle:{color:"#f5222d"}},[e._v(e._s(e.$t("quickTrade.sl")))]),t("a-input-number",{staticStyle:{width:"100%"},attrs:{min:0,step:e.priceStep,precision:e.pricePrecision,placeholder:e.$t("quickTrade.slPlaceholder")},model:{value:e.slPrice,callback:function(t){e.slPrice=t},expression:"slPrice"}})],1)])])],1),t("div",{staticClass:"qt-submit-section"},[t("a-button",{staticClass:"qt-submit-btn",class:["buy"===e.side?"qt-btn-long":"qt-btn-short"],attrs:{type:"buy"===e.side?"primary":"danger",size:"large",block:"",loading:e.submitting,disabled:!e.canSubmit},on:{click:e.handleSubmit}},[t("a-icon",{attrs:{type:"buy"===e.side?"arrow-up":"arrow-down"}}),e._v(" "+e._s("buy"===e.side?e.$t("quickTrade.buyLong"):e.$t("quickTrade.sellShort"))+" "+e._s(e.symbol)+" ")],1)],1),t("div",{staticClass:"qt-position-section"},[t("div",{staticClass:"qt-section-header"},[t("a-icon",{attrs:{type:"wallet"}}),e._v(" "+e._s(e.$t("quickTrade.currentPosition"))+" ")],1),e.currentPosition?t("div",{staticClass:"qt-position-card",class:e.currentPosition.side},[t("div",{staticClass:"qt-pos-row"},[t("span",[e._v(e._s(e.$t("quickTrade.side")))]),t("a-tag",{attrs:{color:"long"===e.currentPosition.side?"#52c41a":"#f5222d",size:"small"}},[e._v(" "+e._s("long"===e.currentPosition.side?e.$t("quickTrade.long"):e.$t("quickTrade.short"))+" ")])],1),t("div",{staticClass:"qt-pos-row"},[t("span",[e._v(e._s(e.$t("quickTrade.posSize")))]),t("span",[e._v(e._s(e.currentPosition.size))])]),t("div",{staticClass:"qt-pos-row"},[t("span",[e._v(e._s(e.$t("quickTrade.entryPrice")))]),t("span",[e._v("$"+e._s(e.formatPrice(e.currentPosition.entry_price)))])]),e.currentPosition.mark_price?t("div",{staticClass:"qt-pos-row"},[t("span",[e._v(e._s(e.$t("quickTrade.markPrice")))]),t("span",[e._v("$"+e._s(e.formatPrice(e.currentPosition.mark_price)))])]):e._e(),e.currentPosition.leverage&&e.currentPosition.leverage>1?t("div",{staticClass:"qt-pos-row"},[t("span",[e._v(e._s(e.$t("quickTrade.leverage")))]),t("span",[e._v(e._s(e.currentPosition.leverage)+"x")])]):e._e(),t("div",{staticClass:"qt-pos-row"},[t("span",[e._v(e._s(e.$t("quickTrade.unrealizedPnl")))]),t("span",{class:e.currentPosition.unrealized_pnl>=0?"qt-green":"qt-red"},[e._v(" $"+e._s(e.formatPrice(e.currentPosition.unrealized_pnl))+" ")])]),t("a-button",{staticStyle:{"margin-top":"8px"},attrs:{type:"danger",size:"small",block:"",ghost:"",loading:e.closingPosition},on:{click:e.handleClosePosition}},[e._v(" "+e._s(e.$t("quickTrade.closePosition"))+" ")])],1):t("div",{staticClass:"qt-position-empty"},[t("a-empty",{staticStyle:{padding:"20px 0"},attrs:{description:e.$t("quickTrade.noPosition"),image:!1}},[t("template",{slot:"description"},[t("span",{staticStyle:{color:"#999","font-size":"12px"}},[e._v(e._s(e.$t("quickTrade.noPositionHint")))])])],2)],1)]),e.recentTrades.length>0?t("div",{staticClass:"qt-history-section"},[t("a-collapse",{attrs:{bordered:!1,activeKey:e.historyCollapsed?[]:["history"]},on:{change:e.handleHistoryCollapse}},[t("a-collapse-panel",{key:"history",style:e.collapseStyle,attrs:{showArrow:!1}},[t("template",{slot:"header"},[t("div",{staticClass:"qt-section-header",staticStyle:{margin:"0",padding:"0"}},[t("a-icon",{attrs:{type:"history"}}),e._v(" "+e._s(e.$t("quickTrade.recentTrades"))+" "),t("span",{staticClass:"qt-history-count"},[e._v("("+e._s(e.recentTrades.length)+")")])],1)]),t("div",{staticClass:"qt-trade-list"},e._l(e.recentTrades,function(a){return t("div",{key:a.id,staticClass:"qt-trade-item"},[t("div",{staticClass:"qt-trade-main"},[t("a-tag",{attrs:{color:"buy"===a.side?"#52c41a":"#f5222d",size:"small"}},[e._v(" "+e._s("buy"===a.side?"LONG":"SHORT")+" ")]),t("span",{staticClass:"qt-trade-symbol"},[e._v(e._s(a.symbol))]),t("span",{staticClass:"qt-trade-amount"},[e._v("$"+e._s(e.formatPrice(a.amount)))])],1),t("div",{staticClass:"qt-trade-meta"},[t("a-tag",{attrs:{color:"filled"===a.status?"#52c41a":"failed"===a.status?"#f5222d":"#faad14",size:"small"}},[e._v(" "+e._s(a.status)+" ")]),t("span",{staticClass:"qt-trade-time"},[e._v(e._s(e.formatTime(a.created_at)))])],1)])}),0)],2)],1)],1):e._e()],1)},r=[],s=a(81127),n=a(56252),c=a(76338),l=(a(74423),a(95353)),o=a(42430),u=a(75769);function d(e){return(0,u.Ay)({url:"/api/quick-trade/place-order",method:"post",data:e})}function m(e){return(0,u.Ay)({url:"/api/quick-trade/balance",method:"get",params:e})}function p(e){return(0,u.Ay)({url:"/api/quick-trade/position",method:"get",params:e})}function h(e){return(0,u.Ay)({url:"/api/quick-trade/history",method:"get",params:e})}function v(e){return(0,u.Ay)({url:"/api/quick-trade/close-position",method:"post",data:e})}var b=a(35038),y=a(505),f={name:"QuickTradePanel",props:{visible:{type:Boolean,default:!1},symbol:{type:String,default:""},presetSide:{type:String,default:""},presetPrice:{type:Number,default:0},source:{type:String,default:"manual"},marketType:{type:String,default:"swap"}},data:function(){return{credentials:[],selectedCredentialId:void 0,credLoading:!1,balance:{available:0,total:0},side:"buy",orderType:"market",limitPrice:0,amount:100,leverage:5,tpPrice:null,slPrice:null,submitting:!1,closingPosition:!1,currentPrice:0,currentPosition:null,recentTrades:[],historyCollapsed:!1,currentSymbol:"",symbolSuggestions:[],symbolSearching:!1,symbolSearchTimer:null,userId:null,quickAmountPcts:[10,25,50,75,100],leverageMarks:{1:"1x",5:"5x",10:"10x",25:"25x",50:"50x",100:"100x",125:"125x"},pollTimer:null}},computed:(0,c.A)((0,c.A)({},(0,l.aH)({navTheme:function(e){return e.app.theme}})),{},{isDark:function(){return"dark"===this.navTheme||"realdark"===this.navTheme},priceStep:function(){return this.currentPrice>1e4?1:this.currentPrice>100?.1:this.currentPrice>1?.01:1e-4},pricePrecision:function(){return this.currentPrice>1e4?0:this.currentPrice>100?1:this.currentPrice>1?2:4},canSubmit:function(){return this.selectedCredentialId&&this.currentSymbol&&this.amount>0&&!this.submitting},priceChangeClass:function(){return""},collapseStyle:function(){return{background:"transparent",borderRadius:"4px",border:0,overflow:"hidden"}}}),watch:{visible:function(e){e?this.init():this.stopPolling()},symbol:function(e){e&&(this.currentSymbol=e)},currentSymbol:function(e){e&&(this.loadPrice(),this.selectedCredentialId&&this.loadPosition(),this.$emit("update:symbol",e))},selectedCredentialId:function(e){e&&this.currentSymbol&&this.loadPosition()},presetSide:function(e){e&&(this.side=e)},presetPrice:function(e){e>0&&(this.currentPrice=e,this.limitPrice=e)}},methods:{init:function(){var e=this;return(0,n.A)((0,s.A)().m(function t(){return(0,s.A)().w(function(t){while(1)switch(t.n){case 0:return e.currentSymbol=e.symbol||"",e.presetSide&&(e.side=e.presetSide),e.presetPrice>0&&(e.currentPrice=e.presetPrice,e.limitPrice=e.presetPrice),t.n=1,e.loadCredentials();case 1:return t.n=2,e.loadUserInfo();case 2:return t.n=3,e.loadWatchlistSymbols();case 3:if(!e.currentSymbol){t.n=4;break}return t.n=4,e.loadPrice();case 4:if(!e.selectedCredentialId||!e.currentSymbol){t.n=5;break}return t.n=5,e.loadPosition();case 5:e.loadHistory(),e.startPolling();case 6:return t.a(2)}},t)}))()},loadUserInfo:function(){var e=this;return(0,n.A)((0,s.A)().m(function t(){var a,i,r,n;return(0,s.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(t.p=0,i=e.$store,r=(null===i||void 0===i||null===(a=i.getters)||void 0===a?void 0:a.userInfo)||{},!r||!r.id){t.n=1;break}return e.userId=r.id,t.a(2);case 1:return t.n=2,(0,y.ug)();case 2:n=t.v,n&&1===n.code&&n.data&&(e.userId=n.data.id,i&&i.commit("SET_INFO",n.data)),t.n=4;break;case 3:t.p=3,t.v;case 4:return t.a(2)}},t,null,[[0,3]])}))()},loadWatchlistSymbols:function(){var e=this;return(0,n.A)((0,s.A)().m(function t(){var a,i;return(0,s.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(e.userId){t.n=2;break}return t.n=1,e.loadUserInfo();case 1:if(e.userId){t.n=2;break}return t.a(2);case 2:return t.p=2,t.n=3,(0,b.Qo)({userid:e.userId});case 3:a=t.v,a&&1===a.code&&a.data&&(i=(a.data||[]).filter(function(e){return"crypto"===(e.market||"").toLowerCase()}).map(function(e){return{value:e.symbol||"",symbol:e.symbol||"",name:e.name||""}}).filter(function(e){return e.value}),e.symbolSuggestions=i),t.n=5;break;case 4:t.p=4,t.v;case 5:return t.a(2)}},t,null,[[2,4]])}))()},handleSymbolSearch:function(e){var t=this;this.symbolSearchTimer&&clearTimeout(this.symbolSearchTimer),e&&""!==e.trim()?this.symbolSearchTimer=setTimeout((0,n.A)((0,s.A)().m(function a(){var i;return(0,s.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return t.symbolSearching=!0,a.p=1,a.n=2,(0,b._3)({market:"Crypto",keyword:e.trim(),limit:20});case 2:i=a.v,i&&1===i.code&&i.data?t.symbolSuggestions=(i.data.items||i.data||[]).map(function(e){return{value:e.symbol||"",symbol:e.symbol||"",name:e.name||""}}).filter(function(e){return e.value}):t.symbolSuggestions=[],a.n=4;break;case 3:a.p=3,a.v,t.symbolSuggestions=[];case 4:return a.p=4,t.symbolSearching=!1,a.f(4);case 5:return a.a(2)}},a,null,[[1,3,4,5]])})),300):this.loadWatchlistSymbols()},handleSymbolChange:function(e){e&&e!==this.currentSymbol&&(this.currentSymbol=e,this.loadPrice(),this.selectedCredentialId&&this.loadPosition(),this.$emit("update:symbol",e))},loadPrice:function(){var e=this;return(0,n.A)((0,s.A)().m(function t(){var a,i;return(0,s.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(e.currentSymbol){t.n=1;break}return e.currentPrice=0,t.a(2);case 1:return t.p=1,t.n=2,(0,u.Ay)({url:"/api/market/price",method:"get",params:{market:"Crypto",symbol:e.currentSymbol}});case 2:a=t.v,a&&1===a.code&&a.data&&(i=parseFloat(a.data.price||0),i>0&&(e.currentPrice=i,0!==e.limitPrice&&e.limitPrice!==e.presetPrice||(e.limitPrice=i))),t.n=4;break;case 3:t.p=3,t.v;case 4:return t.a(2)}},t,null,[[1,3]])}))()},handleSymbolFocus:function(){0===this.symbolSuggestions.length&&this.loadWatchlistSymbols()},loadCredentials:function(){var e=this;return(0,n.A)((0,s.A)().m(function t(){var a,i,r;return(0,s.A)().w(function(t){while(1)switch(t.p=t.n){case 0:return e.credLoading=!0,t.p=1,t.n=2,(0,o.IA)();case 2:a=t.v,1===a.code&&a.data&&(i=a.data.items||a.data||[],r=["ibkr","mt5"],e.credentials=i.filter(function(e){var t=(e.exchange_id||e.name||"").toLowerCase();return!r.includes(t)}),!e.selectedCredentialId&&e.credentials.length>0&&(e.selectedCredentialId=e.credentials[0].id,e.onCredentialChange(e.selectedCredentialId))),t.n=4;break;case 3:t.p=3,t.v;case 4:return t.p=4,e.credLoading=!1,t.f(4);case 5:return t.a(2)}},t,null,[[1,3,4,5]])}))()},onCredentialChange:function(e){var t=this;return(0,n.A)((0,s.A)().m(function a(){return(0,s.A)().w(function(a){while(1)switch(a.n){case 0:return t.selectedCredentialId=e,a.n=1,t.loadBalance();case 1:return a.n=2,t.loadPosition();case 2:return a.a(2)}},a)}))()},loadBalance:function(){var e=this;return(0,n.A)((0,s.A)().m(function t(){var a;return(0,s.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(e.selectedCredentialId){t.n=1;break}return t.a(2);case 1:return t.p=1,t.n=2,m({credential_id:e.selectedCredentialId,market_type:e.marketType});case 2:a=t.v,1===a.code&&a.data&&(e.balance=a.data),t.n=4;break;case 3:t.p=3,t.v;case 4:return t.a(2)}},t,null,[[1,3]])}))()},loadPosition:function(){var e=this;return(0,n.A)((0,s.A)().m(function t(){var a;return(0,s.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(e.selectedCredentialId&&e.currentSymbol){t.n=1;break}return t.a(2);case 1:return t.p=1,t.n=2,p({credential_id:e.selectedCredentialId,symbol:e.currentSymbol,market_type:e.marketType});case 2:if(a=t.v,!(1===a.code&&a.data&&a.data.positions&&a.data.positions.length>0)){t.n=3;break}return e.currentPosition=a.data.positions[0],t.a(2,!0);case 3:return e.currentPosition=null,t.a(2,!1);case 4:t.n=6;break;case 5:return t.p=5,t.v,e.currentPosition=null,t.a(2,!1);case 6:return t.a(2)}},t,null,[[1,5]])}))()},loadPositionWithRetry:function(){var e=arguments,t=this;return(0,n.A)((0,s.A)().m(function a(){var i,r,n,c;return(0,s.A)().w(function(a){while(1)switch(a.n){case 0:return i=e.length>0&&void 0!==e[0]?e[0]:3,r=e.length>1&&void 0!==e[1]?e[1]:2e3,a.n=1,t.loadPosition();case 1:if(n=a.v,!n){a.n=2;break}return a.a(2);case 2:c=0;case 3:if(!(c0&&(this.amount=Math.floor(this.balance.available*e/100*100)/100)},handleSubmit:function(){var e=this;return(0,n.A)((0,s.A)().m(function t(){var a,i,r;return(0,s.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(e.canSubmit){t.n=1;break}return t.a(2);case 1:return e.submitting=!0,t.p=2,a={credential_id:e.selectedCredentialId,symbol:e.currentSymbol,side:e.side,order_type:e.orderType,amount:e.amount,price:"limit"===e.orderType?e.limitPrice:0,leverage:"spot"!==e.marketType?e.leverage:1,market_type:e.marketType,tp_price:e.tpPrice||0,sl_price:e.slPrice||0,source:e.source},t.n=3,d(a);case 3:if(i=t.v,1!==i.code){t.n=7;break}return e.$emit("order-success",i.data),t.n=4,e.loadBalance();case 4:return t.n=5,e.loadHistory();case 5:return t.n=6,e.loadPositionWithRetry();case 6:t.n=8;break;case 7:e.$message.error(i.msg||e.$t("quickTrade.orderFailed"));case 8:t.n=10;break;case 9:t.p=9,r=t.v,e.$message.error(r.message||e.$t("quickTrade.orderFailed"));case 10:return t.p=10,e.submitting=!1,t.f(10);case 11:return t.a(2)}},t,null,[[2,9,10,11]])}))()},handleClosePosition:function(){var e=this;return(0,n.A)((0,s.A)().m(function t(){var a,i,r;return(0,s.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(e.currentPosition&&e.selectedCredentialId){t.n=1;break}return t.a(2);case 1:return e.closingPosition=!0,t.p=2,a={credential_id:e.selectedCredentialId,symbol:e.currentSymbol,market_type:e.marketType,size:0,source:"manual"},t.n=3,v(a);case 3:if(i=t.v,1!==i.code){t.n=6;break}return e.$message.success(e.$t("quickTrade.positionClosed")),t.n=4,e.loadBalance();case 4:return t.n=5,e.loadHistory();case 5:e.currentPosition=null,setTimeout((0,n.A)((0,s.A)().m(function t(){return(0,s.A)().w(function(t){while(1)switch(t.n){case 0:return t.n=1,e.loadPosition();case 1:return t.a(2)}},t)})),2e3),t.n=7;break;case 6:e.$message.error(i.msg||e.$t("quickTrade.orderFailed"));case 7:t.n=9;break;case 8:t.p=8,r=t.v,e.$message.error(r.message||e.$t("quickTrade.orderFailed"));case 9:return t.p=9,e.closingPosition=!1,t.f(9);case 10:return t.a(2)}},t,null,[[2,8,9,10]])}))()},startPolling:function(){var e=this;this.stopPolling(),this.pollTimer=setInterval(function(){e.currentSymbol&&e.loadPrice(),e.selectedCredentialId&&e.currentSymbol&&(e.loadBalance(),e.loadPosition())},1e4)},stopPolling:function(){this.pollTimer&&(clearInterval(this.pollTimer),this.pollTimer=null)},handleClose:function(){this.$emit("close"),this.$emit("update:visible",!1)},handleHistoryCollapse:function(e){this.historyCollapsed=!e.includes("history")},formatPrice:function(e){var t=parseFloat(e||0);return Math.abs(t)>=1e4?t.toLocaleString("en-US",{minimumFractionDigits:0,maximumFractionDigits:0}):Math.abs(t)>=100?t.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2}):Math.abs(t)>=1?t.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:4}):t.toLocaleString("en-US",{minimumFractionDigits:4,maximumFractionDigits:6})},formatTime:function(e){if(!e)return"";var t=new Date(e),a=function(e){return String(e).padStart(2,"0")};return"".concat(a(t.getMonth()+1),"-").concat(a(t.getDate())," ").concat(a(t.getHours()),":").concat(a(t.getMinutes()))}},beforeDestroy:function(){this.stopPolling()}},g=f,k=a(845),_=(0,k.A)(g,i,r,!1,null,"0d547552",null),P=_.exports},42430:function(e,t,a){a.d(t,{IA:function(){return n},N6:function(){return o},PR:function(){return c},kI:function(){return l}});var i=a(76338),r=a(75769),s={list:"/api/credentials/list",get:"/api/credentials/get",create:"/api/credentials/create",delete:"/api/credentials/delete",egressIp:"/api/credentials/egress-ip"};function n(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,r.Ay)({url:s.list,method:"get",params:e})}function c(e){return(0,r.Ay)({url:s.create,method:"post",data:e})}function l(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return(0,r.Ay)({url:s.delete,method:"delete",params:(0,i.A)({id:e},t)})}function o(){return(0,r.Ay)({url:s.egressIp,method:"get"})}}}]); \ No newline at end of file diff --git a/frontend/dist/js/662.ec37067e.js b/frontend/dist/js/662.ec37067e.js deleted file mode 100644 index b42e84a..0000000 --- a/frontend/dist/js/662.ec37067e.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self["webpackChunkvue_antd_pro"]=self["webpackChunkvue_antd_pro"]||[]).push([[662],{18662:function(t,a,s){s.r(a),s.d(a,{default:function(){return D}});s(74423);var e=function(){var t=this,a=t._self._c;return a("div",{staticClass:"ai-analysis-container",class:{"theme-dark":t.isDarkTheme,embedded:t.embedded},style:{"--primary-color":t.primaryColor}},[a("div",{staticClass:"main-content-full"},[a("div",{staticClass:"top-index-bar"},[t.loadingSentiment?[t._m(0),t._m(1),t._m(2)]:[a("div",{staticClass:"indicator-box fear-greed",class:t.getFearGreedClass(t.marketData.fearGreed)},[a("span",{staticClass:"ind-label"},[t._v(t._s(t.$t("globalMarket.fearGreedShort")))]),a("span",{staticClass:"ind-value"},[t._v(t._s(t.marketData.fearGreed||"--"))])]),a("div",{staticClass:"indicator-box vix",class:t.getVixLevel(t.marketData.vix)},[a("span",{staticClass:"ind-label"},[t._v("VIX")]),a("span",{staticClass:"ind-value"},[t._v(t._s(t.marketData.vix||"--"))])]),a("div",{staticClass:"indicator-box dxy"},[a("span",{staticClass:"ind-label"},[t._v("DXY")]),a("span",{staticClass:"ind-value"},[t._v(t._s(t.marketData.dxy||"--"))])])],a("div",{staticClass:"indices-marquee"},[t.loadingIndices?[a("div",{staticClass:"indices-loading"},[a("a-icon",{attrs:{type:"loading"}}),t._v(" "+t._s(t.$t("common.loading")||"加载中...")+" ")],1)]:t.marketData.indices.length>0?[a("div",{staticClass:"marquee-track"},[t._l(t.marketData.indices,function(s){return a("div",{key:"a-"+s.symbol,staticClass:"index-item"},[a("span",{staticClass:"idx-flag"},[t._v(t._s(s.flag))]),a("span",{staticClass:"idx-symbol"},[t._v(t._s(s.symbol))]),a("span",{staticClass:"idx-price"},[t._v(t._s(t.formatPrice(s.price)))]),a("span",{staticClass:"idx-change",class:s.change>=0?"up":"down"},[a("a-icon",{attrs:{type:s.change>=0?"caret-up":"caret-down"}}),t._v(" "+t._s(Math.abs(s.change).toFixed(2))+"% ")],1)])}),t._l(t.marketData.indices,function(s){return a("div",{key:"b-"+s.symbol,staticClass:"index-item"},[a("span",{staticClass:"idx-flag"},[t._v(t._s(s.flag))]),a("span",{staticClass:"idx-symbol"},[t._v(t._s(s.symbol))]),a("span",{staticClass:"idx-price"},[t._v(t._s(t.formatPrice(s.price)))]),a("span",{staticClass:"idx-change",class:s.change>=0?"up":"down"},[a("a-icon",{attrs:{type:s.change>=0?"caret-up":"caret-down"}}),t._v(" "+t._s(Math.abs(s.change).toFixed(2))+"% ")],1)])})],2)]:[a("div",{staticClass:"indices-empty"},[t._v("--")])]],2),a("a-button",{staticClass:"refresh-btn",attrs:{type:"link",size:"small",loading:t.loadingMarket},on:{click:t.loadMarketData}},[a("a-icon",{attrs:{type:"sync",spin:t.loadingMarket}})],1)],2),a("div",{staticClass:"main-body"},[a("div",{staticClass:"left-panel"},[a("div",{staticClass:"heatmap-box"},[a("div",{staticClass:"box-header"},[a("a-radio-group",{attrs:{size:"small","button-style":"solid"},model:{value:t.heatmapType,callback:function(a){t.heatmapType=a},expression:"heatmapType"}},[a("a-radio-button",{attrs:{value:"crypto"}},[t._v(t._s(t.$t("globalMarket.cryptoHeatmap")))]),a("a-radio-button",{attrs:{value:"commodities"}},[t._v(t._s(t.$t("globalMarket.commoditiesHeatmap")))]),a("a-radio-button",{attrs:{value:"sectors"}},[t._v(t._s(t.$t("globalMarket.sectorHeatmap")))]),a("a-radio-button",{attrs:{value:"forex"}},[t._v(t._s(t.$t("globalMarket.forexHeatmap")))])],1)],1),a("div",{staticClass:"heatmap-grid"},[t.loadingHeatmap?t._l(12,function(t){return a("div",{key:"skel-"+t,staticClass:"heat-cell skeleton-cell"},[a("span",{staticClass:"skeleton-text short"}),a("span",{staticClass:"skeleton-text"})])}):t.currentHeatmap.length>0?t._l(t.currentHeatmap.slice(0,12),function(s,e){return a("div",{key:e,staticClass:"heat-cell",style:t.getHeatmapStyle(s.value)},[a("span",{staticClass:"heat-name"},[t._v(t._s(t.getHeatmapName(s)))]),s.price?a("span",{staticClass:"heat-price"},[t._v(t._s(t.formatHeatmapPrice(s.price)))]):t._e(),a("span",{staticClass:"heat-val"},[t._v(t._s(s.value>=0?"+":"")+t._s(t.formatNum(s.value))+"%")])])}):[a("div",{staticClass:"heatmap-empty"},[t._v(t._s(t.$t("common.noData")||"暂无数据"))])]],2)]),a("div",{staticClass:"calendar-box"},[a("div",{staticClass:"box-header"},[a("span",{staticClass:"box-title"},[a("a-icon",{attrs:{type:"calendar"}}),t._v(" "+t._s(t.$t("globalMarket.calendar")))],1)]),a("div",{staticClass:"calendar-list"},[t.loadingCalendar?t._l(5,function(t){return a("div",{key:"cal-skel-"+t,staticClass:"cal-item skeleton-item"},[a("span",{staticClass:"skeleton-text short"}),a("span",{staticClass:"skeleton-text short"}),a("span",{staticClass:"skeleton-text"})])}):t.marketData.calendar.length>0?t._l(t.marketData.calendar.slice(0,10),function(s){return a("div",{key:s.id,staticClass:"cal-item",class:s.importance},[a("span",{staticClass:"cal-date"},[t._v(t._s(t.formatCalendarDate(s.date)))]),a("span",{staticClass:"cal-time"},[t._v(t._s(s.time||"--:--"))]),a("span",{staticClass:"cal-flag"},[t._v(t._s(t.getCountryFlag(s.country)))]),a("span",{staticClass:"cal-name"},[t._v(t._s(t.isZhLocale?s.name:s.name_en))]),a("span",{staticClass:"cal-impact",class:t.getImpactClass(s)},["bullish"===t.getImpactClass(s)?a("a-icon",{attrs:{type:"arrow-up"}}):"bearish"===t.getImpactClass(s)?a("a-icon",{attrs:{type:"arrow-down"}}):a("a-icon",{attrs:{type:"minus"}}),t._v(" "+t._s(s.actual||s.forecast||"--")+" ")],1)])}):[a("div",{staticClass:"cal-empty"},[t._v(t._s(t.$t("globalMarket.noEvents")))])]],2)])]),a("div",{staticClass:"right-panel"},[a("div",{staticClass:"analysis-toolbar"},[a("a-select",{staticClass:"symbol-selector",attrs:{placeholder:t.$t("dashboard.analysis.empty.selectSymbol"),size:"large","show-search":"","allow-clear":"","filter-option":t.filterSymbolOption},on:{change:t.handleSymbolChange},model:{value:t.selectedSymbol,callback:function(a){t.selectedSymbol=a},expression:"selectedSymbol"}},[t._l(t.watchlist||[],function(s){return a("a-select-option",{key:"".concat(s.market,"-").concat(s.symbol),attrs:{value:"".concat(s.market,":").concat(s.symbol)}},[a("span",{staticClass:"symbol-option"},[a("a-tag",{attrs:{color:t.getMarketColor(s.market),size:"small"}},[t._v(t._s(t.getMarketName(s.market)))]),a("strong",{staticStyle:{"margin-left":"6px"}},[t._v(t._s(s.symbol))]),s.name?a("span",{staticClass:"symbol-name"},[t._v(t._s(s.name))]):t._e()],1)])}),a("a-select-option",{key:"add-stock-option",staticClass:"add-stock-option",attrs:{value:"__add_stock_option__"}},[a("div",{staticStyle:{"text-align":"center",padding:"4px 0",color:"#1890ff"}},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"plus"}}),t._v(t._s(t.$t("dashboard.analysis.watchlist.add"))+" ")],1)])],2),a("a-button",{staticClass:"analyze-button",attrs:{type:"primary",size:"large",icon:"thunderbolt",loading:t.analyzing,disabled:!t.selectedSymbol||t.analyzing},on:{click:t.startFastAnalysis}},[t._v(" "+t._s(t.$t("fastAnalysis.startAnalysis"))+" ")]),a("a-button",{staticClass:"history-button",attrs:{size:"large",icon:"history"},on:{click:function(a){t.showHistoryModal=!0,t.loadHistoryList()}}},[t._v(" "+t._s(t.$t("fastAnalysis.history"))+" ")])],1),a("div",{staticClass:"analysis-main"},[t.analysisResult||t.analyzing||t.analysisError?t._e():a("div",{staticClass:"analysis-placeholder"},[a("div",{staticClass:"placeholder-hero"},[t._m(3),a("div",{staticClass:"hero-body"},[a("div",{staticClass:"hero-badge"},[t._v("AI-POWERED")]),a("h2",{staticClass:"hero-title"},[t._v(t._s(t.$t("aiAssetAnalysis.placeholder.title")))]),a("p",{staticClass:"hero-subtitle"},[t._v(t._s(t.$t("aiAssetAnalysis.placeholder.subtitle")))]),a("div",{staticClass:"hero-stats"},[a("div",{staticClass:"hstat"},[a("div",{staticClass:"hstat-icon"},[a("a-icon",{attrs:{type:"line-chart"}})],1),a("div",{staticClass:"hstat-body"},[a("span",{staticClass:"hstat-val"},[t._v(t._s(t.$t("aiAssetAnalysis.placeholder.feature1")))]),a("span",{staticClass:"hstat-label"},[t._v(t._s(t.$t("aiAssetAnalysis.placeholder.feature1Desc")))])])]),a("div",{staticClass:"hstat"},[a("div",{staticClass:"hstat-icon"},[a("a-icon",{attrs:{type:"dashboard"}})],1),a("div",{staticClass:"hstat-body"},[a("span",{staticClass:"hstat-val"},[t._v(t._s(t.$t("aiAssetAnalysis.placeholder.feature2")))]),a("span",{staticClass:"hstat-label"},[t._v(t._s(t.$t("aiAssetAnalysis.placeholder.feature2Desc")))])])]),a("div",{staticClass:"hstat"},[a("div",{staticClass:"hstat-icon"},[a("a-icon",{attrs:{type:"apartment"}})],1),a("div",{staticClass:"hstat-body"},[a("span",{staticClass:"hstat-val"},[t._v(t._s(t.$t("aiAssetAnalysis.placeholder.feature3")))]),a("span",{staticClass:"hstat-label"},[t._v(t._s(t.$t("aiAssetAnalysis.placeholder.feature3Desc")))])])])]),a("div",{staticClass:"hero-cta"},[a("a-button",{attrs:{type:"primary",size:"large",icon:"plus"},on:{click:function(a){t.showAddStockModal=!0}}},[t._v(" "+t._s(t.$t("dashboard.analysis.watchlist.add"))+" ")]),a("a-button",{attrs:{size:"large",icon:"thunderbolt",disabled:!t.selectedSymbol},on:{click:t.startFastAnalysis}},[t._v(" "+t._s(t.$t("fastAnalysis.startAnalysis"))+" ")])],1),a("p",{staticClass:"hero-hint"},[t._v(t._s(t.$t("aiAssetAnalysis.placeholder.quickStart")))])])])]),t.analysisResult||t.analyzing||t.analysisError?a("FastAnalysisReport",{attrs:{result:t.analysisResult,loading:t.analyzing,error:t.analysisError,"error-tone":t.analysisErrorTone},on:{retry:t.startFastAnalysis}}):t._e()],1)]),a("div",{staticClass:"watchlist-panel"},[a("div",{staticClass:"panel-header"},[a("span",{staticClass:"panel-title"},[a("a-icon",{attrs:{type:"star",theme:"filled"}}),t._v(" "+t._s(t.$t("dashboard.analysis.watchlist.title")))],1),a("span",{staticClass:"panel-header-actions"},[a("a-tooltip",{attrs:{title:t.$t("aiAssetAnalysis.tasks.manage")}},[a("a-badge",{attrs:{count:t.monitors.length,offset:[-2,2],"number-style":{fontSize:"9px",minWidth:"14px",height:"14px",lineHeight:"14px",padding:"0 3px"}}},[a("a-icon",{staticClass:"panel-header-icon",attrs:{type:"unordered-list"},on:{click:function(a){t.showTaskDrawer=!0}}})],1)],1),a("a-tooltip",{attrs:{title:t.$t("aiAssetAnalysis.batch.schedule")}},[a("a-icon",{staticClass:"panel-header-icon",attrs:{type:"schedule"},on:{click:t.toggleBatchMode}})],1),a("a-icon",{staticClass:"panel-header-icon",attrs:{type:"plus"},on:{click:function(a){t.showAddStockModal=!0}}})],1)]),t.watchlist&&t.watchlist.length>0?a("div",{staticClass:"panel-summary"},[a("div",{staticClass:"summary-chip"},[a("span",{staticClass:"sc-num"},[t._v(t._s(t.watchlist.length))]),a("span",{staticClass:"sc-label"},[t._v(t._s(t.$t("aiAssetAnalysis.watchlist.totalAssets")))])]),t.watchlistPositionCount>0?a("div",{staticClass:"summary-chip"},[a("span",{staticClass:"sc-num"},[t._v(t._s(t.watchlistPositionCount))]),a("span",{staticClass:"sc-label"},[t._v(t._s(t.$t("aiAssetAnalysis.watchlist.positionCount")))])]):t._e(),t.watchlistTaskCount>0?a("div",{staticClass:"summary-chip"},[a("span",{staticClass:"sc-num"},[t._v(t._s(t.watchlistTaskCount))]),a("span",{staticClass:"sc-label"},[t._v(t._s(t.$t("aiAssetAnalysis.watchlist.taskCount")))])]):t._e(),0!==t.watchlistTotalPnl?a("div",{staticClass:"summary-chip pnl"},[a("span",{staticClass:"sc-num",class:t.watchlistTotalPnl>=0?"up":"down"},[t._v(t._s(t.watchlistTotalPnl>=0?"+":"")+t._s(t.formatNum(t.watchlistTotalPnl)))]),a("span",{staticClass:"sc-label"},[t._v("P&L")])]):t._e()]):t._e(),t.batchMode?a("div",{staticClass:"batch-bar"},[a("a-checkbox",{staticClass:"batch-all-cb",attrs:{checked:t.batchSelectedAll,indeterminate:t.batchIndeterminate},on:{change:t.onBatchSelectAll}},[t._v(" "+t._s(t.$t("aiAssetAnalysis.batch.selectAll"))+" ")]),a("a-button",{attrs:{type:"primary",size:"small",icon:"clock-circle",disabled:0===t.batchSelectedKeys.length},on:{click:t.openBatchScheduleModal}},[t._v(" "+t._s(t.$t("aiAssetAnalysis.batch.schedule"))+" "),t.batchSelectedKeys.length>0?a("span",[t._v("("+t._s(t.batchSelectedKeys.length)+")")]):t._e()]),a("a-button",{attrs:{size:"small"},on:{click:t.toggleBatchMode}},[t._v(t._s(t.$t("common.cancel")))])],1):t._e(),a("div",{staticClass:"watchlist-list"},[t._l(t.watchlist||[],function(s){var e,i,n;return a("div",{key:"wl-".concat(s.market,"-").concat(s.symbol),staticClass:"wl-card",class:{active:t.selectedSymbol==="".concat(s.market,":").concat(s.symbol)},on:{click:function(a){return t.selectWatchlistItem(s)}}},[t.batchMode?a("a-checkbox",{staticClass:"wl-card-cb",attrs:{checked:t.batchSelectedKeys.includes("".concat(s.market,":").concat(s.symbol))},on:{change:function(a){return t.onBatchItemToggle(s,a)}},nativeOn:{click:function(t){t.stopPropagation()}}}):t._e(),a("div",{staticClass:"wl-card-body",class:{"with-cb":t.batchMode}},[a("div",{staticClass:"wl-row-main"},[a("span",{staticClass:"wl-symbol"},[t._v(t._s(s.symbol))]),a("span",{staticClass:"wl-market"},[t._v(t._s(t.getMarketName(s.market)))]),a("span",{staticClass:"wl-spacer"}),t.watchlistPrices["".concat(s.market,":").concat(s.symbol)]?[a("span",{staticClass:"wl-price"},[t._v(t._s(t.formatPrice(t.watchlistPrices["".concat(s.market,":").concat(s.symbol)].price)))]),a("span",{staticClass:"wl-change",class:((null===(e=t.watchlistPrices["".concat(s.market,":").concat(s.symbol)])||void 0===e?void 0:e.change)||0)>=0?"up":"down"},[t._v(" "+t._s(((null===(i=t.watchlistPrices["".concat(s.market,":").concat(s.symbol)])||void 0===i?void 0:i.change)||0)>=0?"+":"")+t._s(t.formatNum(null===(n=t.watchlistPrices["".concat(s.market,":").concat(s.symbol)])||void 0===n?void 0:n.change))+"% ")])]:t._e()],2),t.positionSummaryMap["".concat(s.market,":").concat(s.symbol)]?a("div",{staticClass:"wl-row-pnl"},[a("span",{staticClass:"wl-pnl-qty"},[t._v(t._s(t.formatNum(t.positionSummaryMap["".concat(s.market,":").concat(s.symbol)].quantity,4))+" @ "+t._s(t.formatPrice(t.positionSummaryMap["".concat(s.market,":").concat(s.symbol)].avgEntry||0)))]),a("span",{staticClass:"wl-pnl-val",class:t.positionSummaryMap["".concat(s.market,":").concat(s.symbol)].pnl>=0?"up":"down"},[t._v(" "+t._s(t.positionSummaryMap["".concat(s.market,":").concat(s.symbol)].pnl>=0?"+":"")+t._s(t.formatNum(t.positionSummaryMap["".concat(s.market,":").concat(s.symbol)].pnl||0))+" ("+t._s(t.positionSummaryMap["".concat(s.market,":").concat(s.symbol)].pnlPercent>=0?"+":"")+t._s(t.formatNum(t.positionSummaryMap["".concat(s.market,":").concat(s.symbol)].pnlPercent||0))+"%) ")])]):t._e(),t.getMonitorMeta(s)?a("div",{staticClass:"wl-row-task"},[a("span",{staticClass:"wl-task-badge",class:t.getMonitorMeta(s).activeCount>0?"active":"paused",on:{click:function(a){return a.stopPropagation(),t.toggleStockMonitor(s)}}},[a("a-icon",{attrs:{type:t.getMonitorMeta(s).activeCount>0?"sync":"pause-circle",spin:t.getMonitorMeta(s).activeCount>0}}),t._v(" "+t._s(t.getMonitorMeta(s).activeCount>0?t.$t("aiAssetAnalysis.monitor.running"):t.$t("aiAssetAnalysis.monitor.paused"))+" ")],1),t.getMonitorMeta(s).nextRunAtText?a("span",{staticClass:"wl-task-next"},[t._v(t._s(t.getMonitorMeta(s).nextRunAtText))]):t._e()]):t._e()]),a("div",{staticClass:"wl-card-hover-actions"},[a("a-tooltip",{attrs:{title:t.$t("aiAssetAnalysis.position.quickAdd")}},[a("span",{staticClass:"wl-hover-btn",on:{click:function(a){return a.stopPropagation(),t.openPositionModal(s)}}},[a("a-icon",{attrs:{type:"wallet"}})],1)]),a("a-tooltip",{attrs:{title:t.$t("aiAssetAnalysis.monitor.quickTask")}},[a("span",{staticClass:"wl-hover-btn",on:{click:function(a){return a.stopPropagation(),t.openMonitorModal(s)}}},[a("a-icon",{attrs:{type:"clock-circle"}})],1)]),a("span",{staticClass:"wl-hover-btn danger",on:{click:function(a){return a.stopPropagation(),t.removeFromWatchlist(s)}}},[a("a-icon",{attrs:{type:"delete"}})],1)],1)],1)}),t.watchlist&&0!==t.watchlist.length?t._e():a("div",{staticClass:"watchlist-empty"},[a("div",{staticClass:"we-icon"},[a("a-icon",{attrs:{type:"star"}})],1),a("p",[t._v(t._s(t.$t("dashboard.analysis.empty.noWatchlist")))]),a("a-button",{attrs:{type:"primary",size:"small",icon:"plus"},on:{click:function(a){t.showAddStockModal=!0}}},[t._v(" "+t._s(t.$t("dashboard.analysis.watchlist.add"))+" ")])],1)],2)])])]),a("a-modal",{attrs:{title:t.$t("dashboard.analysis.modal.addStock.title"),visible:t.showAddStockModal,confirmLoading:t.addingStock,width:"600px",wrapClassName:t.isDarkTheme?"qd-dark-modal":"",okText:t.$t("dashboard.analysis.modal.addStock.confirm"),cancelText:t.$t("dashboard.analysis.modal.addStock.cancel")},on:{ok:t.handleAddStock,cancel:t.handleCloseAddStockModal}},[a("div",{staticClass:"add-stock-modal-content"},[a("a-tabs",{staticClass:"market-tabs",on:{change:t.handleMarketTabChange},model:{value:t.selectedMarketTab,callback:function(a){t.selectedMarketTab=a},expression:"selectedMarketTab"}},t._l(t.marketTypes,function(s){return a("a-tab-pane",{key:s.value,attrs:{tab:t.$t(s.i18nKey||"dashboard.analysis.market.".concat(s.value))}})}),1),a("div",{staticClass:"symbol-search-section"},[a("a-input-search",{attrs:{placeholder:t.$t("dashboard.analysis.modal.addStock.searchOrInputPlaceholder"),loading:t.searchingSymbols,size:"large","allow-clear":""},on:{search:t.handleSearchOrInput,change:t.handleSymbolSearchInput},model:{value:t.symbolSearchKeyword,callback:function(a){t.symbolSearchKeyword=a},expression:"symbolSearchKeyword"}},[a("a-button",{attrs:{slot:"enterButton",type:"primary",icon:"search"},slot:"enterButton"},[t._v(" "+t._s(t.$t("dashboard.analysis.modal.addStock.search"))+" ")])],1)],1),t.symbolSearchResults.length>0?a("div",{staticClass:"search-results-section"},[a("div",{staticClass:"section-title"},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"search"}}),t._v(" "+t._s(t.$t("dashboard.analysis.modal.addStock.searchResults"))+" ")],1),a("a-list",{staticClass:"symbol-list",attrs:{"data-source":t.symbolSearchResults,loading:t.searchingSymbols,size:"small"},scopedSlots:t._u([{key:"renderItem",fn:function(s){return a("a-list-item",{staticClass:"symbol-list-item",on:{click:function(a){return t.selectSymbol(s)}}},[a("a-list-item-meta",[a("template",{slot:"title"},[a("div",{staticClass:"symbol-item-content"},[a("span",{staticClass:"symbol-code"},[t._v(t._s(s.symbol))]),a("span",{staticClass:"symbol-name"},[t._v(t._s(s.name))]),s.exchange?a("a-tag",{staticStyle:{"margin-left":"8px"},attrs:{size:"small",color:"blue"}},[t._v(" "+t._s(s.exchange)+" ")]):t._e()],1)])],2)],1)}}],null,!1,1074844145)})],1):t._e(),a("div",{staticClass:"hot-symbols-section"},[a("div",{staticClass:"section-title"},[a("a-icon",{staticStyle:{color:"#ff4d4f","margin-right":"4px"},attrs:{type:"fire"}}),t._v(" "+t._s(t.$t("dashboard.analysis.modal.addStock.hotSymbols"))+" ")],1),a("a-spin",{attrs:{spinning:t.loadingHotSymbols}},[t.hotSymbols.length>0?a("a-list",{staticClass:"symbol-list",attrs:{"data-source":t.hotSymbols,size:"small"},scopedSlots:t._u([{key:"renderItem",fn:function(s){return a("a-list-item",{staticClass:"symbol-list-item",on:{click:function(a){return t.selectSymbol(s)}}},[a("a-list-item-meta",[a("template",{slot:"title"},[a("div",{staticClass:"symbol-item-content"},[a("span",{staticClass:"symbol-code"},[t._v(t._s(s.symbol))]),a("span",{staticClass:"symbol-name"},[t._v(t._s(s.name))]),s.exchange?a("a-tag",{staticStyle:{"margin-left":"8px"},attrs:{size:"small",color:"orange"}},[t._v(" "+t._s(s.exchange)+" ")]):t._e()],1)])],2)],1)}}],null,!1,2177647935)}):a("a-empty",{attrs:{description:t.$t("dashboard.analysis.modal.addStock.noHotSymbols"),image:!1}})],1)],1),t.selectedSymbolForAdd?a("div",{staticClass:"selected-symbol-section"},[a("a-alert",{attrs:{message:t.$t("dashboard.analysis.modal.addStock.selectedSymbol"),type:"info","show-icon":"",closable:""},on:{close:function(a){t.selectedSymbolForAdd=null}}},[a("template",{slot:"description"},[a("div",{staticClass:"selected-symbol-info"},[a("a-tag",{staticStyle:{"margin-right":"8px"},attrs:{color:t.getMarketColor(t.selectedSymbolForAdd.market)}},[t._v(" "+t._s(t.$t("dashboard.analysis.market.".concat(t.selectedSymbolForAdd.market)))+" ")]),a("strong",[t._v(t._s(t.selectedSymbolForAdd.symbol))]),t.selectedSymbolForAdd.name?a("span",{staticStyle:{color:"#999","margin-left":"8px"}},[t._v(t._s(t.selectedSymbolForAdd.name))]):t._e()],1)])],2)],1):t._e()],1)]),a("a-modal",{attrs:{visible:t.showPositionModal,title:"".concat(t.$i18n&&"zh-CN"===t.$i18n.locale?"创建持仓(虚拟仓)":"Create Position (Virtual)"," - ").concat(t.targetStockForOps?t.targetStockForOps.symbol:""),wrapClassName:t.isDarkTheme?"qd-dark-modal":""},on:{ok:t.savePosition,cancel:function(a){t.showPositionModal=!1}}},[a("a-form",{attrs:{layout:"vertical"}},[a("a-form-item",{attrs:{label:t.$t("portfolio.positions.side")||"Direction"}},[a("a-select",{model:{value:t.positionForm.side,callback:function(a){t.$set(t.positionForm,"side",a)},expression:"positionForm.side"}},[a("a-select-option",{attrs:{value:"long"}},[t._v(t._s(t.$t("portfolio.positions.long")||"Long"))]),a("a-select-option",{attrs:{value:"short"}},[t._v(t._s(t.$t("portfolio.positions.short")||"Short"))])],1)],1),a("a-form-item",{attrs:{label:t.$i18n&&"zh-CN"===t.$i18n.locale?"数量":"Quantity"}},[a("a-input-number",{staticStyle:{width:"100%"},attrs:{min:0,step:.01},model:{value:t.positionForm.quantity,callback:function(a){t.$set(t.positionForm,"quantity",a)},expression:"positionForm.quantity"}})],1),a("a-form-item",{attrs:{label:t.$i18n&&"zh-CN"===t.$i18n.locale?"买入单价":"Entry Price"}},[a("a-input-number",{staticStyle:{width:"100%"},attrs:{min:0,step:.01},model:{value:t.positionForm.entryPrice,callback:function(a){t.$set(t.positionForm,"entryPrice",a)},expression:"positionForm.entryPrice"}})],1)],1)],1),a("a-modal",{attrs:{visible:t.showMonitorModal,title:"".concat(t.$t("aiAssetAnalysis.monitor.quickTask")," - ").concat(t.targetStockForOps?t.targetStockForOps.symbol:""),wrapClassName:t.isDarkTheme?"qd-dark-modal":""},on:{ok:t.saveMonitorTask,cancel:function(a){t.showMonitorModal=!1}}},[a("a-form",{attrs:{layout:"vertical"}},[a("a-form-item",{attrs:{label:t.$t("aiAssetAnalysis.batch.intervalLabel")}},[a("a-select",{staticStyle:{width:"100%"},model:{value:t.monitorForm.interval_min,callback:function(a){t.$set(t.monitorForm,"interval_min",a)},expression:"monitorForm.interval_min"}},[a("a-select-option",{attrs:{value:60}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval1h")))]),a("a-select-option",{attrs:{value:240}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval4h")))]),a("a-select-option",{attrs:{value:720}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval12h")))]),a("a-select-option",{attrs:{value:1440}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval24h")))])],1)],1),a("a-form-item",{attrs:{label:t.$t("aiAssetAnalysis.batch.notifyLabel")}},[a("a-checkbox-group",{staticStyle:{width:"100%"},model:{value:t.monitorForm.notify_channels,callback:function(a){t.$set(t.monitorForm,"notify_channels",a)},expression:"monitorForm.notify_channels"}},[a("a-row",{attrs:{gutter:8}},[a("a-col",{attrs:{span:8}},[a("a-checkbox",{attrs:{value:"email"}},[a("a-icon",{attrs:{type:"mail"}}),t._v(" Email")],1)],1),a("a-col",{attrs:{span:8}},[a("a-checkbox",{attrs:{value:"telegram"}},[a("a-icon",{attrs:{type:"send"}}),t._v(" Telegram")],1)],1),a("a-col",{attrs:{span:8}},[a("a-checkbox",{attrs:{value:"webhook"}},[a("a-icon",{attrs:{type:"api"}}),t._v(" Webhook")],1)],1)],1)],1)],1),a("a-alert",{attrs:{message:t.$t("aiAssetAnalysis.monitor.tip"),type:"info","show-icon":""}})],1)],1),a("a-modal",{attrs:{visible:t.showBatchScheduleModal,title:t.$t("aiAssetAnalysis.batch.scheduleTitle"),confirmLoading:t.batchRunning,width:"520px",wrapClassName:t.isDarkTheme?"qd-dark-modal":""},on:{ok:t.saveBatchSchedule,cancel:function(a){t.showBatchScheduleModal=!1}}},[a("div",{staticClass:"batch-modal-summary"},[a("p",[t._v(t._s(t.$t("aiAssetAnalysis.batch.scheduleDesc",{count:t.batchSelectedKeys.length})))]),a("div",{staticClass:"batch-symbols-preview"},t._l(t.batchSelectedKeys,function(s){return a("a-tag",{key:s,staticStyle:{"margin-bottom":"4px"},attrs:{color:"blue"}},[t._v(t._s(s.split(":")[1]))])}),1)]),a("a-form",{attrs:{layout:"vertical"}},[a("a-form-item",{attrs:{label:t.$t("aiAssetAnalysis.batch.intervalLabel")}},[a("a-select",{staticStyle:{width:"100%"},model:{value:t.batchScheduleForm.interval_min,callback:function(a){t.$set(t.batchScheduleForm,"interval_min",a)},expression:"batchScheduleForm.interval_min"}},[a("a-select-option",{attrs:{value:60}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval1h")))]),a("a-select-option",{attrs:{value:240}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval4h")))]),a("a-select-option",{attrs:{value:720}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval12h")))]),a("a-select-option",{attrs:{value:1440}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval24h")))])],1)],1),a("a-form-item",{attrs:{label:t.$t("aiAssetAnalysis.batch.notifyLabel")}},[a("a-checkbox-group",{staticStyle:{width:"100%"},model:{value:t.batchScheduleForm.notify_channels,callback:function(a){t.$set(t.batchScheduleForm,"notify_channels",a)},expression:"batchScheduleForm.notify_channels"}},[a("a-row",{attrs:{gutter:8}},[a("a-col",{attrs:{span:8}},[a("a-checkbox",{attrs:{value:"email"}},[a("a-icon",{attrs:{type:"mail"}}),t._v(" Email")],1)],1),a("a-col",{attrs:{span:8}},[a("a-checkbox",{attrs:{value:"telegram"}},[a("a-icon",{attrs:{type:"send"}}),t._v(" Telegram")],1)],1),a("a-col",{attrs:{span:8}},[a("a-checkbox",{attrs:{value:"webhook"}},[a("a-icon",{attrs:{type:"api"}}),t._v(" Webhook")],1)],1)],1)],1)],1)],1),a("a-alert",{staticStyle:{"margin-top":"8px"},attrs:{message:t.$t("aiAssetAnalysis.batch.scheduleTip"),type:"info","show-icon":""}})],1),a("a-drawer",{attrs:{title:t.$t("aiAssetAnalysis.tasks.manage"),visible:t.showTaskDrawer,width:"420",placement:"right",wrapClassName:t.isDarkTheme?"qd-dark-drawer":""},on:{close:function(a){t.showTaskDrawer=!1}}},[0===t.monitors.length?a("div",{staticClass:"task-drawer-empty"},[a("a-icon",{staticStyle:{"font-size":"40px",color:"#ccc"},attrs:{type:"inbox"}}),a("p",[t._v(t._s(t.$t("aiAssetAnalysis.tasks.empty")))])],1):a("div",{staticClass:"task-drawer-list"},t._l(t.monitors,function(s){return a("div",{key:s.id,staticClass:"task-item"},[a("div",{staticClass:"task-item-header"},[a("span",{staticClass:"task-item-name"},[t._v(t._s(s.name||"AI Task"))]),a("a-tag",{attrs:{color:s.is_active?"green":"default",size:"small"}},[t._v(" "+t._s(s.is_active?t.$t("aiAssetAnalysis.monitor.running"):t.$t("aiAssetAnalysis.monitor.paused"))+" ")])],1),a("div",{staticClass:"task-item-meta"},[s.config&&s.config.run_interval_minutes?a("span",[a("a-icon",{attrs:{type:"clock-circle"}}),t._v(" "+t._s(t.formatIntervalText(s.config.run_interval_minutes))+" ")],1):t._e(),s.next_run_at?a("span",[a("a-icon",{attrs:{type:"calendar"}}),t._v(" "+t._s(t._formatNextRunText(s.next_run_at))+" ")],1):t._e()]),a("div",{staticClass:"task-item-actions"},[a("a-button",{attrs:{size:"small",type:s.is_active?"default":"primary",icon:"poweroff"},on:{click:function(a){return t.handleToggleTask(s)}}},[t._v(" "+t._s(s.is_active?t.$t("aiAssetAnalysis.tasks.pause"):t.$t("aiAssetAnalysis.tasks.resume"))+" ")]),a("a-button",{attrs:{size:"small",icon:"edit"},on:{click:function(a){return t.handleEditTask(s)}}},[t._v(t._s(t.$t("aiAssetAnalysis.tasks.edit")))]),a("a-popconfirm",{attrs:{title:t.$t("aiAssetAnalysis.tasks.deleteConfirm"),okText:t.$t("common.confirm"),cancelText:t.$t("common.cancel")},on:{confirm:function(a){return t.handleDeleteTask(s)}}},[a("a-button",{attrs:{size:"small",type:"danger",icon:"delete"}},[t._v(t._s(t.$t("aiAssetAnalysis.tasks.delete")))])],1)],1)])}),0)]),a("a-modal",{attrs:{visible:t.showEditTaskModal,title:t.$t("aiAssetAnalysis.tasks.edit"),confirmLoading:t.editTaskLoading,wrapClassName:t.isDarkTheme?"qd-dark-modal":""},on:{ok:t.saveEditTask,cancel:function(a){t.showEditTaskModal=!1}}},[t.editTaskForm?a("a-form",{attrs:{layout:"vertical"}},[a("a-form-item",{attrs:{label:t.$t("aiAssetAnalysis.tasks.name")}},[a("a-input",{model:{value:t.editTaskForm.name,callback:function(a){t.$set(t.editTaskForm,"name",a)},expression:"editTaskForm.name"}})],1),a("a-form-item",{attrs:{label:t.$t("aiAssetAnalysis.batch.intervalLabel")}},[a("a-select",{staticStyle:{width:"100%"},model:{value:t.editTaskForm.interval_min,callback:function(a){t.$set(t.editTaskForm,"interval_min",a)},expression:"editTaskForm.interval_min"}},[a("a-select-option",{attrs:{value:60}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval1h")))]),a("a-select-option",{attrs:{value:240}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval4h")))]),a("a-select-option",{attrs:{value:720}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval12h")))]),a("a-select-option",{attrs:{value:1440}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval24h")))])],1)],1),a("a-form-item",{attrs:{label:t.$t("aiAssetAnalysis.batch.notifyLabel")}},[a("a-checkbox-group",{staticStyle:{width:"100%"},model:{value:t.editTaskForm.notify_channels,callback:function(a){t.$set(t.editTaskForm,"notify_channels",a)},expression:"editTaskForm.notify_channels"}},[a("a-row",{attrs:{gutter:8}},[a("a-col",{attrs:{span:8}},[a("a-checkbox",{attrs:{value:"email"}},[a("a-icon",{attrs:{type:"mail"}}),t._v(" Email")],1)],1),a("a-col",{attrs:{span:8}},[a("a-checkbox",{attrs:{value:"telegram"}},[a("a-icon",{attrs:{type:"send"}}),t._v(" Telegram")],1)],1),a("a-col",{attrs:{span:8}},[a("a-checkbox",{attrs:{value:"webhook"}},[a("a-icon",{attrs:{type:"api"}}),t._v(" Webhook")],1)],1)],1)],1)],1)],1):t._e()],1),a("a-modal",{attrs:{title:t.$t("dashboard.analysis.modal.history.title"),visible:t.showHistoryModal,footer:null,width:"800px",bodyStyle:{maxHeight:"60vh",overflowY:"auto"},wrapClassName:t.isDarkTheme?"qd-dark-modal":""},on:{cancel:function(a){t.showHistoryModal=!1}}},[a("a-spin",{attrs:{spinning:t.historyLoading}},[a("a-list",{attrs:{"data-source":t.historyList,pagination:{current:t.historyPage,pageSize:t.historyPageSize,total:t.historyTotal,onChange:function(a){t.historyPage=a,t.loadHistoryList()},showSizeChanger:!0,pageSizeOptions:["10","20","50"],onShowSizeChange:function(a,s){t.historyPageSize=s,t.historyPage=1,t.loadHistoryList()}}},scopedSlots:t._u([{key:"renderItem",fn:function(s){return a("a-list-item",{},[a("a-list-item-meta",[a("template",{slot:"title"},[a("div",{staticStyle:{display:"flex","align-items":"center","justify-content":"space-between"}},[a("div",[a("a-tag",{staticStyle:{"margin-right":"8px"},attrs:{color:t.getMarketColor(s.market)}},[t._v(" "+t._s(t.getMarketName(s.market))+" ")]),a("strong",[t._v(t._s(s.symbol))]),a("a-tag",{staticStyle:{"margin-left":"12px"},attrs:{color:"BUY"===s.decision?"green":"SELL"===s.decision?"red":"blue"}},[t._v(" "+t._s(s.decision)+" ")]),a("a-tag",{staticStyle:{"margin-left":"8px"},attrs:{color:t.getStatusColor(s.status||"completed")}},[t._v(" "+t._s(t.getStatusText(s.status||"completed"))+" ")]),a("span",{staticStyle:{color:"#999","margin-left":"8px","font-size":"12px"}},[t._v(" "+t._s(t.$t("fastAnalysis.confidence"))+": "+t._s(s.confidence)+"% ")])],1),a("div",[a("a-button",{attrs:{type:"link",size:"small",icon:"eye",disabled:"processing"===(s.status||"").toLowerCase()},on:{click:function(a){return t.viewHistoryResult(s)}}},[t._v(" "+t._s(t.$t("dashboard.analysis.modal.history.viewResult"))+" ")]),a("a-popconfirm",{attrs:{title:t.$t("dashboard.analysis.modal.history.deleteConfirm"),"ok-text":t.$t("common.confirm"),"cancel-text":t.$t("common.cancel")},on:{confirm:function(a){return t.deleteHistoryItem(s)}}},[a("a-button",{staticStyle:{color:"#ff4d4f"},attrs:{type:"link",size:"small",icon:"delete"}},[t._v(" "+t._s(t.$t("dashboard.analysis.modal.history.delete"))+" ")])],1)],1)])]),a("template",{slot:"description"},[a("div",{staticStyle:{color:"#666","font-size":"12px"}},[s.price?a("span",[t._v("$"+t._s(t.formatNumber(s.price)))]):t._e(),s.summary?a("span",{staticStyle:{"margin-left":"8px"}},[t._v(t._s(s.summary.substring(0,80))+t._s(s.summary.length>80?"...":""))]):t._e()]),s.created_at?a("div",{staticStyle:{color:"#999","font-size":"12px","margin-top":"4px"}},[t._v(" "+t._s(t.formatIsoTime(s.created_at))+" ")]):t._e()])],2)],1)}}])}),t.historyLoading||0!==t.historyList.length?t._e():a("a-empty",{attrs:{description:t.$t("dashboard.analysis.empty.noHistory")}})],1)],1)],1)},i=[function(){var t=this,a=t._self._c;return a("div",{staticClass:"indicator-box skeleton-box"},[a("span",{staticClass:"skeleton-text short"}),a("span",{staticClass:"skeleton-text"})])},function(){var t=this,a=t._self._c;return a("div",{staticClass:"indicator-box skeleton-box"},[a("span",{staticClass:"skeleton-text short"}),a("span",{staticClass:"skeleton-text"})])},function(){var t=this,a=t._self._c;return a("div",{staticClass:"indicator-box skeleton-box"},[a("span",{staticClass:"skeleton-text short"}),a("span",{staticClass:"skeleton-text"})])},function(){var t=this,a=t._self._c;return a("div",{staticClass:"hero-bg"},[a("div",{staticClass:"hero-bg-circle c1"}),a("div",{staticClass:"hero-bg-circle c2"}),a("div",{staticClass:"hero-bg-grid"})])}],n=s(44735),r=s(21560),o=s(57532),l=s(2403),c=s(15863),d=s(81127),u=s(56252),m=s(76338),h=s(95353),p=s(505),v=s(35038),y=s(24364),f=s(75769),b="/api/fast-analysis";function g(t){return(0,f.Ay)({url:"".concat(b,"/analyze"),method:"post",data:t,timeout:3e5})}function _(t){return(0,f.Ay)({url:"".concat(b,"/history/all"),method:"get",params:t})}function k(t){return(0,f.Ay)({url:"".concat(b,"/history/").concat(t),method:"delete"})}function C(t){return(0,f.Ay)({url:"".concat(b,"/feedback"),method:"post",data:t})}var A=s(44146),S=function(){var t,a,s,e,i,n,r,o,l,c,d,u,m,h,p,v,y,f,b,g,_,k,C=this,A=C._self._c;return A("div",{staticClass:"fast-analysis-report",class:{"theme-dark":C.isDarkTheme}},[C.loading?A("div",{staticClass:"loading-container"},[A("div",{staticClass:"loading-content-pro"},[A("div",{staticClass:"loading-header"},[A("a-icon",{staticClass:"loading-icon-pro",attrs:{type:"thunderbolt"}}),A("span",{staticClass:"loading-title"},[C._v(C._s(C.$t("fastAnalysis.analyzing")))])],1),A("div",{staticClass:"progress-wrapper"},[A("a-progress",{attrs:{percent:C.progressPercent,showInfo:!1,strokeColor:"#1890ff",strokeWidth:8}}),A("span",{staticClass:"progress-text"},[C._v(C._s(C.formatProgress(C.progressPercent))+"%")])],1),A("div",{staticClass:"current-step"},[A("a-icon",{attrs:{type:"loading",spin:""}}),A("span",[C._v(C._s(C.currentStepText))])],1),A("div",{staticClass:"steps-list"},[A("div",{staticClass:"step-item",class:{done:C.step>1,active:1===C.step}},[A("span",{staticClass:"step-dot"}),A("span",{staticClass:"step-text"},[C._v(C._s(C.$t("fastAnalysis.step1")||"获取实时数据"))]),C.step>1?A("a-icon",{staticClass:"step-check",attrs:{type:"check"}}):C._e()],1),A("div",{staticClass:"step-item",class:{done:C.step>2,active:2===C.step}},[A("span",{staticClass:"step-dot"}),A("span",{staticClass:"step-text"},[C._v(C._s(C.$t("fastAnalysis.step2")||"计算技术指标"))]),C.step>2?A("a-icon",{staticClass:"step-check",attrs:{type:"check"}}):C._e()],1),A("div",{staticClass:"step-item",class:{done:C.step>3,active:3===C.step}},[A("span",{staticClass:"step-dot"}),A("span",{staticClass:"step-text"},[C._v(C._s(C.$t("fastAnalysis.step3")||"AI深度分析"))]),C.step>3?A("a-icon",{staticClass:"step-check",attrs:{type:"check"}}):C._e()],1),A("div",{staticClass:"step-item",class:{done:C.step>4,active:4===C.step}},[A("span",{staticClass:"step-dot"}),A("span",{staticClass:"step-text"},[C._v(C._s(C.$t("fastAnalysis.step4")||"生成报告"))]),C.step>4?A("a-icon",{staticClass:"step-check",attrs:{type:"check"}}):C._e()],1)]),A("div",{staticClass:"loading-footer"},[A("span",{staticClass:"elapsed-time"},[C._v(C._s(C.elapsedTimeText))])])])]):C.error?A("div",{staticClass:"error-container"},[A("a-result",{attrs:{status:"warning"===C.errorTone?"warning":"error",title:C.errorTitle,"sub-title":C.error},scopedSlots:C._u([{key:"extra",fn:function(){return[A("a-button",{attrs:{type:"primary"},on:{click:function(t){return C.$emit("retry")}}},[C._v(" "+C._s(C.$t("fastAnalysis.retry"))+" ")])]},proxy:!0}])})],1):C.result?A("div",{staticClass:"result-container"},[A("div",{staticClass:"decision-card",class:C.decisionClass},[A("div",{staticClass:"decision-main"},[A("div",{staticClass:"decision-badge"},[A("a-icon",{attrs:{type:C.decisionIcon}}),A("span",{staticClass:"decision-text"},[C._v(C._s(C.result.decision))])],1),A("div",{staticClass:"confidence-ring"},[A("a-progress",{attrs:{type:"circle",percent:C.result.confidence,width:80,strokeColor:C.confidenceColor},scopedSlots:C._u([{key:"format",fn:function(t){return[A("span",{staticClass:"confidence-value"},[C._v(C._s(t)+"%")])]}}])}),A("div",{staticClass:"confidence-label"},[C._v(C._s(C.$t("fastAnalysis.confidence")))])],1)]),A("div",{staticClass:"decision-summary"},[C._v(" "+C._s(C.result.summary)+" ")]),C.consensusBlock?A("div",{staticClass:"consensus-strip"},[A("div",{staticClass:"consensus-strip-title"},[A("a-icon",{attrs:{type:"cluster"}}),C._v(" "+C._s(C.$t("fastAnalysis.consensusTitle"))+" ")],1),A("div",{staticClass:"consensus-strip-metrics"},[A("span",{staticClass:"cm-item"},[A("em",[C._v(C._s(C.$t("fastAnalysis.consensusDecision")))]),C._v(" "+C._s(C.consensusBlock.consensus_decision)+" ")]),A("span",{staticClass:"cm-item"},[A("em",[C._v(C._s(C.$t("fastAnalysis.consensusScore")))]),C._v(" "+C._s(C.formatConsensusNum(C.consensusBlock.consensus_score))+" ")]),null!=C.consensusBlock.agreement_ratio?A("span",{staticClass:"cm-item"},[A("em",[C._v(C._s(C.$t("fastAnalysis.consensusAgreement")))]),C._v(" "+C._s(C.formatAgreementPct(C.consensusBlock.agreement_ratio))+" ")]):C._e()])]):C._e()]),A("div",{staticClass:"price-info-row"},[A("div",{staticClass:"price-card current"},[A("div",{staticClass:"price-label"},[C._v(C._s(C.$t("fastAnalysis.currentPrice")))]),A("div",{staticClass:"price-value"},[C._v("$"+C._s(C.formatPrice(null===(t=C.result.market_data)||void 0===t?void 0:t.current_price)))]),A("div",{staticClass:"price-change",class:(null===(a=C.result.market_data)||void 0===a?void 0:a.change_24h)>=0?"positive":"negative"},[C._v(" "+C._s((null===(s=C.result.market_data)||void 0===s?void 0:s.change_24h)>=0?"+":"")+C._s(C.formatNumber(null===(e=C.result.market_data)||void 0===e?void 0:e.change_24h,2))+"% ")])]),A("div",{staticClass:"price-card entry"},[A("div",{staticClass:"price-label"},[C._v(C._s(C.$t("fastAnalysis.entryPrice")))]),A("div",{staticClass:"price-value"},[C._v("$"+C._s(C.formatPrice(C.tradingPlan.entry_price)))])]),A("div",{staticClass:"price-card stop"},[A("div",{staticClass:"price-label"},[C._v(C._s(C.$t("fastAnalysis.stopLoss")))]),A("div",{staticClass:"price-value negative"},[C._v("$"+C._s(C.formatPrice(C.tradingPlan.stop_loss)))]),A("div",{staticClass:"price-hint"},[A("a-tooltip",{attrs:{title:C.stopLossHintText}},[A("a-icon",{attrs:{type:"info-circle"}}),C._v(" "+C._s(C.$t("fastAnalysis.atrBased"))+" ")],1)],1)]),A("div",{staticClass:"price-card target"},[A("div",{staticClass:"price-label"},[C._v(C._s(C.$t("fastAnalysis.takeProfit")))]),A("div",{staticClass:"price-value positive"},[C._v("$"+C._s(C.formatPrice(C.tradingPlan.take_profit)))]),A("div",{staticClass:"price-hint"},[A("a-tooltip",{attrs:{title:C.takeProfitHintText}},[A("a-icon",{attrs:{type:"info-circle"}}),C._v(" "+C._s(C.$t("fastAnalysis.atrBased"))+" ")],1)],1)])]),C.trendOutlookBlocks.length||C.trendOutlookSummaryText?A("div",{staticClass:"trend-outlook-card"},[A("div",{staticClass:"trend-outlook-header"},[A("a-icon",{attrs:{type:"calendar"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.trendOutlookTitle")))])],1),C.trendOutlookSummaryText?A("div",{staticClass:"trend-outlook-summary"},[C._v(" "+C._s(C.trendOutlookSummaryText)+" ")]):C._e(),C.trendOutlookBlocks.length?A("div",{staticClass:"trend-outlook-grid"},C._l(C.trendOutlookBlocks,function(t){return A("div",{key:t.key,staticClass:"trend-outlook-item"},[A("div",{staticClass:"to-label"},[C._v(C._s(t.label))]),A("div",{staticClass:"to-trend",class:C.outlookTrendClass(t.trend)},[C._v(" "+C._s(C.formatOutlookTrend(t.trend))+" ")]),A("div",{staticClass:"to-meta"},[A("span",{staticClass:"to-score"},[C._v(C._s(null!=t.score?t.score:"--"))]),A("span",{staticClass:"to-str"},[C._v(C._s(t.strength||"--"))])])])}),0):C._e()]):C._e(),A("div",{staticClass:"scores-row"},[A("div",{staticClass:"score-item"},[A("div",{staticClass:"score-header"},[A("a-icon",{attrs:{type:"line-chart"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.technical")))])],1),A("a-progress",{attrs:{percent:(null===(i=C.result.scores)||void 0===i?void 0:i.technical)||50,strokeColor:C.getScoreColor(null===(n=C.result.scores)||void 0===n?void 0:n.technical),showInfo:!1}}),A("div",{staticClass:"score-value"},[C._v(C._s((null===(r=C.result.scores)||void 0===r?void 0:r.technical)||50))])],1),A("div",{staticClass:"score-item"},[A("div",{staticClass:"score-header"},[A("a-icon",{attrs:{type:"bank"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.fundamental")))])],1),A("a-progress",{attrs:{percent:(null===(o=C.result.scores)||void 0===o?void 0:o.fundamental)||50,strokeColor:C.getScoreColor(null===(l=C.result.scores)||void 0===l?void 0:l.fundamental),showInfo:!1}}),A("div",{staticClass:"score-value"},[C._v(C._s((null===(c=C.result.scores)||void 0===c?void 0:c.fundamental)||50))])],1),A("div",{staticClass:"score-item"},[A("div",{staticClass:"score-header"},[A("a-icon",{attrs:{type:"heart"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.sentiment")))])],1),A("a-progress",{attrs:{percent:(null===(d=C.result.scores)||void 0===d?void 0:d.sentiment)||50,strokeColor:C.getScoreColor(null===(u=C.result.scores)||void 0===u?void 0:u.sentiment),showInfo:!1}}),A("div",{staticClass:"score-value"},[C._v(C._s((null===(m=C.result.scores)||void 0===m?void 0:m.sentiment)||50))])],1),A("div",{staticClass:"score-item overall"},[A("div",{staticClass:"score-header"},[A("a-icon",{attrs:{type:"dashboard"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.overall")))])],1),A("a-progress",{attrs:{percent:(null===(h=C.result.scores)||void 0===h?void 0:h.overall)||50,strokeColor:C.getScoreColor(null===(p=C.result.scores)||void 0===p?void 0:p.overall),showInfo:!1}}),A("div",{staticClass:"score-value"},[C._v(C._s((null===(v=C.result.scores)||void 0===v?void 0:v.overall)||50))])],1)]),C.result.detailed_analysis?A("div",{staticClass:"detailed-analysis"},[C.result.detailed_analysis.technical?A("div",{staticClass:"analysis-card technical"},[A("div",{staticClass:"analysis-card-header"},[A("a-icon",{attrs:{type:"line-chart"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.technicalAnalysis")))]),A("a-tag",{attrs:{color:C.getScoreTagColor(null===(y=C.result.scores)||void 0===y?void 0:y.technical)}},[C._v(" "+C._s((null===(f=C.result.scores)||void 0===f?void 0:f.technical)||50)+"分 ")])],1),A("div",{staticClass:"analysis-card-content"},[C._v(" "+C._s(C.result.detailed_analysis.technical)+" ")])]):C._e(),C.result.detailed_analysis.fundamental?A("div",{staticClass:"analysis-card fundamental"},[A("div",{staticClass:"analysis-card-header"},[A("a-icon",{attrs:{type:"bank"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.fundamentalAnalysis")))]),A("a-tag",{attrs:{color:C.getScoreTagColor(null===(b=C.result.scores)||void 0===b?void 0:b.fundamental)}},[C._v(" "+C._s((null===(g=C.result.scores)||void 0===g?void 0:g.fundamental)||50)+"分 ")])],1),A("div",{staticClass:"analysis-card-content"},[C._v(" "+C._s(C.result.detailed_analysis.fundamental)+" ")])]):C._e(),C.result.detailed_analysis.sentiment?A("div",{staticClass:"analysis-card sentiment"},[A("div",{staticClass:"analysis-card-header"},[A("a-icon",{attrs:{type:"heart"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.sentimentAnalysis")))]),A("a-tag",{attrs:{color:C.getScoreTagColor(null===(_=C.result.scores)||void 0===_?void 0:_.sentiment)}},[C._v(" "+C._s((null===(k=C.result.scores)||void 0===k?void 0:k.sentiment)||50)+"分 ")])],1),A("div",{staticClass:"analysis-card-content"},[C._v(" "+C._s(C.result.detailed_analysis.sentiment)+" ")])]):C._e()]):C._e(),A("div",{staticClass:"analysis-details"},[A("div",{staticClass:"detail-section reasons"},[A("div",{staticClass:"section-title"},[A("a-icon",{attrs:{type:"bulb",theme:"twoTone",twoToneColor:"#52c41a"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.keyReasons")))])],1),A("ul",{staticClass:"detail-list"},C._l(C.result.reasons,function(t,a){return A("li",{key:"r-"+a},[C._v(" "+C._s(t)+" ")])}),0)]),A("div",{staticClass:"detail-section risks"},[A("div",{staticClass:"section-title"},[A("a-icon",{attrs:{type:"warning",theme:"twoTone",twoToneColor:"#faad14"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.risks")))])],1),A("ul",{staticClass:"detail-list"},C._l(C.result.risks,function(t,a){return A("li",{key:"k-"+a},[C._v(" "+C._s(t)+" ")])}),0)])]),C.result.indicators&&Object.keys(C.result.indicators).length>0?A("div",{staticClass:"indicators-section"},[A("div",{staticClass:"section-title"},[A("a-icon",{attrs:{type:"stock"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.indicators")))]),A("a-tag",{staticClass:"indicators-pro-badge",attrs:{color:"blue"}},[C._v(C._s(C.$t("fastAnalysis.indicatorsProBadge")))])],1),A("div",{staticClass:"indicators-methodology"},[A("a-icon",{attrs:{type:"experiment"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.indicatorsProSubtitle")))])],1),A("div",{staticClass:"indicators-grid"},[C.result.indicators.rsi?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v("RSI (14)")]),A("div",{staticClass:"indicator-value",class:C.getRsiClass(C.result.indicators.rsi.value)},[C._v(" "+C._s(C.formatNumber(C.result.indicators.rsi.value,1))+" ")]),A("div",{staticClass:"indicator-signal"},[C._v(C._s(C.translateSignal(C.result.indicators.rsi.signal)))])]):C._e(),C.result.indicators.macd?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v("MACD (12,26,9)")]),A("div",{staticClass:"indicator-value",class:"bullish"===C.result.indicators.macd.signal?"bullish":"bearish"===C.result.indicators.macd.signal?"bearish":""},[C._v(" "+C._s(C.translateTrend(C.result.indicators.macd.trend))+" ")]),A("div",{staticClass:"indicator-signal"},[C._v(C._s(C.translateSignal(C.result.indicators.macd.signal)))])]):C._e(),C.result.indicators.moving_averages?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v(C._s(C.$t("fastAnalysis.maTrend")))]),A("div",{staticClass:"indicator-value",class:C.getMaTrendClass(C.result.indicators.moving_averages.trend)},[C._v(" "+C._s(C.translateTrend(C.result.indicators.moving_averages.trend))+" ")])]):C._e(),C.result.indicators.volatility&&null!=C.result.indicators.volatility.atr?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v("ATR (14)")]),A("div",{staticClass:"indicator-value",class:C.getVolatilityClass(C.result.indicators.volatility.level)},[C._v(" $"+C._s(C.formatPrice(C.result.indicators.volatility.atr))+" ")]),A("div",{staticClass:"indicator-signal"},[C._v(C._s(C.$t("fastAnalysis.atrTrueRange")))])]):C._e(),C.result.indicators.bollinger&&null!=C.result.indicators.bollinger.BB_width?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v(C._s(C.$t("fastAnalysis.bbWidth")))]),A("div",{staticClass:"indicator-value"},[C._v(C._s(C.formatNumber(C.result.indicators.bollinger.BB_width,2))+"%")]),A("div",{staticClass:"indicator-signal"},[C._v(C._s(C.$t("fastAnalysis.bbWidthHint")))])]):C._e(),null!=C.result.indicators.price_position?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v(C._s(C.$t("fastAnalysis.rangePct20")))]),A("div",{staticClass:"indicator-value"},[C._v(C._s(C.formatNumber(C.result.indicators.price_position,1))+"%")]),A("div",{staticClass:"indicator-signal"},[C._v(C._s(C.$t("fastAnalysis.rangePct20Hint")))])]):C._e(),null!=C.result.indicators.volume_ratio?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v(C._s(C.$t("fastAnalysis.volumeRatio")))]),A("div",{staticClass:"indicator-value",class:C.volumeRatioClass(C.result.indicators.volume_ratio)},[C._v(" "+C._s(C.formatNumber(C.result.indicators.volume_ratio,2))+"× ")]),A("div",{staticClass:"indicator-signal"},[C._v(C._s(C.$t("fastAnalysis.volumeRatioHint")))])]):C._e(),C.result.indicators.levels?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v(C._s(C.$t("fastAnalysis.support")))]),A("div",{staticClass:"indicator-value"},[C._v("$"+C._s(C.formatPrice(C.result.indicators.levels.support)))])]):C._e(),C.result.indicators.levels?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v(C._s(C.$t("fastAnalysis.resistance")))]),A("div",{staticClass:"indicator-value"},[C._v("$"+C._s(C.formatPrice(C.result.indicators.levels.resistance)))])]):C._e(),C.result.indicators.volatility?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v(C._s(C.$t("fastAnalysis.volatility")))]),A("div",{staticClass:"indicator-value",class:C.getVolatilityClass(C.result.indicators.volatility.level)},[C._v(" "+C._s(C.translateVolatility(C.result.indicators.volatility.level))+" ("+C._s(C.result.indicators.volatility.pct)+"%) ")])]):C._e()]),C.professionalIndicatorRows.length?A("div",{staticClass:"indicators-pro-wrap"},[A("div",{staticClass:"indicators-pro-title"},[A("a-icon",{attrs:{type:"deployment-unit"}}),C._v(" "+C._s(C.$t("fastAnalysis.indicatorsProTableTitle"))+" ")],1),A("a-descriptions",{staticClass:"indicators-pro-desc",attrs:{bordered:"",size:"small",column:2}},C._l(C.professionalIndicatorRows,function(t){return A("a-descriptions-item",{key:t.key,attrs:{label:t.label}},[A("span",{class:t.valueClass},[C._v(C._s(t.text))])])}),1)],1):C._e()]):C._e(),A("div",{staticClass:"feedback-section"},[A("div",{staticClass:"feedback-question"},[C._v(C._s(C.$t("fastAnalysis.wasHelpful")))]),A("div",{staticClass:"feedback-buttons"},[A("a-button",{attrs:{type:"helpful"===C.userFeedback?"primary":"default",size:"small",loading:"helpful"===C.feedbackLoading},on:{click:function(t){return C.submitFeedback("helpful")}}},[A("a-icon",{attrs:{type:"like"}}),C._v(" "+C._s(C.$t("fastAnalysis.helpful"))+" ")],1),A("a-button",{attrs:{type:"not_helpful"===C.userFeedback?"danger":"default",size:"small",loading:"not_helpful"===C.feedbackLoading},on:{click:function(t){return C.submitFeedback("not_helpful")}}},[A("a-icon",{attrs:{type:"dislike"}}),C._v(" "+C._s(C.$t("fastAnalysis.notHelpful"))+" ")],1)],1),A("div",{staticClass:"analysis-meta"},[A("span",[C._v(C._s(C.$t("fastAnalysis.analysisTime"))+": "+C._s(C.result.analysis_time_ms)+"ms")]),C.result.memory_id?A("span",[C._v("ID: #"+C._s(C.result.memory_id))]):C._e()])])]):A("div",{staticClass:"empty-container"},[A("div",{staticClass:"empty-content"},[A("a-icon",{staticClass:"empty-icon",attrs:{type:"radar-chart"}}),A("div",{staticClass:"empty-title"},[C._v(C._s(C.$t("fastAnalysis.selectSymbol")))]),A("div",{staticClass:"empty-hint"},[C._v(C._s(C.$t("fastAnalysis.selectHint")))])],1)])])},w=[],$={name:"FastAnalysisReport",props:{result:{type:Object,default:null},loading:{type:Boolean,default:!1},error:{type:String,default:null},errorTone:{type:String,default:"error",validator:function(t){return["error","warning","info"].includes(t)}}},data:function(){return{userFeedback:null,feedbackLoading:null,progress:0,elapsedSeconds:0,mainTimer:null}},computed:(0,m.A)((0,m.A)({},(0,h.aH)({navTheme:function(t){return t.app.theme}})),{},{isDarkTheme:function(){return"dark"===this.navTheme||"realdark"===this.navTheme},progressPercent:function(){return Math.round(10*this.progress)/10},step:function(){return this.progress<25?1:this.progress<50?2:this.progress<75?3:4},currentStepText:function(){var t={1:this.$t("fastAnalysis.step1")||"获取实时数据",2:this.$t("fastAnalysis.step2")||"计算技术指标",3:this.$t("fastAnalysis.step3")||"AI深度分析",4:this.$t("fastAnalysis.step4")||"生成报告"};return t[this.step]||this.$t("fastAnalysis.preparing")||"准备中..."},elapsedTimeText:function(){if(this.elapsedSeconds<60)return"".concat(this.elapsedSeconds,"s");var t=Math.floor(this.elapsedSeconds/60),a=this.elapsedSeconds%60;return"".concat(t,"m ").concat(a,"s")},decisionClass:function(){if(!this.result)return"";var t=this.result.decision;return"BUY"===t?"decision-buy":"SELL"===t?"decision-sell":"decision-hold"},decisionIcon:function(){if(!this.result)return"question";var t=this.result.decision;return"BUY"===t?"arrow-up":"SELL"===t?"arrow-down":"pause"},confidenceColor:function(){var t,a=(null===(t=this.result)||void 0===t?void 0:t.confidence)||50;return a>=70?"#52c41a":a>=50?"#1890ff":"#faad14"},consensusBlock:function(){var t,a=null===(t=this.result)||void 0===t?void 0:t.consensus;return a&&"object"===(0,n.A)(a)?null==a.consensus_decision&&null==a.consensus_score?null:a:null},tradingPlan:function(){var t,a,s,e,i,n,r=(null===(t=this.result)||void 0===t?void 0:t.trading_plan)||{},o=null!==(a=r.entry_price)&&void 0!==a?a:r.entryPrice,l=null!==(s=null!==(e=r.stop_loss)&&void 0!==e?e:r.stopLoss)&&void 0!==s?s:r.loss_exit_price,c=null!==(i=null!==(n=r.take_profit)&&void 0!==n?n:r.takeProfit)&&void 0!==i?i:r.profit_target_price;return{entry_price:o,stop_loss:l,take_profit:c}},trendOutlookRaw:function(){var t,a;return(null===(t=this.result)||void 0===t?void 0:t.trend_outlook)||(null===(a=this.result)||void 0===a?void 0:a.trendOutlook)||null},trendOutlookSummaryText:function(){var t,a,s=(null===(t=this.result)||void 0===t?void 0:t.trend_outlook_summary)||(null===(a=this.result)||void 0===a?void 0:a.trendOutlookSummary);return s&&String(s).trim()?String(s).trim():""},trendOutlookBlocks:function(){var t=this,a=this.trendOutlookRaw;if(!a||"object"!==(0,n.A)(a))return[];var s=[{key:"next_24h",labelKey:"fastAnalysis.outlook24h"},{key:"next_3d",labelKey:"fastAnalysis.outlook3d"},{key:"next_1w",labelKey:"fastAnalysis.outlook1w"},{key:"next_1m",labelKey:"fastAnalysis.outlook1m"}];return s.map(function(s){var e=s.key,i=s.labelKey,n=a[e]||{};return{key:e,label:t.$t(i),trend:n.trend,score:n.score,strength:n.strength}}).filter(function(t){var s=a[t.key];return s&&"object"===(0,n.A)(s)&&(null!=s.trend||null!=s.score)})},stopLossHintText:function(){var t,a=String((null===(t=this.result)||void 0===t?void 0:t.decision)||"").toUpperCase();return"SELL"===a?this.$t("fastAnalysis.stopLossHintShort"):this.$t("fastAnalysis.stopLossHint")},takeProfitHintText:function(){var t,a=String((null===(t=this.result)||void 0===t?void 0:t.decision)||"").toUpperCase();return"SELL"===a?this.$t("fastAnalysis.takeProfitHintShort"):this.$t("fastAnalysis.takeProfitHint")},professionalIndicatorRows:function(){var t,a=(null===(t=this.result)||void 0===t?void 0:t.indicators)||{},s=[],e=function(t,a,e){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"";void 0!==e&&null!==e&&""!==e&&s.push({key:t,label:a,text:String(e),valueClass:i})},i=a.macd||{};if(null!=i.value&&e("macd_dif",this.$t("fastAnalysis.macdDif"),this.formatCompactNum(i.value)),null!=i.signal_line&&e("macd_dea",this.$t("fastAnalysis.macdDea"),this.formatCompactNum(i.signal_line)),null!=i.histogram){var n=Number(i.histogram),r=n>0?"bullish":n<0?"bearish":"";e("macd_hist",this.$t("fastAnalysis.macdHist"),this.formatCompactNum(i.histogram),r)}var o=a.moving_averages||{};null!=o.ma5&&e("ma5",this.$t("fastAnalysis.ma5Label"),"$"+this.formatPrice(o.ma5)),null!=o.ma10&&e("ma10",this.$t("fastAnalysis.ma10Label"),"$"+this.formatPrice(o.ma10)),null!=o.ma20&&e("ma20",this.$t("fastAnalysis.ma20Label"),"$"+this.formatPrice(o.ma20));var l=a.bollinger||{};null!=l.BB_upper&&e("bb_u",this.$t("fastAnalysis.bbUpper"),"$"+this.formatPrice(l.BB_upper)),null!=l.BB_middle&&e("bb_m",this.$t("fastAnalysis.bbMiddle"),"$"+this.formatPrice(l.BB_middle)),null!=l.BB_lower&&e("bb_l",this.$t("fastAnalysis.bbLower"),"$"+this.formatPrice(l.BB_lower)),null!=l.BB_width&&e("bb_w",this.$t("fastAnalysis.bbWidthPct"),this.formatNumber(l.BB_width,2)+"%");var c=a.levels||{};null!=c.pivot&&e("piv",this.$t("fastAnalysis.pivotStd"),"$"+this.formatPrice(c.pivot)),null!=c.s1&&e("s1",this.$t("fastAnalysis.levelS1"),"$"+this.formatPrice(c.s1)),null!=c.r1&&e("r1",this.$t("fastAnalysis.levelR1"),"$"+this.formatPrice(c.r1)),null!=c.s2&&e("s2",this.$t("fastAnalysis.levelS2"),"$"+this.formatPrice(c.s2)),null!=c.r2&&e("r2",this.$t("fastAnalysis.levelR2"),"$"+this.formatPrice(c.r2)),null!=c.swing_high&&e("sw_h",this.$t("fastAnalysis.swingHigh20"),"$"+this.formatPrice(c.swing_high)),null!=c.swing_low&&e("sw_l",this.$t("fastAnalysis.swingLow20"),"$"+this.formatPrice(c.swing_low));var d=a.volatility||{};if(null!=d.atr){var u=null!=d.pct?this.formatNumber(d.pct,2)+"% ATR/Price":"";e("atr14",this.$t("fastAnalysis.atr14Label"),"$"+this.formatPrice(d.atr)+(u?" · "+u:""))}var m=a.trading_levels||{};return null!=m.risk_reward_ratio&&Number(m.risk_reward_ratio)>0&&e("rr",this.$t("fastAnalysis.rrLongRef"),"1 : "+this.formatNumber(m.risk_reward_ratio,2)),null!=a.current_price&&e("cref",this.$t("fastAnalysis.refClose"),"$"+this.formatPrice(a.current_price)),s},insufficientCreditsError:function(){if(!this.error)return!1;var t=String(this.error);return t.includes("积分不足")||t.toLowerCase().includes("insufficient credits")},errorTitle:function(){return"warning"===this.errorTone?this.$t("fastAnalysis.analysisInProgressTitle"):this.insufficientCreditsError?this.$t("fastAnalysis.insufficientCredits"):this.$t("fastAnalysis.error")}}),watch:{result:function(){this.userFeedback=null},loading:{handler:function(t){t?this.startProgressTimer():this.stopProgressTimer()},immediate:!0}},mounted:function(){this.loading&&this.startProgressTimer()},beforeDestroy:function(){this.stopProgressTimer()},methods:{formatPrice:function(t){if(void 0===t||null===t)return"--";var a=parseFloat(t);return isNaN(a)?"--":a<1?a.toFixed(6):a<100?a.toFixed(4):a<1e4?a.toFixed(2):a.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})},formatNumber:function(t){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2;if(void 0===t||null===t)return"--";var s=parseFloat(t);return isNaN(s)?"--":s.toFixed(a)},formatConsensusNum:function(t){if(void 0===t||null===t||""===t)return"--";var a=Number(t);return Number.isNaN(a)?"--":a.toFixed(1)},formatAgreementPct:function(t){var a=Number(t);return Number.isNaN(a)?"--":"".concat(Math.round(100*a),"%")},formatProgress:function(t){var a=parseFloat(t)||0;return a%1===0?a.toFixed(0):a.toFixed(1)},formatOutlookTrend:function(t){var a=String(t||"HOLD").toUpperCase();return"BUY"===a?this.$t("fastAnalysis.outlookBull"):"SELL"===a?this.$t("fastAnalysis.outlookBear"):this.$t("fastAnalysis.outlookNeutral")},outlookTrendClass:function(t){var a=String(t||"").toUpperCase();return"BUY"===a?"trend-bull":"SELL"===a?"trend-bear":"trend-neutral"},formatCompactNum:function(t){var a=parseFloat(t);return Number.isNaN(a)?"--":0!==a&&Math.abs(a)<1e-4?a.toExponential(2):Math.abs(a)<1?a.toFixed(6):Math.abs(a)<100?a.toFixed(4):a.toFixed(2)},volumeRatioClass:function(t){var a=parseFloat(t);return Number.isNaN(a)?"":a>=1.5?"bullish":a<=.65?"bearish":""},getScoreColor:function(t){return t>=70?"#52c41a":t>=50?"#1890ff":t>=30?"#faad14":"#ff4d4f"},getScoreTagColor:function(t){return t>=70?"green":t>=50?"blue":t>=30?"orange":"red"},getRsiClass:function(t){return t<30?"oversold":t>70?"overbought":""},getMaTrendClass:function(t){return t?t.includes("uptrend")||t.includes("strong_uptrend")?"bullish":t.includes("downtrend")||t.includes("strong_downtrend")?"bearish":"":""},getVolatilityClass:function(t){return"high"===t?"high-volatility":"low"===t?"low-volatility":""},translateSignal:function(t){if(!t)return"--";var a="fastAnalysis.signal.".concat(t),s=this.$t(a);return s===a?t:s},translateTrend:function(t){if(!t)return"--";var a="fastAnalysis.trend.".concat(t),s=this.$t(a);return s===a?t:s},translateVolatility:function(t){if(!t)return"--";var a="fastAnalysis.volatilityLevel.".concat(t),s=this.$t(a);return s===a?t:s},submitFeedback:function(t){var a=this;return(0,u.A)((0,d.A)().m(function s(){var e;return(0,d.A)().w(function(s){while(1)switch(s.p=s.n){case 0:if(null!==(e=a.result)&&void 0!==e&&e.memory_id){s.n=1;break}return a.$message.warning(a.$t("fastAnalysis.feedbackUnavailable")||"反馈功能暂不可用,请刷新后重试"),s.a(2);case 1:return a.feedbackLoading=t,s.p=2,s.n=3,C({memory_id:a.result.memory_id,feedback:t});case 3:a.userFeedback=t,a.$message.success(a.$t("fastAnalysis.feedbackThanks")),s.n=5;break;case 4:s.p=4,s.v,a.$message.error(a.$t("fastAnalysis.feedbackFailed"));case 5:return s.p=5,a.feedbackLoading=null,s.f(5);case 6:return s.a(2)}},s,null,[[2,4,5,6]])}))()},startProgressTimer:function(){var t=this;this.stopProgressTimer(),this.progress=0,this.elapsedSeconds=0;var a=Date.now();this.mainTimer=window.setInterval(function(){t.elapsedSeconds=Math.floor((Date.now()-a)/1e3),t.progress<75?t.progress=Math.min(t.progress+1,75):t.progress<90?t.progress=Math.min(t.progress+.5,90):t.progress<95&&(t.progress=Math.min(t.progress+.2,95))},100)},stopProgressTimer:function(){this.mainTimer&&(window.clearInterval(this.mainTimer),this.mainTimer=null),this.progress=0,this.elapsedSeconds=0}}},T=$,x=s(845),M=(0,x.A)(T,S,w,!1,null,"75da11ec",null),P=M.exports,F={name:"Analysis",props:{embedded:{type:Boolean,default:!1},presetSymbol:{type:String,default:""},autoAnalyzeSignal:{type:Number,default:0}},components:{FastAnalysisReport:P},data:function(){return{loadingMarket:!1,heatmapType:"crypto",marketData:{fearGreed:null,vix:null,dxy:null,indices:[],heatmap:{crypto:[],commodities:[],sectors:[],forex:[]},calendar:[]},loadingSentiment:!1,loadingIndices:!1,loadingHeatmap:!1,loadingCalendar:!1,watchlistPriceTimer:null,watchlistPrices:{},localUserInfo:{},loadingUserInfo:!1,userId:1,watchlist:[],loadingWatchlist:!1,showAddStockModal:!1,addingStock:!1,selectedSymbol:void 0,analyzing:!1,analysisResult:null,analysisError:null,analysisErrorTone:"error",showHistoryModal:!1,historyList:[],historyLoading:!1,historyPage:1,historyPageSize:20,historyTotal:0,currentTaskId:null,taskPollingTimer:null,taskPollingStartedAt:0,marketTypes:[],selectedMarketTab:"",symbolSearchKeyword:"",symbolSearchResults:[],searchingSymbols:!1,hotSymbols:[],loadingHotSymbols:!1,selectedSymbolForAdd:null,searchTimer:null,hasSearched:!1,positions:[],monitors:[],positionSummaryMap:{},showPositionModal:!1,showMonitorModal:!1,targetStockForOps:null,positionForm:{side:"long",quantity:null,entryPrice:null},monitorForm:{interval_min:240,notify_channels:[]},batchMode:!1,batchSelectedKeys:[],batchRunning:!1,batchProgress:0,showBatchScheduleModal:!1,batchScheduleForm:{interval_min:240,notify_channels:[]},showTaskDrawer:!1,showEditTaskModal:!1,editTaskLoading:!1,editTaskId:null,editTaskForm:{name:"",interval_min:240,notify_channels:[]}}},computed:(0,m.A)((0,m.A)((0,m.A)({},(0,h.L8)(["userInfo"])),(0,h.aH)({navTheme:function(t){return t.app.theme},primaryColor:function(t){return t.app.color||"#1890ff"}})),{},{isDarkTheme:function(){return"dark"===this.navTheme||"realdark"===this.navTheme},isZhLocale:function(){return"zh-CN"===this.$i18n.locale},currentHeatmap:function(){return this.marketData.heatmap[this.heatmapType]||[]},storeUserInfo:function(){return this.userInfo||{}},mergedUserInfo:function(){return this.localUserInfo&&this.localUserInfo.email?this.localUserInfo:this.storeUserInfo},watchlistTotalPnl:function(){return Object.values(this.positionSummaryMap).reduce(function(t,a){return t+(Number(a.pnl)||0)},0)},watchlistPositionCount:function(){return Object.values(this.positionSummaryMap).filter(function(t){return t.quantity>0}).length},watchlistTaskCount:function(){return Object.values(this.positionSummaryMap).reduce(function(t,a){return t+(a.monitorCount||0)},0)},batchSelectedAll:function(){return this.watchlist&&this.watchlist.length>0&&this.batchSelectedKeys.length===this.watchlist.length},batchIndeterminate:function(){return this.batchSelectedKeys.length>0&&this.batchSelectedKeys.length<(this.watchlist||[]).length}}),created:function(){this.loadUserInfo(),this.loadMarketTypes(),this.loadWatchlist(),this.loadPositionData(),this.loadMarketData()},mounted:function(){this.startWatchlistPriceRefresh()},beforeDestroy:function(){this.watchlistPriceTimer&&clearInterval(this.watchlistPriceTimer),this.taskPollingTimer&&(clearInterval(this.taskPollingTimer),this.taskPollingTimer=null)},methods:{stopTaskPolling:function(){this.taskPollingTimer&&(clearInterval(this.taskPollingTimer),this.taskPollingTimer=null),this.currentTaskId=null,this.taskPollingStartedAt=0},pollTaskResult:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e,i,n;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(t.currentTaskId){a.n=1;break}return a.a(2);case 1:return a.p=1,a.n=2,_({page:1,pagesize:50});case 2:if(s=a.v,s&&1===s.code&&s.data){a.n=3;break}return a.a(2);case 3:if(e=s.data.list||[],i=e.find(function(a){return Number(a.id)===Number(t.currentTaskId)}),i){a.n=4;break}return a.a(2);case 4:if(n=String(i.status||"").toLowerCase(),"completed"!==n){a.n=8;break}if(!i.full_result){a.n=5;break}t.analysisResult=i.full_result,a.n=6;break;case 5:return a.n=6,t.viewHistoryResult(i);case 6:return t.$message.success(t.$t("dashboard.analysis.message.analysisComplete")),a.n=7,t.refreshUserInfoFromServer();case 7:t.analyzing=!1,t.stopTaskPolling(),a.n=11;break;case 8:if("failed"!==n){a.n=10;break}return t.analysisError=i.error_message||t.$t("dashboard.analysis.message.analysisFailed"),t.analysisErrorTone="error",t.$message.error(t.analysisError),a.n=9,t.refreshUserInfoFromServer();case 9:t.analyzing=!1,t.stopTaskPolling(),a.n=11;break;case 10:Date.now()-t.taskPollingStartedAt>18e4&&(t.$message.warning(t.$t("fastAnalysis.analysisStillProcessing")||"任务仍在处理中,请稍后在历史记录查看"),t.analyzing=!1,t.stopTaskPolling());case 11:a.n=13;break;case 12:a.p=12,a.v;case 13:return a.a(2)}},a,null,[[1,12]])}))()},startTaskPolling:function(t){var a=this;return(0,u.A)((0,d.A)().m(function s(){return(0,d.A)().w(function(s){while(1)switch(s.n){case 0:return a.stopTaskPolling(),a.currentTaskId=Number(t),a.taskPollingStartedAt=Date.now(),s.n=1,a.pollTaskResult();case 1:a.taskPollingTimer=setInterval(function(){a.pollTaskResult()},2500);case 2:return s.a(2)}},s)}))()},filterSymbolOption:function(t,a){var s,e=(null===(s=a.componentOptions)||void 0===s||null===(s=s.propsData)||void 0===s?void 0:s.value)||"";return"__add_stock_option__"===e||e.toLowerCase().includes(t.toLowerCase())},handleSymbolChange:function(t){var a=this;if("__add_stock_option__"===t)return this.showAddStockModal=!0,void this.$nextTick(function(){a.selectedSymbol=void 0});this.selectedSymbol=t,this.analysisResult=null,this.analysisError=null,this.analysisErrorTone="error",this.$emit("symbol-change",t)},selectWatchlistItem:function(t){this.selectedSymbol="".concat(t.market,":").concat(t.symbol),this.analysisResult=null,this.analysisError=null,this.analysisErrorTone="error",this.$emit("symbol-change",this.selectedSymbol)},hasMonitorForStock:function(t){if(!t)return!1;var a="".concat(t.market,":").concat(t.symbol),s=this.positionSummaryMap[a];return!!(s&&s.monitorCount>0)},getMonitorMeta:function(t){if(!t)return null;var a="".concat(t.market,":").concat(t.symbol),s=this.positionSummaryMap[a];return!s||s.monitorCount<=0?null:{activeCount:s.activeMonitorCount||0,nextRunAtText:s.nextRunAtText||""}},getPnlBarStyle:function(t){var a=Math.abs(Number((null===t||void 0===t?void 0:t.pnlPercent)||0)),s=Math.min(100,Math.max(4,a));return{width:"".concat(s,"%")}},_formatNextRunText:function(t){if(!t)return"";try{var a=new Date(t);return Number.isNaN(a.getTime())?"":a.toLocaleString(this.isZhLocale?"zh-CN":"en-US",{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"})}catch(s){return""}},buildPositionSummary:function(){var t=this,a={},s=Array.isArray(this.positions)?this.positions:[],e=Array.isArray(this.monitors)?this.monitors:[],i=new Set,n={};s.forEach(function(t){n[Number(t.id)]="".concat(t.market,":").concat(t.symbol)}),e.forEach(function(s){var e=Array.isArray(s.position_ids)?s.position_ids:[];e.forEach(function(t){return i.add(Number(t))});var r=!!s.is_active,o=s.next_run_at||"";e.forEach(function(s){var e=n[Number(s)];e&&(a[e]||(a[e]={quantity:0,weightedEntry:0,pnl:0,marketValue:0,monitorCount:0,activeMonitorCount:0,nextRunAtText:""}),a[e].monitorCount+=1,r&&(a[e].activeMonitorCount+=1),!a[e].nextRunAtText&&o&&(a[e].nextRunAtText=t._formatNextRunText(o)))})}),s.forEach(function(t){var s="".concat(t.market,":").concat(t.symbol),e=Number(t.quantity||0),n=Number(t.entry_price||0);a[s]||(a[s]={quantity:0,weightedEntry:0,pnl:0,marketValue:0,monitorCount:0,activeMonitorCount:0,nextRunAtText:""}),a[s].quantity+=e,a[s].weightedEntry+=e*n,a[s].pnl+=Number(t.pnl||0),a[s].marketValue+=Number(t.market_value||0),i.has(Number(t.id))&&(a[s].monitorCount+=1)}),Object.keys(a).forEach(function(t){var s=a[t];s.avgEntry=s.quantity>0?s.weightedEntry/s.quantity:0;var e=s.quantity>0?s.weightedEntry:0;s.pnlPercent=e>0?s.pnl/e*100:0}),this.positionSummaryMap=a},toggleStockMonitor:function(t){var a=this;return(0,u.A)((0,d.A)().m(function s(){var e,i,n,r,o,l;return(0,d.A)().w(function(s){while(1)switch(s.p=s.n){case 0:if(e="".concat(t.market,":").concat(t.symbol),i=(a.positions||[]).filter(function(t){return"".concat(t.market,":").concat(t.symbol)===e}).map(function(t){return Number(t.id)}).filter(Boolean),0!==i.length){s.n=1;break}return s.a(2);case 1:if(n=(a.monitors||[]).filter(function(t){var a=Array.isArray(t.position_ids)?t.position_ids.map(function(t){return Number(t)}):[];return a.some(function(t){return i.includes(t)})}),0!==n.length){s.n=2;break}return s.a(2);case 2:return r=!n.some(function(t){return!!t.is_active}),s.p=3,s.n=4,Promise.all(n.map(function(t){return(0,y.sk)(t.id,{is_active:r})}));case 4:return a.$message.success(r?a.$t("aiAssetAnalysis.monitor.enabled")||"已启用任务":a.$t("aiAssetAnalysis.monitor.disabled")||"已暂停任务"),s.n=5,a.loadPositionData();case 5:s.n=7;break;case 6:s.p=6,l=s.v,a.$message.error((null===l||void 0===l||null===(o=l.response)||void 0===o||null===(o=o.data)||void 0===o?void 0:o.msg)||(null===l||void 0===l?void 0:l.message)||"Toggle monitor failed");case 7:return s.a(2)}},s,null,[[3,6]])}))()},loadPositionData:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e,i,n;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return a.p=0,a.n=1,Promise.all([(0,y.Dt)(),(0,y.w1)()]);case 1:s=a.v,e=(0,c.A)(s,2),i=e[0],n=e[1],t.positions=i&&1===i.code&&i.data||[],t.monitors=n&&1===n.code&&n.data||[],t.buildPositionSummary(),a.n=3;break;case 2:a.p=2,a.v,t.positions=[],t.monitors=[],t.positionSummaryMap={};case 3:return a.a(2)}},a,null,[[0,2]])}))()},openPositionModal:function(t){this.targetStockForOps=t;var a="".concat(t.market,":").concat(t.symbol),s=(this.positions||[]).find(function(t){return"".concat(t.market,":").concat(t.symbol)===a});if(s){var e=Number(s.quantity||0);this.positionForm={side:s.side||(e<0?"short":"long"),quantity:Math.abs(e)||null,entryPrice:Number(s.entry_price||0)||null}}else this.positionForm={side:"long",quantity:null,entryPrice:null};this.showPositionModal=!0},savePosition:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e,i,n,r,o;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(s=t.targetStockForOps,s){a.n=1;break}return a.a(2);case 1:if(e=Number(t.positionForm.quantity||0),i=Number(t.positionForm.entryPrice||0),e>0&&i>0){a.n=2;break}return t.$message.warning(t.$i18n&&"zh-CN"===t.$i18n.locale?"请输入有效的数量和买入单价":"Please enter valid quantity and entry price"),a.a(2);case 2:return a.p=2,a.n=3,(0,y.Ps)({market:s.market,symbol:s.symbol,name:s.name||s.symbol,side:t.positionForm.side||"long",quantity:e,entry_price:i});case 3:if(n=a.v,!n||1!==n.code){a.n=5;break}return t.$message.success(t.$t("portfolio.positions.add")+" OK"),t.showPositionModal=!1,a.n=4,t.loadPositionData();case 4:a.n=6;break;case 5:t.$message.error((null===n||void 0===n?void 0:n.msg)||"Add position failed");case 6:a.n=8;break;case 7:a.p=7,o=a.v,t.$message.error((null===o||void 0===o||null===(r=o.response)||void 0===r||null===(r=r.data)||void 0===r?void 0:r.msg)||(null===o||void 0===o?void 0:o.message)||"Add position failed");case 8:return a.a(2)}},a,null,[[2,7]])}))()},openMonitorModal:function(t){this.targetStockForOps=t,this.monitorForm={interval_min:240,notify_channels:[]},this.showMonitorModal=!0},saveMonitorTask:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e,i,n,r,o,l,c;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(s=t.targetStockForOps,s){a.n=1;break}return a.a(2);case 1:return e="".concat(s.market,":").concat(s.symbol),i=t.monitorForm.interval_min,n=t.monitorForm.notify_channels||[],r=(t.positions||[]).filter(function(t){return"".concat(t.market,":").concat(t.symbol)===e}).map(function(t){return Number(t.id)}).filter(Boolean),a.p=2,a.n=3,(0,y.yr)({name:"AI-".concat(s.symbol,"-").concat(i,"m"),position_ids:r,monitor_type:"ai",config:{run_interval_minutes:i,symbol:s.symbol,market:s.market},notification_config:{channels:n},is_active:!0});case 3:if(o=a.v,!o||1!==o.code){a.n=5;break}return t.$message.success(t.$t("aiAssetAnalysis.monitor.created")),t.showMonitorModal=!1,a.n=4,t.loadPositionData();case 4:a.n=6;break;case 5:t.$message.error((null===o||void 0===o?void 0:o.msg)||"Create monitor failed");case 6:a.n=8;break;case 7:a.p=7,c=a.v,t.$message.error((null===c||void 0===c||null===(l=c.response)||void 0===l||null===(l=l.data)||void 0===l?void 0:l.msg)||(null===c||void 0===c?void 0:c.message)||"Create monitor failed");case 8:return a.a(2)}},a,null,[[2,7]])}))()},toggleBatchMode:function(){this.batchMode=!this.batchMode,this.batchMode||(this.batchSelectedKeys=[])},onBatchSelectAll:function(t){t.target.checked?this.batchSelectedKeys=(this.watchlist||[]).map(function(t){return"".concat(t.market,":").concat(t.symbol)}):this.batchSelectedKeys=[]},onBatchItemToggle:function(t,a){var s="".concat(t.market,":").concat(t.symbol);a.target.checked?this.batchSelectedKeys.includes(s)||this.batchSelectedKeys.push(s):this.batchSelectedKeys=this.batchSelectedKeys.filter(function(t){return t!==s})},openBatchScheduleModal:function(){0!==this.batchSelectedKeys.length&&(this.batchScheduleForm={interval_min:240,notify_channels:[]},this.showBatchScheduleModal=!0)},saveBatchSchedule:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e,i,n,u,m,h,p;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(s=(0,l.A)(t.batchSelectedKeys),0!==s.length){a.n=1;break}return a.a(2);case 1:t.batchRunning=!0,e=t.batchScheduleForm.interval_min,i=t.batchScheduleForm.notify_channels||[],n=0,u=(0,o.A)(s),a.p=2,h=(0,d.A)().m(function a(){var s,r,o,l,u,h,p;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(s=m.value,r=s.split(":"),o=(0,c.A)(r,2),l=o[0],u=o[1],h=(t.watchlist||[]).find(function(t){return t.market===l&&t.symbol===u}),h){a.n=1;break}return a.a(2,1);case 1:return p=(t.positions||[]).filter(function(t){return"".concat(t.market,":").concat(t.symbol)===s}).map(function(t){return Number(t.id)}).filter(Boolean),a.p=2,a.n=3,(0,y.yr)({name:"AI-".concat(u,"-").concat(e,"m"),position_ids:p,monitor_type:"ai",config:{run_interval_minutes:e,symbol:u,market:l},notification_config:{channels:i},is_active:!0});case 3:n++,a.n=5;break;case 4:a.p=4,a.v;case 5:return a.a(2)}},a,null,[[2,4]])}),u.s();case 3:if((m=u.n()).done){a.n=6;break}return a.d((0,r.A)(h()),4);case 4:if(!a.v){a.n=5;break}return a.a(3,5);case 5:a.n=3;break;case 6:a.n=8;break;case 7:a.p=7,p=a.v,u.e(p);case 8:return a.p=8,u.f(),a.f(8);case 9:return t.batchRunning=!1,t.showBatchScheduleModal=!1,t.batchMode=!1,t.batchSelectedKeys=[],a.n=10,t.loadPositionData();case 10:t.$message.success(t.$t("aiAssetAnalysis.batch.done")+" (".concat(n,"/").concat(s.length,")"));case 11:return a.a(2)}},a,null,[[2,7,8,9]])}))()},formatIntervalText:function(t){return t>=1440?"".concat(Math.round(t/1440),"d"):t>=60?"".concat(Math.round(t/60),"h"):"".concat(t,"m")},handleToggleTask:function(t){var a=this;return(0,u.A)((0,d.A)().m(function s(){var e,i;return(0,d.A)().w(function(s){while(1)switch(s.p=s.n){case 0:return s.p=0,s.n=1,(0,y.sk)(t.id,{is_active:!t.is_active});case 1:return a.$message.success(t.is_active?a.$t("aiAssetAnalysis.tasks.paused"):a.$t("aiAssetAnalysis.tasks.resumed")),s.n=2,a.loadPositionData();case 2:s.n=4;break;case 3:s.p=3,i=s.v,a.$message.error((null===i||void 0===i||null===(e=i.response)||void 0===e||null===(e=e.data)||void 0===e?void 0:e.msg)||(null===i||void 0===i?void 0:i.message)||"Failed");case 4:return s.a(2)}},s,null,[[0,3]])}))()},handleEditTask:function(t){this.editTaskId=t.id,this.editTaskForm={name:t.name||"",interval_min:t.config&&t.config.run_interval_minutes||240,notify_channels:t.notification_config&&t.notification_config.channels||[]},this.showEditTaskModal=!0},saveEditTask:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(t.editTaskId){a.n=1;break}return a.a(2);case 1:return t.editTaskLoading=!0,a.p=2,a.n=3,(0,y.sk)(t.editTaskId,{name:t.editTaskForm.name,config:{run_interval_minutes:t.editTaskForm.interval_min},notification_config:{channels:t.editTaskForm.notify_channels}});case 3:return t.$message.success("OK"),t.showEditTaskModal=!1,a.n=4,t.loadPositionData();case 4:a.n=6;break;case 5:a.p=5,e=a.v,t.$message.error((null===e||void 0===e||null===(s=e.response)||void 0===s||null===(s=s.data)||void 0===s?void 0:s.msg)||(null===e||void 0===e?void 0:e.message)||"Failed");case 6:return a.p=6,t.editTaskLoading=!1,a.f(6);case 7:return a.a(2)}},a,null,[[2,5,6,7]])}))()},handleDeleteTask:function(t){var a=this;return(0,u.A)((0,d.A)().m(function s(){var e,i;return(0,d.A)().w(function(s){while(1)switch(s.p=s.n){case 0:return s.p=0,s.n=1,(0,y.ei)(t.id);case 1:return a.$message.success(a.$t("aiAssetAnalysis.tasks.deleted")),s.n=2,a.loadPositionData();case 2:s.n=4;break;case 3:s.p=3,i=s.v,a.$message.error((null===i||void 0===i||null===(e=i.response)||void 0===e||null===(e=e.data)||void 0===e?void 0:e.msg)||(null===i||void 0===i?void 0:i.message)||"Failed");case 4:return s.a(2)}},s,null,[[0,3]])}))()},loadMarketData:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){return(0,d.A)().w(function(a){while(1)switch(a.n){case 0:t.loadingMarket=!0,t.loadSentimentData(),t.loadIndicesData(),t.loadHeatmapData(),t.loadCalendarData();case 1:return a.a(2)}},a)}))()},loadSentimentData:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e,i,n;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return t.loadingSentiment=!0,a.p=1,a.n=2,(0,A.EF)();case 2:s=a.v,1===(null===s||void 0===s?void 0:s.code)&&null!==s&&void 0!==s&&s.data&&(t.marketData.fearGreed=(null===(e=s.data.fear_greed)||void 0===e?void 0:e.value)||null,t.marketData.vix=(null===(i=s.data.vix)||void 0===i?void 0:i.value)||null,t.marketData.dxy=(null===(n=s.data.dxy)||void 0===n?void 0:n.value)||null),a.n=4;break;case 3:a.p=3,a.v;case 4:return a.p=4,t.loadingSentiment=!1,t.checkAllLoaded(),a.f(4);case 5:return a.a(2)}},a,null,[[1,3,4,5]])}))()},loadIndicesData:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return t.loadingIndices=!0,a.p=1,a.n=2,(0,A.yI)();case 2:s=a.v,1===(null===s||void 0===s?void 0:s.code)&&null!==s&&void 0!==s&&s.data&&(t.marketData.indices=s.data.indices||[]),a.n=4;break;case 3:a.p=3,a.v;case 4:return a.p=4,t.loadingIndices=!1,t.checkAllLoaded(),a.f(4);case 5:return a.a(2)}},a,null,[[1,3,4,5]])}))()},loadHeatmapData:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return t.loadingHeatmap=!0,a.p=1,a.n=2,(0,A.f$)();case 2:s=a.v,1===(null===s||void 0===s?void 0:s.code)&&null!==s&&void 0!==s&&s.data&&(t.marketData.heatmap={crypto:s.data.crypto||[],commodities:s.data.commodities||[],sectors:s.data.sectors||[],forex:s.data.forex||[]}),a.n=4;break;case 3:a.p=3,a.v;case 4:return a.p=4,t.loadingHeatmap=!1,t.checkAllLoaded(),a.f(4);case 5:return a.a(2)}},a,null,[[1,3,4,5]])}))()},loadCalendarData:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return t.loadingCalendar=!0,a.p=1,a.n=2,(0,A.kF)();case 2:s=a.v,1===(null===s||void 0===s?void 0:s.code)&&(t.marketData.calendar=s.data||[]),a.n=4;break;case 3:a.p=3,a.v;case 4:return a.p=4,t.loadingCalendar=!1,t.checkAllLoaded(),a.f(4);case 5:return a.a(2)}},a,null,[[1,3,4,5]])}))()},checkAllLoaded:function(){this.loadingSentiment||this.loadingIndices||this.loadingHeatmap||this.loadingCalendar||(this.loadingMarket=!1)},getFearGreedClass:function(t){return t?t<=25?"extreme-fear":t<=45?"fear":t<=55?"neutral":t<=75?"greed":"extreme-greed":""},getVixLevel:function(t){return t?t<15?"low":t<25?"medium":"high":""},formatNum:function(t){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2;return void 0===t||null===t||isNaN(t)?"--":Number(t).toFixed(a)},getHeatmapStyle:function(t){var a=parseFloat(t)||0,s=Math.min(Math.abs(a)/5,1),e=this.isDarkTheme;if(a>=0){var i=e?a>2?"#fff":"#4ade80":a>2?"#fff":"#166534";return{background:"rgba(34, 197, 94, ".concat(.15+.6*s,")"),color:i}}var n=e?a<-2?"#fff":"#f87171":a<-2?"#fff":"#991b1b";return{background:"rgba(239, 68, 68, ".concat(.15+.6*s,")"),color:n}},getCountryFlag:function(t){var a={US:"🇺🇸",CN:"🇨🇳",EU:"🇪🇺",JP:"🇯🇵",UK:"🇬🇧",DE:"🇩🇪",AU:"🇦🇺",CA:"🇨🇦"};return a[t]||"🌍"},formatCalendarDate:function(t){if(!t)return"";try{var a=new Date(t),s=new Date,e=new Date(s);if(e.setDate(e.getDate()+1),a.toDateString()===s.toDateString())return this.isZhLocale?"今天":"Today";if(a.toDateString()===e.toDateString())return this.isZhLocale?"明天":"Tmrw";var i=a.getMonth()+1,n=a.getDate();return"".concat(i,"/").concat(n)}catch(r){return t}},formatPrice:function(t){return t?t>=1e4?(t/1e3).toFixed(1)+"K":t>=1e3?t.toFixed(0):t.toFixed(2):"--"},formatHeatmapPrice:function(t){return t?t>=1e4?"$"+(t/1e3).toFixed(1)+"K":t>=1e3?"$"+t.toFixed(0):t>=1?"$"+t.toFixed(2):"$"+t.toFixed(4):""},getHeatmapName:function(t){return"sectors"===this.heatmapType||"commodities"===this.heatmapType||"forex"===this.heatmapType?this.isZhLocale?t.name_cn||t.name:t.name_en||t.name:t.name},getImpactClass:function(t){return t.actual_impact||t.expected_impact||"neutral"},getMarketColor:function(t){var a={USStock:"green",Crypto:"purple",Forex:"gold",Futures:"cyan"};return a[t]||"default"},getCurrencySymbol:function(t){return"$"},formatCreditNum:function(t){if(void 0===t||null===t||""===t)return"--";var a=Number(t);return Number.isNaN(a)?String(t):Number.isInteger(a)?String(a):a.toFixed(2)},refreshUserInfoFromServer:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return a.p=0,a.n=1,(0,p.ug)();case 1:s=a.v,s&&1===s.code&&s.data&&(t.localUserInfo=s.data,t.userId=s.data.id,t.$store.commit("SET_INFO",s.data)),a.n=3;break;case 2:a.p=2,a.v;case 3:return a.a(2)}},a,null,[[0,2]])}))()},startFastAnalysis:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e,i,n,r,o,l,u,h,p,v,y,f,b,_,k,C;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(!t.analyzing){a.n=1;break}return a.a(2);case 1:if(t.selectedSymbol){a.n=2;break}return t.$message.warning(t.$t("dashboard.analysis.message.selectSymbol")),a.a(2);case 2:return t.analyzing=!0,t.analysisError=null,t.analysisErrorTone="error",s=t.selectedSymbol.split(":"),e=(0,c.A)(s,2),i=e[0],n=e[1],r=t.$store.getters.lang||"zh-CN",o=!1,a.p=3,a.n=4,g({market:i,symbol:n,language:r,timeframe:"1D",async_submit:!0});case 4:if(l=a.v,!l||1!==l.code||!l.data){a.n=9;break}if("processing"!==l.data.status){a.n=6;break}return o=!0,u=l.data.remaining_credits,void 0!==u&&null!==u?t.$message.success(t.$t("fastAnalysis.analysisSubmittedWithCredits",{remaining:t.formatCreditNum(u)})):t.$message.success(t.$t("fastAnalysis.analysisSubmitted")||"任务已提交,正在分析中"),a.n=5,t.startTaskPolling(l.data.task_id);case 5:a.n=7;break;case 6:h=(0,m.A)({},l.data),delete h.credits_charged,delete h.remaining_credits,t.analysisResult=h,p=l.data.remaining_credits,void 0!==p&&null!==p?t.$message.success(t.$t("fastAnalysis.analysisCompleteWithCredits",{remaining:t.formatCreditNum(p)})):t.$message.success(t.$t("dashboard.analysis.message.analysisComplete"));case 7:return a.n=8,t.refreshUserInfoFromServer();case 8:a.n=10;break;case 9:throw new Error((null===l||void 0===l?void 0:l.msg)||"分析失败");case 10:a.n=12;break;case 11:a.p=11,C=a.v,f=null===C||void 0===C||null===(v=C.response)||void 0===v?void 0:v.status,b=(null===C||void 0===C||null===(y=C.response)||void 0===y?void 0:y.data)||{},_=b.msg,k=b.data,429===f&&k&&k.in_progress?(t.analysisErrorTone="warning",t.analysisError=t.$t("fastAnalysis.analysisInProgress"),t.$message.warning(t.analysisError)):400===f&&"Insufficient credits"===_?(t.analysisError=t.$t("fastAnalysis.insufficientCreditsDetail",{required:t.formatCreditNum(null===k||void 0===k?void 0:k.required),current:t.formatCreditNum(null===k||void 0===k?void 0:k.current),shortage:t.formatCreditNum(null===k||void 0===k?void 0:k.shortage)}),t.$message.error(t.analysisError)):(t.analysisError=_||(null===C||void 0===C?void 0:C.message)||t.$t("dashboard.analysis.message.analysisFailed"),t.$message.error(t.analysisError));case 12:return a.p=12,o||(t.analyzing=!1),a.f(12);case 13:return a.a(2)}},a,null,[[3,11,12,13]])}))()},loadHistoryList:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return t.historyLoading=!0,a.p=1,a.n=2,_({page:t.historyPage,pagesize:t.historyPageSize});case 2:s=a.v,s&&1===s.code&&s.data&&(t.historyList=s.data.list||[],t.historyTotal=s.data.total||0),a.n=4;break;case 3:a.p=3,a.v,t.$message.error(t.$t("dashboard.analysis.message.loadHistoryFailed")||"加载历史记录失败");case 4:return a.p=4,t.historyLoading=!1,a.f(4);case 5:return a.a(2)}},a,null,[[1,3,4,5]])}))()},viewHistoryResult:function(t){var a=this;return(0,u.A)((0,d.A)().m(function s(){var e,i,n,r;return(0,d.A)().w(function(s){while(1)switch(s.n){case 0:if("processing"!==(t.status||"").toLowerCase()){s.n=1;break}return a.$message.info(a.$t("fastAnalysis.analysisStillProcessing")||"该任务仍在处理中,请稍后刷新历史记录"),s.a(2);case 1:if(!t.full_result){s.n=2;break}return a.analysisResult=t.full_result,a.selectedSymbol="".concat(t.market,":").concat(t.symbol),a.showHistoryModal=!1,s.a(2);case 2:e=Number(t.price)||0,i=String(t.decision||"HOLD").toUpperCase(),n=null,r=null,e>0&&("SELL"===i?(n=1.05*e,r=.95*e):"BUY"===i&&(n=.95*e,r=1.05*e)),a.analysisResult={decision:t.decision,confidence:t.confidence,summary:t.summary,market_data:{current_price:t.price,change_24h:0},trading_plan:{entry_price:t.price,stop_loss:n,take_profit:r},scores:t.scores||{},reasons:t.reasons||[],risks:[],indicators:t.indicators||{},memory_id:t.id,analysis_time_ms:0},a.selectedSymbol="".concat(t.market,":").concat(t.symbol),a.showHistoryModal=!1;case 3:return s.a(2)}},s)}))()},deleteHistoryItem:function(t){var a=this;return(0,u.A)((0,d.A)().m(function s(){var e;return(0,d.A)().w(function(s){while(1)switch(s.p=s.n){case 0:return s.p=0,s.n=1,k(t.id);case 1:e=s.v,e&&1===e.code?(a.$message.success(a.$t("dashboard.analysis.message.deleteSuccess")),a.loadHistoryList()):a.$message.error((null===e||void 0===e?void 0:e.msg)||a.$t("dashboard.analysis.message.deleteFailed")),s.n=3;break;case 2:s.p=2,s.v,a.$message.error(a.$t("dashboard.analysis.message.deleteFailed"));case 3:return s.a(2)}},s,null,[[0,2]])}))()},formatTime:function(t){if(!t)return"-";var a=new Date(1e3*t);return a.toLocaleString("zh-CN")},formatIsoTime:function(t){if(!t)return"-";var a=new Date(t);return a.toLocaleString("zh-CN")},getStatusColor:function(t){var a={pending:"orange",processing:"blue",completed:"green",failed:"red"};return a[t]||"default"},getStatusText:function(t){var a={pending:"dashboard.analysis.status.pending",processing:"dashboard.analysis.status.processing",completed:"dashboard.analysis.status.completed",failed:"dashboard.analysis.status.failed"},s=a[t];return s?this.$t(s):t},loadUserInfo:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(t.loadingUserInfo=!0,a.p=1,!t.storeUserInfo||!t.storeUserInfo.email){a.n=2;break}return t.localUserInfo=t.storeUserInfo,t.userId=t.storeUserInfo.id,t.loadingUserInfo=!1,t.loadWatchlist(),a.a(2);case 2:return a.n=3,(0,p.ug)();case 3:s=a.v,s&&1===s.code&&s.data&&(t.localUserInfo=s.data,t.userId=s.data.id,t.$store.commit("SET_INFO",s.data),t.loadWatchlist()),a.n=5;break;case 4:a.p=4,a.v;case 5:return a.p=5,t.loadingUserInfo=!1,a.f(5);case 6:return a.a(2)}},a,null,[[1,4,5,6]])}))()},loadWatchlist:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(t.userId){a.n=1;break}return a.a(2);case 1:return t.loadingWatchlist=!0,a.p=2,a.n=3,(0,v.Qo)({userid:t.userId});case 3:if(s=a.v,!s||1!==s.code||!s.data){a.n=4;break}return t.watchlist=s.data.map(function(t){return(0,m.A)((0,m.A)({},t),{},{price:0,change:0,changePercent:0})}),a.n=4,t.loadWatchlistPrices();case 4:a.n=6;break;case 5:a.p=5,a.v;case 6:return a.p=6,t.loadingWatchlist=!1,a.f(6);case 7:return a.a(2)}},a,null,[[2,5,6,7]])}))()},loadWatchlistPrices:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e,i,n;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(t.watchlist&&0!==t.watchlist.length){a.n=1;break}return a.a(2);case 1:return a.p=1,s=t.watchlist.map(function(t){return{market:t.market,symbol:t.symbol}}),a.n=2,(0,v.ms)({watchlist:s});case 2:e=a.v,e&&1===e.code&&e.data&&(i={},n={},e.data.forEach(function(t){i["".concat(t.market,"-").concat(t.symbol)]=t,n["".concat(t.market,":").concat(t.symbol)]={price:t.price||0,change:t.changePercent||0}}),t.watchlistPrices=n,t.watchlist=t.watchlist.map(function(t){var a="".concat(t.market,"-").concat(t.symbol),s=i[a];return s?(0,m.A)((0,m.A)({},t),{},{price:s.price||0,change:s.change||0,changePercent:s.changePercent||0}):t})),a.n=4;break;case 3:a.p=3,a.v;case 4:return a.a(2)}},a,null,[[1,3]])}))()},startWatchlistPriceRefresh:function(){var t=this;this.watchlistPriceTimer=setInterval(function(){t.watchlist&&t.watchlist.length>0&&t.loadWatchlistPrices()},3e4),this.watchlist&&this.watchlist.length>0&&this.loadWatchlistPrices()},handleAddStock:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e,i,n,r,o,l;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(s="",e="",i="",!t.selectedSymbolForAdd){a.n=1;break}s=t.selectedSymbolForAdd.market,e=t.selectedSymbolForAdd.symbol.toUpperCase(),i=t.selectedSymbolForAdd.name||"",a.n=4;break;case 1:if(!t.symbolSearchKeyword||!t.symbolSearchKeyword.trim()){a.n=3;break}if(t.selectedMarketTab){a.n=2;break}return t.$message.warning(t.$t("dashboard.analysis.modal.addStock.pleaseSelectMarket")),a.a(2);case 2:s=t.selectedMarketTab,e=t.symbolSearchKeyword.trim().toUpperCase(),i="",a.n=4;break;case 3:return t.$message.warning(t.$t("dashboard.analysis.modal.addStock.pleaseSelectOrEnterSymbol")),a.a(2);case 4:return t.addingStock=!0,a.p=5,a.n=6,(0,v.dp)({userid:t.userId,market:s,symbol:e,name:i});case 6:if(n=a.v,!n||1!==n.code){a.n=8;break}return t.$message.success(t.$t("dashboard.analysis.message.addStockSuccess")),t.handleCloseAddStockModal(),a.n=7,t.loadWatchlist();case 7:a.n=9;break;case 8:t.$message.error((null===n||void 0===n?void 0:n.msg)||t.$t("dashboard.analysis.message.addStockFailed"));case 9:a.n=11;break;case 10:a.p=10,l=a.v,o=(null===l||void 0===l||null===(r=l.response)||void 0===r||null===(r=r.data)||void 0===r?void 0:r.msg)||(null===l||void 0===l?void 0:l.message)||t.$t("dashboard.analysis.message.addStockFailed"),t.$message.error(o);case 11:return a.p=11,t.addingStock=!1,a.f(11);case 12:return a.a(2)}},a,null,[[5,10,11,12]])}))()},handleCloseAddStockModal:function(){this.showAddStockModal=!1,this.selectedSymbolForAdd=null,this.symbolSearchKeyword="",this.symbolSearchResults=[],this.hasSearched=!1,this.selectedMarketTab=this.marketTypes.length>0?this.marketTypes[0].value:""},handleMarketTabChange:function(t){this.selectedMarketTab=t,this.symbolSearchKeyword="",this.symbolSearchResults=[],this.selectedSymbolForAdd=null,this.hasSearched=!1,this.loadHotSymbols(t)},handleSymbolSearchInput:function(t){var a=this,s=t.target.value;if(this.symbolSearchKeyword=s,this.searchTimer&&clearTimeout(this.searchTimer),!s||""===s.trim())return this.symbolSearchResults=[],this.hasSearched=!1,void(this.selectedSymbolForAdd=null);this.searchTimer=setTimeout(function(){a.searchSymbolsInModal(s)},500)},handleSearchOrInput:function(t){t&&t.trim()&&(this.selectedMarketTab?this.symbolSearchResults.length>0||(this.hasSearched&&0===this.symbolSearchResults.length?this.handleDirectAdd():this.searchSymbolsInModal(t)):this.$message.warning(this.$t("dashboard.analysis.modal.addStock.pleaseSelectMarket")))},searchSymbolsInModal:function(t){var a=this;return(0,u.A)((0,d.A)().m(function s(){var e;return(0,d.A)().w(function(s){while(1)switch(s.p=s.n){case 0:if(t&&""!==t.trim()){s.n=1;break}return a.symbolSearchResults=[],a.hasSearched=!1,s.a(2);case 1:if(a.selectedMarketTab){s.n=2;break}return a.$message.warning(a.$t("dashboard.analysis.modal.addStock.pleaseSelectMarket")),s.a(2);case 2:return a.searchingSymbols=!0,a.hasSearched=!0,s.p=3,s.n=4,(0,v._3)({market:a.selectedMarketTab,keyword:t.trim(),limit:20});case 4:e=s.v,e&&1===e.code&&e.data&&e.data.length>0?a.symbolSearchResults=e.data:(a.symbolSearchResults=[],a.selectedSymbolForAdd={market:a.selectedMarketTab,symbol:t.trim().toUpperCase(),name:""}),s.n=6;break;case 5:s.p=5,s.v,a.symbolSearchResults=[],a.selectedSymbolForAdd={market:a.selectedMarketTab,symbol:t.trim().toUpperCase(),name:""};case 6:return s.p=6,a.searchingSymbols=!1,s.f(6);case 7:return s.a(2)}},s,null,[[3,5,6,7]])}))()},handleDirectAdd:function(){this.symbolSearchKeyword&&this.symbolSearchKeyword.trim()?this.selectedMarketTab?this.selectedSymbolForAdd={market:this.selectedMarketTab,symbol:this.symbolSearchKeyword.trim().toUpperCase(),name:""}:this.$message.warning(this.$t("dashboard.analysis.modal.addStock.pleaseSelectMarket")):this.$message.warning(this.$t("dashboard.analysis.modal.addStock.pleaseEnterSymbol"))},selectSymbol:function(t){this.selectedSymbolForAdd={market:t.market,symbol:t.symbol,name:t.name||t.symbol}},loadHotSymbols:function(t){var a=this;return(0,u.A)((0,d.A)().m(function s(){var e;return(0,d.A)().w(function(s){while(1)switch(s.p=s.n){case 0:if(t||(t=a.selectedMarketTab||(a.marketTypes.length>0?a.marketTypes[0].value:"")),t){s.n=1;break}return s.a(2);case 1:return a.loadingHotSymbols=!0,s.p=2,s.n=3,(0,v.z6)({market:t,limit:10});case 3:e=s.v,e&&1===e.code&&e.data?a.hotSymbols=e.data:a.hotSymbols=[],s.n=5;break;case 4:s.p=4,s.v,a.hotSymbols=[];case 5:return s.p=5,a.loadingHotSymbols=!1,s.f(5);case 6:return s.a(2)}},s,null,[[2,4,5,6]])}))()},removeFromWatchlist:function(t){var a=arguments,s=this;return(0,u.A)((0,d.A)().m(function e(){var i,r,o;return(0,d.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(s.userId){e.n=1;break}return e.a(2);case 1:return i="object"===(0,n.A)(t)?t.symbol:t,r="object"===(0,n.A)(t)?t.market:a[1],e.p=2,e.n=3,(0,v.mk)({userid:s.userId,symbol:i,market:r});case 3:if(o=e.v,!o||1!==o.code){e.n=5;break}return s.$message.success(s.$t("dashboard.analysis.message.removeStockSuccess")),e.n=4,s.loadWatchlist();case 4:e.n=6;break;case 5:s.$message.error((null===o||void 0===o?void 0:o.msg)||s.$t("dashboard.analysis.message.removeStockFailed"));case 6:e.n=8;break;case 7:e.p=7,e.v,s.$message.error(s.$t("dashboard.analysis.message.removeStockFailed"));case 8:return e.a(2)}},e,null,[[2,7]])}))()},getMarketName:function(t){return this.$t("dashboard.analysis.market.".concat(t))||t},formatNumber:function(t){return"string"===typeof t?t:t.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})},loadMarketTypes:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return a.p=0,a.n=1,(0,v.iO)();case 1:s=a.v,s&&1===s.code&&s.data&&Array.isArray(s.data)?t.marketTypes=s.data.map(function(t){return{value:t.value,i18nKey:t.i18nKey||"dashboard.analysis.market.".concat(t.value)}}):t.marketTypes=[{value:"USStock",i18nKey:"dashboard.analysis.market.USStock"},{value:"Crypto",i18nKey:"dashboard.analysis.market.Crypto"},{value:"Forex",i18nKey:"dashboard.analysis.market.Forex"},{value:"Futures",i18nKey:"dashboard.analysis.market.Futures"}],a.n=3;break;case 2:a.p=2,a.v,t.marketTypes=[{value:"USStock",i18nKey:"dashboard.analysis.market.USStock"},{value:"Crypto",i18nKey:"dashboard.analysis.market.Crypto"},{value:"Forex",i18nKey:"dashboard.analysis.market.Forex"},{value:"Futures",i18nKey:"dashboard.analysis.market.Futures"}];case 3:t.marketTypes.length>0&&!t.selectedMarketTab&&(t.selectedMarketTab=t.marketTypes[0].value);case 4:return a.a(2)}},a,null,[[0,2]])}))()}},watch:{presetSymbol:function(t){t&&t!==this.selectedSymbol&&(this.selectedSymbol=t,this.analysisResult=null,this.analysisError=null,this.analysisErrorTone="error")},autoAnalyzeSignal:function(t){var a=this;t&&(this.presetSymbol&&this.presetSymbol!==this.selectedSymbol&&(this.selectedSymbol=this.presetSymbol),this.$nextTick(function(){a.startFastAnalysis()}))},showAddStockModal:function(t){t?(this.marketTypes.length>0&&!this.selectedMarketTab&&(this.selectedMarketTab=this.marketTypes[0].value),this.selectedMarketTab&&this.loadHotSymbols(this.selectedMarketTab)):(this.selectedSymbolForAdd=null,this.symbolSearchKeyword="",this.symbolSearchResults=[],this.hasSearched=!1,this.searchTimer&&(clearTimeout(this.searchTimer),this.searchTimer=null))}}},N=F,I=(0,x.A)(N,e,i,!1,null,"5cbe52d9",null),D=I.exports},44146:function(t,a,s){s.d(a,{EF:function(){return l},f$:function(){return r},kF:function(){return o},r9:function(){return c},yI:function(){return n}});var e=s(75769),i="/api/global-market";function n(){return(0,e.Ay)({url:"".concat(i,"/overview"),method:"get"})}function r(){return(0,e.Ay)({url:"".concat(i,"/heatmap"),method:"get"})}function o(){return(0,e.Ay)({url:"".concat(i,"/calendar"),method:"get"})}function l(){return(0,e.Ay)({url:"".concat(i,"/sentiment"),method:"get"})}function c(t){return(0,e.Ay)({url:"".concat(i,"/opportunities"),method:"get",params:t})}},35038:function(t,a,s){s.d(a,{Qo:function(){return n},_3:function(){return d},dp:function(){return r},iO:function(){return c},mk:function(){return o},ms:function(){return l},z6:function(){return u}});var e=s(75769),i={GetWatchlist:"/api/market/watchlist/get",AddWatchlist:"/api/market/watchlist/add",RemoveWatchlist:"/api/market/watchlist/remove",GetWatchlistPrices:"/api/market/watchlist/prices",MultiAnalysis:"/api/analysis/multiAnalysis",CreateAnalysisTask:"/api/analysis/createTask",GetAnalysisTaskStatus:"/api/analysis/getTaskStatus",GetAnalysisHistoryList:"/api/analysis/getHistoryList",DeleteAnalysisTask:"/api/analysis/deleteTask",ReflectAnalysis:"/api/analysis/reflect",ChatMessage:"/api/ai/chat/message",GetChatHistory:"/api/ai/chat/history",SaveChatHistory:"/api/ai/chat/history/save",GetConfig:"/api/market/config",GetMenuFooterConfig:"/api/market/menuFooterConfig",GetMarketTypes:"/api/market/types",SearchSymbols:"/api/market/symbols/search",GetHotSymbols:"/api/market/symbols/hot"};function n(t){return(0,e.Ay)({url:i.GetWatchlist,method:"get",params:t})}function r(t){return(0,e.Ay)({url:i.AddWatchlist,method:"post",data:t})}function o(t){return(0,e.Ay)({url:i.RemoveWatchlist,method:"post",data:t})}function l(t){return(0,e.Ay)({url:i.GetWatchlistPrices,method:"get",params:{watchlist:JSON.stringify(t.watchlist||[])}})}function c(){return(0,e.Ay)({url:i.GetMarketTypes,method:"get"})}function d(t){return(0,e.Ay)({url:i.SearchSymbols,method:"get",params:t})}function u(t){return(0,e.Ay)({url:i.GetHotSymbols,method:"get",params:t})}},24364:function(t,a,s){s.d(a,{$p:function(){return o},Dt:function(){return i},Iw:function(){return v},Ps:function(){return n},Xg:function(){return r},_3:function(){return g},aU:function(){return h},bC:function(){return l},cg:function(){return y},ei:function(){return m},f:function(){return b},iO:function(){return _},qS:function(){return f},qu:function(){return p},sk:function(){return u},w1:function(){return c},yr:function(){return d}});var e=s(75769);function i(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,e.Ay)({url:"/api/portfolio/positions",method:"get",params:t})}function n(t){return(0,e.Ay)({url:"/api/portfolio/positions",method:"post",data:t})}function r(t,a){return(0,e.Ay)({url:"/api/portfolio/positions/".concat(t),method:"put",data:a})}function o(t){return(0,e.Ay)({url:"/api/portfolio/positions/".concat(t),method:"delete"})}function l(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,e.Ay)({url:"/api/portfolio/summary",method:"get",params:t})}function c(){return(0,e.Ay)({url:"/api/portfolio/monitors",method:"get"})}function d(t){return(0,e.Ay)({url:"/api/portfolio/monitors",method:"post",data:t})}function u(t,a){return(0,e.Ay)({url:"/api/portfolio/monitors/".concat(t),method:"put",data:a})}function m(t){return(0,e.Ay)({url:"/api/portfolio/monitors/".concat(t),method:"delete"})}function h(t){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return(0,e.Ay)({url:"/api/portfolio/monitors/".concat(t,"/run"),method:"post",data:a})}function p(){return(0,e.Ay)({url:"/api/portfolio/alerts",method:"get"})}function v(t){return(0,e.Ay)({url:"/api/portfolio/alerts",method:"post",data:t})}function y(t,a){return(0,e.Ay)({url:"/api/portfolio/alerts/".concat(t),method:"put",data:a})}function f(t){return(0,e.Ay)({url:"/api/portfolio/alerts/".concat(t),method:"delete"})}function b(){return(0,e.Ay)({url:"/api/portfolio/groups",method:"get"})}function g(t){return(0,e.Ay)({url:"/api/market/symbols/search",method:"post",data:t})}function _(){return(0,e.Ay)({url:"/api/market/types",method:"get"})}},21560:function(t,a,s){s.d(a,{A:function(){return i}});var e=s(44735);function i(t){if(null!=t){var a=t["function"==typeof Symbol&&Symbol.iterator||"@@iterator"],s=0;if(a)return a.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length))return{next:function(){return t&&s>=t.length&&(t=void 0),{value:t&&t[s++],done:!t}}}}throw new TypeError((0,e.A)(t)+" is not iterable")}}}]); \ No newline at end of file diff --git a/frontend/dist/js/668-legacy.b2485dd5.js b/frontend/dist/js/668-legacy.b2485dd5.js new file mode 100644 index 0000000..1a550be --- /dev/null +++ b/frontend/dist/js/668-legacy.b2485dd5.js @@ -0,0 +1 @@ +"use strict";(self["webpackChunkvue_antd_pro"]=self["webpackChunkvue_antd_pro"]||[]).push([[668],{77668:function(e,t,a){a.r(t),a.d(t,{default:function(){return v}});a(52675),a(89463),a(28706),a(50778);var s=function(){var e=this,t=e._self._c;return t("div",{staticClass:"settings-page",class:{"theme-dark":e.isDarkTheme}},[e.showRestartTip?t("a-alert",{staticClass:"restart-alert",attrs:{type:"warning",showIcon:"",closable:""},on:{close:function(t){e.showRestartTip=!1}}},[t("template",{slot:"message"},[t("span",[e._v(e._s(e.$t("settings.restartRequired")))]),t("a-button",{attrs:{size:"small",type:"link"},on:{click:e.copyRestartCommand}},[e._v(" "+e._s(e.$t("settings.copyRestartCmd"))+" ")])],1)],2):e._e(),t("div",{staticClass:"settings-header"},[t("h2",{staticClass:"page-title"},[t("a-icon",{attrs:{type:"setting"}}),t("span",[e._v(e._s(e.$t("settings.title")))])],1),t("p",{staticClass:"page-desc"},[e._v(e._s(e.$t("settings.description")))])]),t("a-spin",{attrs:{spinning:e.loading}},[t("div",{staticClass:"settings-content"},[t("a-collapse",{staticClass:"settings-collapse",attrs:{bordered:!1},model:{value:e.activeKeys,callback:function(t){e.activeKeys=t},expression:"activeKeys"}},e._l(e.sortedSchema,function(a,s){return t("a-collapse-panel",{key:s},[t("template",{slot:"header"},[t("span",{staticClass:"panel-header"},[t("a-icon",{staticClass:"panel-icon-left",attrs:{type:a.icon||e.getGroupIcon(s)}}),t("span",{staticClass:"panel-title"},[e._v(e._s(e.getGroupTitle(s,a.title)))])],1)]),"ai"===s?t("div",{staticClass:"openrouter-balance-card"},[t("a-card",{attrs:{size:"small",bordered:!1}},[t("div",{staticClass:"balance-header"},[t("span",{staticClass:"balance-title"},[t("a-icon",{staticStyle:{"margin-right":"6px"},attrs:{type:"wallet"}}),e._v(" "+e._s(e.$t("settings.openrouterBalance")||"OpenRouter 账户余额")+" ")],1),t("a-button",{attrs:{size:"small",type:"primary",ghost:"",loading:e.balanceLoading},on:{click:e.queryOpenRouterBalance}},[t("a-icon",{attrs:{type:"sync"}}),e._v(" "+e._s(e.$t("settings.queryBalance")||"查询余额")+" ")],1)],1),e.openrouterBalance?t("div",{staticClass:"balance-info"},[t("a-row",{attrs:{gutter:16}},[t("a-col",{attrs:{span:8}},[t("a-statistic",{attrs:{title:e.$t("settings.balanceUsage")||"已使用",value:e.openrouterBalance.usage,prefix:"$",precision:4,"value-style":{color:"#cf1322"}}})],1),t("a-col",{attrs:{span:8}},[t("a-statistic",{attrs:{title:e.$t("settings.balanceRemaining")||"剩余额度",value:null!==e.openrouterBalance.limit_remaining?e.openrouterBalance.limit_remaining:"∞",prefix:null!==e.openrouterBalance.limit_remaining?"$":"",precision:null!==e.openrouterBalance.limit_remaining?4:0,"value-style":{color:null!==e.openrouterBalance.limit_remaining&&e.openrouterBalance.limit_remaining<1?"#cf1322":"#3f8600"}}})],1),t("a-col",{attrs:{span:8}},[t("a-statistic",{attrs:{title:e.$t("settings.balanceLimit")||"总限额",value:null!==e.openrouterBalance.limit?e.openrouterBalance.limit:"∞",prefix:null!==e.openrouterBalance.limit?"$":"",precision:null!==e.openrouterBalance.limit?2:0}})],1)],1),e.openrouterBalance.is_free_tier?t("div",{staticClass:"free-tier-badge"},[t("a-tag",{attrs:{color:"blue"}},[e._v(e._s(e.$t("settings.freeTier")))])],1):e._e()],1):t("div",{staticClass:"balance-empty"},[t("a-icon",{staticStyle:{"margin-right":"6px"},attrs:{type:"info-circle"}}),e._v(" "+e._s(e.$t("settings.balanceNotQueried")||'点击"查询余额"获取账户信息')+" ")],1)])],1):e._e(),t("a-form",{staticClass:"settings-form",attrs:{form:e.form,layout:"vertical"}},[t("a-row",{attrs:{gutter:24}},e._l(a.items,function(a){return t("a-col",{key:a.key,attrs:{xs:24,sm:24,md:12,lg:12}},[t("a-form-item",[t("template",{slot:"label"},[t("span",{staticClass:"form-label-with-tooltip"},[t("span",{staticClass:"label-text"},[e._v(e._s(e.getItemLabel(s,a)))]),a.description?t("a-tooltip",{attrs:{placement:"top"}},[t("template",{slot:"title"},[e._v(" "+e._s(e.getItemDescription(s,a))+" ")]),t("a-icon",{staticClass:"help-icon",attrs:{type:"question-circle"}})],2):e._e(),a.link?t("a",{staticClass:"api-link",attrs:{href:a.link,target:"_blank",rel:"noopener noreferrer"},on:{click:function(e){e.stopPropagation()}}},[t("a-icon",{attrs:{type:"link"}}),e._v(" "+e._s(e.getLinkText(a.link_text))+" ")],1):e._e()],1)]),"text"===a.type?[t("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:[a.key,{initialValue:e.getFieldValue(s,a.key)}],expression:"[item.key, { initialValue: getFieldValue(groupKey, item.key) }]"}],attrs:{placeholder:a.default?"".concat(e.$t("settings.default"),": ").concat(a.default):"",allowClear:""}})]:"password"===a.type?[t("div",{staticClass:"password-field"},[t("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:[a.key,{initialValue:e.getFieldValue(s,a.key)}],expression:"[item.key, { initialValue: getFieldValue(groupKey, item.key) }]"}],attrs:{type:e.passwordVisible[a.key]?"text":"password",placeholder:e.$t("settings.inputApiKey"),allowClear:""}},[t("a-icon",{staticStyle:{cursor:"pointer"},attrs:{slot:"suffix",type:e.passwordVisible[a.key]?"eye":"eye-invisible"},on:{click:function(t){return e.togglePasswordVisible(a.key)}},slot:"suffix"})],1)],1)]:"number"===a.type?[t("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:[a.key,{initialValue:e.getNumberValue(s,a.key,a.default)}],expression:"[item.key, { initialValue: getNumberValue(groupKey, item.key, item.default) }]"}],staticStyle:{width:"100%"},attrs:{placeholder:a.default?"".concat(e.$t("settings.default"),": ").concat(a.default):""}})]:"boolean"===a.type?[t("a-switch",{directives:[{name:"decorator",rawName:"v-decorator",value:[a.key,{valuePropName:"checked",initialValue:e.getBoolValue(s,a.key,a.default)}],expression:"[item.key, { valuePropName: 'checked', initialValue: getBoolValue(groupKey, item.key, item.default) }]"}]})]:"select"===a.type?[t("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:[a.key,{initialValue:e.getFieldValue(s,a.key)||a.default}],expression:"[item.key, { initialValue: getFieldValue(groupKey, item.key) || item.default }]"}],attrs:{placeholder:a.default?"".concat(e.$t("settings.default"),": ").concat(a.default):e.$t("settings.pleaseSelect")}},e._l(e.getSelectOptions(a),function(a){return t("a-select-option",{key:a.value,attrs:{value:a.value}},[e._v(" "+e._s(a.label)+" ")])}),1)]:e._e(),a.default&&"boolean"!==a.type&&"password"!==a.type?t("div",{staticClass:"field-default"},[e._v(" "+e._s(e.$t("settings.default"))+": "+e._s(a.default)+" ")]):e._e()],2)],1)}),1)],1)],2)}),1)],1)]),t("div",{staticClass:"settings-footer"},[t("a-button",{attrs:{disabled:e.saving},on:{click:e.handleReset}},[t("a-icon",{attrs:{type:"undo"}}),e._v(" "+e._s(e.$t("settings.reset"))+" ")],1),t("a-button",{attrs:{type:"primary",loading:e.saving},on:{click:e.handleSave}},[t("a-icon",{attrs:{type:"save"}}),e._v(" "+e._s(e.$t("settings.save"))+" ")],1)],1)],1)},i=[],n=a(57532),r=a(81127),l=a(56252),o=a(44735),c=a(15863),u=(a(2008),a(62062),a(26910),a(5506),a(79432),a(26099),a(47764),a(11392),a(62953),a(53003)),p=a(55434),d={name:"Settings",mixins:[p.t],data:function(){return{loading:!1,saving:!1,schema:{},values:{},activeKeys:["auth","ai","trading"],passwordVisible:{},showRestartTip:!1,balanceLoading:!1,openrouterBalance:null}},computed:{isDarkTheme:function(){return"dark"===this.navTheme||"realdark"===this.navTheme},sortedSchema:function(){var e=Object.entries(this.schema);e.sort(function(e,t){var a=e[1].order||999,s=t[1].order||999;return a-s});for(var t={},a=0,s=e;a0?a("span",{staticClass:"group-status running"},[e._v(" "+e._s(t.runningCount)+" "+e._s(e.$t("trading-assistant.status.running"))+" ")]):e._e(),t.stoppedCount>0?a("span",{staticClass:"group-status stopped"},[e._v(" "+e._s(t.stoppedCount)+" "+e._s(e.$t("trading-assistant.status.stopped"))+" ")]):e._e(),a("a-dropdown",{attrs:{getPopupContainer:e.getDropdownContainer,trigger:["click"]}},[a("a-menu",{attrs:{slot:"overlay"},on:{click:function(a){var i=a.key;return e.handleGroupMenuClick(i,t)}},slot:"overlay"},[a("a-menu-item",{key:"startAll"},[a("a-icon",{attrs:{type:"play-circle"}}),e._v(" "+e._s(e.$t("trading-assistant.startAll"))+" ")],1),a("a-menu-item",{key:"stopAll"},[a("a-icon",{attrs:{type:"pause-circle"}}),e._v(" "+e._s(e.$t("trading-assistant.stopAll"))+" ")],1),a("a-menu-divider"),a("a-menu-item",{key:"deleteAll",staticClass:"danger-item"},[a("a-icon",{attrs:{type:"delete"}}),e._v(" "+e._s(e.$t("trading-assistant.deleteAll"))+" ")],1)],1),a("a-button",{attrs:{type:"link",icon:"more",size:"small"}})],1)],1)]),a("div",{directives:[{name:"show",rawName:"v-show",value:!e.collapsedGroups[t.id],expression:"!collapsedGroups[group.id]"}],staticClass:"strategy-group-content"},e._l(t.strategies,function(t){return a("div",{key:t.id,class:["strategy-list-item",{active:e.selectedStrategy&&e.selectedStrategy.id===t.id}],on:{click:function(a){return e.handleSelectStrategy(t)}}},[a("div",{staticClass:"strategy-item-content"},[a("div",{staticClass:"strategy-item-header"},[a("div",{staticClass:"strategy-name-wrapper"},["strategy"===e.groupByMode?[t.trading_config&&t.trading_config.symbol?a("span",{staticClass:"info-item"},[a("a-icon",{attrs:{type:"dollar"}}),e._v(" "+e._s(t.trading_config.symbol)+" ")],1):e._e()]:[a("span",{staticClass:"info-item strategy-name-text"},[a("a-icon",{attrs:{type:"thunderbolt"}}),e._v(" "+e._s(t.displayInfo?t.displayInfo.strategyName:t.strategy_name)+" ")],1),t.displayInfo&&t.displayInfo.timeframe?a("a-tag",{attrs:{size:"small",color:"cyan"}},[a("a-icon",{staticStyle:{"margin-right":"2px"},attrs:{type:"clock-circle"}}),e._v(" "+e._s(t.displayInfo.timeframe)+" ")],1):e._e(),t.displayInfo&&t.displayInfo.indicatorName&&"-"!==t.displayInfo.indicatorName?a("a-tag",{attrs:{size:"small",color:"purple"}},[a("a-icon",{staticStyle:{"margin-right":"2px"},attrs:{type:"line-chart"}}),e._v(" "+e._s(t.displayInfo.indicatorName)+" ")],1):e._e()],a("span",{staticClass:"status-label",class:[t.status?"status-".concat(t.status):"",{"status-stopped":"stopped"===t.status}]},[e._v(" "+e._s(e.getStatusText(t.status))+" ")])],2)])]),a("div",{staticClass:"strategy-item-actions",on:{click:function(t){t.stopPropagation()}}},[a("a-dropdown",{attrs:{getPopupContainer:e.getDropdownContainer,trigger:["click"]}},[a("a-menu",{attrs:{slot:"overlay"},on:{click:function(a){var i=a.key;return e.handleMenuClick(i,t)}},slot:"overlay"},["stopped"===t.status?a("a-menu-item",{key:"start"},[a("a-icon",{attrs:{type:"play-circle"}}),e._v(" "+e._s(e.$t("trading-assistant.startStrategy"))+" ")],1):e._e(),"running"===t.status?a("a-menu-item",{key:"stop"},[a("a-icon",{attrs:{type:"pause-circle"}}),e._v(" "+e._s(e.$t("trading-assistant.stopStrategy"))+" ")],1):e._e(),a("a-menu-divider"),a("a-menu-item",{key:"edit"},[a("a-icon",{attrs:{type:"edit"}}),e._v(" "+e._s(e.$t("trading-assistant.editStrategy"))+" ")],1),a("a-menu-divider"),a("a-menu-item",{key:"delete",staticClass:"danger-item"},[a("a-icon",{attrs:{type:"delete"}}),e._v(" "+e._s(e.$t("trading-assistant.deleteStrategy"))+" ")],1)],1),a("a-button",{attrs:{type:"link",icon:"more",size:"small"}})],1)],1)])}),0)])}),e._l(e.groupedStrategies.ungrouped,function(t){return a("div",{key:t.id,class:["strategy-list-item",{active:e.selectedStrategy&&e.selectedStrategy.id===t.id}],on:{click:function(a){return e.handleSelectStrategy(t)}}},[a("div",{staticClass:"strategy-item-content"},[a("div",{staticClass:"strategy-item-header"},[a("div",{staticClass:"strategy-name-wrapper"},[t.exchange_config&&t.exchange_config.exchange_id?a("a-tag",{staticClass:"exchange-tag",attrs:{color:e.getExchangeTagColor(t.exchange_config.exchange_id),size:"small"}},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"bank"}}),e._v(" "+e._s(e.getExchangeDisplayName(t.exchange_config.exchange_id))+" ")],1):e._e(),a("span",{staticClass:"strategy-name"},[e._v(e._s(t.strategy_name))]),"PromptBasedStrategy"===t.strategy_type?a("a-tag",{staticClass:"strategy-type-tag",attrs:{color:"purple",size:"small"}},[a("a-icon",{staticStyle:{"margin-right":"2px"},attrs:{type:"robot"}}),e._v(" AI ")],1):e._e()],1)]),a("div",{staticClass:"strategy-item-info"},[t.trading_config&&t.trading_config.symbol?a("span",{staticClass:"info-item"},[a("a-icon",{attrs:{type:"dollar"}}),e._v(" "+e._s(t.trading_config.symbol)+" ")],1):e._e(),a("span",{staticClass:"status-label",class:[t.status?"status-".concat(t.status):"",{"status-stopped":"stopped"===t.status}]},[e._v(" "+e._s(e.getStatusText(t.status))+" ")])])]),a("div",{staticClass:"strategy-item-actions",on:{click:function(t){t.stopPropagation()}}},[a("a-dropdown",{attrs:{getPopupContainer:e.getDropdownContainer,trigger:["click"]}},[a("a-menu",{attrs:{slot:"overlay"},on:{click:function(a){var i=a.key;return e.handleMenuClick(i,t)}},slot:"overlay"},["stopped"===t.status?a("a-menu-item",{key:"start"},[a("a-icon",{attrs:{type:"play-circle"}}),e._v(" "+e._s(e.$t("trading-assistant.startStrategy"))+" ")],1):e._e(),"running"===t.status?a("a-menu-item",{key:"stop"},[a("a-icon",{attrs:{type:"pause-circle"}}),e._v(" "+e._s(e.$t("trading-assistant.stopStrategy"))+" ")],1):e._e(),a("a-menu-divider"),a("a-menu-item",{key:"edit"},[a("a-icon",{attrs:{type:"edit"}}),e._v(" "+e._s(e.$t("trading-assistant.editStrategy"))+" ")],1),a("a-menu-divider"),a("a-menu-item",{key:"delete",staticClass:"danger-item"},[a("a-icon",{attrs:{type:"delete"}}),e._v(" "+e._s(e.$t("trading-assistant.deleteStrategy"))+" ")],1)],1),a("a-button",{attrs:{type:"link",icon:"more",size:"small"}})],1)],1)])})],2):a("a-empty",{attrs:{description:e.$t("trading-assistant.noStrategy")}})],1)],1)],1),a("a-col",{staticClass:"strategy-detail-col",attrs:{xs:24,sm:24,md:14,lg:16,xl:16}},[e.selectedStrategy?a("div",{staticClass:"strategy-detail-panel"},[a("a-card",{staticClass:"strategy-header-card",attrs:{bordered:!1}},[a("div",{staticClass:"strategy-header"},[a("div",{staticClass:"header-left"},[a("div",{staticClass:"strategy-title-row"},[a("h3",{staticClass:"strategy-title"},[e._v(e._s(e.selectedStrategy.strategy_name))]),a("div",{staticClass:"status-badge",class:["status-".concat(e.selectedStrategy.status)]},[a("span",{staticClass:"status-dot"}),e._v(" "+e._s(e.getStatusText(e.selectedStrategy.status))+" ")])]),a("div",{staticClass:"key-stats-grid"},[e.selectedStrategy.initial_capital||e.selectedStrategy.trading_config&&e.selectedStrategy.trading_config.initial_capital?a("div",{staticClass:"stat-card"},[a("div",{staticClass:"stat-icon investment"},[a("a-icon",{attrs:{type:"wallet"}})],1),a("div",{staticClass:"stat-content"},[a("div",{staticClass:"stat-label"},[e._v(e._s(e.$t("trading-assistant.detail.totalInvestment")))]),a("div",{staticClass:"stat-value"},[e._v("$"+e._s(parseFloat(e.selectedStrategy.initial_capital||(null===(t=e.selectedStrategy.trading_config)||void 0===t?void 0:t.initial_capital)||0).toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})))])])]):e._e(),null!==e.currentEquity?a("div",{staticClass:"stat-card"},[a("div",{staticClass:"stat-icon equity"},[a("a-icon",{attrs:{type:"fund"}})],1),a("div",{staticClass:"stat-content"},[a("div",{staticClass:"stat-label"},[e._v(e._s(e.$t("trading-assistant.detail.currentEquity")))]),a("div",{staticClass:"stat-value",class:e.getEquityColorClass},[e._v(e._s(e.formatCurrency(e.currentEquity)))])])]):e._e(),null!==e.totalPnl?a("div",{staticClass:"stat-card pnl-card",class:{profit:e.totalPnl>0,loss:e.totalPnl<0}},[a("div",{staticClass:"stat-icon pnl"},[a("a-icon",{attrs:{type:e.totalPnl>=0?"rise":"fall"}})],1),a("div",{staticClass:"stat-content"},[a("div",{staticClass:"stat-label"},[e._v(e._s(e.$t("trading-assistant.detail.totalPnl")))]),a("div",{staticClass:"stat-value",class:e.getPnlColorClass},[e._v(" "+e._s(e.formatPnl(e.totalPnl))+" "),a("span",{staticClass:"pnl-percent"},[e._v("("+e._s(e.formatPnlPercent(e.totalPnlPercent))+")")])])])]):e._e()]),a("div",{staticClass:"strategy-tags"},[e.selectedStrategy.trading_config?a("div",{staticClass:"tag-item"},[a("a-icon",{attrs:{type:"stock"}}),a("span",[e._v(e._s(e.selectedStrategy.trading_config.symbol))])],1):e._e(),e.selectedStrategy.indicator_config&&e.selectedStrategy.indicator_config.indicator_name?a("div",{staticClass:"tag-item"},[a("a-icon",{attrs:{type:"line-chart"}}),a("span",[e._v(e._s(e.selectedStrategy.indicator_config.indicator_name))])],1):e._e(),e.selectedStrategy.trading_config?a("div",{staticClass:"tag-item"},[a("a-icon",{attrs:{type:"thunderbolt"}}),a("span",[e._v(e._s(e.selectedStrategy.trading_config.leverage||1)+"x")])],1):e._e(),e.selectedStrategy.trading_config&&e.selectedStrategy.trading_config.trade_direction?a("div",{staticClass:"tag-item"},[a("a-icon",{attrs:{type:"swap"}}),a("span",[e._v(e._s(e.getTradeDirectionText(e.selectedStrategy.trading_config.trade_direction)))])],1):e._e(),e.selectedStrategy.trading_config&&e.selectedStrategy.trading_config.timeframe?a("div",{staticClass:"tag-item"},[a("a-icon",{attrs:{type:"clock-circle"}}),a("span",[e._v(e._s(e.selectedStrategy.trading_config.timeframe))])],1):e._e()])]),a("div",{staticClass:"header-right"},["stopped"===e.selectedStrategy.status?a("a-button",{staticClass:"action-btn start-btn",attrs:{type:"primary",size:"large"},on:{click:function(t){return e.handleStartStrategy(e.selectedStrategy.id)}}},[a("a-icon",{attrs:{type:"play-circle"}}),e._v(" "+e._s(e.$t("trading-assistant.startStrategy"))+" ")],1):e._e(),"running"===e.selectedStrategy.status?a("a-button",{staticClass:"action-btn stop-btn",attrs:{type:"danger",size:"large"},on:{click:function(t){return e.handleStopStrategy(e.selectedStrategy.id)}}},[a("a-icon",{attrs:{type:"pause-circle"}}),e._v(" "+e._s(e.$t("trading-assistant.stopStrategy"))+" ")],1):e._e()],1)])]),a("a-card",{staticClass:"strategy-content-card",attrs:{bordered:!1}},[a("a-tabs",{attrs:{defaultActiveKey:"positions"}},[a("a-tab-pane",{key:"positions",attrs:{tab:e.$t("trading-assistant.tabs.positions")}},[a("position-records",{attrs:{"strategy-id":e.selectedStrategy.id,"market-type":e.selectedStrategy.trading_config&&e.selectedStrategy.trading_config.market_type||"swap",leverage:e.selectedStrategy.trading_config&&e.selectedStrategy.trading_config.leverage||1,loading:e.loadingRecords}})],1),a("a-tab-pane",{key:"trades",attrs:{tab:e.$t("trading-assistant.tabs.tradingRecords")}},[a("trading-records",{attrs:{"strategy-id":e.selectedStrategy.id,loading:e.loadingRecords}})],1)],1)],1)],1):a("div",{staticClass:"empty-detail"},[a("a-empty",{attrs:{description:e.$t("trading-assistant.selectStrategy")}})],1)])],1),a("a-modal",{attrs:{visible:e.showFormModal,title:e.editingStrategy?e.$t("trading-assistant.editStrategy"):e.$t("trading-assistant.createStrategy"),width:e.isMobile?"95%":1100,confirmLoading:e.saving,maskClosable:!1,wrapClassName:e.isMobile?"mobile-modal":"",bodyStyle:{maxHeight:"70vh",overflowY:"auto"}},on:{ok:e.handleSubmit,cancel:e.handleCloseModal}},[a("a-spin",{attrs:{spinning:e.loadingIndicators}},[e.editingStrategy?e._e():a("div",{staticClass:"creation-mode-toggle"},[a("a-radio-group",{attrs:{size:"small","button-style":"solid"},model:{value:e.creationMode,callback:function(t){e.creationMode=t},expression:"creationMode"}},[a("a-radio-button",{attrs:{value:"simple"}},[a("a-icon",{attrs:{type:"rocket"}}),e._v(" "+e._s(e.$t("trading-assistant.form.simpleMode"))+" ")],1),a("a-radio-button",{attrs:{value:"advanced"}},[a("a-icon",{attrs:{type:"setting"}}),e._v(" "+e._s(e.$t("trading-assistant.form.advancedMode"))+" ")],1)],1),a("span",{staticClass:"mode-hint"},[e._v(e._s(e.isSimpleMode?e.$t("trading-assistant.form.simpleModeHint"):e.$t("trading-assistant.form.advancedModeHint")))])],1),a("a-steps",{staticClass:"steps-container",attrs:{current:e.displayCurrentStep}},[a("a-step",{attrs:{title:e.isSimpleMode&&!e.editingStrategy?e.$t("trading-assistant.form.simpleStep1"):e.$t("trading-assistant.form.step1")}}),e.isAdvancedMode||e.editingStrategy?a("a-step",{attrs:{title:e.$t("trading-assistant.form.step2Params")}}):e._e(),a("a-step",{attrs:{title:e.isSimpleMode&&!e.editingStrategy?e.$t("trading-assistant.form.simpleStep2"):e.$t("trading-assistant.form.step3Signal")}})],1),a("div",{staticClass:"form-container"},[a("div",{directives:[{name:"show",rawName:"v-show",value:0===e.currentStep,expression:"currentStep === 0"}],staticClass:"step-content"},["indicator"===e.strategyType?a("div",[a("a-form",{attrs:{form:e.form,layout:"vertical"}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.indicator")}},[a("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["indicator_id",{rules:[{required:!0,message:e.$t("trading-assistant.validation.indicatorRequired")}]}],expression:"['indicator_id', { rules: [{ required: true, message: $t('trading-assistant.validation.indicatorRequired') }] }]"}],attrs:{placeholder:e.$t("trading-assistant.placeholders.selectIndicator"),"show-search":"","filter-option":e.filterIndicatorOption,loading:e.loadingIndicators,getPopupContainer:function(t){return t.parentNode}},on:{focus:e.handleIndicatorSelectFocus,change:e.handleIndicatorChange}},e._l(e.availableIndicators,function(t){return a("a-select-option",{key:String(t.id),attrs:{value:String(t.id)}},[a("div",{staticClass:"indicator-option"},[a("span",{staticClass:"indicator-name"},[e._v(e._s(t.name))]),t.type?a("a-tag",{attrs:{size:"small",color:e.getIndicatorTypeColor(t.type)}},[e._v(" "+e._s(e.getIndicatorTypeName(t.type))+" ")]):e._e()],1)])}),1),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.$t("trading-assistant.form.indicatorHint"))+" ")])],1),e.selectedIndicator?a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.indicatorDescription")}},[a("div",{staticClass:"indicator-description"},[e._v(" "+e._s(e.selectedIndicator.description||e.$t("trading-assistant.form.noDescription"))+" ")])]):e._e(),e.indicatorParams.length>0?a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.indicatorParams")}},[a("div",{staticClass:"indicator-params-form"},[a("a-row",{attrs:{gutter:16}},e._l(e.indicatorParams,function(t){return a("a-col",{key:t.name,attrs:{xs:24,sm:12,md:8}},[a("div",{staticClass:"param-item"},[a("label",{staticClass:"param-label"},[e._v(" "+e._s(t.name)+" "),t.description?a("a-tooltip",{attrs:{title:t.description}},[a("a-icon",{staticStyle:{"margin-left":"4px",color:"#999"},attrs:{type:"question-circle"}})],1):e._e()],1),"int"===t.type?a("a-input-number",{staticStyle:{width:"100%"},attrs:{precision:0,size:"small"},model:{value:e.indicatorParamValues[t.name],callback:function(a){e.$set(e.indicatorParamValues,t.name,a)},expression:"indicatorParamValues[param.name]"}}):"float"===t.type?a("a-input-number",{staticStyle:{width:"100%"},attrs:{precision:4,size:"small"},model:{value:e.indicatorParamValues[t.name],callback:function(a){e.$set(e.indicatorParamValues,t.name,a)},expression:"indicatorParamValues[param.name]"}}):"bool"===t.type?a("a-switch",{attrs:{size:"small"},model:{value:e.indicatorParamValues[t.name],callback:function(a){e.$set(e.indicatorParamValues,t.name,a)},expression:"indicatorParamValues[param.name]"}}):a("a-input",{attrs:{size:"small"},model:{value:e.indicatorParamValues[t.name],callback:function(a){e.$set(e.indicatorParamValues,t.name,a)},expression:"indicatorParamValues[param.name]"}})],1)])}),1),a("div",{staticClass:"form-item-hint",staticStyle:{"margin-top":"8px"}},[e._v(" "+e._s(e.$t("trading-assistant.form.indicatorParamsHint"))+" ")])],1)]):e._e(),a("a-divider"),a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.strategyName")}},[a("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["strategy_name",{rules:[{required:!0,message:e.$t("trading-assistant.validation.strategyNameRequired")}]}],expression:"['strategy_name', { rules: [{ required: true, message: $t('trading-assistant.validation.strategyNameRequired') }] }]"}],attrs:{placeholder:e.$t("trading-assistant.placeholders.inputStrategyName")}})],1),e.isSimpleMode&&!e.editingStrategy?a("div",{staticClass:"simple-defaults-summary"},[a("a-alert",{staticStyle:{"margin-bottom":"12px"},attrs:{type:"info","show-icon":""},scopedSlots:e._u([{key:"message",fn:function(){return[a("span",[e._v(e._s(e.$t("trading-assistant.form.simpleDefaultsHint")))])]},proxy:!0},{key:"description",fn:function(){return[a("span",[e._v(" "+e._s(e.$t("trading-assistant.form.klinePeriod"))+": "),a("b",[e._v("15m")]),e._v(" · "+e._s(e.$t("trading-assistant.form.leverage"))+": "),a("b",[e._v("5x")]),e._v(" · "+e._s(e.$t("trading-assistant.form.marketType"))+": "),a("b",[e._v(e._s(e.$t("trading-assistant.form.marketTypeFutures")))]),e._v(" · "+e._s(e.$t("dashboard.indicator.backtest.field.stopLossPct"))+": "),a("b",[e._v("3%")]),e._v(" · "+e._s(e.$t("dashboard.indicator.backtest.field.takeProfitPct"))+": "),a("b",[e._v("6%")])])]},proxy:!0}],null,!1,39555864)}),a("a-button",{staticStyle:{padding:"0","margin-bottom":"12px"},attrs:{type:"link",size:"small"},on:{click:function(t){e.showAdvancedSettings=!e.showAdvancedSettings}}},[a("a-icon",{attrs:{type:e.showAdvancedSettings?"up":"down"}}),e._v(" "+e._s(e.showAdvancedSettings?e.$t("trading-assistant.form.hideAdvancedSettings"):e.$t("trading-assistant.form.showAdvancedSettings"))+" ")],1)],1):e._e(),a("div",{directives:[{name:"show",rawName:"v-show",value:e.isAdvancedMode||e.editingStrategy||e.showAdvancedSettings,expression:"isAdvancedMode || editingStrategy || showAdvancedSettings"}]},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.strategyType")}},[a("a-radio-group",{directives:[{name:"decorator",rawName:"v-decorator",value:["cs_strategy_type",{initialValue:"single"}],expression:"['cs_strategy_type', { initialValue: 'single' }]"}],on:{change:e.handleStrategyTypeChange}},[a("a-radio",{attrs:{value:"single"}},[e._v(e._s(e.$t("trading-assistant.form.strategyTypeSingle")))]),a("a-radio",{attrs:{value:"cross_sectional"}},[e._v(e._s(e.$t("trading-assistant.form.strategyTypeCrossSectional")))])],1),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.$t("trading-assistant.form.strategyTypeHint"))+" ")])],1)],1),"cross_sectional"===e.form.getFieldValue("cs_strategy_type")?[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.symbolList")}},[a("a-select",{attrs:{mode:"multiple",placeholder:e.$t("trading-assistant.placeholders.selectSymbols"),"show-search":"","filter-option":e.filterWatchlistOptionWithAdd,loading:e.loadingWatchlist,getPopupContainer:function(t){return t.parentNode},maxTagCount:5},on:{change:e.handleCrossSectionalSymbolChange},model:{value:e.crossSectionalSymbols,callback:function(t){e.crossSectionalSymbols=t},expression:"crossSectionalSymbols"}},[e._l(e.watchlist,function(t){return a("a-select-option",{key:"".concat(t.market,":").concat(t.symbol),attrs:{value:"".concat(t.market,":").concat(t.symbol)}},[a("div",{staticClass:"symbol-option"},[a("a-tag",{staticStyle:{"margin-right":"8px","margin-bottom":"0"},attrs:{color:e.getMarketColor(t.market)}},[e._v(" "+e._s(t.market)+" ")]),a("span",{staticClass:"symbol-name"},[e._v(e._s(t.symbol))]),t.name?a("span",{staticClass:"symbol-name-extra"},[e._v(e._s(t.name))]):e._e()],1)])}),a("a-select-option",{key:"__add_symbol_option__",staticClass:"add-symbol-option",attrs:{value:"__add_symbol_option__"}},[a("div",{staticStyle:{width:"100%","text-align":"center",padding:"4px 0",color:"#1890ff",cursor:"pointer"}},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"plus"}}),a("span",[e._v(e._s(e.$t("trading-assistant.form.addSymbol")))])],1)])],2),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.$t("trading-assistant.form.symbolListHint"))+" ")])],1),a("a-row",{attrs:{gutter:16}},[a("a-col",{attrs:{xs:24,sm:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.portfolioSize")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["portfolio_size",{initialValue:10,rules:[{required:!0,message:e.$t("trading-assistant.validation.portfolioSizeRequired")}]}],expression:"['portfolio_size', { initialValue: 10, rules: [{ required: true, message: $t('trading-assistant.validation.portfolioSizeRequired') }] }]"}],staticStyle:{width:"100%"},attrs:{min:1,max:100,step:1}}),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.$t("trading-assistant.form.portfolioSizeHint"))+" ")])],1)],1),a("a-col",{attrs:{xs:24,sm:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.longRatio")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["long_ratio",{initialValue:.5,rules:[{required:!0,message:e.$t("trading-assistant.validation.longRatioRequired")}]}],expression:"['long_ratio', { initialValue: 0.5, rules: [{ required: true, message: $t('trading-assistant.validation.longRatioRequired') }] }]"}],staticStyle:{width:"100%"},attrs:{min:0,max:1,step:.1,precision:2}}),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.$t("trading-assistant.form.longRatioHint"))+" ")])],1)],1)],1),a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.rebalanceFrequency")}},[a("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["rebalance_frequency",{initialValue:"daily"}],expression:"['rebalance_frequency', { initialValue: 'daily' }]"}],staticStyle:{width:"100%"}},[a("a-select-option",{attrs:{value:"daily"}},[e._v(e._s(e.$t("trading-assistant.form.rebalanceDaily")))]),a("a-select-option",{attrs:{value:"weekly"}},[e._v(e._s(e.$t("trading-assistant.form.rebalanceWeekly")))]),a("a-select-option",{attrs:{value:"monthly"}},[e._v(e._s(e.$t("trading-assistant.form.rebalanceMonthly")))])],1),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.$t("trading-assistant.form.rebalanceFrequencyHint"))+" ")])],1)]:e._e(),"cross_sectional"!==e.form.getFieldValue("cs_strategy_type")?a("a-form-item",{attrs:{label:e.isEditMode?e.$t("trading-assistant.form.symbol"):e.$t("trading-assistant.form.symbols")}},[e.isEditMode?a("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["symbol",{rules:[{required:!0,message:e.$t("trading-assistant.validation.symbolRequired")}]}],expression:"['symbol', { rules: [{ required: true, message: $t('trading-assistant.validation.symbolRequired') }] }]"}],attrs:{placeholder:e.$t("trading-assistant.placeholders.selectSymbol"),"show-search":"","filter-option":e.filterWatchlistOption,loading:e.loadingWatchlist,getPopupContainer:function(t){return t.parentNode}},on:{change:e.handleWatchlistSymbolChange}},[e._l(e.watchlist,function(t){return a("a-select-option",{key:"".concat(t.market,":").concat(t.symbol),attrs:{value:"".concat(t.market,":").concat(t.symbol)}},[a("div",{staticClass:"symbol-option"},[a("a-tag",{staticStyle:{"margin-right":"8px","margin-bottom":"0"},attrs:{color:e.getMarketColor(t.market)}},[e._v(" "+e._s(t.market)+" ")]),a("span",{staticClass:"symbol-name"},[e._v(e._s(t.symbol))]),t.name?a("span",{staticClass:"symbol-name-extra"},[e._v(e._s(t.name))]):e._e()],1)])}),a("a-select-option",{key:"__add_symbol_option__",staticClass:"add-symbol-option",attrs:{value:"__add_symbol_option__"}},[a("div",{staticStyle:{width:"100%","text-align":"center",padding:"4px 0",color:"#1890ff",cursor:"pointer"}},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"plus"}}),a("span",[e._v(e._s(e.$t("trading-assistant.form.addSymbol")))])],1)])],2):a("a-select",{attrs:{mode:"multiple",placeholder:e.$t("trading-assistant.placeholders.selectSymbols"),"show-search":"","filter-option":e.filterWatchlistOptionWithAdd,loading:e.loadingWatchlist,getPopupContainer:function(t){return t.parentNode},maxTagCount:3},on:{change:e.handleMultiSymbolChangeWithAdd},model:{value:e.selectedSymbols,callback:function(t){e.selectedSymbols=t},expression:"selectedSymbols"}},[e._l(e.watchlist,function(t){return a("a-select-option",{key:"".concat(t.market,":").concat(t.symbol),attrs:{value:"".concat(t.market,":").concat(t.symbol)}},[a("div",{staticClass:"symbol-option"},[a("a-tag",{staticStyle:{"margin-right":"8px","margin-bottom":"0"},attrs:{color:e.getMarketColor(t.market)}},[e._v(" "+e._s(t.market)+" ")]),a("span",{staticClass:"symbol-name"},[e._v(e._s(t.symbol))]),t.name?a("span",{staticClass:"symbol-name-extra"},[e._v(e._s(t.name))]):e._e()],1)])}),a("a-select-option",{key:"__add_symbol_option__",staticClass:"add-symbol-option",attrs:{value:"__add_symbol_option__"}},[a("div",{staticStyle:{width:"100%","text-align":"center",padding:"4px 0",color:"#1890ff",cursor:"pointer"}},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"plus"}}),a("span",[e._v(e._s(e.$t("trading-assistant.form.addSymbol")))])],1)])],2),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.isEditMode?e.$t("trading-assistant.form.symbolHintCrypto"):e.$t("trading-assistant.form.symbolsHint"))+" ")])],1):e._e(),a("div",{directives:[{name:"show",rawName:"v-show",value:e.isAdvancedMode||e.editingStrategy||e.showAdvancedSettings,expression:"isAdvancedMode || editingStrategy || showAdvancedSettings"}]},[a("a-row",{attrs:{gutter:16}},[a("a-col",{attrs:{xs:24,sm:24,md:12,lg:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.initialCapital")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["initial_capital",{rules:[{required:!0,message:e.$t("trading-assistant.validation.initialCapitalRequired")}],initialValue:1e3}],expression:"['initial_capital', { rules: [{ required: true, message: $t('trading-assistant.validation.initialCapitalRequired') }], initialValue: 1000 }]"}],staticStyle:{width:"100%"},attrs:{min:10,step:100,precision:2}})],1)],1),a("a-col",{attrs:{xs:24,sm:24,md:12,lg:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.marketType")}},[a("a-radio-group",{directives:[{name:"decorator",rawName:"v-decorator",value:["market_type",{initialValue:"swap"}],expression:"['market_type', { initialValue: 'swap' }]"}],on:{change:e.handleMarketTypeChange}},[a("a-radio",{attrs:{value:"swap"}},[e._v(e._s(e.$t("trading-assistant.form.marketTypeFutures")))]),a("a-radio",{attrs:{value:"spot"}},[e._v(e._s(e.$t("trading-assistant.form.marketTypeSpot")))])],1),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.$t("trading-assistant.form.marketTypeHint"))+" ")])],1)],1)],1),a("a-row",{attrs:{gutter:16}},[a("a-col",{attrs:{xs:24,sm:24,md:12,lg:12}},[a("a-form-item",{attrs:{label:"".concat(e.$t("trading-assistant.form.leverage")," (x)")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["leverage",{initialValue:5,rules:[{required:!0,message:e.$t("trading-assistant.validation.leverageRequired")}]}],expression:"['leverage', { initialValue: 5, rules: [{ required: true, message: $t('trading-assistant.validation.leverageRequired') }] }]"}],staticStyle:{width:"100%"},attrs:{min:1,max:"spot"===e.form.getFieldValue("market_type")?1:125,step:1,disabled:"spot"===e.form.getFieldValue("market_type")}}),a("div",{staticClass:"form-item-hint"},["spot"===e.form.getFieldValue("market_type")?a("span",[e._v(" "+e._s(e.$t("trading-assistant.form.spotLeverageFixed"))+" ")]):a("span",[e._v(" "+e._s(e.$t("trading-assistant.form.leverageHint"))+" ")])])],1)],1),a("a-col",{attrs:{xs:24,sm:24,md:12,lg:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.tradeDirection")}},[a("a-radio-group",{directives:[{name:"decorator",rawName:"v-decorator",value:["trade_direction",{initialValue:"long"}],expression:"['trade_direction', { initialValue: 'long' }]"}],attrs:{disabled:"spot"===e.form.getFieldValue("market_type")}},[a("a-radio",{attrs:{value:"long"}},[e._v(e._s(e.$t("trading-assistant.form.tradeDirectionLong")))]),a("a-radio",{attrs:{value:"short",disabled:"spot"===e.form.getFieldValue("market_type")}},[e._v(" "+e._s(e.$t("trading-assistant.form.tradeDirectionShort"))+" ")]),a("a-radio",{attrs:{value:"both",disabled:"spot"===e.form.getFieldValue("market_type")}},[e._v(" "+e._s(e.$t("trading-assistant.form.tradeDirectionBoth"))+" ")])],1),"spot"===e.form.getFieldValue("market_type")?a("div",{staticClass:"form-item-hint",staticStyle:{color:"#ff9800"}},[e._v(" "+e._s(e.$t("trading-assistant.form.spotOnlyLongHint"))+" ")]):e._e()],1)],1)],1),a("a-row",{attrs:{gutter:16}},[a("a-col",{attrs:{xs:24,sm:24,md:12,lg:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.klinePeriod")}},[a("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["timeframe",{initialValue:"15m",rules:[{required:!0}]}],expression:"['timeframe', { initialValue: '15m', rules: [{ required: true }] }]"}],attrs:{placeholder:e.$t("trading-assistant.placeholders.selectKlinePeriod"),getPopupContainer:function(t){return t.parentNode}}},[a("a-select-option",{attrs:{value:"1m"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe1m")))]),a("a-select-option",{attrs:{value:"5m"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe5m")))]),a("a-select-option",{attrs:{value:"15m"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe15m")))]),a("a-select-option",{attrs:{value:"30m"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe30m")))]),a("a-select-option",{attrs:{value:"1H"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe1H")))]),a("a-select-option",{attrs:{value:"4H"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe4H")))]),a("a-select-option",{attrs:{value:"1D"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe1D")))])],1)],1)],1),a("a-col",{attrs:{xs:24,sm:24,md:12,lg:12}})],1)],1)],2)],1):e._e()]),a("div",{directives:[{name:"show",rawName:"v-show",value:1===e.currentStep||e.isSimpleMode&&0===e.currentStep&&e.showAdvancedSettings,expression:"currentStep === 1 || (isSimpleMode && currentStep === 0 && showAdvancedSettings)"}],staticClass:"step-content"},["indicator"===e.strategyType?a("div",[a("a-form",{attrs:{form:e.form,layout:"vertical"}},[a("a-collapse",{staticStyle:{background:"#fafafa"},attrs:{bordered:!1},model:{value:e.backtestCollapseKeys,callback:function(t){e.backtestCollapseKeys=t},expression:"backtestCollapseKeys"}},[a("a-collapse-panel",{key:"risk",attrs:{header:e.$t("dashboard.indicator.backtest.panel.risk")}},[a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.stopLossPct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["stop_loss_pct",{initialValue:3}],expression:"['stop_loss_pct', { initialValue: 3 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:100,step:.01,precision:4}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.takeProfitPct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["take_profit_pct",{initialValue:6}],expression:"['take_profit_pct', { initialValue: 6 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:1e3,step:.01,precision:4}})],1)],1)],1),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trailingEnabled")}},[a("a-switch",{directives:[{name:"decorator",rawName:"v-decorator",value:["trailing_enabled",{valuePropName:"checked",initialValue:!1}],expression:"['trailing_enabled', { valuePropName: 'checked', initialValue: false }]"}],on:{change:e.onTrailingToggle}})],1)],1),a("a-col",{attrs:{span:12}})],1),e.trailingEnabledUi?[a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trailingStopPct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["trailing_stop_pct",{initialValue:0}],expression:"['trailing_stop_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:100,step:.01,precision:4}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trailingActivationPct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["trailing_activation_pct",{initialValue:0}],expression:"['trailing_activation_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:1e3,step:.01,precision:4}})],1)],1)],1)]:e._e()],2),a("a-collapse-panel",{key:"scale",attrs:{header:e.$t("dashboard.indicator.backtest.panel.scale")}},[a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trendAddEnabled")}},[a("a-switch",{directives:[{name:"decorator",rawName:"v-decorator",value:["trend_add_enabled",{valuePropName:"checked",initialValue:!1}],expression:"['trend_add_enabled', { valuePropName: 'checked', initialValue: false }]"}],on:{change:e.onTrendAddToggle}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.dcaAddEnabled")}},[a("a-switch",{directives:[{name:"decorator",rawName:"v-decorator",value:["dca_add_enabled",{valuePropName:"checked",initialValue:!1}],expression:"['dca_add_enabled', { valuePropName: 'checked', initialValue: false }]"}],on:{change:e.onDcaAddToggle}})],1)],1)],1),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trendAddStepPct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["trend_add_step_pct",{initialValue:0}],expression:"['trend_add_step_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:1e3,step:.01,precision:4},on:{change:e.onScaleParamsChange}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.dcaAddStepPct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["dca_add_step_pct",{initialValue:0}],expression:"['dca_add_step_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:1e3,step:.01,precision:4},on:{change:e.onScaleParamsChange}})],1)],1)],1),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trendAddSizePct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["trend_add_size_pct",{initialValue:0}],expression:"['trend_add_size_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:100,step:.1,precision:4},on:{change:e.onScaleParamsChange}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.dcaAddSizePct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["dca_add_size_pct",{initialValue:0}],expression:"['dca_add_size_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:100,step:.1,precision:4},on:{change:e.onScaleParamsChange}})],1)],1)],1),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trendAddMaxTimes")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["trend_add_max_times",{initialValue:0}],expression:"['trend_add_max_times', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:50,step:1,precision:0},on:{change:e.onScaleParamsChange}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.dcaAddMaxTimes")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["dca_add_max_times",{initialValue:0}],expression:"['dca_add_max_times', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:50,step:1,precision:0},on:{change:e.onScaleParamsChange}})],1)],1)],1)],1),a("a-collapse-panel",{key:"reduce",attrs:{header:e.$t("dashboard.indicator.backtest.panel.reduce")}},[a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trendReduceEnabled")}},[a("a-switch",{directives:[{name:"decorator",rawName:"v-decorator",value:["trend_reduce_enabled",{valuePropName:"checked",initialValue:!1}],expression:"['trend_reduce_enabled', { valuePropName: 'checked', initialValue: false }]"}]})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.adverseReduceEnabled")}},[a("a-switch",{directives:[{name:"decorator",rawName:"v-decorator",value:["adverse_reduce_enabled",{valuePropName:"checked",initialValue:!1}],expression:"['adverse_reduce_enabled', { valuePropName: 'checked', initialValue: false }]"}]})],1)],1)],1),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trendReduceStepPct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["trend_reduce_step_pct",{initialValue:0}],expression:"['trend_reduce_step_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:1e3,step:.01,precision:4}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.adverseReduceStepPct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["adverse_reduce_step_pct",{initialValue:0}],expression:"['adverse_reduce_step_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:1e3,step:.01,precision:4}})],1)],1)],1),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trendReduceSizePct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["trend_reduce_size_pct",{initialValue:0}],expression:"['trend_reduce_size_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:100,step:.1,precision:4}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.adverseReduceSizePct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["adverse_reduce_size_pct",{initialValue:0}],expression:"['adverse_reduce_size_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:100,step:.1,precision:4}})],1)],1)],1),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trendReduceMaxTimes")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["trend_reduce_max_times",{initialValue:0}],expression:"['trend_reduce_max_times', { initialValue: 0 }]"}],staticStyle:{width:"100%"},attrs:{min:0,max:50,step:1,precision:0}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.adverseReduceMaxTimes")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["adverse_reduce_max_times",{initialValue:0}],expression:"['adverse_reduce_max_times', { initialValue: 0 }]"}],staticStyle:{width:"100%"},attrs:{min:0,max:50,step:1,precision:0}})],1)],1)],1)],1),a("a-collapse-panel",{key:"position",attrs:{header:e.$t("dashboard.indicator.backtest.panel.position")}},[a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.entryPct"),help:e.$t("dashboard.indicator.backtest.hint.entryPctMax",{maxPct:Number(e.entryPctMaxUi||0).toFixed(0)})}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["entry_pct",{initialValue:100}],expression:"['entry_pct', { initialValue: 100 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:e.entryPctMaxUi,step:.1,precision:4},on:{change:e.onEntryPctChange}})],1)],1),a("a-col",{attrs:{span:12}})],1)],1)],1),a("div",{staticClass:"ai-filter-box"},[a("div",{staticClass:"ai-filter-header"},[a("div",{staticClass:"ai-filter-title"},[a("a-icon",{attrs:{type:"robot"}}),a("span",[e._v(e._s(e.$t("trading-assistant.form.enableAiFilter")))])],1),a("a-switch",{attrs:{checked:e.aiFilterEnabledUi},on:{change:e.onAiFilterToggle}})],1),a("div",{staticClass:"ai-filter-hint"},[e._v(e._s(e.$t("trading-assistant.form.enableAiFilterHint")))])])],1)],1):e._e()]),a("div",{directives:[{name:"show",rawName:"v-show",value:2===e.currentStep,expression:"currentStep === 2"}],staticClass:"step-content"},[a("a-form",{attrs:{form:e.form,layout:"vertical",autocomplete:"off"}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.executionMode")}},[a("a-radio-group",{directives:[{name:"decorator",rawName:"v-decorator",value:["execution_mode",{initialValue:"signal"}],expression:"['execution_mode', { initialValue: 'signal' }]"}],attrs:{disabled:!e.canUseLiveTrading},on:{change:e.onExecutionModeChange}},[a("a-radio",{attrs:{value:"signal"}},[e._v(e._s(e.$t("trading-assistant.form.executionModeSignal")))]),a("a-radio",{attrs:{value:"live",disabled:!e.canUseLiveTrading}},[e._v(e._s(e.$t("trading-assistant.form.executionModeLive")))])],1),e.canUseLiveTrading?e._e():a("div",{staticClass:"form-item-hint",staticStyle:{color:"#ff9800"}},[e._v(" "+e._s(e.$t("trading-assistant.form.liveTradingNotSupportedHint"))+" ")])],1),"live"===e.executionModeUi&&e.canUseLiveTrading?a("a-form-item",{staticClass:"live-disclaimer-item"},[a("a-alert",{staticStyle:{"margin-bottom":"8px"},attrs:{type:"warning",showIcon:"",message:e.$t("trading-assistant.liveDisclaimer.title"),description:e.$t("trading-assistant.liveDisclaimer.content")}}),a("a-checkbox",{directives:[{name:"decorator",rawName:"v-decorator",value:["live_disclaimer_ack",{valuePropName:"checked",initialValue:!1}],expression:"['live_disclaimer_ack', { valuePropName: 'checked', initialValue: false }]"}],on:{change:e.onLiveDisclaimerAckChange}},[e._v(" "+e._s(e.$t("trading-assistant.liveDisclaimer.agree"))+" ")])],1):e._e(),a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.notifyChannels")}},[a("a-checkbox-group",{directives:[{name:"decorator",rawName:"v-decorator",value:["notify_channels",{initialValue:["browser"]}],expression:"['notify_channels', { initialValue: ['browser'] }]"}],on:{change:e.onNotifyChannelsChange}},[a("a-checkbox",{attrs:{value:"browser"}},[e._v(e._s(e.$t("trading-assistant.notify.browser")))]),a("a-checkbox",{attrs:{value:"email"}},[e._v(e._s(e.$t("trading-assistant.notify.email")))]),a("a-checkbox",{attrs:{value:"telegram"}},[e._v(e._s(e.$t("trading-assistant.notify.telegram")))]),a("a-checkbox",{attrs:{value:"discord"}},[e._v(e._s(e.$t("trading-assistant.notify.discord")))]),a("a-checkbox",{attrs:{value:"webhook"}},[e._v(e._s(e.$t("trading-assistant.notify.webhook")))]),a("a-checkbox",{attrs:{value:"phone"}},[e._v(e._s(e.$t("trading-assistant.notify.phone")))])],1),a("div",{staticClass:"form-item-hint"},[e._v(e._s(e.$t("trading-assistant.form.notifyChannelsHint")))])],1),e.unconfiguredChannels.length>0?a("a-alert",{staticStyle:{"margin-bottom":"16px"},attrs:{type:"warning",showIcon:""},scopedSlots:e._u([{key:"message",fn:function(){return[a("span",[e._v(" "+e._s(e.$t("trading-assistant.form.notificationConfigMissing",{channels:e.unconfiguredChannels.join(", ")}))+" "),a("router-link",{staticStyle:{"margin-left":"8px"},attrs:{to:"/profile"}},[a("a-icon",{attrs:{type:"setting"}}),e._v(" "+e._s(e.$t("trading-assistant.form.goToProfile"))+" ")],1)],1)]},proxy:!0}],null,!1,2930252607)}):e.notifyChannelsUi.length>0&&!e.notifyChannelsUi.includes("browser")||e.notifyChannelsUi.length>1?a("a-alert",{staticStyle:{"margin-bottom":"16px"},attrs:{type:"info",showIcon:""},scopedSlots:e._u([{key:"message",fn:function(){return[a("span",[e._v(" "+e._s(e.$t("trading-assistant.form.notificationFromProfile"))+" "),a("router-link",{staticStyle:{"margin-left":"8px"},attrs:{to:"/profile"}},[a("a-icon",{attrs:{type:"setting"}}),e._v(" "+e._s(e.$t("trading-assistant.form.goToProfile"))+" ")],1)],1)]},proxy:!0}])}):e._e(),"live"===e.executionModeUi&&e.canUseLiveTrading?a("a-divider"):e._e(),"live"===e.executionModeUi&&e.canUseLiveTrading&&!e.liveDisclaimerAckUi?a("a-alert",{staticStyle:{"margin-bottom":"12px"},attrs:{type:"warning",showIcon:"",message:e.$t("trading-assistant.liveDisclaimer.blockTitle"),description:e.$t("trading-assistant.liveDisclaimer.blockDesc")}}):e._e(),"live"===e.executionModeUi&&e.canUseLiveTrading&&e.liveDisclaimerAckUi?a("div",[a("a-alert",{staticStyle:{"margin-bottom":"12px"},attrs:{type:"info","show-icon":"",message:e.$t("trading-assistant.form.liveTradingConfigTitle"),description:e.$t("trading-assistant.form.liveTradingConfigHint")}}),a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.savedCredential")}},[a("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["credential_id",{rules:[{required:!0,message:e.$t("profile.exchange.noCredentialHint")}],getValueFromEvent:function(t){return t||void 0}}],expression:"['credential_id', {\n rules: [{ required: true, message: $t('profile.exchange.noCredentialHint') }],\n getValueFromEvent: (val) => val || undefined\n }]"}],attrs:{placeholder:e.$t("trading-assistant.placeholders.selectSavedCredential"),"allow-clear":"","show-search":"","option-filter-prop":"children",loading:e.loadingExchangeCredentials},on:{change:e.handleCredentialSelectChange}},e._l(e.filteredExchangeCredentials,function(t){return a("a-select-option",{key:t.id,attrs:{value:t.id}},[e._v(" "+e._s(e.formatCredentialLabel(t))+" ")])}),1),a("div",{staticClass:"form-item-hint",staticStyle:{"margin-top":"6px"}},[a("router-link",{attrs:{to:"/profile?tab=exchange"}},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"setting"}}),e._v(e._s(e.$t("profile.exchange.goToManage"))+" ")],1)],1)],1)],1):e._e()],1)],1)])],1),a("template",{slot:"footer"},[a("a-button",{on:{click:e.handleCloseModal}},[e._v(e._s(e.$t("trading-assistant.form.cancel")))]),a("a-button",{directives:[{name:"show",rawName:"v-show",value:e.currentStep>0,expression:"currentStep > 0"}],on:{click:e.handlePrev}},[e._v(" "+e._s(e.$t("trading-assistant.form.prev"))+" ")]),a("a-button",{directives:[{name:"show",rawName:"v-show",value:e.currentStep<2,expression:"currentStep < 2"}],attrs:{type:"primary",loading:e.saving},on:{click:e.handleNext}},[e._v(" "+e._s(e.$t("trading-assistant.form.next"))+" ")]),a("a-button",{directives:[{name:"show",rawName:"v-show",value:2===e.currentStep,expression:"currentStep === 2"}],attrs:{type:"primary",loading:e.saving},on:{click:e.handleSubmit}},[e._v(" "+e._s(e.editingStrategy?e.$t("trading-assistant.form.confirmEdit"):e.$t("trading-assistant.form.confirmCreate"))+" ")])],1)],2),a("a-modal",{attrs:{title:e.$t("trading-assistant.form.addSymbolTitle"),visible:e.showAddSymbolModal,confirmLoading:e.addingSymbol,width:"600px",okText:e.$t("trading-assistant.form.confirmAdd"),cancelText:e.$t("trading-assistant.form.cancel"),maskClosable:!1,keyboard:!1},on:{ok:e.handleConfirmAddSymbol,cancel:e.handleCloseAddSymbolModal}},[a("div",{staticClass:"add-symbol-modal-content"},[a("a-tabs",{staticClass:"market-tabs",on:{change:e.handleAddSymbolMarketChange},model:{value:e.addSymbolMarket,callback:function(t){e.addSymbolMarket=t},expression:"addSymbolMarket"}},e._l(e.addSymbolMarketTypes,function(t){return a("a-tab-pane",{key:t.value,attrs:{tab:e.$t(t.i18nKey||"dashboard.analysis.market.".concat(t.value))}})}),1),a("div",{staticClass:"symbol-search-section"},[a("a-input-search",{attrs:{placeholder:e.$t("dashboard.analysis.modal.addStock.searchOrInputPlaceholder"),loading:e.searchingSymbol,size:"large","allow-clear":""},on:{search:e.handleSearchSymbol,change:e.handleSymbolSearchInputChange},model:{value:e.addSymbolKeyword,callback:function(t){e.addSymbolKeyword=t},expression:"addSymbolKeyword"}},[a("a-button",{attrs:{slot:"enterButton",type:"primary",icon:"search"},slot:"enterButton"},[e._v(" "+e._s(e.$t("dashboard.analysis.modal.addStock.search"))+" ")])],1)],1),e.symbolSearchResults.length>0?a("div",{staticClass:"search-results-section"},[a("div",{staticClass:"section-title"},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"search"}}),e._v(" "+e._s(e.$t("dashboard.analysis.modal.addStock.searchResults"))+" ")],1),a("a-list",{staticClass:"symbol-list",attrs:{"data-source":e.symbolSearchResults,loading:e.searchingSymbol,size:"small"},scopedSlots:e._u([{key:"renderItem",fn:function(t){return a("a-list-item",{staticClass:"symbol-list-item",on:{click:function(a){return e.handleSelectAddSymbol(t)}}},[a("a-list-item-meta",[a("template",{slot:"title"},[a("div",{staticClass:"symbol-item-content"},[a("span",{staticClass:"symbol-code"},[e._v(e._s(t.symbol))]),a("span",{staticClass:"symbol-name"},[e._v(e._s(t.name))]),t.exchange?a("a-tag",{staticStyle:{"margin-left":"8px"},attrs:{size:"small",color:"blue"}},[e._v(" "+e._s(t.exchange)+" ")]):e._e()],1)])],2)],1)}}],null,!1,2801225082)})],1):e._e(),a("div",{staticClass:"hot-symbols-section"},[a("div",{staticClass:"section-title"},[a("a-icon",{staticStyle:{color:"#ff4d4f","margin-right":"4px"},attrs:{type:"fire"}}),e._v(" "+e._s(e.$t("dashboard.analysis.modal.addStock.hotSymbols"))+" ")],1),a("a-spin",{attrs:{spinning:e.loadingHotSymbols}},[e.hotSymbols.length>0?a("a-list",{staticClass:"symbol-list",attrs:{"data-source":e.hotSymbols,size:"small"},scopedSlots:e._u([{key:"renderItem",fn:function(t){return a("a-list-item",{staticClass:"symbol-list-item",on:{click:function(a){return e.handleSelectAddSymbol(t)}}},[a("a-list-item-meta",[a("template",{slot:"title"},[a("div",{staticClass:"symbol-item-content"},[a("span",{staticClass:"symbol-code"},[e._v(e._s(t.symbol))]),a("span",{staticClass:"symbol-name"},[e._v(e._s(t.name))]),t.exchange?a("a-tag",{staticStyle:{"margin-left":"8px"},attrs:{size:"small",color:"orange"}},[e._v(" "+e._s(t.exchange)+" ")]):e._e()],1)])],2)],1)}}],null,!1,3959834868)}):a("a-empty",{attrs:{description:e.$t("dashboard.analysis.modal.addStock.noHotSymbols"),image:!1}})],1)],1),e.selectedAddSymbol?a("div",{staticClass:"selected-symbol-section"},[a("div",{staticClass:"section-title"},[a("a-icon",{staticStyle:{color:"#52c41a","margin-right":"4px"},attrs:{type:"check-circle"}}),e._v(" "+e._s(e.$t("dashboard.analysis.modal.addStock.selectedSymbol"))+" ")],1),a("div",{staticClass:"selected-symbol-info"},[a("a-tag",{staticStyle:{"margin-right":"8px"},attrs:{color:e.getMarketColor(e.addSymbolMarket)}},[e._v(e._s(e.addSymbolMarket))]),a("span",{staticClass:"symbol-code"},[e._v(e._s(e.selectedAddSymbol.symbol))]),e.selectedAddSymbol.name?a("span",{staticClass:"symbol-name"},[e._v(e._s(e.selectedAddSymbol.name))]):e._e()],1)]):e._e()],1)])],1)},s=[],r=a(15863),n=a(44735),o=a(81127),l=a(56252),d=a(2403),c=a(57532),u=a(76338),m=(a(2008),a(50113),a(23418),a(62062),a(34782),a(26910),a(79432),a(26099),a(16034),a(31415),a(47764),a(42762),a(23500),a(62953),a(36911)),g=a(35038),p=a(42430),h=a(84841),_=a(55434),y=a(75769),f=function(){var t=this,e=t._self._c;return e("div",{staticClass:"trading-records"},[0!==t.records.length||t.loading?e("a-table",{attrs:{columns:t.columns,"data-source":t.records,loading:t.loading,pagination:{pageSize:10},size:"small",rowKey:"id",scroll:{x:800}},scopedSlots:t._u([{key:"type",fn:function(a){return[e("a-tag",{attrs:{color:t.getTradeTypeColor(a)}},[t._v(" "+t._s(t.getTradeTypeText(a))+" ")])]}},{key:"price",fn:function(e){return[t._v(" $"+t._s(parseFloat(e).toFixed(4))+" ")]}},{key:"amount",fn:function(e){return[t._v(" "+t._s(parseFloat(e).toFixed(4))+" ")]}},{key:"value",fn:function(e){return[t._v(" $"+t._s(parseFloat(e).toFixed(2))+" ")]}},{key:"profit",fn:function(a,i){return[e("span",{style:{color:a>0?"#52c41a":a<0?"#f5222d":"#666"}},[t._v(" "+t._s(t.formatProfit(a,i))+" ")])]}},{key:"commission",fn:function(e){return[t._v(" "+t._s(t.formatCommission(e))+" ")]}},{key:"time",fn:function(e,a){return[t._v(" "+t._s(t.formatTime(a.created_at||e))+" ")]}}])}):e("div",{staticClass:"empty-state"},[e("a-empty",{attrs:{description:t.$t("trading-assistant.table.noPositions")}})],1)],1)},v=[],b=(a(27495),{name:"TradingRecords",props:{strategyId:{type:Number,required:!0},loading:{type:Boolean,default:!1}},computed:{columns:function(){return[{title:this.$t("trading-assistant.table.time"),dataIndex:"created_at",key:"created_at",width:180,scopedSlots:{customRender:"time"}},{title:this.$t("dashboard.indicator.backtest.tradeType"),dataIndex:"type",key:"type",width:140,scopedSlots:{customRender:"type"}},{title:this.$t("trading-assistant.table.price"),dataIndex:"price",key:"price",width:120,scopedSlots:{customRender:"price"}},{title:this.$t("trading-assistant.table.amount"),dataIndex:"amount",key:"amount",width:120,scopedSlots:{customRender:"amount"}},{title:this.$t("trading-assistant.table.value"),dataIndex:"value",key:"value",width:120,scopedSlots:{customRender:"value"}},{title:this.$t("dashboard.indicator.backtest.profit"),dataIndex:"profit",key:"profit",width:120,scopedSlots:{customRender:"profit"}},{title:this.$t("trading-assistant.table.commission"),dataIndex:"commission",key:"commission",width:100,scopedSlots:{customRender:"commission"}}]}},data:function(){return{records:[]}},watch:{strategyId:{handler:function(t){t&&this.loadRecords()},immediate:!0}},methods:{loadRecords:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.strategyId){e.n=1;break}return e.a(2);case 1:return e.p=1,e.n=2,(0,m.tq)(t.strategyId);case 2:a=e.v,1===a.code?t.records=(a.data.trades||[]).map(function(t){return(0,u.A)((0,u.A)({},t),{},{time:t.created_at||t.time})}):t.$message.error(a.msg||t.$t("trading-assistant.messages.loadTradesFailed")),e.n=4;break;case 3:e.p=3,e.v;case 4:return e.a(2)}},e,null,[[1,3]])}))()},formatTime:function(t){if(!t)return"--";try{var e;if("number"===typeof t){var a=t<1e12?1e3*t:t;e=new Date(a)}else{if("string"!==typeof t)return"--";if(/^\d+$/.test(t)){var i=parseInt(t,10),s=i<1e12?1e3*i:i;e=new Date(s)}else e=new Date(t)}if(isNaN(e.getTime()))return"--";var r=this.$i18n.locale||"zh-CN",n={"zh-CN":"zh-CN","zh-TW":"zh-TW","en-US":"en-US"};return e.toLocaleString(n[r]||"zh-CN",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1})}catch(o){return"--"}},getTradeTypeColor:function(t){var e={buy:"green",sell:"red",liquidation:"orange",open_long:"green",add_long:"cyan",close_long:"orange",close_long_stop:"red",close_long_profit:"lime",open_short:"red",add_short:"magenta",close_short:"blue",close_short_stop:"red",close_short_profit:"cyan"};return e[t]||"default"},getTradeTypeText:function(t){var e={buy:this.$t("dashboard.indicator.backtest.buy"),sell:this.$t("dashboard.indicator.backtest.sell"),liquidation:this.$t("dashboard.indicator.backtest.liquidation"),open_long:this.$t("dashboard.indicator.backtest.openLong"),add_long:this.$t("dashboard.indicator.backtest.addLong"),close_long:this.$t("dashboard.indicator.backtest.closeLong"),close_long_stop:this.$t("dashboard.indicator.backtest.closeLongStop"),close_long_profit:this.$t("dashboard.indicator.backtest.closeLongProfit"),open_short:this.$t("dashboard.indicator.backtest.openShort"),add_short:this.$t("dashboard.indicator.backtest.addShort"),close_short:this.$t("dashboard.indicator.backtest.closeShort"),close_short_stop:this.$t("dashboard.indicator.backtest.closeShortStop"),close_short_profit:this.$t("dashboard.indicator.backtest.closeShortProfit")};return e[t]||t},formatMoney:function(t){if(null===t||void 0===t)return"--";var e=t>=0?"+":"-";return"".concat(e,"$").concat(Math.abs(t).toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2}))},formatProfit:function(t,e){if(null===t||void 0===t)return"--";var a=parseFloat(t),i=["open_long","open_short","add_long","add_short"];return 0===a&&e&&i.includes(e.type)?"--":Math.abs(a)<1e-6?e&&i.includes(e.type)?"--":"$0.00":this.formatMoney(a)},formatCommission:function(t){if(null===t||void 0===t)return"--";var e=parseFloat(t);return isNaN(e)||Math.abs(e)<1e-6?"--":"$".concat(e.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:6}))}}}),S=b,k=a(845),x=(0,k.A)(S,f,v,!1,null,"a5bdef7e",null),C=x.exports,w=function(){var t=this,e=t._self._c;return e("div",{staticClass:"position-records"},[0!==t.positions.length||t.loading?e("a-table",{attrs:{columns:t.columns,"data-source":t.positions,loading:t.loading,pagination:!1,size:"small",rowKey:"id",scroll:{x:800}},scopedSlots:t._u([{key:"symbol",fn:function(a,i){return[e("strong",[t._v(t._s(i.symbol||a))])]}},{key:"side",fn:function(a,i){return[e("a-tag",{attrs:{color:"long"===(i.side||a)?"green":"red"}},[t._v(" "+t._s("long"===(i.side||a)?t.$t("trading-assistant.table.long"):t.$t("trading-assistant.table.short"))+" ")])]}},{key:"entryPrice",fn:function(a,i){return[t.hasValidPrice(i.entry_price||a)?e("span",[t._v(" $"+t._s(parseFloat(i.entry_price||a).toFixed(4))+" ")]):e("span",[t._v("--")])]}},{key:"currentPrice",fn:function(e,a){return[t._v(" $"+t._s(parseFloat(a.current_price||e||0).toFixed(4))+" ")]}},{key:"size",fn:function(e,a){return[t._v(" "+t._s(parseFloat(a.size||e||0).toFixed(4))+" ")]}},{key:"unrealizedPnl",fn:function(a,i){return[e("span",{class:{profit:parseFloat(i.unrealized_pnl||a||0)>0,loss:parseFloat(i.unrealized_pnl||a||0)<0}},[t._v(" $"+t._s(parseFloat(i.unrealized_pnl||a||0).toFixed(2))+" ")])]}},{key:"pnlPercent",fn:function(a,i){return[e("span",{class:{profit:parseFloat(i.pnl_percent||a||0)>0,loss:parseFloat(i.pnl_percent||a||0)<0}},[t._v(" "+t._s(parseFloat(i.pnl_percent||a||0).toFixed(2))+"% ")])]}}])}):e("div",{staticClass:"empty-state"},[e("a-empty",{attrs:{description:t.$t("trading-assistant.table.noPositions")}})],1)],1)},$=[],A=(a(25428),a(38781),{name:"PositionRecords",props:{strategyId:{type:Number,required:!0},marketType:{type:String,default:"swap"},leverage:{type:[Number,String],default:1},loading:{type:Boolean,default:!1}},data:function(){return{positions:[]}},computed:{columns:function(){return[{title:this.$t("trading-assistant.table.symbol"),dataIndex:"symbol",key:"symbol",width:120,scopedSlots:{customRender:"symbol"}},{title:this.$t("trading-assistant.table.side"),dataIndex:"side",key:"side",width:80,scopedSlots:{customRender:"side"}},{title:this.$t("trading-assistant.table.size"),dataIndex:"size",key:"size",width:120,scopedSlots:{customRender:"size"}},{title:this.$t("trading-assistant.table.entryPrice"),dataIndex:"entry_price",key:"entry_price",width:120,scopedSlots:{customRender:"entryPrice"}},{title:this.$t("trading-assistant.table.currentPrice"),dataIndex:"current_price",key:"current_price",width:120,scopedSlots:{customRender:"currentPrice"}},{title:this.$t("trading-assistant.table.unrealizedPnl"),dataIndex:"unrealized_pnl",key:"unrealized_pnl",width:120,scopedSlots:{customRender:"unrealizedPnl"}},{title:this.$t("trading-assistant.table.pnlPercent"),dataIndex:"pnl_percent",key:"pnl_percent",width:100,scopedSlots:{customRender:"pnlPercent"}}]}},watch:{strategyId:{handler:function(t){t?(this.loadPositions(),this.startPolling()):this.stopPolling()},immediate:!0}},beforeDestroy:function(){this.stopPolling()},methods:{loadPositions:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a,i;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.strategyId){e.n=1;break}return e.a(2);case 1:return e.p=1,e.n=2,(0,m.oK)(t.strategyId);case 2:a=e.v,1===a.code?(i=a.data.positions||[],t.positions=i.map(function(e,a){var i=String(t.marketType||"swap").toLowerCase(),s=parseFloat(t.leverage);(!isFinite(s)||s<=0)&&(s=1),"spot"===i&&(s=1);var r=parseFloat(e.entry_price||e.entryPrice||0),n=parseFloat(e.size||"0")||0,o=parseFloat(e.unrealized_pnl||e.unrealizedPnl||"0")||0,l=parseFloat(e.pnl_percent||e.pnlPercent||"0")||0;r>0&&n>0?l=o/(r*n)*100*s:"spot"!==i&&(l*=s);var d={id:e.id||a,symbol:e.symbol||"",side:e.side||"long",size:n>0?n.toString():"0",entry_price:r>0?r.toString():"0",current_price:e.current_price||e.currentPrice||"0",unrealized_pnl:e.unrealized_pnl||e.unrealizedPnl||"0",pnl_percent:l,updated_at:e.updated_at||e.updatedAt||""};return d})):t.positions=[],e.n=4;break;case 3:e.p=3,e.v,t.positions=[];case 4:return e.a(2)}},e,null,[[1,3]])}))()},hasValidPrice:function(t){var e=parseFloat(t);return Number.isFinite(e)&&e>0},startPolling:function(){var t=this;this.stopPolling(),this.pollingTimer=setInterval(function(){t.loadPositions()},5e3)},stopPolling:function(){this.pollingTimer&&(clearInterval(this.pollingTimer),this.pollingTimer=null)}}}),P=A,M=(0,k.A)(P,w,$,!1,null,"2abcf4f1",null),F=M.exports,T=["BTC/USDT","ETH/USDT","BNB/USDT","SOL/USDT","ADA/USDT","XRP/USDT","DOGE/USDT","DOT/USDT","MATIC/USDT","AVAX/USDT","LINK/USDT","UNI/USDT","LTC/USDT","ATOM/USDT","ETC/USDT"],V=[{value:"binance",labelKey:"binance"},{value:"okx",labelKey:"okx"},{value:"bitget",labelKey:"bitget"},{value:"bybit",labelKey:"bybit"},{value:"coinbaseexchange",labelKey:"coinbaseexchange"},{value:"kraken",labelKey:"kraken"},{value:"kucoin",labelKey:"kucoin"},{value:"gate",labelKey:"gate"},{value:"bitfinex",labelKey:"bitfinex"},{value:"deepcoin",labelKey:"deepcoin"}],I=[{value:"ibkr",labelKey:"ibkr",name:"Interactive Brokers"}],N=[{value:"mt5",labelKey:"mt5",name:"MetaTrader 5"}],U={name:"TradingAssistant",mixins:[_.t],components:{TradingRecords:C,PositionRecords:F},computed:{isAdvancedMode:function(){return"advanced"===this.creationMode},isSimpleMode:function(){return"simple"===this.creationMode},displayCurrentStep:function(){return this.isSimpleMode&&!this.editingStrategy?0===this.currentStep?0:1:this.currentStep},isDarkTheme:function(){return"dark"===this.navTheme||"realdark"===this.navTheme},needsPassphrase:function(){return["okx","okex","coinbaseexchange","kucoin","bitget","deepcoin"].includes(this.currentExchangeId)},isIBKRMarket:function(){return"USStock"===this.selectedMarketCategory},isMT5Market:function(){return"Forex"===this.selectedMarketCategory},isBrokerMarket:function(){return this.isIBKRMarket||this.isMT5Market},filteredExchangeCredentials:function(){var t=this;return this.exchangeCredentials&&Array.isArray(this.exchangeCredentials)?this.exchangeCredentials.filter(function(e){return t.isCredentialCompatible(e)}):[]},formattedExchangeOptions:function(){var t=this;return V.map(function(e){var a="";try{if(e.labelKey){var i="trading-assistant.exchangeNames.".concat(e.labelKey),s=t.$t(i);s!==i&&(a=s)}}catch(r){}return a||(a=e.value.charAt(0).toUpperCase()+e.value.slice(1)),(0,u.A)((0,u.A)({},e),{},{displayName:a})})},totalPnl:function(){return null!==this.currentEquity&&this.selectedStrategy&&this.selectedStrategy.initial_capital?this.currentEquity-(this.selectedStrategy.initial_capital||0):null},totalPnlPercent:function(){return null!==this.totalPnl&&this.selectedStrategy&&this.selectedStrategy.initial_capital?0===this.selectedStrategy.initial_capital?0:this.totalPnl/this.selectedStrategy.initial_capital*100:null},getEquityColorClass:function(){return null===this.totalPnl?"":this.totalPnl>=0?"text-success":"text-danger"},getPnlColorClass:function(){return null===this.totalPnl?"":this.totalPnl>=0?"text-success":"text-danger"},isCryptoMarket:function(){var t=this.selectedMarketCategory||"Crypto";return"crypto"===String(t).toLowerCase()},canUseLiveTrading:function(){var t=this.selectedMarketCategory||"Crypto";return"crypto"===String(t).toLowerCase()||("USStock"===t||"Forex"===t)},isLiveTradingAvailable:function(){var t=this.selectedMarketCategory||"Crypto",e=this.currentExchangeId||"";return"crypto"===String(t).toLowerCase()?["binance","okx","bitget","bybit","coinbaseexchange","kraken","kucoin","gate","bitfinex"].includes(e):"USStock"===t?"ibkr"===this.currentBrokerId:"Forex"===t&&"mt5"===this.currentBrokerId},showDemoTradingSwitch:function(){return this.currentExchangeId&&"binance"===this.currentExchangeId.toLowerCase()},brokerOptions:function(){var t=this;return I.map(function(e){var a="";try{var i="trading-assistant.brokerNames.".concat(e.labelKey),s=t.$t(i);s!==i&&(a=s)}catch(r){}return a||(a=e.name||e.value.toUpperCase()),(0,u.A)((0,u.A)({},e),{},{displayName:a})})},forexBrokerOptions:function(){var t=this;return N.map(function(e){var a="";try{var i="trading-assistant.brokerNames.".concat(e.labelKey),s=t.$t(i);s!==i&&(a=s)}catch(r){}return a||(a=e.name||e.value.toUpperCase()),(0,u.A)((0,u.A)({},e),{},{displayName:a})})},cryptoExchangeOptions:function(){var t=this;return V.map(function(e){var a="";try{if(e.labelKey){var i="trading-assistant.exchangeNames.".concat(e.labelKey),s=t.$t(i);s!==i&&(a=s)}}catch(r){}return a||(a=e.value.charAt(0).toUpperCase()+e.value.slice(1)),(0,u.A)((0,u.A)({},e),{},{displayName:a})})},groupedStrategies:function(){return"symbol"===this.groupByMode?this.groupedBySymbol:this.groupedByStrategy},groupedByStrategy:function(){var t,e={},a=[],i=(0,c.A)(this.strategies);try{for(i.s();!(t=i.n()).done;){var s=t.value,r=s.strategy_group_id;r&&r.trim()?(e[r]||(e[r]={id:r,baseName:s.group_base_name||s.strategy_name.split("-")[0],strategies:[],runningCount:0,stoppedCount:0}),e[r].strategies.push(s),"running"===s.status?e[r].runningCount++:e[r].stoppedCount++):a.push(s)}}catch(o){i.e(o)}finally{i.f()}var n=Object.values(e).sort(function(t,e){var a=Math.max.apply(Math,(0,d.A)(t.strategies.map(function(t){return t.created_at||0}))),i=Math.max.apply(Math,(0,d.A)(e.strategies.map(function(t){return t.created_at||0})));return i-a});return{groups:n,ungrouped:a}},groupedBySymbol:function(){var t,e={},a=[],i=(0,c.A)(this.strategies);try{for(i.s();!(t=i.n()).done;){var s=t.value,r=s.trading_config||{},n=r.symbol;if(n&&n.trim()){e[n]||(e[n]={id:"symbol_".concat(n),baseName:n,strategies:[],runningCount:0,stoppedCount:0});var o=(0,u.A)((0,u.A)({},s),{},{displayInfo:{strategyName:s.strategy_name||s.group_base_name||"Unnamed",timeframe:r.timeframe||"-",indicatorName:s.indicator_name||s.indicator_config&&s.indicator_config.name||"-"}});e[n].strategies.push(o),"running"===s.status?e[n].runningCount++:e[n].stoppedCount++}else a.push(s)}}catch(d){i.e(d)}finally{i.f()}var l=Object.values(e).sort(function(t,e){return t.baseName.localeCompare(e.baseName)});return{groups:l,ungrouped:a}},unconfiguredChannels:function(){var t=[];return this.notifyChannelsUi.includes("telegram")&&(this.userNotificationSettings.telegram_bot_token||this.userNotificationSettings.telegram_chat_id||t.push("Telegram")),this.notifyChannelsUi.includes("email")&&(this.userNotificationSettings.email||t.push("Email")),this.notifyChannelsUi.includes("discord")&&(this.userNotificationSettings.discord_webhook||t.push("Discord")),this.notifyChannelsUi.includes("webhook")&&(this.userNotificationSettings.webhook_url||t.push("Webhook")),t}},data:function(){return{loading:!1,loadingRecords:!1,strategies:[],selectedStrategy:null,showFormModal:!1,creationMode:"simple",showAdvancedSettings:!1,strategyType:"indicator",selectedMarketCategory:"Crypto",currentStep:0,saving:!1,loadingIndicators:!1,availableIndicators:[],selectedIndicator:null,indicatorParams:[],indicatorParamValues:{},cryptoSymbols:T,loadingWatchlist:!1,watchlist:[],exchangeOptions:V,currentExchangeId:"",currentBrokerId:"ibkr",connectionTestResult:null,indicatorsLoaded:!1,editingStrategy:null,currentEquity:null,equityPollingTimer:null,backtestCollapseKeys:["risk"],trailingEnabledUi:!1,entryPctMaxUi:100,aiFilterEnabledUi:!1,isEditMode:!1,supportedIPs:[],executionModeUi:"signal",liveDisclaimerAckUi:!1,notifyChannelsUi:["browser"],userNotificationSettings:{default_channels:["browser"],telegram_bot_token:"",telegram_chat_id:"",email:"",phone:"",discord_webhook:"",webhook_url:"",webhook_token:""},loadingExchangeCredentials:!1,exchangeCredentials:[],saveCredentialUi:!1,suppressApiClearOnce:!1,selectedSymbols:[],crossSectionalSymbols:[],collapsedGroups:{},groupByMode:"strategy",showAddSymbolModal:!1,addSymbolMarket:"Crypto",addSymbolMarketTypes:[{value:"Crypto",i18nKey:"dashboard.analysis.market.Crypto"},{value:"USStock",i18nKey:"dashboard.analysis.market.USStock"},{value:"Forex",i18nKey:"dashboard.analysis.market.Forex"},{value:"Futures",i18nKey:"dashboard.analysis.market.Futures"}],addSymbolKeyword:"",searchingSymbol:!1,symbolSearchResults:[],selectedAddSymbol:null,hasSearchedSymbol:!1,addingSymbol:!1,hotSymbols:[],loadingHotSymbols:!1,searchTimer:null}},beforeCreate:function(){this.form=this.$form.createForm(this)},mounted:function(){this.loadStrategies(),this.loadUserNotificationSettings()},beforeDestroy:function(){this.stopEquityPolling()},methods:{loadUserNotificationSettings:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.p=0,e.n=1,(0,h.vF)();case 1:a=e.v,1===a.code&&a.data&&(t.userNotificationSettings={default_channels:a.data.default_channels||["browser"],telegram_bot_token:a.data.telegram_bot_token||"",telegram_chat_id:a.data.telegram_chat_id||"",email:a.data.email||"",phone:a.data.phone||"",discord_webhook:a.data.discord_webhook||"",webhook_url:a.data.webhook_url||"",webhook_token:a.data.webhook_token||""}),e.n=3;break;case 2:e.p=2,e.v;case 3:return e.a(2)}},e,null,[[0,2]])}))()},loadWatchlist:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return t.loadingWatchlist=!0,e.p=1,e.n=2,(0,g.Qo)({userid:1});case 2:a=e.v,a&&1===a.code?t.watchlist=Array.isArray(a.data)?a.data:[]:t.watchlist=[],e.n=4;break;case 3:e.p=3,e.v,t.watchlist=[];case 4:return e.p=4,t.loadingWatchlist=!1,e.f(4);case 5:return e.a(2)}},e,null,[[1,3,4,5]])}))()},handleCloseAddSymbolModal:function(){this.showAddSymbolModal=!1,this.addSymbolKeyword="",this.symbolSearchResults=[],this.selectedAddSymbol=null,this.hasSearchedSymbol=!1},handleAddSymbolMarketChange:function(t){this.addSymbolMarket=t,this.addSymbolKeyword="",this.symbolSearchResults=[],this.selectedAddSymbol=null,this.hasSearchedSymbol=!1,this.loadHotSymbols(t)},handleSymbolSearchInputChange:function(t){var e=this,a=t.target.value;if(this.addSymbolKeyword=a,this.searchTimer&&clearTimeout(this.searchTimer),!a||""===a.trim())return this.symbolSearchResults=[],this.hasSearchedSymbol=!1,void(this.selectedAddSymbol=null);this.searchTimer=setTimeout(function(){e.searchSymbolsInModal(a)},500)},handleSearchSymbol:function(t){var e=this;return(0,l.A)((0,o.A)().m(function a(){return(0,o.A)().w(function(a){while(1)switch(a.n){case 0:if(t&&t.trim()){a.n=1;break}return a.a(2);case 1:if(e.addSymbolMarket){a.n=2;break}return e.$message.warning(e.$t("dashboard.analysis.modal.addStock.pleaseSelectMarket")),a.a(2);case 2:if(!(e.symbolSearchResults.length>0)){a.n=3;break}return a.a(2);case 3:e.hasSearchedSymbol&&0===e.symbolSearchResults.length?e.handleDirectAdd():e.searchSymbolsInModal(t);case 4:return a.a(2)}},a)}))()},searchSymbolsInModal:function(t){var e=this;return(0,l.A)((0,o.A)().m(function a(){var i;return(0,o.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(t&&""!==t.trim()){a.n=1;break}return e.symbolSearchResults=[],e.hasSearchedSymbol=!1,a.a(2);case 1:if(e.addSymbolMarket){a.n=2;break}return a.a(2);case 2:return e.searchingSymbol=!0,e.hasSearchedSymbol=!0,a.p=3,a.n=4,(0,g._3)({market:e.addSymbolMarket,keyword:t.trim()});case 4:i=a.v,i&&1===i.code&&Array.isArray(i.data)?e.symbolSearchResults=i.data:e.symbolSearchResults=[],a.n=6;break;case 5:a.p=5,a.v,e.symbolSearchResults=[];case 6:return a.p=6,e.searchingSymbol=!1,a.f(6);case 7:return a.a(2)}},a,null,[[3,5,6,7]])}))()},handleDirectAdd:function(){this.addSymbolKeyword&&this.addSymbolKeyword.trim()?this.addSymbolMarket?this.selectedAddSymbol={market:this.addSymbolMarket,symbol:this.addSymbolKeyword.trim().toUpperCase(),name:""}:this.$message.warning(this.$t("dashboard.analysis.modal.addStock.pleaseSelectMarket")):this.$message.warning(this.$t("dashboard.analysis.modal.addStock.pleaseEnterSymbol"))},handleSelectAddSymbol:function(t){this.selectedAddSymbol={market:this.addSymbolMarket,symbol:t.symbol,name:t.name||""}},loadHotSymbols:function(t){var e=this;return(0,l.A)((0,o.A)().m(function a(){var i;return(0,o.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(t||(t=e.addSymbolMarket||"Crypto"),t){a.n=1;break}return a.a(2);case 1:return e.loadingHotSymbols=!0,a.p=2,a.n=3,(0,g.z6)({market:t,limit:10});case 3:i=a.v,i&&1===i.code&&i.data?e.hotSymbols=i.data:e.hotSymbols=[],a.n=5;break;case 4:a.p=4,a.v,e.hotSymbols=[];case 5:return a.p=5,e.loadingHotSymbols=!1,a.f(5);case 6:return a.a(2)}},a,null,[[2,4,5,6]])}))()},handleConfirmAddSymbol:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a,i,s,r,n,l,c;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(a="",i="",!t.selectedAddSymbol){e.n=1;break}a=t.selectedAddSymbol.market,i=t.selectedAddSymbol.symbol.toUpperCase(),e.n=4;break;case 1:if(!t.addSymbolKeyword||!t.addSymbolKeyword.trim()){e.n=3;break}if(t.addSymbolMarket){e.n=2;break}return t.$message.warning(t.$t("dashboard.analysis.modal.addStock.pleaseSelectMarket")),e.a(2);case 2:a=t.addSymbolMarket,i=t.addSymbolKeyword.trim().toUpperCase(),e.n=4;break;case 3:return t.$message.warning(t.$t("dashboard.analysis.modal.addStock.pleaseSelectOrEnterSymbol")),e.a(2);case 4:return t.addingSymbol=!0,e.p=5,e.n=6,(0,g.dp)({userid:1,market:a,symbol:i});case 6:if(s=e.v,!s||1!==s.code){e.n=8;break}return t.$message.success(t.$t("dashboard.analysis.message.addStockSuccess")),e.n=7,t.loadWatchlist();case 7:r="".concat(a,":").concat(i),t.isEditMode?(t.form.setFieldsValue({symbol:r}),t.handleWatchlistSymbolChange(r)):(t.selectedSymbols.includes(r)||(t.selectedSymbols=[].concat((0,d.A)(t.selectedSymbols),[r])),t.handleMultiSymbolChange(t.selectedSymbols)),t.handleCloseAddSymbolModal(),e.n=9;break;case 8:t.$message.error((null===s||void 0===s?void 0:s.msg)||t.$t("dashboard.analysis.message.addStockFailed"));case 9:e.n=11;break;case 10:e.p=10,c=e.v,l=(null===c||void 0===c||null===(n=c.response)||void 0===n||null===(n=n.data)||void 0===n?void 0:n.msg)||(null===c||void 0===c?void 0:c.message)||t.$t("dashboard.analysis.message.addStockFailed"),t.$message.error(l);case 11:return e.p=11,t.addingSymbol=!1,e.f(11);case 12:return e.a(2)}},e,null,[[5,10,11,12]])}))()},filterWatchlistOption:function(t,e){var a,i=(null===(a=e.componentOptions)||void 0===a||null===(a=a.propsData)||void 0===a?void 0:a.value)||"";return"__add_symbol_option__"===i||String(i).toLowerCase().includes(String(t||"").toLowerCase())},filterWatchlistOptionWithAdd:function(t,e){var a,i=(null===(a=e.componentOptions)||void 0===a||null===(a=a.propsData)||void 0===a?void 0:a.value)||"";return"__add_symbol_option__"===i||String(i).toLowerCase().includes(String(t||"").toLowerCase())},handleMultiSymbolChangeWithAdd:function(t){if(t&&t.includes("__add_symbol_option__"))return this.selectedSymbols=t.filter(function(t){return"__add_symbol_option__"!==t}),this.showAddSymbolModal=!0,void this.loadHotSymbols(this.addSymbolMarket);this.handleMultiSymbolChange(t)},handleStrategyTypeChange:function(t){var e=t.target.value;"single"===e&&(this.crossSectionalSymbols=[])},handleCrossSectionalSymbolChange:function(t){if(t&&t.includes("__add_symbol_option__"))return this.crossSectionalSymbols=t.filter(function(t){return"__add_symbol_option__"!==t}),this.showAddSymbolModal=!0,void this.loadHotSymbols(this.addSymbolMarket);if(this.crossSectionalSymbols=t||[],t&&t.length>0){var e=t[0];if("string"===typeof e&&e.includes(":")){var a=e.indexOf(":"),i=e.slice(0,a);this.selectedMarketCategory=i||"Crypto"}}},getMarketColor:function(t){var e={USStock:"green",Crypto:"purple",Forex:"gold",Futures:"cyan"};return e[t]||"default"},handleWatchlistSymbolChange:function(t){var e=this;if("__add_symbol_option__"===t)return this.$nextTick(function(){e.form.setFieldsValue({symbol:void 0})}),this.showAddSymbolModal=!0,void this.loadHotSymbols(this.addSymbolMarket);if(t&&"string"===typeof t&&t.includes(":")){var a=t.indexOf(":"),i=t.slice(0,a);if(this.selectedMarketCategory=i||"Crypto","Forex"===this.selectedMarketCategory){this.currentBrokerId="mt5";try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({forex_broker_id:"mt5"})}catch(r){}}else if("USStock"===this.selectedMarketCategory){this.currentBrokerId="ibkr";try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({broker_id:"ibkr"})}catch(r){}}var s=["Crypto","USStock","Forex"].includes(this.selectedMarketCategory);if(!s){this.executionModeUi="signal";try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({execution_mode:"signal"})}catch(r){}}this.currentExchangeId="";try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({exchange_id:void 0})}catch(r){}}},handleMultiSymbolChange:function(t){if(this.selectedSymbols=t||[],t&&t.length>0){var e=t[0];if("string"===typeof e&&e.includes(":")){var a=e.indexOf(":"),i=e.slice(0,a);this.selectedMarketCategory=i||"Crypto"}}if("Forex"===this.selectedMarketCategory){this.currentBrokerId="mt5";try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({forex_broker_id:"mt5"})}catch(r){}}else if("USStock"===this.selectedMarketCategory){this.currentBrokerId="ibkr";try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({broker_id:"ibkr"})}catch(r){}}var s=["Crypto","USStock","Forex"].includes(this.selectedMarketCategory);if(!s){this.executionModeUi="signal";try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({execution_mode:"signal"})}catch(r){}}this.currentExchangeId="";try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({exchange_id:void 0})}catch(r){}},loadExchangeCredentials:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return t.loadingExchangeCredentials=!0,e.p=1,e.n=2,(0,p.IA)({user_id:1});case 2:a=e.v,a&&1===a.code?t.exchangeCredentials=a.data&&a.data.items||[]:(t.exchangeCredentials=[],t.$message.warning((null===a||void 0===a?void 0:a.msg)||t.$t("trading-assistant.messages.loadFailed"))),e.n=4;break;case 3:e.p=3,e.v,t.exchangeCredentials=[],t.$message.warning(t.$t("trading-assistant.exchange.testFailed"));case 4:return e.p=4,t.loadingExchangeCredentials=!1,e.f(4);case 5:return e.a(2)}},e,null,[[1,3,4,5]])}))()},formatCredentialLabel:function(t){if(!t)return"";var e=(t.name||"").trim(),a=t.exchange_id||"",i=t.api_key_hint||"";return e?"".concat(a.toUpperCase()," - ").concat(e," (").concat(i,")"):"".concat(a.toUpperCase()," (").concat(i,")")},isCredentialCompatible:function(t){if(!t||!t.exchange_id)return!0;var e=(t.exchange_id||"").toLowerCase(),a=this.selectedMarketCategory||"Crypto";if("mt5"===e)return"Forex"===a;if("ibkr"===e)return"USStock"===a;var i=["binance","okx","bitget","bybit","coinbaseexchange","kraken","kucoin","gate","bitfinex","deepcoin"];return!i.includes(e)||"Crypto"===a},handleCredentialSelectChange:function(t){var e=this;return(0,l.A)((0,o.A)().m(function a(){var i,s,r;return(0,o.A)().w(function(a){while(1)switch(a.n){case 0:if(t){a.n=1;break}return e.currentExchangeId="",e.connectionTestResult=null,a.a(2);case 1:if(i=e.exchangeCredentials.find(function(e){return String(e.id)===String(t)}),!i){a.n=5;break}if(s=(i.exchange_id||"").toLowerCase(),"mt5"!==s||"Forex"===e.selectedMarketCategory){a.n=2;break}e.$message.error(e.$t("trading-assistant.validation.mt5OnlyForForex"));try{e.form&&e.form.setFieldsValue&&e.form.setFieldsValue({credential_id:void 0})}catch(n){}return e.currentExchangeId="",e.connectionTestResult=null,a.a(2);case 2:if("ibkr"!==s||"USStock"===e.selectedMarketCategory){a.n=3;break}e.$message.error(e.$t("trading-assistant.validation.ibkrOnlyForUSStock"));try{e.form&&e.form.setFieldsValue&&e.form.setFieldsValue({credential_id:void 0})}catch(n){}return e.currentExchangeId="",e.connectionTestResult=null,a.a(2);case 3:if(r=["binance","okx","bitget","bybit","coinbaseexchange","kraken","kucoin","gate","bitfinex"],!r.includes(s)||"Crypto"===e.selectedMarketCategory){a.n=4;break}e.$message.error(e.$t("trading-assistant.validation.cryptoExchangeOnlyForCrypto"));try{e.form&&e.form.setFieldsValue&&e.form.setFieldsValue({credential_id:void 0})}catch(n){}return e.currentExchangeId="",e.connectionTestResult=null,a.a(2);case 4:e.currentExchangeId=i.exchange_id||"";case 5:e.connectionTestResult=null;case 6:return a.a(2)}},a)}))()},onSaveCredentialChange:function(t){var e=!!(t&&t.target&&t.target.checked);this.saveCredentialUi=e;try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({save_credential:e})}catch(a){}},onExecutionModeChange:function(t){var e=t&&t.target?t.target.value:t;this.executionModeUi=e||"signal",this.liveDisclaimerAckUi=!1;try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({live_disclaimer_ack:!1})}catch(a){}if(!this.canUseLiveTrading&&"signal"!==this.executionModeUi){this.executionModeUi="signal";try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({execution_mode:"signal"})}catch(a){}}},onLiveDisclaimerAckChange:function(t){var e=!!(t&&t.target&&t.target.checked);this.liveDisclaimerAckUi=e;try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({live_disclaimer_ack:e})}catch(a){}},onNotifyChannelsChange:function(t){this.notifyChannelsUi=Array.isArray(t)?t:[]},formatCurrency:function(t){return null===t||void 0===t?"-":"$"+t.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})},formatPnl:function(t){if(null===t||void 0===t)return"-";var e=t>=0?"+":"";return e+"$"+Math.abs(t).toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})},formatPnlPercent:function(t){if(null===t||void 0===t)return"-";var e=t>=0?"+":"";return e+Math.abs(t).toFixed(2)+"%"},loadStrategies:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a,i,s;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return t.loading=!0,e.p=1,e.n=2,(0,m.EM)();case 2:a=e.v,1===a.code?(i=a.data.strategies||[],t.strategies=i,t.selectedStrategy&&(s=t.strategies.find(function(e){return e.id===t.selectedStrategy.id}),t.selectedStrategy=s||null)):t.$message.error(a.msg||t.$t("trading-assistant.messages.loadFailed")),e.n=4;break;case 3:e.p=3,e.v,t.$message.error(t.$t("trading-assistant.messages.loadFailed"));case 4:return e.p=4,t.loading=!1,e.f(4);case 5:return e.a(2)}},e,null,[[1,3,4,5]])}))()},handleCreateStrategy:function(){var t=this;this.isEditMode=!1,this.editingStrategy=null,this.strategyType="indicator",this.currentStep=0,this.currentExchangeId="",this.currentBrokerId="ibkr",this.selectedIndicator=null,this.connectionTestResult=null,this.executionModeUi="signal",this.notifyChannelsUi=["browser"],this.saveCredentialUi=!1,this.backtestCollapseKeys=["risk"],this.trailingEnabledUi=!1,this.entryPctMaxUi=100,this.aiFilterEnabledUi=!1,this.selectedMarketCategory="Crypto",this.selectedSymbols=[],this.showAdvancedSettings=!1,this.form.resetFields(),this.form.setFieldsValue({execution_mode:"signal",notify_channels:["browser"],save_credential:!1,live_disclaimer_ack:!1}),this.liveDisclaimerAckUi=!1,this.showFormModal=!0,this.$nextTick(function(){t.loadWatchlist(),t.loadIndicators(),t.loadExchangeCredentials()})},handleEditStrategy:function(t){var e=this;"running"!==t.status?(this.strategyType="indicator",this.isEditMode=!0,this.editingStrategy=t,this.currentStep=0,this.currentExchangeId="",this.selectedIndicator=null,this.connectionTestResult=null,this.form.resetFields(),this.backtestCollapseKeys=["risk"],this.trailingEnabledUi=!1,this.entryPctMaxUi=100,this.aiFilterEnabledUi=!1,this.showFormModal=!0,this.$nextTick((0,l.A)((0,o.A)().m(function a(){return(0,o.A)().w(function(a){while(1)switch(a.n){case 0:return e.loadWatchlist(),e.loadIndicators(),e.loadExchangeCredentials(),a.n=1,e.loadStrategyDataToForm(t);case 1:return a.a(2)}},a)})))):this.$message.warning(this.$t("trading-assistant.messages.runningWarning"))},loadStrategyDataToForm:function(t){var e=this;return(0,l.A)((0,o.A)().m(function a(){var i,s,r,l,d,c,u,m,g,p,h,_,y,f,v,b,S,k,x,C,w,$,A,P,M,F,T,V,I,N,U,E,z,D,R,K,q,L,B,O,H,W;return(0,o.A)().w(function(a){while(1)switch(a.n){case 0:if(e.indicatorsLoaded){a.n=1;break}return a.n=1,e.loadIndicators();case 1:return a.n=2,e.$nextTick();case 2:return e.selectedMarketCategory=t.market_category||"Crypto",c=t.execution_mode||"signal",e.executionModeUi=c,e.liveDisclaimerAckUi="live"===c,u=t.notification_config&&t.notification_config.channels||["browser"],e.notifyChannelsUi=Array.isArray(u)?u:["browser"],m=!1,g=!1,t.trading_config&&(f=t.trading_config||{},v=f.trailing&&"object"===(0,n.A)(f.trailing)?f.trailing:null,m=void 0!==f.trailing_enabled?!!f.trailing_enabled:!(!v||!v.enabled),b=f.enable_ai_filter,g=!0===b||"true"===b||1===b||"1"===b,S=f.scale&&"object"===(0,n.A)(f.scale)?f.scale:null,k=f.position&&"object"===(0,n.A)(f.position)?f.position:null,x=new Set(["risk"]),(f.trend_add_enabled||f.dca_add_enabled||S&&(null!==(p=S.trendAdd)&&void 0!==p&&p.enabled||null!==(h=S.dcaAdd)&&void 0!==h&&h.enabled))&&x.add("scale"),(f.trend_reduce_enabled||f.adverse_reduce_enabled||S&&(null!==(_=S.trendReduce)&&void 0!==_&&_.enabled||null!==(y=S.adverseReduce)&&void 0!==y&&y.enabled))&&x.add("reduce"),(void 0!==f.entry_pct||k&&void 0!==k.entryPct)&&x.add("position"),e.backtestCollapseKeys=Array.from(x)),e.trailingEnabledUi=m,e.aiFilterEnabledUi=g,a.n=3,e.$nextTick();case 3:return e.form.setFieldsValue({enable_ai_filter:g}),a.n=4,e.$nextTick();case 4:if(e.form.setFieldsValue({execution_mode:e.executionModeUi,live_disclaimer_ack:e.liveDisclaimerAckUi,notify_channels:e.notifyChannelsUi,notify_email:(null===(i=t.notification_config)||void 0===i||null===(i=i.targets)||void 0===i?void 0:i.email)||"",notify_phone:(null===(s=t.notification_config)||void 0===s||null===(s=s.targets)||void 0===s?void 0:s.phone)||"",notify_telegram:(null===(r=t.notification_config)||void 0===r||null===(r=r.targets)||void 0===r?void 0:r.telegram)||"",notify_discord:(null===(l=t.notification_config)||void 0===l||null===(l=l.targets)||void 0===l?void 0:l.discord)||"",notify_webhook:(null===(d=t.notification_config)||void 0===d||null===(d=d.targets)||void 0===d?void 0:d.webhook)||""}),!t.indicator_config||!t.indicator_config.indicator_id){a.n=7;break}if(C=t.indicator_config.indicator_id,w=e.availableIndicators.find(function(t){return String(t.id)===String(C)}),!w){a.n=6;break}return A=String(w.id),e.form.setFieldsValue({indicator_id:A}),a.n=5,e.handleIndicatorChange(A);case 5:P=null===($=t.trading_config)||void 0===$?void 0:$.indicator_params,P&&"object"===(0,n.A)(P)&&Object.keys(P).forEach(function(t){t in e.indicatorParamValues&&e.$set(e.indicatorParamValues,t,P[t])}),a.n=7;break;case 6:e.form.setFieldsValue({indicator_id:String(C)});case 7:if(!t.exchange_config){a.n=11;break}if(M=t.exchange_config.exchange_id||"",F="live"===e.executionModeUi,T=["Crypto","USStock","Forex"].includes(e.selectedMarketCategory),V="USStock"===e.selectedMarketCategory,I="Forex"===e.selectedMarketCategory,!F||!T){a.n=10;break}if(!V){a.n=8;break}e.currentBrokerId=M||"ibkr",e.form.setFieldsValue({broker_id:M||"ibkr",ibkr_host:t.exchange_config.ibkr_host||"127.0.0.1",ibkr_port:t.exchange_config.ibkr_port||7497,ibkr_client_id:t.exchange_config.ibkr_client_id||1,ibkr_account:t.exchange_config.ibkr_account||""}),a.n=10;break;case 8:if(!I){a.n=9;break}e.currentBrokerId=M||"mt5",e.form.setFieldsValue({forex_broker_id:M||"mt5",mt5_server:t.exchange_config.mt5_server||"",mt5_login:t.exchange_config.mt5_login||"",mt5_password:t.exchange_config.mt5_password||"",mt5_terminal_path:t.exchange_config.mt5_terminal_path||""}),a.n=10;break;case 9:if(e.currentExchangeId=M||t.exchange_config.exchange_id||"",N=t.exchange_config.credential_id,!N){a.n=10;break}return e.form.setFieldsValue({credential_id:N}),a.n=10,e.handleCredentialSelectChange(N);case 10:V||I?e.currentBrokerId=M||(I?"mt5":"ibkr"):e.currentExchangeId=M;case 11:if(t.trading_config){if(U=t.trading_config||{},E=U.trailing&&"object"===(0,n.A)(U.trailing)?U.trailing:null,z=U.scale&&"object"===(0,n.A)(U.scale)?U.scale:null,D=U.position&&"object"===(0,n.A)(U.position)?U.position:null,R=U.strategy_type||t.strategy_type||"single","cross_sectional"===R)if(e.form.setFieldsValue({cs_strategy_type:"cross_sectional",portfolio_size:U.portfolio_size||10,long_ratio:U.long_ratio||.5,rebalance_frequency:U.rebalance_frequency||"daily"}),U.symbol_list&&Array.isArray(U.symbol_list))e.crossSectionalSymbols=U.symbol_list;else if(t.symbol_list)try{K="string"===typeof t.symbol_list?JSON.parse(t.symbol_list):t.symbol_list,Array.isArray(K)&&(e.crossSectionalSymbols=K)}catch(o){e.crossSectionalSymbols=[]}else e.crossSectionalSymbols=[];else e.form.setFieldsValue({cs_strategy_type:"single"}),e.crossSectionalSymbols=[];q=z&&z.trendAdd?z.trendAdd:null,L=z&&z.dcaAdd?z.dcaAdd:null,B=z&&z.trendReduce?z.trendReduce:null,O=z&&z.adverseReduce?z.adverseReduce:null,H=U.symbol,W="string"===typeof H&&H.includes(":")?H:"".concat(e.selectedMarketCategory,":").concat(H),e.form.setFieldsValue({strategy_name:t.strategy_name,symbol:W,initial_capital:U.initial_capital,leverage:U.leverage,trade_direction:U.trade_direction||"long",timeframe:U.timeframe||"1H",market_type:"futures"===U.market_type?"swap":U.market_type||"swap",take_profit_pct:U.take_profit_pct||0,stop_loss_pct:U.stop_loss_pct||0,trailing_enabled:m,trailing_stop_pct:void 0!==U.trailing_stop_pct?U.trailing_stop_pct||0:E&&E.pct||0,trailing_activation_pct:void 0!==U.trailing_activation_pct?U.trailing_activation_pct||0:E&&E.activationPct||0,trend_add_enabled:void 0!==U.trend_add_enabled?!!U.trend_add_enabled:!(!q||!q.enabled),trend_add_step_pct:void 0!==U.trend_add_step_pct?U.trend_add_step_pct||0:q&&q.stepPct||0,trend_add_size_pct:void 0!==U.trend_add_size_pct?U.trend_add_size_pct||0:q&&q.sizePct||0,trend_add_max_times:void 0!==U.trend_add_max_times?U.trend_add_max_times||0:q&&q.maxTimes||0,dca_add_enabled:void 0!==U.dca_add_enabled?!!U.dca_add_enabled:!(!L||!L.enabled),dca_add_step_pct:void 0!==U.dca_add_step_pct?U.dca_add_step_pct||0:L&&L.stepPct||0,dca_add_size_pct:void 0!==U.dca_add_size_pct?U.dca_add_size_pct||0:L&&L.sizePct||0,dca_add_max_times:void 0!==U.dca_add_max_times?U.dca_add_max_times||0:L&&L.maxTimes||0,trend_reduce_enabled:void 0!==U.trend_reduce_enabled?!!U.trend_reduce_enabled:!(!B||!B.enabled),trend_reduce_step_pct:void 0!==U.trend_reduce_step_pct?U.trend_reduce_step_pct||0:B&&B.stepPct||0,trend_reduce_size_pct:void 0!==U.trend_reduce_size_pct?U.trend_reduce_size_pct||0:B&&B.sizePct||0,trend_reduce_max_times:void 0!==U.trend_reduce_max_times?U.trend_reduce_max_times||0:B&&B.maxTimes||0,adverse_reduce_enabled:void 0!==U.adverse_reduce_enabled?!!U.adverse_reduce_enabled:!(!O||!O.enabled),adverse_reduce_step_pct:void 0!==U.adverse_reduce_step_pct?U.adverse_reduce_step_pct||0:O&&O.stepPct||0,adverse_reduce_size_pct:void 0!==U.adverse_reduce_size_pct?U.adverse_reduce_size_pct||0:O&&O.sizePct||0,adverse_reduce_max_times:void 0!==U.adverse_reduce_max_times?U.adverse_reduce_max_times||0:O&&O.maxTimes||0,entry_pct:0===U.entry_pct||U.entry_pct?U.entry_pct:D&&D.entryPct?D.entryPct:100,enable_ai_filter:g}),e.$nextTick(function(){e.recalcEntryPctMaxUi(),e.normalizeEntryPct()})}case 12:return a.a(2)}},a)}))()},handleSelectStrategy:function(t){this.selectedStrategy=t,this.currentEquity=null,this.loadStrategyDetails(),this.startEquityPolling()},loadStrategyDetails:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a,i,s,n,l,d,u,g,p,h,_,y,f;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.selectedStrategy){e.n=1;break}return e.a(2,Promise.resolve());case 1:return e.p=1,e.n=2,Promise.all([(0,m.Yx)(t.selectedStrategy.id),(0,m.oK)(t.selectedStrategy.id)]);case 2:if(a=e.v,i=(0,r.A)(a,2),s=i[0],n=i[1],l=null,1===s.code&&s.data&&(Array.isArray(s.data)&&s.data.length>0?(d=s.data[s.data.length-1],l=d.equity):(g=(null===(u=t.selectedStrategy.trading_config)||void 0===u?void 0:u.initial_capital)||t.selectedStrategy.initial_capital,l=g||null)),p=0,1===n.code&&n.data){h=n.data.positions||n.data.items||[],_=(0,c.A)(h);try{for(_.s();!(y=_.n()).done;)f=y.value,p+=parseFloat(f.unrealized_pnl||f.unrealizedPnl||0)}catch(o){_.e(o)}finally{_.f()}}t.currentEquity=null!==l?l+p:null,e.n=4;break;case 3:e.p=3,e.v;case 4:return e.a(2)}},e,null,[[1,3]])}))()},startEquityPolling:function(){var t=this;this.stopEquityPolling(),this.selectedStrategy&&(this.loadStrategyDetails(),this.equityPollingTimer=setInterval(function(){t.loadStrategyDetails()},1e4))},stopEquityPolling:function(){this.equityPollingTimer&&(clearInterval(this.equityPollingTimer),this.equityPollingTimer=null)},handleCloseModal:function(){this.showFormModal=!1,this.editingStrategy=null,this.isEditMode=!1,this.strategyType="indicator",this.currentStep=0,this.currentExchangeId="",this.selectedIndicator=null,this.connectionTestResult=null,this.indicatorsLoaded=!1,this.availableIndicators=[],this.backtestCollapseKeys=["risk"],this.trailingEnabledUi=!1,this.entryPctMaxUi=100,this.aiFilterEnabledUi=!1,this.showAdvancedSettings=!1,this.executionModeUi="signal",this.liveDisclaimerAckUi=!1,this.form.resetFields()},handleRefresh:function(){this.loadStrategies(),this.showFormModal=!1},handleMenuClick:function(t,e){switch(t){case"start":this.handleStartStrategy(e.id);break;case"stop":this.handleStopStrategy(e.id);break;case"edit":this.handleEditStrategy(e);break;case"delete":this.handleDeleteStrategy(e);break}},toggleGroup:function(t){this.$set(this.collapsedGroups,t,!this.collapsedGroups[t])},handleGroupMenuClick:function(t,e){var a=this;return(0,l.A)((0,o.A)().m(function i(){var s,r;return(0,o.A)().w(function(i){while(1)switch(i.n){case 0:s=e.strategies.map(function(t){return t.id}),r=t,i.n="startAll"===r?1:"stopAll"===r?3:"deleteAll"===r?5:7;break;case 1:return i.n=2,a.handleBatchStartStrategies(s,e.baseName);case 2:return i.a(3,7);case 3:return i.n=4,a.handleBatchStopStrategies(s,e.baseName);case 4:return i.a(3,7);case 5:return i.n=6,a.handleBatchDeleteStrategies(s,e.baseName);case 6:return i.a(3,7);case 7:return i.a(2)}},i)}))()},handleBatchStartStrategies:function(t,e){var a=this;return(0,l.A)((0,o.A)().m(function e(){var i,s,r;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.p=0,e.n=1,(0,m.UH)({strategy_ids:t});case 1:i=e.v,1===i.code?(r=(null===(s=i.data)||void 0===s||null===(s=s.success_ids)||void 0===s?void 0:s.length)||t.length,a.$message.success(a.$t("trading-assistant.messages.batchStartSuccess",{count:r})),a.loadStrategies()):a.$message.error(i.msg||a.$t("trading-assistant.messages.batchStartFailed")),e.n=3;break;case 2:e.p=2,e.v,a.$message.error(a.$t("trading-assistant.messages.batchStartFailed"));case 3:return e.a(2)}},e,null,[[0,2]])}))()},handleBatchStopStrategies:function(t,e){var a=this;return(0,l.A)((0,o.A)().m(function e(){var i,s,r;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.p=0,e.n=1,(0,m.GF)({strategy_ids:t});case 1:i=e.v,1===i.code?(r=(null===(s=i.data)||void 0===s||null===(s=s.success_ids)||void 0===s?void 0:s.length)||t.length,a.$message.success(a.$t("trading-assistant.messages.batchStopSuccess",{count:r})),a.loadStrategies()):a.$message.error(i.msg||a.$t("trading-assistant.messages.batchStopFailed")),e.n=3;break;case 2:e.p=2,e.v,a.$message.error(a.$t("trading-assistant.messages.batchStopFailed"));case 3:return e.a(2)}},e,null,[[0,2]])}))()},handleBatchDeleteStrategies:function(t,e){var a=this;return(0,l.A)((0,o.A)().m(function i(){var s;return(0,o.A)().w(function(i){while(1)switch(i.n){case 0:s=a.$t("trading-assistant.messages.batchDeleteConfirm",{count:t.length,name:e}),a.$confirm({title:a.$t("trading-assistant.deleteAll"),content:s,okText:a.$t("trading-assistant.deleteAll"),okType:"danger",cancelText:a.$t("trading-assistant.form.cancel"),onOk:function(){var e=(0,l.A)((0,o.A)().m(function e(){var i,s,r;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.p=0,e.n=1,(0,m.xQ)({strategy_ids:t});case 1:i=e.v,1===i.code?(r=(null===(s=i.data)||void 0===s||null===(s=s.success_ids)||void 0===s?void 0:s.length)||t.length,a.$message.success(a.$t("trading-assistant.messages.batchDeleteSuccess",{count:r})),a.selectedStrategy&&t.includes(a.selectedStrategy.id)&&(a.selectedStrategy=null,a.stopEquityPolling()),a.loadStrategies()):a.$message.error(i.msg||a.$t("trading-assistant.messages.batchDeleteFailed")),e.n=3;break;case 2:e.p=2,e.v,a.$message.error(a.$t("trading-assistant.messages.batchDeleteFailed"));case 3:return e.a(2)}},e,null,[[0,2]])}));function i(){return e.apply(this,arguments)}return i}()});case 1:return i.a(2)}},i)}))()},handleStartStrategy:function(t){var e=this;return(0,l.A)((0,o.A)().m(function a(){var i;return(0,o.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return a.p=0,a.n=1,(0,m.mV)(t);case 1:i=a.v,1===i.code?(e.$message.success(e.$t("trading-assistant.messages.startSuccess")),e.loadStrategies(),e.selectedStrategy&&e.selectedStrategy.id===t&&(e.selectedStrategy.status="running")):e.$message.error(i.msg||e.$t("trading-assistant.messages.startFailed")),a.n=3;break;case 2:a.p=2,a.v,e.$message.error(e.$t("trading-assistant.messages.startFailed"));case 3:return a.a(2)}},a,null,[[0,2]])}))()},handleStopStrategy:function(t){var e=this;return(0,l.A)((0,o.A)().m(function a(){var i;return(0,o.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return a.p=0,a.n=1,(0,m.Ke)(t);case 1:i=a.v,1===i.code?(e.$message.success(e.$t("trading-assistant.messages.stopSuccess")),e.loadStrategies(),e.selectedStrategy&&e.selectedStrategy.id===t&&(e.selectedStrategy.status="stopped")):e.$message.error(i.msg||e.$t("trading-assistant.messages.stopFailed")),a.n=3;break;case 2:a.p=2,a.v,e.$message.error(e.$t("trading-assistant.messages.stopFailed"));case 3:return a.a(2)}},a,null,[[0,2]])}))()},handleDeleteStrategy:function(t){var e=this,a=this.$t("trading-assistant.messages.deleteConfirmWithName",{name:t.strategy_name});this.$confirm({title:this.$t("trading-assistant.deleteStrategy"),content:a,okText:this.$t("trading-assistant.deleteStrategy"),okType:"danger",cancelText:this.$t("trading-assistant.form.cancel"),onOk:function(){var a=(0,l.A)((0,o.A)().m(function a(){var i;return(0,o.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return a.p=0,a.n=1,(0,m.v_)(t.id);case 1:i=a.v,1===i.code?(e.$message.success(e.$t("trading-assistant.messages.deleteSuccess")),e.selectedStrategy&&e.selectedStrategy.id===t.id&&(e.selectedStrategy=null,e.stopEquityPolling()),e.loadStrategies()):e.$message.error(i.msg||e.$t("trading-assistant.messages.deleteFailed")),a.n=3;break;case 2:a.p=2,a.v,e.$message.error(e.$t("trading-assistant.messages.deleteFailed"));case 3:return a.a(2)}},a,null,[[0,2]])}));function i(){return a.apply(this,arguments)}return i}()})},getStatusColor:function(t){var e={running:"green",stopped:"default",error:"red"};return e[t]||"default"},getStatusText:function(t){return this.$t("trading-assistant.status.".concat(t))||t},getStrategyTypeText:function(t){return this.$t("trading-assistant.strategyType.".concat(t))||t},getTradeDirectionText:function(t){if(!t)return"";var e={long:this.$t("trading-assistant.form.tradeDirectionLong")||"做多",short:this.$t("trading-assistant.form.tradeDirectionShort")||"做空",both:this.$t("trading-assistant.form.tradeDirectionBoth")||"双向"};return e[t]||t},handleIndicatorSelectFocus:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){return(0,o.A)().w(function(e){while(1)switch(e.n){case 0:if(t.indicatorsLoaded||t.loadingIndicators){e.n=1;break}return e.n=1,t.loadIndicators();case 1:return e.a(2)}},e)}))()},loadIndicators:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a,i,s,r;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(!t.loadingIndicators){e.n=1;break}return e.a(2,new Promise(function(e){var a=setInterval(function(){t.loadingIndicators||(clearInterval(a),e())},100)}));case 1:if(!t.indicatorsLoaded){e.n=2;break}return e.a(2,Promise.resolve());case 2:return a=t.$store.getters.userInfo||{},i=a.id||1,t.loadingIndicators=!0,e.p=3,e.n=4,(0,y.Ay)({url:"/api/indicator/getIndicators",method:"get",params:{userid:i}});case 4:s=e.v,1===s.code&&s.data?(r=s.data.map(function(t){return{id:t.id,name:t.name,description:t.description,type:t.indicator_type||t.indicatorType||"python",code:t.code,is_buy:t.is_buy,source:1===t.is_buy?"bought":"custom"}}),t.availableIndicators=r,t.indicatorsLoaded=!0):(t.availableIndicators=[],t.$message.warning(s.msg||t.$t("trading-assistant.messages.loadIndicatorsFailed"))),e.n=6;break;case 5:e.p=5,e.v,t.availableIndicators=[],t.$message.warning(t.$t("trading-assistant.messages.loadIndicatorsFailed"));case 6:return e.p=6,t.loadingIndicators=!1,e.f(6);case 7:return e.a(2)}},e,null,[[3,5,6,7]])}))()},handleIndicatorChange:function(t){var e=this;return(0,l.A)((0,o.A)().m(function a(){var i,s,r;return(0,o.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(i=String(t),e.selectedIndicator=e.availableIndicators.find(function(t){return String(t.id)===i}),e.indicatorParams=[],e.indicatorParamValues={},!t){a.n=4;break}return a.p=1,a.n=2,e.$http.get("/api/indicator/getIndicatorParams",{params:{indicator_id:t}});case 2:s=a.v,s&&1===s.code&&Array.isArray(s.data)&&(e.indicatorParams=s.data,r={},s.data.forEach(function(t){r[t.name]=t.default}),e.indicatorParamValues=r),a.n=4;break;case 3:a.p=3,a.v;case 4:return a.a(2)}},a,null,[[1,3]])}))()},handleMarketTypeChange:function(t){var e=t.target.value;"spot"===e&&this.form.setFieldsValue({trade_direction:"long",leverage:1})},recalcEntryPctMaxUi:function(){if(this.form){var t=!!this.form.getFieldValue("trend_add_enabled"),e=!!this.form.getFieldValue("dca_add_enabled"),a=Number(this.form.getFieldValue("trend_add_max_times")||0),i=Number(this.form.getFieldValue("dca_add_max_times")||0),s=Number(this.form.getFieldValue("trend_add_size_pct")||0),r=Number(this.form.getFieldValue("dca_add_size_pct")||0),n=(t?a*s:0)+(e?i*r:0),o=Math.max(0,Math.min(100,100-n));this.entryPctMaxUi=o}else this.entryPctMaxUi=100},normalizeEntryPct:function(){if(this.form){var t=Number(this.form.getFieldValue("entry_pct")||0),e=Number(this.entryPctMaxUi||100);t>e&&this.form.setFieldsValue({entry_pct:e})}},onTrendAddToggle:function(t){var e=this;this.form&&(t&&this.form.setFieldsValue({dca_add_enabled:!1}),this.$nextTick(function(){e.recalcEntryPctMaxUi(),e.normalizeEntryPct()}))},onDcaAddToggle:function(t){var e=this;this.form&&(t&&this.form.setFieldsValue({trend_add_enabled:!1}),this.$nextTick(function(){e.recalcEntryPctMaxUi(),e.normalizeEntryPct()}))},onScaleParamsChange:function(){var t=this;this.$nextTick(function(){t.recalcEntryPctMaxUi(),t.normalizeEntryPct()})},onEntryPctChange:function(){var t=this;this.$nextTick(function(){return t.normalizeEntryPct()})},onTrailingToggle:function(t){this.form&&(this.trailingEnabledUi=!!t,t||this.form.setFieldsValue({trailing_stop_pct:0,trailing_activation_pct:0}))},onAiFilterToggle:function(t){this.aiFilterEnabledUi=!!t;try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({enable_ai_filter:!!t})}catch(e){}},filterIndicatorOption:function(t,e){var a=e.componentOptions.children[0].children[0].text;return a.toLowerCase().indexOf(t.toLowerCase())>=0},filterSymbolOption:function(t,e){return e.componentOptions.children[0].text.toLowerCase().indexOf(t.toLowerCase())>=0},getIndicatorTypeColor:function(t){var e={trend:"blue",momentum:"green",volatility:"orange",volume:"purple",custom:"default"};return e[t]||"default"},getIndicatorTypeName:function(t){return this.$t("trading-assistant.indicatorType.".concat(t))||t},getExchangeName:function(t){if(t.labelKey){var e="trading-assistant.exchangeNames.".concat(t.labelKey),a=this.$t(e);return a===e?t.value.charAt(0).toUpperCase()+t.value.slice(1):a}return t.label||t.value},getExchangeDisplayName:function(t){if(!t)return"";var e=this.exchangeOptions.find(function(e){return e.value===t});return e?this.getExchangeName(e):t.charAt(0).toUpperCase()+t.slice(1)},getExchangeTagColor:function(t){var e={binance:"gold",okx:"blue",coinbaseexchange:"cyan",kraken:"purple",bitfinex:"geekblue",huobi:"orange",gate:"green",mexc:"lime",kucoin:"volcano",bybit:"red",bitget:"magenta",bitmex:"red",deribit:"blue",phemex:"cyan",bitmart:"geekblue",bitstamp:"purple",bittrex:"orange",poloniex:"green",gemini:"lime",cryptocom:"volcano",blockchaincom:"magenta",bitflyer:"red",upbit:"blue",bithumb:"cyan",coinone:"purple",zb:"geekblue",lbank:"orange",bibox:"green",bigone:"lime",bitrue:"volcano",coinex:"magenta",ftx:"red",ftxus:"blue",binanceus:"gold",binancecoinm:"gold",binanceusdm:"gold",ibkr:"green"};return e[t]||"default"},handleApiConfigChange:function(){this.connectionTestResult=null},getModalPopupContainer:function(){return window.document.body},handleBrokerSelectChange:function(t){this.currentBrokerId=t||"ibkr",this.connectionTestResult=null},handleForexBrokerSelectChange:function(t){this.currentBrokerId=t||"mt5",this.connectionTestResult=null},handleExchangeSelectChange:function(t){var e=this;this.currentExchangeId=t||"",this.connectionTestResult=null,this.suppressApiClearOnce?this.suppressApiClearOnce=!1:this.$nextTick(function(){var t={api_key:void 0,secret_key:void 0,passphrase:void 0,enable_demo_trading:!1};setTimeout(function(){e.form.setFieldsValue(t)},100)})},getPlaceholder:function(t){var e={okx:{api_key:"请输入API Key",secret_key:"请输入Secret Key",passphrase:"请输入Passphrase(创建API时设置)"},okex:{api_key:"请输入API Key",secret_key:"请输入Secret Key",passphrase:"请输入Passphrase(创建API时设置)"},binance:{api_key:"请输入API Key",secret_key:"请输入Secret Key"},coinbaseexchange:{api_key:"请输入API Key(或Key Name)",secret_key:"请输入API Secret(或Private Key)",passphrase:"请输入Passphrase(Legacy Pro API需要)"},kucoin:{api_key:"请输入API Key",secret_key:"请输入Secret Key",passphrase:"请输入Passphrase"},gate:{api_key:"请输入API Key",secret_key:"请输入Secret Key"},mexc:{api_key:"请输入Access Key",secret_key:"请输入Secret Key"},kraken:{api_key:"请输入API Key",secret_key:"请输入Secret Key"},bitfinex:{api_key:"请输入API Key",secret_key:"请输入Secret Key"},bybit:{api_key:"请输入API Key",secret_key:"请输入Secret Key"},bitget:{api_key:"请输入API Key",secret_key:"请输入Secret Key",passphrase:"请输入Passphrase(Legacy Pro API需要)"}},a=e[this.currentExchangeId]||{};if(a[t])return a[t];var i={api_key:this.$t("trading-assistant.placeholders.inputApiKey"),secret_key:this.$t("trading-assistant.placeholders.inputSecretKey"),passphrase:this.$t("trading-assistant.placeholders.inputPassphrase")};return i[t]||this.$t("trading-assistant.placeholders.inputApiKey")},handleNext:function(){var t=this;if(0===this.currentStep){var e=["indicator_id","strategy_name"];(this.isAdvancedMode||this.editingStrategy)&&e.push("initial_capital","market_type","leverage","trade_direction","timeframe"),this.isEditMode&&e.push("symbol"),this.form.validateFields(e,function(e,a){if(!e){if(!t.isEditMode){var i=t.form.getFieldValue("cs_strategy_type")||"single";if("cross_sectional"===i){if(!t.crossSectionalSymbols||0===t.crossSectionalSymbols.length)return void t.$message.warning(t.$t("trading-assistant.validation.symbolsRequired"))}else if(!t.selectedSymbols||0===t.selectedSymbols.length)return void t.$message.warning(t.$t("trading-assistant.validation.symbolsRequired"))}try{var s=a&&a.market_type||t.form.getFieldValue("market_type");"spot"===s&&t.form.setFieldsValue({leverage:1,trade_direction:"long"})}catch(r){}t.backtestCollapseKeys=["risk"];try{t.trailingEnabledUi=!!t.form.getFieldValue("trailing_enabled")}catch(r){t.trailingEnabledUi=!1}t.$nextTick(function(){t.recalcEntryPctMaxUi(),t.normalizeEntryPct()}),t.isSimpleMode&&!t.editingStrategy?t.currentStep=2:t.currentStep++}})}else if(1===this.currentStep){try{var a=this.form.getFieldValue("execution_mode")||"signal";this.executionModeUi=a;var i=this.form.getFieldValue("notify_channels")||["browser"];this.notifyChannelsUi=Array.isArray(i)?i:["browser"]}catch(s){}this.currentStep++}},handlePrev:function(){this.currentStep>0&&(this.isSimpleMode&&!this.editingStrategy&&2===this.currentStep?this.currentStep=0:this.currentStep--)},handleSubmit:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){return(0,o.A)().w(function(e){while(1)switch(e.n){case 0:t.form.validateFields(function(){var e=(0,l.A)((0,o.A)().m(function e(a,i){var s,r,n,l,d,c,u,g,p,h,_,y,f,v,b,S,k;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(a){e.n=14;break}if(e.p=1,t.saving=!0,s=t.canUseLiveTrading&&"live"===i.execution_mode,!s||i.live_disclaimer_ack){e.n=2;break}return t.$message.warning(t.$t("trading-assistant.liveDisclaimer.required")),t.saving=!1,e.a(2);case 2:if(!s){e.n=3;break}if(r=i.credential_id,r){e.n=3;break}return t.$message.warning(t.$t("trading-assistant.validation.credentialRequired")),t.saving=!1,e.a(2);case 3:if(n={channels:i.notify_channels||[],targets:{email:t.userNotificationSettings.email||"",phone:t.userNotificationSettings.phone||"",telegram:t.userNotificationSettings.telegram_chat_id||"",telegram_bot_token:t.userNotificationSettings.telegram_bot_token||"",discord:t.userNotificationSettings.discord_webhook||"",webhook:t.userNotificationSettings.webhook_url||"",webhook_token:t.userNotificationSettings.webhook_token||""}},n.channels&&0!==n.channels.length){e.n=4;break}return t.$message.warning(t.$t("trading-assistant.validation.notifyChannelRequired")),t.saving=!1,e.a(2);case 4:if(l=String(i.indicator_id),d=t.availableIndicators.find(function(t){return String(t.id)===l}),d){e.n=5;break}return t.$message.error(t.$t("trading-assistant.validation.indicatorRequired")),t.saving=!1,e.a(2);case 5:if(c=!!t.aiFilterEnabledUi,u="futures"===i.market_type?"swap":i.market_type||"swap",g=i.leverage||1,p=i.trade_direction||"long","spot"===u?(g=1,p="long",t.$message.info(t.$t("trading-assistant.messages.spotLimitations"))):(g<1&&(g=1),g>125&&(g=125)),h={strategy_name:i.strategy_name,market_category:t.selectedMarketCategory||"Crypto",execution_mode:i.execution_mode||"signal",notification_config:n,indicator_config:{indicator_id:d.id,indicator_name:d.name,indicator_code:d.code||""},exchange_config:s?t.isIBKRMarket?{exchange_id:i.broker_id||t.currentBrokerId||"ibkr",ibkr_host:i.ibkr_host||"127.0.0.1",ibkr_port:i.ibkr_port||7497,ibkr_client_id:i.ibkr_client_id||1,ibkr_account:i.ibkr_account||""}:t.isMT5Market?{exchange_id:i.forex_broker_id||t.currentBrokerId||"mt5",mt5_server:i.mt5_server||"",mt5_login:i.mt5_login||"",mt5_password:i.mt5_password||"",mt5_terminal_path:i.mt5_terminal_path||""}:{credential_id:i.credential_id,exchange_id:t.currentExchangeId||void 0}:void 0,trading_config:{initial_capital:i.initial_capital,leverage:g,trade_direction:p,timeframe:i.timeframe,market_type:u,margin_mode:"cross",signal_mode:"confirmed",take_profit_pct:i.take_profit_pct||0,stop_loss_pct:i.stop_loss_pct||0,trailing_enabled:!!i.trailing_enabled,trailing_stop_pct:i.trailing_stop_pct||0,trailing_activation_pct:i.trailing_activation_pct||0,trend_add_enabled:!!i.trend_add_enabled,trend_add_step_pct:i.trend_add_step_pct||0,trend_add_size_pct:i.trend_add_size_pct||0,trend_add_max_times:i.trend_add_max_times||0,dca_add_enabled:!!i.dca_add_enabled,dca_add_step_pct:i.dca_add_step_pct||0,dca_add_size_pct:i.dca_add_size_pct||0,dca_add_max_times:i.dca_add_max_times||0,trend_reduce_enabled:!!i.trend_reduce_enabled,trend_reduce_step_pct:i.trend_reduce_step_pct||0,trend_reduce_size_pct:i.trend_reduce_size_pct||0,trend_reduce_max_times:i.trend_reduce_max_times||0,adverse_reduce_enabled:!!i.adverse_reduce_enabled,adverse_reduce_step_pct:i.adverse_reduce_step_pct||0,adverse_reduce_size_pct:i.adverse_reduce_size_pct||0,adverse_reduce_max_times:i.adverse_reduce_max_times||0,entry_pct:0===i.entry_pct||i.entry_pct?i.entry_pct:100,commission:i.commission||0,slippage:i.slippage||0,enable_ai_filter:c,indicator_params:t.indicatorParamValues,strategy_type:i.cs_strategy_type||"single",symbol_list:"cross_sectional"===i.cs_strategy_type?t.crossSectionalSymbols:void 0,portfolio_size:"cross_sectional"===i.cs_strategy_type?i.portfolio_size||10:void 0,long_ratio:"cross_sectional"===i.cs_strategy_type?i.long_ratio||.5:void 0,rebalance_frequency:"cross_sectional"===i.cs_strategy_type?i.rebalance_frequency||"daily":void 0}},!t.editingStrategy){e.n=7;break}return y=i.symbol,"string"===typeof y&&y.includes(":")&&(f=y.indexOf(":"),h.market_category=y.slice(0,f)||h.market_category,y=y.slice(f+1)),h.trading_config.symbol=y,e.n=6,(0,m.P7)(t.editingStrategy.id,h);case 6:_=e.v,e.n=11;break;case 7:if(h.user_id=1,h.strategy_type="IndicatorStrategy","cross_sectional"!==i.cs_strategy_type){e.n=9;break}return h.strategy_type="IndicatorStrategy",h.trading_config.symbol=null,e.n=8,(0,m.WM)(h);case 8:_=e.v,e.n=11;break;case 9:return h.symbols=t.selectedSymbols,e.n=10,(0,m.Ox)(h);case 10:_=e.v;case 11:1===_.code?(t.isEditMode?t.$message.success(t.$t("trading-assistant.messages.updateSuccess")):(b=i.cs_strategy_type||"single",S="cross_sectional"===b?t.crossSectionalSymbols.length:t.selectedSymbols.length,k=(null===(v=_.data)||void 0===v?void 0:v.total_created)||S,t.$message.success(t.$t("trading-assistant.messages.batchCreateSuccess",{count:k}))),t.handleRefresh()):t.$message.error(_.msg||(t.isEditMode?t.$t("trading-assistant.messages.updateFailed"):t.$t("trading-assistant.messages.createFailed"))),e.n=13;break;case 12:e.p=12,e.v,t.$message.error(t.isEditMode?t.$t("trading-assistant.messages.updateFailed"):t.$t("trading-assistant.messages.createFailed"));case 13:return e.p=13,t.saving=!1,e.f(13);case 14:return e.a(2)}},e,null,[[1,12,13,14]])}));return function(t,a){return e.apply(this,arguments)}}());case 1:return e.a(2)}},e)}))()},getFormValues:function(){var t=this;return new Promise(function(e,a){t.form.validateFields(function(t,i){t?a(t):e(i)})})},getDropdownContainer:function(t){return document.body}}},E=U,z=(0,k.A)(E,i,s,!1,null,"13cac835",null),D=z.exports},42430:function(t,e,a){a.d(e,{IA:function(){return n},PR:function(){return o},kI:function(){return l}});var i=a(76338),s=a(75769),r={list:"/api/credentials/list",get:"/api/credentials/get",create:"/api/credentials/create",delete:"/api/credentials/delete"};function n(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,s.Ay)({url:r.list,method:"get",params:t})}function o(t){return(0,s.Ay)({url:r.create,method:"post",data:t})}function l(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return(0,s.Ay)({url:r.delete,method:"delete",params:(0,i.A)({id:t},e)})}},35038:function(t,e,a){a.d(e,{Qo:function(){return r},_3:function(){return c},dp:function(){return n},iO:function(){return d},mk:function(){return o},ms:function(){return l},z6:function(){return u}});var i=a(75769),s={GetWatchlist:"/api/market/watchlist/get",AddWatchlist:"/api/market/watchlist/add",RemoveWatchlist:"/api/market/watchlist/remove",GetWatchlistPrices:"/api/market/watchlist/prices",MultiAnalysis:"/api/analysis/multiAnalysis",CreateAnalysisTask:"/api/analysis/createTask",GetAnalysisTaskStatus:"/api/analysis/getTaskStatus",GetAnalysisHistoryList:"/api/analysis/getHistoryList",DeleteAnalysisTask:"/api/analysis/deleteTask",ReflectAnalysis:"/api/analysis/reflect",ChatMessage:"/api/ai/chat/message",GetChatHistory:"/api/ai/chat/history",SaveChatHistory:"/api/ai/chat/history/save",GetConfig:"/api/market/config",GetMenuFooterConfig:"/api/market/menuFooterConfig",GetMarketTypes:"/api/market/types",SearchSymbols:"/api/market/symbols/search",GetHotSymbols:"/api/market/symbols/hot"};function r(t){return(0,i.Ay)({url:s.GetWatchlist,method:"get",params:t})}function n(t){return(0,i.Ay)({url:s.AddWatchlist,method:"post",data:t})}function o(t){return(0,i.Ay)({url:s.RemoveWatchlist,method:"post",data:t})}function l(t){return(0,i.Ay)({url:s.GetWatchlistPrices,method:"get",params:{watchlist:JSON.stringify(t.watchlist||[])}})}function d(){return(0,i.Ay)({url:s.GetMarketTypes,method:"get"})}function c(t){return(0,i.Ay)({url:s.SearchSymbols,method:"get",params:t})}function u(t){return(0,i.Ay)({url:s.GetHotSymbols,method:"get",params:t})}},84841:function(t,e,a){a.d(e,{DK:function(){return f},E$:function(){return c},Gl:function(){return g},O0:function(){return d},TK:function(){return n},aU:function(){return s},cw:function(){return l},d$:function(){return b},hG:function(){return o},kg:function(){return r},nY:function(){return y},r7:function(){return u},rx:function(){return h},v9:function(){return p},vF:function(){return m},vi:function(){return v},wq:function(){return _}});var i=a(75769);function s(t){return(0,i.Ay)({url:"/api/users/list",method:"get",params:t})}function r(t){return(0,i.Ay)({url:"/api/users/create",method:"post",data:t})}function n(t,e){return(0,i.Ay)({url:"/api/users/update",method:"put",params:{id:t},data:e})}function o(t){return(0,i.Ay)({url:"/api/users/delete",method:"delete",params:{id:t}})}function l(t){return(0,i.Ay)({url:"/api/users/reset-password",method:"post",data:t})}function d(){return(0,i.Ay)({url:"/api/users/roles",method:"get"})}function c(){return(0,i.Ay)({url:"/api/users/profile",method:"get"})}function u(t){return(0,i.Ay)({url:"/api/users/profile/update",method:"put",data:t})}function m(){return(0,i.Ay)({url:"/api/users/notification-settings",method:"get"})}function g(t){return(0,i.Ay)({url:"/api/users/notification-settings",method:"put",data:t})}function p(t){return(0,i.Ay)({url:"/api/users/my-credits-log",method:"get",params:t})}function h(t){return(0,i.Ay)({url:"/api/users/my-referrals",method:"get",params:t})}function _(t){return(0,i.Ay)({url:"/api/users/set-credits",method:"post",data:t})}function y(t){return(0,i.Ay)({url:"/api/users/set-vip",method:"post",data:t})}function f(t){return(0,i.Ay)({url:"/api/users/system-strategies",method:"get",params:t})}function v(t){return(0,i.Ay)({url:"/api/users/admin-orders",method:"get",params:t})}function b(t){return(0,i.Ay)({url:"/api/users/admin-ai-stats",method:"get",params:t})}}}]); \ No newline at end of file +"use strict";(self["webpackChunkvue_antd_pro"]=self["webpackChunkvue_antd_pro"]||[]).push([[684],{72684:function(t,e,a){a.r(e),a.d(e,{default:function(){return D}});a(52675),a(89463),a(28706),a(74423),a(48598),a(62010),a(2892),a(9868),a(21699);var i=function(){var t,e=this,a=e._self._c;return a("div",{staticClass:"trading-assistant",class:{"theme-dark":e.isDarkTheme}},[a("a-row",{staticClass:"strategy-layout",attrs:{gutter:24}},[a("a-col",{staticClass:"strategy-list-col",attrs:{xs:24,sm:24,md:10,lg:8,xl:8}},[a("a-card",{staticClass:"strategy-list-card",attrs:{bordered:!1}},[a("div",{staticClass:"card-title",attrs:{slot:"title"},slot:"title"},[a("span",[e._v(e._s(e.$t("trading-assistant.strategyList")))]),a("a-button",{attrs:{type:"primary",size:"small"},on:{click:e.handleCreateStrategy}},[a("a-icon",{attrs:{type:"plus"}}),e._v(" "+e._s(e.$t("trading-assistant.createStrategy"))+" ")],1)],1),a("div",{staticClass:"group-mode-switch"},[a("span",{staticClass:"group-mode-label"},[e._v(e._s(e.$t("trading-assistant.groupBy"))+":")]),a("a-radio-group",{attrs:{size:"small","button-style":"solid"},model:{value:e.groupByMode,callback:function(t){e.groupByMode=t},expression:"groupByMode"}},[a("a-radio-button",{attrs:{value:"strategy"}},[a("a-icon",{attrs:{type:"folder"}}),e._v(" "+e._s(e.$t("trading-assistant.groupByStrategy"))+" ")],1),a("a-radio-button",{attrs:{value:"symbol"}},[a("a-icon",{attrs:{type:"stock"}}),e._v(" "+e._s(e.$t("trading-assistant.groupBySymbol"))+" ")],1)],1)],1),a("a-spin",{attrs:{spinning:e.loading}},[e.loading||0!==e.strategies.length?a("div",{staticClass:"strategy-grouped-list"},[e._l(e.groupedStrategies.groups,function(t){return a("div",{key:t.id,staticClass:"strategy-group"},[a("div",{staticClass:"strategy-group-header",on:{click:function(a){return e.toggleGroup(t.id)}}},[a("div",{staticClass:"group-header-left"},[a("a-icon",{staticClass:"collapse-icon",attrs:{type:e.collapsedGroups[t.id]?"right":"down"}}),a("a-icon",{staticClass:"group-icon",attrs:{type:"symbol"===e.groupByMode?"stock":"folder"}}),a("span",{staticClass:"group-name"},[e._v(e._s(t.baseName))]),a("a-tag",{attrs:{size:"small",color:"blue"}},[e._v(e._s(t.strategies.length)+" "+e._s("symbol"===e.groupByMode?e.$t("trading-assistant.strategyCount"):e.$t("trading-assistant.symbolCount")))])],1),a("div",{staticClass:"group-header-right",on:{click:function(t){t.stopPropagation()}}},[t.runningCount>0?a("span",{staticClass:"group-status running"},[e._v(" "+e._s(t.runningCount)+" "+e._s(e.$t("trading-assistant.status.running"))+" ")]):e._e(),t.stoppedCount>0?a("span",{staticClass:"group-status stopped"},[e._v(" "+e._s(t.stoppedCount)+" "+e._s(e.$t("trading-assistant.status.stopped"))+" ")]):e._e(),a("a-dropdown",{attrs:{getPopupContainer:e.getDropdownContainer,trigger:["click"]}},[a("a-menu",{attrs:{slot:"overlay"},on:{click:function(a){var i=a.key;return e.handleGroupMenuClick(i,t)}},slot:"overlay"},[a("a-menu-item",{key:"startAll"},[a("a-icon",{attrs:{type:"play-circle"}}),e._v(" "+e._s(e.$t("trading-assistant.startAll"))+" ")],1),a("a-menu-item",{key:"stopAll"},[a("a-icon",{attrs:{type:"pause-circle"}}),e._v(" "+e._s(e.$t("trading-assistant.stopAll"))+" ")],1),a("a-menu-divider"),a("a-menu-item",{key:"deleteAll",staticClass:"danger-item"},[a("a-icon",{attrs:{type:"delete"}}),e._v(" "+e._s(e.$t("trading-assistant.deleteAll"))+" ")],1)],1),a("a-button",{attrs:{type:"link",icon:"more",size:"small"}})],1)],1)]),a("div",{directives:[{name:"show",rawName:"v-show",value:!e.collapsedGroups[t.id],expression:"!collapsedGroups[group.id]"}],staticClass:"strategy-group-content"},e._l(t.strategies,function(t){return a("div",{key:t.id,class:["strategy-list-item",{active:e.selectedStrategy&&e.selectedStrategy.id===t.id}],on:{click:function(a){return e.handleSelectStrategy(t)}}},[a("div",{staticClass:"strategy-item-content"},[a("div",{staticClass:"strategy-item-header"},[a("div",{staticClass:"strategy-name-wrapper"},["strategy"===e.groupByMode?[t.trading_config&&t.trading_config.symbol?a("span",{staticClass:"info-item"},[a("a-icon",{attrs:{type:"dollar"}}),e._v(" "+e._s(t.trading_config.symbol)+" ")],1):e._e()]:[a("span",{staticClass:"info-item strategy-name-text"},[a("a-icon",{attrs:{type:"thunderbolt"}}),e._v(" "+e._s(t.displayInfo?t.displayInfo.strategyName:t.strategy_name)+" ")],1),t.displayInfo&&t.displayInfo.timeframe?a("a-tag",{attrs:{size:"small",color:"cyan"}},[a("a-icon",{staticStyle:{"margin-right":"2px"},attrs:{type:"clock-circle"}}),e._v(" "+e._s(t.displayInfo.timeframe)+" ")],1):e._e(),t.displayInfo&&t.displayInfo.indicatorName&&"-"!==t.displayInfo.indicatorName?a("a-tag",{attrs:{size:"small",color:"purple"}},[a("a-icon",{staticStyle:{"margin-right":"2px"},attrs:{type:"line-chart"}}),e._v(" "+e._s(t.displayInfo.indicatorName)+" ")],1):e._e()],a("span",{staticClass:"status-label",class:[t.status?"status-".concat(t.status):"",{"status-stopped":"stopped"===t.status}]},[e._v(" "+e._s(e.getStatusText(t.status))+" ")])],2)])]),a("div",{staticClass:"strategy-item-actions",on:{click:function(t){t.stopPropagation()}}},[a("a-dropdown",{attrs:{getPopupContainer:e.getDropdownContainer,trigger:["click"]}},[a("a-menu",{attrs:{slot:"overlay"},on:{click:function(a){var i=a.key;return e.handleMenuClick(i,t)}},slot:"overlay"},["stopped"===t.status?a("a-menu-item",{key:"start"},[a("a-icon",{attrs:{type:"play-circle"}}),e._v(" "+e._s(e.$t("trading-assistant.startStrategy"))+" ")],1):e._e(),"running"===t.status?a("a-menu-item",{key:"stop"},[a("a-icon",{attrs:{type:"pause-circle"}}),e._v(" "+e._s(e.$t("trading-assistant.stopStrategy"))+" ")],1):e._e(),a("a-menu-divider"),a("a-menu-item",{key:"edit"},[a("a-icon",{attrs:{type:"edit"}}),e._v(" "+e._s(e.$t("trading-assistant.editStrategy"))+" ")],1),a("a-menu-divider"),a("a-menu-item",{key:"delete",staticClass:"danger-item"},[a("a-icon",{attrs:{type:"delete"}}),e._v(" "+e._s(e.$t("trading-assistant.deleteStrategy"))+" ")],1)],1),a("a-button",{attrs:{type:"link",icon:"more",size:"small"}})],1)],1)])}),0)])}),e._l(e.groupedStrategies.ungrouped,function(t){return a("div",{key:t.id,class:["strategy-list-item",{active:e.selectedStrategy&&e.selectedStrategy.id===t.id}],on:{click:function(a){return e.handleSelectStrategy(t)}}},[a("div",{staticClass:"strategy-item-content"},[a("div",{staticClass:"strategy-item-header"},[a("div",{staticClass:"strategy-name-wrapper"},[t.exchange_config&&t.exchange_config.exchange_id?a("a-tag",{staticClass:"exchange-tag",attrs:{color:e.getExchangeTagColor(t.exchange_config.exchange_id),size:"small"}},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"bank"}}),e._v(" "+e._s(e.getExchangeDisplayName(t.exchange_config.exchange_id))+" ")],1):e._e(),a("span",{staticClass:"strategy-name"},[e._v(e._s(t.strategy_name))]),"PromptBasedStrategy"===t.strategy_type?a("a-tag",{staticClass:"strategy-type-tag",attrs:{color:"purple",size:"small"}},[a("a-icon",{staticStyle:{"margin-right":"2px"},attrs:{type:"robot"}}),e._v(" AI ")],1):e._e()],1)]),a("div",{staticClass:"strategy-item-info"},[t.trading_config&&t.trading_config.symbol?a("span",{staticClass:"info-item"},[a("a-icon",{attrs:{type:"dollar"}}),e._v(" "+e._s(t.trading_config.symbol)+" ")],1):e._e(),a("span",{staticClass:"status-label",class:[t.status?"status-".concat(t.status):"",{"status-stopped":"stopped"===t.status}]},[e._v(" "+e._s(e.getStatusText(t.status))+" ")])])]),a("div",{staticClass:"strategy-item-actions",on:{click:function(t){t.stopPropagation()}}},[a("a-dropdown",{attrs:{getPopupContainer:e.getDropdownContainer,trigger:["click"]}},[a("a-menu",{attrs:{slot:"overlay"},on:{click:function(a){var i=a.key;return e.handleMenuClick(i,t)}},slot:"overlay"},["stopped"===t.status?a("a-menu-item",{key:"start"},[a("a-icon",{attrs:{type:"play-circle"}}),e._v(" "+e._s(e.$t("trading-assistant.startStrategy"))+" ")],1):e._e(),"running"===t.status?a("a-menu-item",{key:"stop"},[a("a-icon",{attrs:{type:"pause-circle"}}),e._v(" "+e._s(e.$t("trading-assistant.stopStrategy"))+" ")],1):e._e(),a("a-menu-divider"),a("a-menu-item",{key:"edit"},[a("a-icon",{attrs:{type:"edit"}}),e._v(" "+e._s(e.$t("trading-assistant.editStrategy"))+" ")],1),a("a-menu-divider"),a("a-menu-item",{key:"delete",staticClass:"danger-item"},[a("a-icon",{attrs:{type:"delete"}}),e._v(" "+e._s(e.$t("trading-assistant.deleteStrategy"))+" ")],1)],1),a("a-button",{attrs:{type:"link",icon:"more",size:"small"}})],1)],1)])})],2):a("a-empty",{attrs:{description:e.$t("trading-assistant.noStrategy")}})],1)],1)],1),a("a-col",{staticClass:"strategy-detail-col",attrs:{xs:24,sm:24,md:14,lg:16,xl:16}},[e.selectedStrategy?a("div",{staticClass:"strategy-detail-panel"},[a("a-card",{staticClass:"strategy-header-card",attrs:{bordered:!1}},[a("div",{staticClass:"strategy-header"},[a("div",{staticClass:"header-left"},[a("div",{staticClass:"strategy-title-row"},[a("h3",{staticClass:"strategy-title"},[e._v(e._s(e.selectedStrategy.strategy_name))]),a("div",{staticClass:"status-badge",class:["status-".concat(e.selectedStrategy.status)]},[a("span",{staticClass:"status-dot"}),e._v(" "+e._s(e.getStatusText(e.selectedStrategy.status))+" ")])]),a("div",{staticClass:"key-stats-grid"},[e.selectedStrategy.initial_capital||e.selectedStrategy.trading_config&&e.selectedStrategy.trading_config.initial_capital?a("div",{staticClass:"stat-card"},[a("div",{staticClass:"stat-icon investment"},[a("a-icon",{attrs:{type:"wallet"}})],1),a("div",{staticClass:"stat-content"},[a("div",{staticClass:"stat-label"},[e._v(e._s(e.$t("trading-assistant.detail.totalInvestment")))]),a("div",{staticClass:"stat-value"},[e._v("$"+e._s(parseFloat(e.selectedStrategy.initial_capital||(null===(t=e.selectedStrategy.trading_config)||void 0===t?void 0:t.initial_capital)||0).toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})))])])]):e._e(),null!==e.currentEquity?a("div",{staticClass:"stat-card"},[a("div",{staticClass:"stat-icon equity"},[a("a-icon",{attrs:{type:"fund"}})],1),a("div",{staticClass:"stat-content"},[a("div",{staticClass:"stat-label"},[e._v(e._s(e.$t("trading-assistant.detail.currentEquity")))]),a("div",{staticClass:"stat-value",class:e.getEquityColorClass},[e._v(e._s(e.formatCurrency(e.currentEquity)))])])]):e._e(),null!==e.totalPnl?a("div",{staticClass:"stat-card pnl-card",class:{profit:e.totalPnl>0,loss:e.totalPnl<0}},[a("div",{staticClass:"stat-icon pnl"},[a("a-icon",{attrs:{type:e.totalPnl>=0?"rise":"fall"}})],1),a("div",{staticClass:"stat-content"},[a("div",{staticClass:"stat-label"},[e._v(e._s(e.$t("trading-assistant.detail.totalPnl")))]),a("div",{staticClass:"stat-value",class:e.getPnlColorClass},[e._v(" "+e._s(e.formatPnl(e.totalPnl))+" "),a("span",{staticClass:"pnl-percent"},[e._v("("+e._s(e.formatPnlPercent(e.totalPnlPercent))+")")])])])]):e._e()]),a("div",{staticClass:"strategy-tags"},[e.selectedStrategy.trading_config?a("div",{staticClass:"tag-item"},[a("a-icon",{attrs:{type:"stock"}}),a("span",[e._v(e._s(e.selectedStrategy.trading_config.symbol))])],1):e._e(),e.selectedStrategy.indicator_config&&e.selectedStrategy.indicator_config.indicator_name?a("div",{staticClass:"tag-item"},[a("a-icon",{attrs:{type:"line-chart"}}),a("span",[e._v(e._s(e.selectedStrategy.indicator_config.indicator_name))])],1):e._e(),e.selectedStrategy.trading_config?a("div",{staticClass:"tag-item"},[a("a-icon",{attrs:{type:"thunderbolt"}}),a("span",[e._v(e._s(e.selectedStrategy.trading_config.leverage||1)+"x")])],1):e._e(),e.selectedStrategy.trading_config&&e.selectedStrategy.trading_config.trade_direction?a("div",{staticClass:"tag-item"},[a("a-icon",{attrs:{type:"swap"}}),a("span",[e._v(e._s(e.getTradeDirectionText(e.selectedStrategy.trading_config.trade_direction)))])],1):e._e(),e.selectedStrategy.trading_config&&e.selectedStrategy.trading_config.timeframe?a("div",{staticClass:"tag-item"},[a("a-icon",{attrs:{type:"clock-circle"}}),a("span",[e._v(e._s(e.selectedStrategy.trading_config.timeframe))])],1):e._e()])]),a("div",{staticClass:"header-right"},["stopped"===e.selectedStrategy.status?a("a-button",{staticClass:"action-btn start-btn",attrs:{type:"primary",size:"large"},on:{click:function(t){return e.handleStartStrategy(e.selectedStrategy.id)}}},[a("a-icon",{attrs:{type:"play-circle"}}),e._v(" "+e._s(e.$t("trading-assistant.startStrategy"))+" ")],1):e._e(),"running"===e.selectedStrategy.status?a("a-button",{staticClass:"action-btn stop-btn",attrs:{type:"danger",size:"large"},on:{click:function(t){return e.handleStopStrategy(e.selectedStrategy.id)}}},[a("a-icon",{attrs:{type:"pause-circle"}}),e._v(" "+e._s(e.$t("trading-assistant.stopStrategy"))+" ")],1):e._e()],1)])]),a("a-card",{staticClass:"strategy-content-card",attrs:{bordered:!1}},[a("a-tabs",{attrs:{defaultActiveKey:"positions"}},[a("a-tab-pane",{key:"positions",attrs:{tab:e.$t("trading-assistant.tabs.positions")}},[a("position-records",{attrs:{"strategy-id":e.selectedStrategy.id,"market-type":e.selectedStrategy.trading_config&&e.selectedStrategy.trading_config.market_type||"swap",leverage:e.selectedStrategy.trading_config&&e.selectedStrategy.trading_config.leverage||1,loading:e.loadingRecords}})],1),a("a-tab-pane",{key:"trades",attrs:{tab:e.$t("trading-assistant.tabs.tradingRecords")}},[a("trading-records",{attrs:{"strategy-id":e.selectedStrategy.id,loading:e.loadingRecords}})],1)],1)],1)],1):a("div",{staticClass:"empty-detail"},[a("a-empty",{attrs:{description:e.$t("trading-assistant.selectStrategy")}})],1)])],1),a("a-modal",{attrs:{visible:e.showFormModal,title:e.editingStrategy?e.$t("trading-assistant.editStrategy"):e.$t("trading-assistant.createStrategy"),width:e.isMobile?"95%":1100,confirmLoading:e.saving,maskClosable:!1,wrapClassName:e.isMobile?"mobile-modal":"",bodyStyle:{maxHeight:"70vh",overflowY:"auto"}},on:{ok:e.handleSubmit,cancel:e.handleCloseModal}},[a("a-spin",{attrs:{spinning:e.loadingIndicators}},[e.editingStrategy?e._e():a("div",{staticClass:"creation-mode-toggle"},[a("a-radio-group",{attrs:{size:"small","button-style":"solid"},model:{value:e.creationMode,callback:function(t){e.creationMode=t},expression:"creationMode"}},[a("a-radio-button",{attrs:{value:"simple"}},[a("a-icon",{attrs:{type:"rocket"}}),e._v(" "+e._s(e.$t("trading-assistant.form.simpleMode"))+" ")],1),a("a-radio-button",{attrs:{value:"advanced"}},[a("a-icon",{attrs:{type:"setting"}}),e._v(" "+e._s(e.$t("trading-assistant.form.advancedMode"))+" ")],1)],1),a("span",{staticClass:"mode-hint"},[e._v(e._s(e.isSimpleMode?e.$t("trading-assistant.form.simpleModeHint"):e.$t("trading-assistant.form.advancedModeHint")))])],1),a("a-steps",{staticClass:"steps-container",attrs:{current:e.displayCurrentStep}},[a("a-step",{attrs:{title:e.isSimpleMode&&!e.editingStrategy?e.$t("trading-assistant.form.simpleStep1"):e.$t("trading-assistant.form.step1")}}),e.isAdvancedMode||e.editingStrategy?a("a-step",{attrs:{title:e.$t("trading-assistant.form.step2Params")}}):e._e(),a("a-step",{attrs:{title:e.isSimpleMode&&!e.editingStrategy?e.$t("trading-assistant.form.simpleStep2"):e.$t("trading-assistant.form.step3Signal")}})],1),a("div",{staticClass:"form-container"},[a("div",{directives:[{name:"show",rawName:"v-show",value:0===e.currentStep,expression:"currentStep === 0"}],staticClass:"step-content"},["indicator"===e.strategyType?a("div",[a("a-form",{attrs:{form:e.form,layout:"vertical"}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.indicator")}},[a("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["indicator_id",{rules:[{required:!0,message:e.$t("trading-assistant.validation.indicatorRequired")}]}],expression:"['indicator_id', { rules: [{ required: true, message: $t('trading-assistant.validation.indicatorRequired') }] }]"}],attrs:{placeholder:e.$t("trading-assistant.placeholders.selectIndicator"),"show-search":"","filter-option":e.filterIndicatorOption,loading:e.loadingIndicators,getPopupContainer:function(t){return t.parentNode}},on:{focus:e.handleIndicatorSelectFocus,change:e.handleIndicatorChange}},e._l(e.availableIndicators,function(t){return a("a-select-option",{key:String(t.id),attrs:{value:String(t.id)}},[a("div",{staticClass:"indicator-option"},[a("span",{staticClass:"indicator-name"},[e._v(e._s(t.name))]),t.type?a("a-tag",{attrs:{size:"small",color:e.getIndicatorTypeColor(t.type)}},[e._v(" "+e._s(e.getIndicatorTypeName(t.type))+" ")]):e._e()],1)])}),1),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.$t("trading-assistant.form.indicatorHint"))+" ")])],1),e.selectedIndicator?a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.indicatorDescription")}},[a("div",{staticClass:"indicator-description"},[e._v(" "+e._s(e.selectedIndicator.description||e.$t("trading-assistant.form.noDescription"))+" ")])]):e._e(),e.indicatorParams.length>0?a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.indicatorParams")}},[a("div",{staticClass:"indicator-params-form"},[a("a-row",{attrs:{gutter:16}},e._l(e.indicatorParams,function(t){return a("a-col",{key:t.name,attrs:{xs:24,sm:12,md:8}},[a("div",{staticClass:"param-item"},[a("label",{staticClass:"param-label"},[e._v(" "+e._s(t.name)+" "),t.description?a("a-tooltip",{attrs:{title:t.description}},[a("a-icon",{staticStyle:{"margin-left":"4px",color:"#999"},attrs:{type:"question-circle"}})],1):e._e()],1),"int"===t.type?a("a-input-number",{staticStyle:{width:"100%"},attrs:{precision:0,size:"small"},model:{value:e.indicatorParamValues[t.name],callback:function(a){e.$set(e.indicatorParamValues,t.name,a)},expression:"indicatorParamValues[param.name]"}}):"float"===t.type?a("a-input-number",{staticStyle:{width:"100%"},attrs:{precision:4,size:"small"},model:{value:e.indicatorParamValues[t.name],callback:function(a){e.$set(e.indicatorParamValues,t.name,a)},expression:"indicatorParamValues[param.name]"}}):"bool"===t.type?a("a-switch",{attrs:{size:"small"},model:{value:e.indicatorParamValues[t.name],callback:function(a){e.$set(e.indicatorParamValues,t.name,a)},expression:"indicatorParamValues[param.name]"}}):a("a-input",{attrs:{size:"small"},model:{value:e.indicatorParamValues[t.name],callback:function(a){e.$set(e.indicatorParamValues,t.name,a)},expression:"indicatorParamValues[param.name]"}})],1)])}),1),a("div",{staticClass:"form-item-hint",staticStyle:{"margin-top":"8px"}},[e._v(" "+e._s(e.$t("trading-assistant.form.indicatorParamsHint"))+" ")])],1)]):e._e(),a("a-divider"),a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.strategyName")}},[a("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["strategy_name",{rules:[{required:!0,message:e.$t("trading-assistant.validation.strategyNameRequired")}]}],expression:"['strategy_name', { rules: [{ required: true, message: $t('trading-assistant.validation.strategyNameRequired') }] }]"}],attrs:{placeholder:e.$t("trading-assistant.placeholders.inputStrategyName")}})],1),e.isSimpleMode&&!e.editingStrategy?a("div",{staticClass:"simple-defaults-summary"},[a("a-alert",{staticStyle:{"margin-bottom":"12px"},attrs:{type:"info","show-icon":""},scopedSlots:e._u([{key:"message",fn:function(){return[a("span",[e._v(e._s(e.$t("trading-assistant.form.simpleDefaultsHint")))])]},proxy:!0},{key:"description",fn:function(){return[a("span",[e._v(" "+e._s(e.$t("trading-assistant.form.klinePeriod"))+": "),a("b",[e._v("15m")]),e._v(" · "+e._s(e.$t("trading-assistant.form.leverage"))+": "),a("b",[e._v("5x")]),e._v(" · "+e._s(e.$t("trading-assistant.form.marketType"))+": "),a("b",[e._v(e._s(e.$t("trading-assistant.form.marketTypeFutures")))]),e._v(" · "+e._s(e.$t("dashboard.indicator.backtest.field.stopLossPct"))+": "),a("b",[e._v("3%")]),e._v(" · "+e._s(e.$t("dashboard.indicator.backtest.field.takeProfitPct"))+": "),a("b",[e._v("6%")])])]},proxy:!0}],null,!1,39555864)}),a("a-button",{staticStyle:{padding:"0","margin-bottom":"12px"},attrs:{type:"link",size:"small"},on:{click:function(t){e.showAdvancedSettings=!e.showAdvancedSettings}}},[a("a-icon",{attrs:{type:e.showAdvancedSettings?"up":"down"}}),e._v(" "+e._s(e.showAdvancedSettings?e.$t("trading-assistant.form.hideAdvancedSettings"):e.$t("trading-assistant.form.showAdvancedSettings"))+" ")],1)],1):e._e(),a("div",{directives:[{name:"show",rawName:"v-show",value:e.isAdvancedMode||e.editingStrategy||e.showAdvancedSettings,expression:"isAdvancedMode || editingStrategy || showAdvancedSettings"}]},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.strategyType")}},[a("a-radio-group",{directives:[{name:"decorator",rawName:"v-decorator",value:["cs_strategy_type",{initialValue:"single"}],expression:"['cs_strategy_type', { initialValue: 'single' }]"}],on:{change:e.handleStrategyTypeChange}},[a("a-radio",{attrs:{value:"single"}},[e._v(e._s(e.$t("trading-assistant.form.strategyTypeSingle")))]),a("a-radio",{attrs:{value:"cross_sectional"}},[e._v(e._s(e.$t("trading-assistant.form.strategyTypeCrossSectional")))])],1),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.$t("trading-assistant.form.strategyTypeHint"))+" ")])],1)],1),"cross_sectional"===e.form.getFieldValue("cs_strategy_type")?[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.symbolList")}},[a("a-select",{attrs:{mode:"multiple",placeholder:e.$t("trading-assistant.placeholders.selectSymbols"),"show-search":"","filter-option":e.filterWatchlistOptionWithAdd,loading:e.loadingWatchlist,getPopupContainer:function(t){return t.parentNode},maxTagCount:5},on:{change:e.handleCrossSectionalSymbolChange},model:{value:e.crossSectionalSymbols,callback:function(t){e.crossSectionalSymbols=t},expression:"crossSectionalSymbols"}},[e._l(e.watchlist,function(t){return a("a-select-option",{key:"".concat(t.market,":").concat(t.symbol),attrs:{value:"".concat(t.market,":").concat(t.symbol)}},[a("div",{staticClass:"symbol-option"},[a("a-tag",{staticStyle:{"margin-right":"8px","margin-bottom":"0"},attrs:{color:e.getMarketColor(t.market)}},[e._v(" "+e._s(t.market)+" ")]),a("span",{staticClass:"symbol-name"},[e._v(e._s(t.symbol))]),t.name?a("span",{staticClass:"symbol-name-extra"},[e._v(e._s(t.name))]):e._e()],1)])}),a("a-select-option",{key:"__add_symbol_option__",staticClass:"add-symbol-option",attrs:{value:"__add_symbol_option__"}},[a("div",{staticStyle:{width:"100%","text-align":"center",padding:"4px 0",color:"#1890ff",cursor:"pointer"}},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"plus"}}),a("span",[e._v(e._s(e.$t("trading-assistant.form.addSymbol")))])],1)])],2),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.$t("trading-assistant.form.symbolListHint"))+" ")])],1),a("a-row",{attrs:{gutter:16}},[a("a-col",{attrs:{xs:24,sm:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.portfolioSize")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["portfolio_size",{initialValue:10,rules:[{required:!0,message:e.$t("trading-assistant.validation.portfolioSizeRequired")}]}],expression:"['portfolio_size', { initialValue: 10, rules: [{ required: true, message: $t('trading-assistant.validation.portfolioSizeRequired') }] }]"}],staticStyle:{width:"100%"},attrs:{min:1,max:100,step:1}}),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.$t("trading-assistant.form.portfolioSizeHint"))+" ")])],1)],1),a("a-col",{attrs:{xs:24,sm:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.longRatio")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["long_ratio",{initialValue:.5,rules:[{required:!0,message:e.$t("trading-assistant.validation.longRatioRequired")}]}],expression:"['long_ratio', { initialValue: 0.5, rules: [{ required: true, message: $t('trading-assistant.validation.longRatioRequired') }] }]"}],staticStyle:{width:"100%"},attrs:{min:0,max:1,step:.1,precision:2}}),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.$t("trading-assistant.form.longRatioHint"))+" ")])],1)],1)],1),a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.rebalanceFrequency")}},[a("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["rebalance_frequency",{initialValue:"daily"}],expression:"['rebalance_frequency', { initialValue: 'daily' }]"}],staticStyle:{width:"100%"}},[a("a-select-option",{attrs:{value:"daily"}},[e._v(e._s(e.$t("trading-assistant.form.rebalanceDaily")))]),a("a-select-option",{attrs:{value:"weekly"}},[e._v(e._s(e.$t("trading-assistant.form.rebalanceWeekly")))]),a("a-select-option",{attrs:{value:"monthly"}},[e._v(e._s(e.$t("trading-assistant.form.rebalanceMonthly")))])],1),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.$t("trading-assistant.form.rebalanceFrequencyHint"))+" ")])],1)]:e._e(),"cross_sectional"!==e.form.getFieldValue("cs_strategy_type")?a("a-form-item",{attrs:{label:e.isEditMode?e.$t("trading-assistant.form.symbol"):e.$t("trading-assistant.form.symbols")}},[e.isEditMode?a("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["symbol",{rules:[{required:!0,message:e.$t("trading-assistant.validation.symbolRequired")}]}],expression:"['symbol', { rules: [{ required: true, message: $t('trading-assistant.validation.symbolRequired') }] }]"}],attrs:{placeholder:e.$t("trading-assistant.placeholders.selectSymbol"),"show-search":"","filter-option":e.filterWatchlistOption,loading:e.loadingWatchlist,getPopupContainer:function(t){return t.parentNode}},on:{change:e.handleWatchlistSymbolChange}},[e._l(e.watchlist,function(t){return a("a-select-option",{key:"".concat(t.market,":").concat(t.symbol),attrs:{value:"".concat(t.market,":").concat(t.symbol)}},[a("div",{staticClass:"symbol-option"},[a("a-tag",{staticStyle:{"margin-right":"8px","margin-bottom":"0"},attrs:{color:e.getMarketColor(t.market)}},[e._v(" "+e._s(t.market)+" ")]),a("span",{staticClass:"symbol-name"},[e._v(e._s(t.symbol))]),t.name?a("span",{staticClass:"symbol-name-extra"},[e._v(e._s(t.name))]):e._e()],1)])}),a("a-select-option",{key:"__add_symbol_option__",staticClass:"add-symbol-option",attrs:{value:"__add_symbol_option__"}},[a("div",{staticStyle:{width:"100%","text-align":"center",padding:"4px 0",color:"#1890ff",cursor:"pointer"}},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"plus"}}),a("span",[e._v(e._s(e.$t("trading-assistant.form.addSymbol")))])],1)])],2):a("a-select",{attrs:{mode:"multiple",placeholder:e.$t("trading-assistant.placeholders.selectSymbols"),"show-search":"","filter-option":e.filterWatchlistOptionWithAdd,loading:e.loadingWatchlist,getPopupContainer:function(t){return t.parentNode},maxTagCount:3},on:{change:e.handleMultiSymbolChangeWithAdd},model:{value:e.selectedSymbols,callback:function(t){e.selectedSymbols=t},expression:"selectedSymbols"}},[e._l(e.watchlist,function(t){return a("a-select-option",{key:"".concat(t.market,":").concat(t.symbol),attrs:{value:"".concat(t.market,":").concat(t.symbol)}},[a("div",{staticClass:"symbol-option"},[a("a-tag",{staticStyle:{"margin-right":"8px","margin-bottom":"0"},attrs:{color:e.getMarketColor(t.market)}},[e._v(" "+e._s(t.market)+" ")]),a("span",{staticClass:"symbol-name"},[e._v(e._s(t.symbol))]),t.name?a("span",{staticClass:"symbol-name-extra"},[e._v(e._s(t.name))]):e._e()],1)])}),a("a-select-option",{key:"__add_symbol_option__",staticClass:"add-symbol-option",attrs:{value:"__add_symbol_option__"}},[a("div",{staticStyle:{width:"100%","text-align":"center",padding:"4px 0",color:"#1890ff",cursor:"pointer"}},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"plus"}}),a("span",[e._v(e._s(e.$t("trading-assistant.form.addSymbol")))])],1)])],2),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.isEditMode?e.$t("trading-assistant.form.symbolHintCrypto"):e.$t("trading-assistant.form.symbolsHint"))+" ")])],1):e._e(),a("div",{directives:[{name:"show",rawName:"v-show",value:e.isAdvancedMode||e.editingStrategy||e.showAdvancedSettings,expression:"isAdvancedMode || editingStrategy || showAdvancedSettings"}]},[a("a-row",{attrs:{gutter:16}},[a("a-col",{attrs:{xs:24,sm:24,md:12,lg:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.initialCapital")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["initial_capital",{rules:[{required:!0,message:e.$t("trading-assistant.validation.initialCapitalRequired")}],initialValue:1e3}],expression:"['initial_capital', { rules: [{ required: true, message: $t('trading-assistant.validation.initialCapitalRequired') }], initialValue: 1000 }]"}],staticStyle:{width:"100%"},attrs:{min:10,step:100,precision:2}})],1)],1),a("a-col",{attrs:{xs:24,sm:24,md:12,lg:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.marketType")}},[a("a-radio-group",{directives:[{name:"decorator",rawName:"v-decorator",value:["market_type",{initialValue:"swap"}],expression:"['market_type', { initialValue: 'swap' }]"}],on:{change:e.handleMarketTypeChange}},[a("a-radio",{attrs:{value:"swap"}},[e._v(e._s(e.$t("trading-assistant.form.marketTypeFutures")))]),a("a-radio",{attrs:{value:"spot"}},[e._v(e._s(e.$t("trading-assistant.form.marketTypeSpot")))])],1),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.$t("trading-assistant.form.marketTypeHint"))+" ")])],1)],1)],1),a("a-row",{attrs:{gutter:16}},[a("a-col",{attrs:{xs:24,sm:24,md:12,lg:12}},[a("a-form-item",{attrs:{label:"".concat(e.$t("trading-assistant.form.leverage")," (x)")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["leverage",{initialValue:5,rules:[{required:!0,message:e.$t("trading-assistant.validation.leverageRequired")}]}],expression:"['leverage', { initialValue: 5, rules: [{ required: true, message: $t('trading-assistant.validation.leverageRequired') }] }]"}],staticStyle:{width:"100%"},attrs:{min:1,max:"spot"===e.form.getFieldValue("market_type")?1:125,step:1,disabled:"spot"===e.form.getFieldValue("market_type")}}),a("div",{staticClass:"form-item-hint"},["spot"===e.form.getFieldValue("market_type")?a("span",[e._v(" "+e._s(e.$t("trading-assistant.form.spotLeverageFixed"))+" ")]):a("span",[e._v(" "+e._s(e.$t("trading-assistant.form.leverageHint"))+" ")])])],1)],1),a("a-col",{attrs:{xs:24,sm:24,md:12,lg:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.tradeDirection")}},[a("a-radio-group",{directives:[{name:"decorator",rawName:"v-decorator",value:["trade_direction",{initialValue:"long"}],expression:"['trade_direction', { initialValue: 'long' }]"}],attrs:{disabled:"spot"===e.form.getFieldValue("market_type")}},[a("a-radio",{attrs:{value:"long"}},[e._v(e._s(e.$t("trading-assistant.form.tradeDirectionLong")))]),a("a-radio",{attrs:{value:"short",disabled:"spot"===e.form.getFieldValue("market_type")}},[e._v(" "+e._s(e.$t("trading-assistant.form.tradeDirectionShort"))+" ")]),a("a-radio",{attrs:{value:"both",disabled:"spot"===e.form.getFieldValue("market_type")}},[e._v(" "+e._s(e.$t("trading-assistant.form.tradeDirectionBoth"))+" ")])],1),"spot"===e.form.getFieldValue("market_type")?a("div",{staticClass:"form-item-hint",staticStyle:{color:"#ff9800"}},[e._v(" "+e._s(e.$t("trading-assistant.form.spotOnlyLongHint"))+" ")]):e._e()],1)],1)],1),a("a-row",{attrs:{gutter:16}},[a("a-col",{attrs:{xs:24,sm:24,md:12,lg:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.klinePeriod")}},[a("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["timeframe",{initialValue:"15m",rules:[{required:!0}]}],expression:"['timeframe', { initialValue: '15m', rules: [{ required: true }] }]"}],attrs:{placeholder:e.$t("trading-assistant.placeholders.selectKlinePeriod"),getPopupContainer:function(t){return t.parentNode}}},[a("a-select-option",{attrs:{value:"1m"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe1m")))]),a("a-select-option",{attrs:{value:"5m"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe5m")))]),a("a-select-option",{attrs:{value:"15m"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe15m")))]),a("a-select-option",{attrs:{value:"30m"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe30m")))]),a("a-select-option",{attrs:{value:"1H"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe1H")))]),a("a-select-option",{attrs:{value:"4H"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe4H")))]),a("a-select-option",{attrs:{value:"1D"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe1D")))])],1)],1)],1),a("a-col",{attrs:{xs:24,sm:24,md:12,lg:12}})],1)],1)],2)],1):e._e()]),a("div",{directives:[{name:"show",rawName:"v-show",value:1===e.currentStep||e.isSimpleMode&&0===e.currentStep&&e.showAdvancedSettings,expression:"currentStep === 1 || (isSimpleMode && currentStep === 0 && showAdvancedSettings)"}],staticClass:"step-content"},["indicator"===e.strategyType?a("div",[a("a-form",{attrs:{form:e.form,layout:"vertical"}},[a("a-collapse",{staticStyle:{background:"#fafafa"},attrs:{bordered:!1},model:{value:e.backtestCollapseKeys,callback:function(t){e.backtestCollapseKeys=t},expression:"backtestCollapseKeys"}},[a("a-collapse-panel",{key:"risk",attrs:{header:e.$t("dashboard.indicator.backtest.panel.risk")}},[a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.stopLossPct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["stop_loss_pct",{initialValue:3}],expression:"['stop_loss_pct', { initialValue: 3 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:100,step:.01,precision:4}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.takeProfitPct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["take_profit_pct",{initialValue:6}],expression:"['take_profit_pct', { initialValue: 6 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:1e3,step:.01,precision:4}})],1)],1)],1),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trailingEnabled")}},[a("a-switch",{directives:[{name:"decorator",rawName:"v-decorator",value:["trailing_enabled",{valuePropName:"checked",initialValue:!1}],expression:"['trailing_enabled', { valuePropName: 'checked', initialValue: false }]"}],on:{change:e.onTrailingToggle}})],1)],1),a("a-col",{attrs:{span:12}})],1),e.trailingEnabledUi?[a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trailingStopPct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["trailing_stop_pct",{initialValue:0}],expression:"['trailing_stop_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:100,step:.01,precision:4}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trailingActivationPct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["trailing_activation_pct",{initialValue:0}],expression:"['trailing_activation_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:1e3,step:.01,precision:4}})],1)],1)],1)]:e._e()],2),a("a-collapse-panel",{key:"scale",attrs:{header:e.$t("dashboard.indicator.backtest.panel.scale")}},[a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trendAddEnabled")}},[a("a-switch",{directives:[{name:"decorator",rawName:"v-decorator",value:["trend_add_enabled",{valuePropName:"checked",initialValue:!1}],expression:"['trend_add_enabled', { valuePropName: 'checked', initialValue: false }]"}],on:{change:e.onTrendAddToggle}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.dcaAddEnabled")}},[a("a-switch",{directives:[{name:"decorator",rawName:"v-decorator",value:["dca_add_enabled",{valuePropName:"checked",initialValue:!1}],expression:"['dca_add_enabled', { valuePropName: 'checked', initialValue: false }]"}],on:{change:e.onDcaAddToggle}})],1)],1)],1),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trendAddStepPct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["trend_add_step_pct",{initialValue:0}],expression:"['trend_add_step_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:1e3,step:.01,precision:4},on:{change:e.onScaleParamsChange}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.dcaAddStepPct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["dca_add_step_pct",{initialValue:0}],expression:"['dca_add_step_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:1e3,step:.01,precision:4},on:{change:e.onScaleParamsChange}})],1)],1)],1),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trendAddSizePct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["trend_add_size_pct",{initialValue:0}],expression:"['trend_add_size_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:100,step:.1,precision:4},on:{change:e.onScaleParamsChange}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.dcaAddSizePct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["dca_add_size_pct",{initialValue:0}],expression:"['dca_add_size_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:100,step:.1,precision:4},on:{change:e.onScaleParamsChange}})],1)],1)],1),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trendAddMaxTimes")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["trend_add_max_times",{initialValue:0}],expression:"['trend_add_max_times', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:50,step:1,precision:0},on:{change:e.onScaleParamsChange}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.dcaAddMaxTimes")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["dca_add_max_times",{initialValue:0}],expression:"['dca_add_max_times', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:50,step:1,precision:0},on:{change:e.onScaleParamsChange}})],1)],1)],1)],1),a("a-collapse-panel",{key:"reduce",attrs:{header:e.$t("dashboard.indicator.backtest.panel.reduce")}},[a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trendReduceEnabled")}},[a("a-switch",{directives:[{name:"decorator",rawName:"v-decorator",value:["trend_reduce_enabled",{valuePropName:"checked",initialValue:!1}],expression:"['trend_reduce_enabled', { valuePropName: 'checked', initialValue: false }]"}]})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.adverseReduceEnabled")}},[a("a-switch",{directives:[{name:"decorator",rawName:"v-decorator",value:["adverse_reduce_enabled",{valuePropName:"checked",initialValue:!1}],expression:"['adverse_reduce_enabled', { valuePropName: 'checked', initialValue: false }]"}]})],1)],1)],1),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trendReduceStepPct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["trend_reduce_step_pct",{initialValue:0}],expression:"['trend_reduce_step_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:1e3,step:.01,precision:4}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.adverseReduceStepPct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["adverse_reduce_step_pct",{initialValue:0}],expression:"['adverse_reduce_step_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:1e3,step:.01,precision:4}})],1)],1)],1),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trendReduceSizePct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["trend_reduce_size_pct",{initialValue:0}],expression:"['trend_reduce_size_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:100,step:.1,precision:4}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.adverseReduceSizePct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["adverse_reduce_size_pct",{initialValue:0}],expression:"['adverse_reduce_size_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:100,step:.1,precision:4}})],1)],1)],1),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trendReduceMaxTimes")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["trend_reduce_max_times",{initialValue:0}],expression:"['trend_reduce_max_times', { initialValue: 0 }]"}],staticStyle:{width:"100%"},attrs:{min:0,max:50,step:1,precision:0}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.adverseReduceMaxTimes")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["adverse_reduce_max_times",{initialValue:0}],expression:"['adverse_reduce_max_times', { initialValue: 0 }]"}],staticStyle:{width:"100%"},attrs:{min:0,max:50,step:1,precision:0}})],1)],1)],1)],1),a("a-collapse-panel",{key:"position",attrs:{header:e.$t("dashboard.indicator.backtest.panel.position")}},[a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.entryPct"),help:e.$t("dashboard.indicator.backtest.hint.entryPctMax",{maxPct:Number(e.entryPctMaxUi||0).toFixed(0)})}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["entry_pct",{initialValue:100}],expression:"['entry_pct', { initialValue: 100 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:e.entryPctMaxUi,step:.1,precision:4},on:{change:e.onEntryPctChange}})],1)],1),a("a-col",{attrs:{span:12}})],1)],1)],1),a("div",{staticClass:"ai-filter-box"},[a("div",{staticClass:"ai-filter-header"},[a("div",{staticClass:"ai-filter-title"},[a("a-icon",{attrs:{type:"robot"}}),a("span",[e._v(e._s(e.$t("trading-assistant.form.enableAiFilter")))])],1),a("a-switch",{attrs:{checked:e.aiFilterEnabledUi},on:{change:e.onAiFilterToggle}})],1),a("div",{staticClass:"ai-filter-hint"},[e._v(e._s(e.$t("trading-assistant.form.enableAiFilterHint")))])])],1)],1):e._e()]),a("div",{directives:[{name:"show",rawName:"v-show",value:2===e.currentStep,expression:"currentStep === 2"}],staticClass:"step-content"},[a("a-form",{attrs:{form:e.form,layout:"vertical",autocomplete:"off"}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.executionMode")}},[a("a-radio-group",{directives:[{name:"decorator",rawName:"v-decorator",value:["execution_mode",{initialValue:"signal"}],expression:"['execution_mode', { initialValue: 'signal' }]"}],attrs:{disabled:!e.canUseLiveTrading},on:{change:e.onExecutionModeChange}},[a("a-radio",{attrs:{value:"signal"}},[e._v(e._s(e.$t("trading-assistant.form.executionModeSignal")))]),a("a-radio",{attrs:{value:"live",disabled:!e.canUseLiveTrading}},[e._v(e._s(e.$t("trading-assistant.form.executionModeLive")))])],1),e.canUseLiveTrading?e._e():a("div",{staticClass:"form-item-hint",staticStyle:{color:"#ff9800"}},[e._v(" "+e._s(e.$t("trading-assistant.form.liveTradingNotSupportedHint"))+" ")])],1),"live"===e.executionModeUi&&e.canUseLiveTrading?a("a-form-item",{staticClass:"live-disclaimer-item"},[a("a-alert",{staticStyle:{"margin-bottom":"8px"},attrs:{type:"warning",showIcon:"",message:e.$t("trading-assistant.liveDisclaimer.title"),description:e.$t("trading-assistant.liveDisclaimer.content")}}),a("a-checkbox",{directives:[{name:"decorator",rawName:"v-decorator",value:["live_disclaimer_ack",{valuePropName:"checked",initialValue:!1}],expression:"['live_disclaimer_ack', { valuePropName: 'checked', initialValue: false }]"}],on:{change:e.onLiveDisclaimerAckChange}},[e._v(" "+e._s(e.$t("trading-assistant.liveDisclaimer.agree"))+" ")])],1):e._e(),a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.notifyChannels")}},[a("a-checkbox-group",{directives:[{name:"decorator",rawName:"v-decorator",value:["notify_channels",{initialValue:["browser"]}],expression:"['notify_channels', { initialValue: ['browser'] }]"}],on:{change:e.onNotifyChannelsChange}},[a("a-checkbox",{attrs:{value:"browser"}},[e._v(e._s(e.$t("trading-assistant.notify.browser")))]),a("a-checkbox",{attrs:{value:"email"}},[e._v(e._s(e.$t("trading-assistant.notify.email")))]),a("a-checkbox",{attrs:{value:"telegram"}},[e._v(e._s(e.$t("trading-assistant.notify.telegram")))]),a("a-checkbox",{attrs:{value:"discord"}},[e._v(e._s(e.$t("trading-assistant.notify.discord")))]),a("a-checkbox",{attrs:{value:"webhook"}},[e._v(e._s(e.$t("trading-assistant.notify.webhook")))]),a("a-checkbox",{attrs:{value:"phone"}},[e._v(e._s(e.$t("trading-assistant.notify.phone")))])],1),a("div",{staticClass:"form-item-hint"},[e._v(e._s(e.$t("trading-assistant.form.notifyChannelsHint")))])],1),e.unconfiguredChannels.length>0?a("a-alert",{staticStyle:{"margin-bottom":"16px"},attrs:{type:"warning",showIcon:""},scopedSlots:e._u([{key:"message",fn:function(){return[a("span",[e._v(" "+e._s(e.$t("trading-assistant.form.notificationConfigMissing",{channels:e.unconfiguredChannels.join(", ")}))+" "),a("router-link",{staticStyle:{"margin-left":"8px"},attrs:{to:"/profile"}},[a("a-icon",{attrs:{type:"setting"}}),e._v(" "+e._s(e.$t("trading-assistant.form.goToProfile"))+" ")],1)],1)]},proxy:!0}],null,!1,2930252607)}):e.notifyChannelsUi.length>0&&!e.notifyChannelsUi.includes("browser")||e.notifyChannelsUi.length>1?a("a-alert",{staticStyle:{"margin-bottom":"16px"},attrs:{type:"info",showIcon:""},scopedSlots:e._u([{key:"message",fn:function(){return[a("span",[e._v(" "+e._s(e.$t("trading-assistant.form.notificationFromProfile"))+" "),a("router-link",{staticStyle:{"margin-left":"8px"},attrs:{to:"/profile"}},[a("a-icon",{attrs:{type:"setting"}}),e._v(" "+e._s(e.$t("trading-assistant.form.goToProfile"))+" ")],1)],1)]},proxy:!0}])}):e._e(),"live"===e.executionModeUi&&e.canUseLiveTrading?a("a-divider"):e._e(),"live"===e.executionModeUi&&e.canUseLiveTrading&&!e.liveDisclaimerAckUi?a("a-alert",{staticStyle:{"margin-bottom":"12px"},attrs:{type:"warning",showIcon:"",message:e.$t("trading-assistant.liveDisclaimer.blockTitle"),description:e.$t("trading-assistant.liveDisclaimer.blockDesc")}}):e._e(),"live"===e.executionModeUi&&e.canUseLiveTrading&&e.liveDisclaimerAckUi?a("div",[a("a-alert",{staticStyle:{"margin-bottom":"12px"},attrs:{type:"info","show-icon":"",message:e.$t("trading-assistant.form.liveTradingConfigTitle"),description:e.$t("trading-assistant.form.liveTradingConfigHint")}}),a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.savedCredential")}},[a("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["credential_id",{rules:[{required:!0,message:e.$t("profile.exchange.noCredentialHint")}],getValueFromEvent:function(t){return t||void 0}}],expression:"['credential_id', {\n rules: [{ required: true, message: $t('profile.exchange.noCredentialHint') }],\n getValueFromEvent: (val) => val || undefined\n }]"}],attrs:{placeholder:e.$t("trading-assistant.placeholders.selectSavedCredential"),"allow-clear":"","show-search":"","option-filter-prop":"children",loading:e.loadingExchangeCredentials},on:{change:e.handleCredentialSelectChange}},e._l(e.filteredExchangeCredentials,function(t){return a("a-select-option",{key:t.id,attrs:{value:t.id}},[e._v(" "+e._s(e.formatCredentialLabel(t))+" ")])}),1),a("div",{staticClass:"form-item-hint",staticStyle:{"margin-top":"6px"}},[a("router-link",{attrs:{to:"/profile?tab=exchange"}},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"setting"}}),e._v(e._s(e.$t("profile.exchange.goToManage"))+" ")],1)],1)],1)],1):e._e()],1)],1)])],1),a("template",{slot:"footer"},[a("a-button",{on:{click:e.handleCloseModal}},[e._v(e._s(e.$t("trading-assistant.form.cancel")))]),a("a-button",{directives:[{name:"show",rawName:"v-show",value:e.currentStep>0,expression:"currentStep > 0"}],on:{click:e.handlePrev}},[e._v(" "+e._s(e.$t("trading-assistant.form.prev"))+" ")]),a("a-button",{directives:[{name:"show",rawName:"v-show",value:e.currentStep<2,expression:"currentStep < 2"}],attrs:{type:"primary",loading:e.saving},on:{click:e.handleNext}},[e._v(" "+e._s(e.$t("trading-assistant.form.next"))+" ")]),a("a-button",{directives:[{name:"show",rawName:"v-show",value:2===e.currentStep,expression:"currentStep === 2"}],attrs:{type:"primary",loading:e.saving},on:{click:e.handleSubmit}},[e._v(" "+e._s(e.editingStrategy?e.$t("trading-assistant.form.confirmEdit"):e.$t("trading-assistant.form.confirmCreate"))+" ")])],1)],2),a("a-modal",{attrs:{title:e.$t("trading-assistant.form.addSymbolTitle"),visible:e.showAddSymbolModal,confirmLoading:e.addingSymbol,width:"600px",okText:e.$t("trading-assistant.form.confirmAdd"),cancelText:e.$t("trading-assistant.form.cancel"),maskClosable:!1,keyboard:!1},on:{ok:e.handleConfirmAddSymbol,cancel:e.handleCloseAddSymbolModal}},[a("div",{staticClass:"add-symbol-modal-content"},[a("a-tabs",{staticClass:"market-tabs",on:{change:e.handleAddSymbolMarketChange},model:{value:e.addSymbolMarket,callback:function(t){e.addSymbolMarket=t},expression:"addSymbolMarket"}},e._l(e.addSymbolMarketTypes,function(t){return a("a-tab-pane",{key:t.value,attrs:{tab:e.$t(t.i18nKey||"dashboard.analysis.market.".concat(t.value))}})}),1),a("div",{staticClass:"symbol-search-section"},[a("a-input-search",{attrs:{placeholder:e.$t("dashboard.analysis.modal.addStock.searchOrInputPlaceholder"),loading:e.searchingSymbol,size:"large","allow-clear":""},on:{search:e.handleSearchSymbol,change:e.handleSymbolSearchInputChange},model:{value:e.addSymbolKeyword,callback:function(t){e.addSymbolKeyword=t},expression:"addSymbolKeyword"}},[a("a-button",{attrs:{slot:"enterButton",type:"primary",icon:"search"},slot:"enterButton"},[e._v(" "+e._s(e.$t("dashboard.analysis.modal.addStock.search"))+" ")])],1)],1),e.symbolSearchResults.length>0?a("div",{staticClass:"search-results-section"},[a("div",{staticClass:"section-title"},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"search"}}),e._v(" "+e._s(e.$t("dashboard.analysis.modal.addStock.searchResults"))+" ")],1),a("a-list",{staticClass:"symbol-list",attrs:{"data-source":e.symbolSearchResults,loading:e.searchingSymbol,size:"small"},scopedSlots:e._u([{key:"renderItem",fn:function(t){return a("a-list-item",{staticClass:"symbol-list-item",on:{click:function(a){return e.handleSelectAddSymbol(t)}}},[a("a-list-item-meta",[a("template",{slot:"title"},[a("div",{staticClass:"symbol-item-content"},[a("span",{staticClass:"symbol-code"},[e._v(e._s(t.symbol))]),a("span",{staticClass:"symbol-name"},[e._v(e._s(t.name))]),t.exchange?a("a-tag",{staticStyle:{"margin-left":"8px"},attrs:{size:"small",color:"blue"}},[e._v(" "+e._s(t.exchange)+" ")]):e._e()],1)])],2)],1)}}],null,!1,2801225082)})],1):e._e(),a("div",{staticClass:"hot-symbols-section"},[a("div",{staticClass:"section-title"},[a("a-icon",{staticStyle:{color:"#ff4d4f","margin-right":"4px"},attrs:{type:"fire"}}),e._v(" "+e._s(e.$t("dashboard.analysis.modal.addStock.hotSymbols"))+" ")],1),a("a-spin",{attrs:{spinning:e.loadingHotSymbols}},[e.hotSymbols.length>0?a("a-list",{staticClass:"symbol-list",attrs:{"data-source":e.hotSymbols,size:"small"},scopedSlots:e._u([{key:"renderItem",fn:function(t){return a("a-list-item",{staticClass:"symbol-list-item",on:{click:function(a){return e.handleSelectAddSymbol(t)}}},[a("a-list-item-meta",[a("template",{slot:"title"},[a("div",{staticClass:"symbol-item-content"},[a("span",{staticClass:"symbol-code"},[e._v(e._s(t.symbol))]),a("span",{staticClass:"symbol-name"},[e._v(e._s(t.name))]),t.exchange?a("a-tag",{staticStyle:{"margin-left":"8px"},attrs:{size:"small",color:"orange"}},[e._v(" "+e._s(t.exchange)+" ")]):e._e()],1)])],2)],1)}}],null,!1,3959834868)}):a("a-empty",{attrs:{description:e.$t("dashboard.analysis.modal.addStock.noHotSymbols"),image:!1}})],1)],1),e.selectedAddSymbol?a("div",{staticClass:"selected-symbol-section"},[a("div",{staticClass:"section-title"},[a("a-icon",{staticStyle:{color:"#52c41a","margin-right":"4px"},attrs:{type:"check-circle"}}),e._v(" "+e._s(e.$t("dashboard.analysis.modal.addStock.selectedSymbol"))+" ")],1),a("div",{staticClass:"selected-symbol-info"},[a("a-tag",{staticStyle:{"margin-right":"8px"},attrs:{color:e.getMarketColor(e.addSymbolMarket)}},[e._v(e._s(e.addSymbolMarket))]),a("span",{staticClass:"symbol-code"},[e._v(e._s(e.selectedAddSymbol.symbol))]),e.selectedAddSymbol.name?a("span",{staticClass:"symbol-name"},[e._v(e._s(e.selectedAddSymbol.name))]):e._e()],1)]):e._e()],1)])],1)},s=[],r=a(15863),n=a(44735),o=a(81127),l=a(56252),d=a(2403),c=a(57532),u=a(76338),m=(a(2008),a(50113),a(23418),a(62062),a(34782),a(26910),a(79432),a(26099),a(16034),a(31415),a(47764),a(42762),a(23500),a(62953),a(36911)),g=a(35038),p=a(42430),h=a(84841),_=a(55434),y=a(75769),f=function(){var t=this,e=t._self._c;return e("div",{staticClass:"trading-records"},[0!==t.records.length||t.loading?e("a-table",{attrs:{columns:t.columns,"data-source":t.records,loading:t.loading,pagination:{pageSize:10},size:"small",rowKey:"id",scroll:{x:800}},scopedSlots:t._u([{key:"type",fn:function(a){return[e("a-tag",{attrs:{color:t.getTradeTypeColor(a)}},[t._v(" "+t._s(t.getTradeTypeText(a))+" ")])]}},{key:"price",fn:function(e){return[t._v(" $"+t._s(parseFloat(e).toFixed(4))+" ")]}},{key:"amount",fn:function(e){return[t._v(" "+t._s(parseFloat(e).toFixed(4))+" ")]}},{key:"value",fn:function(e){return[t._v(" $"+t._s(parseFloat(e).toFixed(2))+" ")]}},{key:"profit",fn:function(a,i){return[e("span",{style:{color:a>0?"#52c41a":a<0?"#f5222d":"#666"}},[t._v(" "+t._s(t.formatProfit(a,i))+" ")])]}},{key:"commission",fn:function(e){return[t._v(" "+t._s(t.formatCommission(e))+" ")]}},{key:"time",fn:function(e,a){return[t._v(" "+t._s(t.formatTime(a.created_at||e))+" ")]}}])}):e("div",{staticClass:"empty-state"},[e("a-empty",{attrs:{description:t.$t("trading-assistant.table.noPositions")}})],1)],1)},v=[],b=(a(27495),{name:"TradingRecords",props:{strategyId:{type:Number,required:!0},loading:{type:Boolean,default:!1}},computed:{columns:function(){return[{title:this.$t("trading-assistant.table.time"),dataIndex:"created_at",key:"created_at",width:180,scopedSlots:{customRender:"time"}},{title:this.$t("dashboard.indicator.backtest.tradeType"),dataIndex:"type",key:"type",width:140,scopedSlots:{customRender:"type"}},{title:this.$t("trading-assistant.table.price"),dataIndex:"price",key:"price",width:120,scopedSlots:{customRender:"price"}},{title:this.$t("trading-assistant.table.amount"),dataIndex:"amount",key:"amount",width:120,scopedSlots:{customRender:"amount"}},{title:this.$t("trading-assistant.table.value"),dataIndex:"value",key:"value",width:120,scopedSlots:{customRender:"value"}},{title:this.$t("dashboard.indicator.backtest.profit"),dataIndex:"profit",key:"profit",width:120,scopedSlots:{customRender:"profit"}},{title:this.$t("trading-assistant.table.commission"),dataIndex:"commission",key:"commission",width:100,scopedSlots:{customRender:"commission"}}]}},data:function(){return{records:[]}},watch:{strategyId:{handler:function(t){t&&this.loadRecords()},immediate:!0}},methods:{loadRecords:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.strategyId){e.n=1;break}return e.a(2);case 1:return e.p=1,e.n=2,(0,m.tq)(t.strategyId);case 2:a=e.v,1===a.code?t.records=(a.data.trades||[]).map(function(t){return(0,u.A)((0,u.A)({},t),{},{time:t.created_at||t.time})}):t.$message.error(a.msg||t.$t("trading-assistant.messages.loadTradesFailed")),e.n=4;break;case 3:e.p=3,e.v;case 4:return e.a(2)}},e,null,[[1,3]])}))()},formatTime:function(t){if(!t)return"--";try{var e;if("number"===typeof t){var a=t<1e12?1e3*t:t;e=new Date(a)}else{if("string"!==typeof t)return"--";if(/^\d+$/.test(t)){var i=parseInt(t,10),s=i<1e12?1e3*i:i;e=new Date(s)}else e=new Date(t)}if(isNaN(e.getTime()))return"--";var r=this.$i18n.locale||"zh-CN",n={"zh-CN":"zh-CN","zh-TW":"zh-TW","en-US":"en-US"};return e.toLocaleString(n[r]||"zh-CN",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1})}catch(o){return"--"}},getTradeTypeColor:function(t){var e={buy:"green",sell:"red",liquidation:"orange",open_long:"green",add_long:"cyan",close_long:"orange",close_long_stop:"red",close_long_profit:"lime",open_short:"red",add_short:"magenta",close_short:"blue",close_short_stop:"red",close_short_profit:"cyan"};return e[t]||"default"},getTradeTypeText:function(t){var e={buy:this.$t("dashboard.indicator.backtest.buy"),sell:this.$t("dashboard.indicator.backtest.sell"),liquidation:this.$t("dashboard.indicator.backtest.liquidation"),open_long:this.$t("dashboard.indicator.backtest.openLong"),add_long:this.$t("dashboard.indicator.backtest.addLong"),close_long:this.$t("dashboard.indicator.backtest.closeLong"),close_long_stop:this.$t("dashboard.indicator.backtest.closeLongStop"),close_long_profit:this.$t("dashboard.indicator.backtest.closeLongProfit"),open_short:this.$t("dashboard.indicator.backtest.openShort"),add_short:this.$t("dashboard.indicator.backtest.addShort"),close_short:this.$t("dashboard.indicator.backtest.closeShort"),close_short_stop:this.$t("dashboard.indicator.backtest.closeShortStop"),close_short_profit:this.$t("dashboard.indicator.backtest.closeShortProfit")};return e[t]||t},formatMoney:function(t){if(null===t||void 0===t)return"--";var e=t>=0?"+":"-";return"".concat(e,"$").concat(Math.abs(t).toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2}))},formatProfit:function(t,e){if(null===t||void 0===t)return"--";var a=parseFloat(t),i=["open_long","open_short","add_long","add_short"];return 0===a&&e&&i.includes(e.type)?"--":Math.abs(a)<1e-6?e&&i.includes(e.type)?"--":"$0.00":this.formatMoney(a)},formatCommission:function(t){if(null===t||void 0===t)return"--";var e=parseFloat(t);return isNaN(e)||Math.abs(e)<1e-6?"--":"$".concat(e.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:6}))}}}),S=b,k=a(845),x=(0,k.A)(S,f,v,!1,null,"a5bdef7e",null),C=x.exports,w=function(){var t=this,e=t._self._c;return e("div",{staticClass:"position-records"},[0!==t.positions.length||t.loading?e("a-table",{attrs:{columns:t.columns,"data-source":t.positions,loading:t.loading,pagination:!1,size:"small",rowKey:"id",scroll:{x:800}},scopedSlots:t._u([{key:"symbol",fn:function(a,i){return[e("strong",[t._v(t._s(i.symbol||a))])]}},{key:"side",fn:function(a,i){return[e("a-tag",{attrs:{color:"long"===(i.side||a)?"green":"red"}},[t._v(" "+t._s("long"===(i.side||a)?t.$t("trading-assistant.table.long"):t.$t("trading-assistant.table.short"))+" ")])]}},{key:"entryPrice",fn:function(a,i){return[t.hasValidPrice(i.entry_price||a)?e("span",[t._v(" $"+t._s(parseFloat(i.entry_price||a).toFixed(4))+" ")]):e("span",[t._v("--")])]}},{key:"currentPrice",fn:function(e,a){return[t._v(" $"+t._s(parseFloat(a.current_price||e||0).toFixed(4))+" ")]}},{key:"size",fn:function(e,a){return[t._v(" "+t._s(parseFloat(a.size||e||0).toFixed(4))+" ")]}},{key:"unrealizedPnl",fn:function(a,i){return[e("span",{class:{profit:parseFloat(i.unrealized_pnl||a||0)>0,loss:parseFloat(i.unrealized_pnl||a||0)<0}},[t._v(" $"+t._s(parseFloat(i.unrealized_pnl||a||0).toFixed(2))+" ")])]}},{key:"pnlPercent",fn:function(a,i){return[e("span",{class:{profit:parseFloat(i.pnl_percent||a||0)>0,loss:parseFloat(i.pnl_percent||a||0)<0}},[t._v(" "+t._s(parseFloat(i.pnl_percent||a||0).toFixed(2))+"% ")])]}}])}):e("div",{staticClass:"empty-state"},[e("a-empty",{attrs:{description:t.$t("trading-assistant.table.noPositions")}})],1)],1)},$=[],A=(a(25428),a(38781),{name:"PositionRecords",props:{strategyId:{type:Number,required:!0},marketType:{type:String,default:"swap"},leverage:{type:[Number,String],default:1},loading:{type:Boolean,default:!1}},data:function(){return{positions:[]}},computed:{columns:function(){return[{title:this.$t("trading-assistant.table.symbol"),dataIndex:"symbol",key:"symbol",width:120,scopedSlots:{customRender:"symbol"}},{title:this.$t("trading-assistant.table.side"),dataIndex:"side",key:"side",width:80,scopedSlots:{customRender:"side"}},{title:this.$t("trading-assistant.table.size"),dataIndex:"size",key:"size",width:120,scopedSlots:{customRender:"size"}},{title:this.$t("trading-assistant.table.entryPrice"),dataIndex:"entry_price",key:"entry_price",width:120,scopedSlots:{customRender:"entryPrice"}},{title:this.$t("trading-assistant.table.currentPrice"),dataIndex:"current_price",key:"current_price",width:120,scopedSlots:{customRender:"currentPrice"}},{title:this.$t("trading-assistant.table.unrealizedPnl"),dataIndex:"unrealized_pnl",key:"unrealized_pnl",width:120,scopedSlots:{customRender:"unrealizedPnl"}},{title:this.$t("trading-assistant.table.pnlPercent"),dataIndex:"pnl_percent",key:"pnl_percent",width:100,scopedSlots:{customRender:"pnlPercent"}}]}},watch:{strategyId:{handler:function(t){t?(this.loadPositions(),this.startPolling()):this.stopPolling()},immediate:!0}},beforeDestroy:function(){this.stopPolling()},methods:{loadPositions:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a,i;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.strategyId){e.n=1;break}return e.a(2);case 1:return e.p=1,e.n=2,(0,m.oK)(t.strategyId);case 2:a=e.v,1===a.code?(i=a.data.positions||[],t.positions=i.map(function(e,a){var i=String(t.marketType||"swap").toLowerCase(),s=parseFloat(t.leverage);(!isFinite(s)||s<=0)&&(s=1),"spot"===i&&(s=1);var r=parseFloat(e.entry_price||e.entryPrice||0),n=parseFloat(e.size||"0")||0,o=parseFloat(e.unrealized_pnl||e.unrealizedPnl||"0")||0,l=parseFloat(e.pnl_percent||e.pnlPercent||"0")||0;r>0&&n>0?l=o/(r*n)*100*s:"spot"!==i&&(l*=s);var d={id:e.id||a,symbol:e.symbol||"",side:e.side||"long",size:n>0?n.toString():"0",entry_price:r>0?r.toString():"0",current_price:e.current_price||e.currentPrice||"0",unrealized_pnl:e.unrealized_pnl||e.unrealizedPnl||"0",pnl_percent:l,updated_at:e.updated_at||e.updatedAt||""};return d})):t.positions=[],e.n=4;break;case 3:e.p=3,e.v,t.positions=[];case 4:return e.a(2)}},e,null,[[1,3]])}))()},hasValidPrice:function(t){var e=parseFloat(t);return Number.isFinite(e)&&e>0},startPolling:function(){var t=this;this.stopPolling(),this.pollingTimer=setInterval(function(){t.loadPositions()},5e3)},stopPolling:function(){this.pollingTimer&&(clearInterval(this.pollingTimer),this.pollingTimer=null)}}}),P=A,M=(0,k.A)(P,w,$,!1,null,"2abcf4f1",null),F=M.exports,T=["BTC/USDT","ETH/USDT","BNB/USDT","SOL/USDT","ADA/USDT","XRP/USDT","DOGE/USDT","DOT/USDT","MATIC/USDT","AVAX/USDT","LINK/USDT","UNI/USDT","LTC/USDT","ATOM/USDT","ETC/USDT"],V=[{value:"binance",labelKey:"binance"},{value:"okx",labelKey:"okx"},{value:"bitget",labelKey:"bitget"},{value:"bybit",labelKey:"bybit"},{value:"coinbaseexchange",labelKey:"coinbaseexchange"},{value:"kraken",labelKey:"kraken"},{value:"kucoin",labelKey:"kucoin"},{value:"gate",labelKey:"gate"},{value:"bitfinex",labelKey:"bitfinex"},{value:"deepcoin",labelKey:"deepcoin"}],I=[{value:"ibkr",labelKey:"ibkr",name:"Interactive Brokers"}],N=[{value:"mt5",labelKey:"mt5",name:"MetaTrader 5"}],U={name:"TradingAssistant",mixins:[_.t],components:{TradingRecords:C,PositionRecords:F},computed:{isAdvancedMode:function(){return"advanced"===this.creationMode},isSimpleMode:function(){return"simple"===this.creationMode},displayCurrentStep:function(){return this.isSimpleMode&&!this.editingStrategy?0===this.currentStep?0:1:this.currentStep},isDarkTheme:function(){return"dark"===this.navTheme||"realdark"===this.navTheme},needsPassphrase:function(){return["okx","okex","coinbaseexchange","kucoin","bitget","deepcoin"].includes(this.currentExchangeId)},isIBKRMarket:function(){return"USStock"===this.selectedMarketCategory},isMT5Market:function(){return"Forex"===this.selectedMarketCategory},isBrokerMarket:function(){return this.isIBKRMarket||this.isMT5Market},filteredExchangeCredentials:function(){var t=this;return this.exchangeCredentials&&Array.isArray(this.exchangeCredentials)?this.exchangeCredentials.filter(function(e){return t.isCredentialCompatible(e)}):[]},formattedExchangeOptions:function(){var t=this;return V.map(function(e){var a="";try{if(e.labelKey){var i="trading-assistant.exchangeNames.".concat(e.labelKey),s=t.$t(i);s!==i&&(a=s)}}catch(r){}return a||(a=e.value.charAt(0).toUpperCase()+e.value.slice(1)),(0,u.A)((0,u.A)({},e),{},{displayName:a})})},totalPnl:function(){return null!==this.currentEquity&&this.selectedStrategy&&this.selectedStrategy.initial_capital?this.currentEquity-(this.selectedStrategy.initial_capital||0):null},totalPnlPercent:function(){return null!==this.totalPnl&&this.selectedStrategy&&this.selectedStrategy.initial_capital?0===this.selectedStrategy.initial_capital?0:this.totalPnl/this.selectedStrategy.initial_capital*100:null},getEquityColorClass:function(){return null===this.totalPnl?"":this.totalPnl>=0?"text-success":"text-danger"},getPnlColorClass:function(){return null===this.totalPnl?"":this.totalPnl>=0?"text-success":"text-danger"},isCryptoMarket:function(){var t=this.selectedMarketCategory||"Crypto";return"crypto"===String(t).toLowerCase()},canUseLiveTrading:function(){var t=this.selectedMarketCategory||"Crypto";return"crypto"===String(t).toLowerCase()||("USStock"===t||"Forex"===t)},isLiveTradingAvailable:function(){var t=this.selectedMarketCategory||"Crypto",e=this.currentExchangeId||"";return"crypto"===String(t).toLowerCase()?["binance","okx","bitget","bybit","coinbaseexchange","kraken","kucoin","gate","bitfinex"].includes(e):"USStock"===t?"ibkr"===this.currentBrokerId:"Forex"===t&&"mt5"===this.currentBrokerId},showDemoTradingSwitch:function(){return this.currentExchangeId&&"binance"===this.currentExchangeId.toLowerCase()},brokerOptions:function(){var t=this;return I.map(function(e){var a="";try{var i="trading-assistant.brokerNames.".concat(e.labelKey),s=t.$t(i);s!==i&&(a=s)}catch(r){}return a||(a=e.name||e.value.toUpperCase()),(0,u.A)((0,u.A)({},e),{},{displayName:a})})},forexBrokerOptions:function(){var t=this;return N.map(function(e){var a="";try{var i="trading-assistant.brokerNames.".concat(e.labelKey),s=t.$t(i);s!==i&&(a=s)}catch(r){}return a||(a=e.name||e.value.toUpperCase()),(0,u.A)((0,u.A)({},e),{},{displayName:a})})},cryptoExchangeOptions:function(){var t=this;return V.map(function(e){var a="";try{if(e.labelKey){var i="trading-assistant.exchangeNames.".concat(e.labelKey),s=t.$t(i);s!==i&&(a=s)}}catch(r){}return a||(a=e.value.charAt(0).toUpperCase()+e.value.slice(1)),(0,u.A)((0,u.A)({},e),{},{displayName:a})})},groupedStrategies:function(){return"symbol"===this.groupByMode?this.groupedBySymbol:this.groupedByStrategy},groupedByStrategy:function(){var t,e={},a=[],i=(0,c.A)(this.strategies);try{for(i.s();!(t=i.n()).done;){var s=t.value,r=s.strategy_group_id;r&&r.trim()?(e[r]||(e[r]={id:r,baseName:s.group_base_name||s.strategy_name.split("-")[0],strategies:[],runningCount:0,stoppedCount:0}),e[r].strategies.push(s),"running"===s.status?e[r].runningCount++:e[r].stoppedCount++):a.push(s)}}catch(o){i.e(o)}finally{i.f()}var n=Object.values(e).sort(function(t,e){var a=Math.max.apply(Math,(0,d.A)(t.strategies.map(function(t){return t.created_at||0}))),i=Math.max.apply(Math,(0,d.A)(e.strategies.map(function(t){return t.created_at||0})));return i-a});return{groups:n,ungrouped:a}},groupedBySymbol:function(){var t,e={},a=[],i=(0,c.A)(this.strategies);try{for(i.s();!(t=i.n()).done;){var s=t.value,r=s.trading_config||{},n=r.symbol;if(n&&n.trim()){e[n]||(e[n]={id:"symbol_".concat(n),baseName:n,strategies:[],runningCount:0,stoppedCount:0});var o=(0,u.A)((0,u.A)({},s),{},{displayInfo:{strategyName:s.strategy_name||s.group_base_name||"Unnamed",timeframe:r.timeframe||"-",indicatorName:s.indicator_name||s.indicator_config&&s.indicator_config.name||"-"}});e[n].strategies.push(o),"running"===s.status?e[n].runningCount++:e[n].stoppedCount++}else a.push(s)}}catch(d){i.e(d)}finally{i.f()}var l=Object.values(e).sort(function(t,e){return t.baseName.localeCompare(e.baseName)});return{groups:l,ungrouped:a}},unconfiguredChannels:function(){var t=[];return this.notifyChannelsUi.includes("telegram")&&(this.userNotificationSettings.telegram_bot_token||this.userNotificationSettings.telegram_chat_id||t.push("Telegram")),this.notifyChannelsUi.includes("email")&&(this.userNotificationSettings.email||t.push("Email")),this.notifyChannelsUi.includes("discord")&&(this.userNotificationSettings.discord_webhook||t.push("Discord")),this.notifyChannelsUi.includes("webhook")&&(this.userNotificationSettings.webhook_url||t.push("Webhook")),t}},data:function(){return{loading:!1,loadingRecords:!1,strategies:[],selectedStrategy:null,showFormModal:!1,creationMode:"simple",showAdvancedSettings:!1,strategyType:"indicator",selectedMarketCategory:"Crypto",currentStep:0,saving:!1,loadingIndicators:!1,availableIndicators:[],selectedIndicator:null,indicatorParams:[],indicatorParamValues:{},cryptoSymbols:T,loadingWatchlist:!1,watchlist:[],exchangeOptions:V,currentExchangeId:"",currentBrokerId:"ibkr",connectionTestResult:null,indicatorsLoaded:!1,editingStrategy:null,currentEquity:null,equityPollingTimer:null,backtestCollapseKeys:["risk"],trailingEnabledUi:!1,entryPctMaxUi:100,aiFilterEnabledUi:!1,isEditMode:!1,supportedIPs:[],executionModeUi:"signal",liveDisclaimerAckUi:!1,notifyChannelsUi:["browser"],userNotificationSettings:{default_channels:["browser"],telegram_bot_token:"",telegram_chat_id:"",email:"",phone:"",discord_webhook:"",webhook_url:"",webhook_token:""},loadingExchangeCredentials:!1,exchangeCredentials:[],saveCredentialUi:!1,suppressApiClearOnce:!1,selectedSymbols:[],crossSectionalSymbols:[],collapsedGroups:{},groupByMode:"strategy",showAddSymbolModal:!1,addSymbolMarket:"Crypto",addSymbolMarketTypes:[{value:"Crypto",i18nKey:"dashboard.analysis.market.Crypto"},{value:"USStock",i18nKey:"dashboard.analysis.market.USStock"},{value:"Forex",i18nKey:"dashboard.analysis.market.Forex"},{value:"Futures",i18nKey:"dashboard.analysis.market.Futures"}],addSymbolKeyword:"",searchingSymbol:!1,symbolSearchResults:[],selectedAddSymbol:null,hasSearchedSymbol:!1,addingSymbol:!1,hotSymbols:[],loadingHotSymbols:!1,searchTimer:null}},beforeCreate:function(){this.form=this.$form.createForm(this)},mounted:function(){this.loadStrategies(),this.loadUserNotificationSettings()},beforeDestroy:function(){this.stopEquityPolling()},methods:{loadUserNotificationSettings:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.p=0,e.n=1,(0,h.vF)();case 1:a=e.v,1===a.code&&a.data&&(t.userNotificationSettings={default_channels:a.data.default_channels||["browser"],telegram_bot_token:a.data.telegram_bot_token||"",telegram_chat_id:a.data.telegram_chat_id||"",email:a.data.email||"",phone:a.data.phone||"",discord_webhook:a.data.discord_webhook||"",webhook_url:a.data.webhook_url||"",webhook_token:a.data.webhook_token||""}),e.n=3;break;case 2:e.p=2,e.v;case 3:return e.a(2)}},e,null,[[0,2]])}))()},loadWatchlist:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return t.loadingWatchlist=!0,e.p=1,e.n=2,(0,g.Qo)({userid:1});case 2:a=e.v,a&&1===a.code?t.watchlist=Array.isArray(a.data)?a.data:[]:t.watchlist=[],e.n=4;break;case 3:e.p=3,e.v,t.watchlist=[];case 4:return e.p=4,t.loadingWatchlist=!1,e.f(4);case 5:return e.a(2)}},e,null,[[1,3,4,5]])}))()},handleCloseAddSymbolModal:function(){this.showAddSymbolModal=!1,this.addSymbolKeyword="",this.symbolSearchResults=[],this.selectedAddSymbol=null,this.hasSearchedSymbol=!1},handleAddSymbolMarketChange:function(t){this.addSymbolMarket=t,this.addSymbolKeyword="",this.symbolSearchResults=[],this.selectedAddSymbol=null,this.hasSearchedSymbol=!1,this.loadHotSymbols(t)},handleSymbolSearchInputChange:function(t){var e=this,a=t.target.value;if(this.addSymbolKeyword=a,this.searchTimer&&clearTimeout(this.searchTimer),!a||""===a.trim())return this.symbolSearchResults=[],this.hasSearchedSymbol=!1,void(this.selectedAddSymbol=null);this.searchTimer=setTimeout(function(){e.searchSymbolsInModal(a)},500)},handleSearchSymbol:function(t){var e=this;return(0,l.A)((0,o.A)().m(function a(){return(0,o.A)().w(function(a){while(1)switch(a.n){case 0:if(t&&t.trim()){a.n=1;break}return a.a(2);case 1:if(e.addSymbolMarket){a.n=2;break}return e.$message.warning(e.$t("dashboard.analysis.modal.addStock.pleaseSelectMarket")),a.a(2);case 2:if(!(e.symbolSearchResults.length>0)){a.n=3;break}return a.a(2);case 3:e.hasSearchedSymbol&&0===e.symbolSearchResults.length?e.handleDirectAdd():e.searchSymbolsInModal(t);case 4:return a.a(2)}},a)}))()},searchSymbolsInModal:function(t){var e=this;return(0,l.A)((0,o.A)().m(function a(){var i;return(0,o.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(t&&""!==t.trim()){a.n=1;break}return e.symbolSearchResults=[],e.hasSearchedSymbol=!1,a.a(2);case 1:if(e.addSymbolMarket){a.n=2;break}return a.a(2);case 2:return e.searchingSymbol=!0,e.hasSearchedSymbol=!0,a.p=3,a.n=4,(0,g._3)({market:e.addSymbolMarket,keyword:t.trim()});case 4:i=a.v,i&&1===i.code&&Array.isArray(i.data)?e.symbolSearchResults=i.data:e.symbolSearchResults=[],a.n=6;break;case 5:a.p=5,a.v,e.symbolSearchResults=[];case 6:return a.p=6,e.searchingSymbol=!1,a.f(6);case 7:return a.a(2)}},a,null,[[3,5,6,7]])}))()},handleDirectAdd:function(){this.addSymbolKeyword&&this.addSymbolKeyword.trim()?this.addSymbolMarket?this.selectedAddSymbol={market:this.addSymbolMarket,symbol:this.addSymbolKeyword.trim().toUpperCase(),name:""}:this.$message.warning(this.$t("dashboard.analysis.modal.addStock.pleaseSelectMarket")):this.$message.warning(this.$t("dashboard.analysis.modal.addStock.pleaseEnterSymbol"))},handleSelectAddSymbol:function(t){this.selectedAddSymbol={market:this.addSymbolMarket,symbol:t.symbol,name:t.name||""}},loadHotSymbols:function(t){var e=this;return(0,l.A)((0,o.A)().m(function a(){var i;return(0,o.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(t||(t=e.addSymbolMarket||"Crypto"),t){a.n=1;break}return a.a(2);case 1:return e.loadingHotSymbols=!0,a.p=2,a.n=3,(0,g.z6)({market:t,limit:10});case 3:i=a.v,i&&1===i.code&&i.data?e.hotSymbols=i.data:e.hotSymbols=[],a.n=5;break;case 4:a.p=4,a.v,e.hotSymbols=[];case 5:return a.p=5,e.loadingHotSymbols=!1,a.f(5);case 6:return a.a(2)}},a,null,[[2,4,5,6]])}))()},handleConfirmAddSymbol:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a,i,s,r,n,l,c;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(a="",i="",!t.selectedAddSymbol){e.n=1;break}a=t.selectedAddSymbol.market,i=t.selectedAddSymbol.symbol.toUpperCase(),e.n=4;break;case 1:if(!t.addSymbolKeyword||!t.addSymbolKeyword.trim()){e.n=3;break}if(t.addSymbolMarket){e.n=2;break}return t.$message.warning(t.$t("dashboard.analysis.modal.addStock.pleaseSelectMarket")),e.a(2);case 2:a=t.addSymbolMarket,i=t.addSymbolKeyword.trim().toUpperCase(),e.n=4;break;case 3:return t.$message.warning(t.$t("dashboard.analysis.modal.addStock.pleaseSelectOrEnterSymbol")),e.a(2);case 4:return t.addingSymbol=!0,e.p=5,e.n=6,(0,g.dp)({userid:1,market:a,symbol:i});case 6:if(s=e.v,!s||1!==s.code){e.n=8;break}return t.$message.success(t.$t("dashboard.analysis.message.addStockSuccess")),e.n=7,t.loadWatchlist();case 7:r="".concat(a,":").concat(i),t.isEditMode?(t.form.setFieldsValue({symbol:r}),t.handleWatchlistSymbolChange(r)):(t.selectedSymbols.includes(r)||(t.selectedSymbols=[].concat((0,d.A)(t.selectedSymbols),[r])),t.handleMultiSymbolChange(t.selectedSymbols)),t.handleCloseAddSymbolModal(),e.n=9;break;case 8:t.$message.error((null===s||void 0===s?void 0:s.msg)||t.$t("dashboard.analysis.message.addStockFailed"));case 9:e.n=11;break;case 10:e.p=10,c=e.v,l=(null===c||void 0===c||null===(n=c.response)||void 0===n||null===(n=n.data)||void 0===n?void 0:n.msg)||(null===c||void 0===c?void 0:c.message)||t.$t("dashboard.analysis.message.addStockFailed"),t.$message.error(l);case 11:return e.p=11,t.addingSymbol=!1,e.f(11);case 12:return e.a(2)}},e,null,[[5,10,11,12]])}))()},filterWatchlistOption:function(t,e){var a,i=(null===(a=e.componentOptions)||void 0===a||null===(a=a.propsData)||void 0===a?void 0:a.value)||"";return"__add_symbol_option__"===i||String(i).toLowerCase().includes(String(t||"").toLowerCase())},filterWatchlistOptionWithAdd:function(t,e){var a,i=(null===(a=e.componentOptions)||void 0===a||null===(a=a.propsData)||void 0===a?void 0:a.value)||"";return"__add_symbol_option__"===i||String(i).toLowerCase().includes(String(t||"").toLowerCase())},handleMultiSymbolChangeWithAdd:function(t){if(t&&t.includes("__add_symbol_option__"))return this.selectedSymbols=t.filter(function(t){return"__add_symbol_option__"!==t}),this.showAddSymbolModal=!0,void this.loadHotSymbols(this.addSymbolMarket);this.handleMultiSymbolChange(t)},handleStrategyTypeChange:function(t){var e=t.target.value;"single"===e&&(this.crossSectionalSymbols=[])},handleCrossSectionalSymbolChange:function(t){if(t&&t.includes("__add_symbol_option__"))return this.crossSectionalSymbols=t.filter(function(t){return"__add_symbol_option__"!==t}),this.showAddSymbolModal=!0,void this.loadHotSymbols(this.addSymbolMarket);if(this.crossSectionalSymbols=t||[],t&&t.length>0){var e=t[0];if("string"===typeof e&&e.includes(":")){var a=e.indexOf(":"),i=e.slice(0,a);this.selectedMarketCategory=i||"Crypto"}}},getMarketColor:function(t){var e={USStock:"green",Crypto:"purple",Forex:"gold",Futures:"cyan"};return e[t]||"default"},handleWatchlistSymbolChange:function(t){var e=this;if("__add_symbol_option__"===t)return this.$nextTick(function(){e.form.setFieldsValue({symbol:void 0})}),this.showAddSymbolModal=!0,void this.loadHotSymbols(this.addSymbolMarket);if(t&&"string"===typeof t&&t.includes(":")){var a=t.indexOf(":"),i=t.slice(0,a);if(this.selectedMarketCategory=i||"Crypto","Forex"===this.selectedMarketCategory){this.currentBrokerId="mt5";try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({forex_broker_id:"mt5"})}catch(r){}}else if("USStock"===this.selectedMarketCategory){this.currentBrokerId="ibkr";try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({broker_id:"ibkr"})}catch(r){}}var s=["Crypto","USStock","Forex"].includes(this.selectedMarketCategory);if(!s){this.executionModeUi="signal";try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({execution_mode:"signal"})}catch(r){}}this.currentExchangeId="";try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({exchange_id:void 0})}catch(r){}}},handleMultiSymbolChange:function(t){if(this.selectedSymbols=t||[],t&&t.length>0){var e=t[0];if("string"===typeof e&&e.includes(":")){var a=e.indexOf(":"),i=e.slice(0,a);this.selectedMarketCategory=i||"Crypto"}}if("Forex"===this.selectedMarketCategory){this.currentBrokerId="mt5";try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({forex_broker_id:"mt5"})}catch(r){}}else if("USStock"===this.selectedMarketCategory){this.currentBrokerId="ibkr";try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({broker_id:"ibkr"})}catch(r){}}var s=["Crypto","USStock","Forex"].includes(this.selectedMarketCategory);if(!s){this.executionModeUi="signal";try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({execution_mode:"signal"})}catch(r){}}this.currentExchangeId="";try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({exchange_id:void 0})}catch(r){}},loadExchangeCredentials:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return t.loadingExchangeCredentials=!0,e.p=1,e.n=2,(0,p.IA)({user_id:1});case 2:a=e.v,a&&1===a.code?t.exchangeCredentials=a.data&&a.data.items||[]:(t.exchangeCredentials=[],t.$message.warning((null===a||void 0===a?void 0:a.msg)||t.$t("trading-assistant.messages.loadFailed"))),e.n=4;break;case 3:e.p=3,e.v,t.exchangeCredentials=[],t.$message.warning(t.$t("trading-assistant.exchange.testFailed"));case 4:return e.p=4,t.loadingExchangeCredentials=!1,e.f(4);case 5:return e.a(2)}},e,null,[[1,3,4,5]])}))()},formatCredentialLabel:function(t){if(!t)return"";var e=(t.name||"").trim(),a=t.exchange_id||"",i=t.api_key_hint||"";return e?"".concat(a.toUpperCase()," - ").concat(e," (").concat(i,")"):"".concat(a.toUpperCase()," (").concat(i,")")},isCredentialCompatible:function(t){if(!t||!t.exchange_id)return!0;var e=(t.exchange_id||"").toLowerCase(),a=this.selectedMarketCategory||"Crypto";if("mt5"===e)return"Forex"===a;if("ibkr"===e)return"USStock"===a;var i=["binance","okx","bitget","bybit","coinbaseexchange","kraken","kucoin","gate","bitfinex","deepcoin"];return!i.includes(e)||"Crypto"===a},handleCredentialSelectChange:function(t){var e=this;return(0,l.A)((0,o.A)().m(function a(){var i,s,r;return(0,o.A)().w(function(a){while(1)switch(a.n){case 0:if(t){a.n=1;break}return e.currentExchangeId="",e.connectionTestResult=null,a.a(2);case 1:if(i=e.exchangeCredentials.find(function(e){return String(e.id)===String(t)}),!i){a.n=5;break}if(s=(i.exchange_id||"").toLowerCase(),"mt5"!==s||"Forex"===e.selectedMarketCategory){a.n=2;break}e.$message.error(e.$t("trading-assistant.validation.mt5OnlyForForex"));try{e.form&&e.form.setFieldsValue&&e.form.setFieldsValue({credential_id:void 0})}catch(n){}return e.currentExchangeId="",e.connectionTestResult=null,a.a(2);case 2:if("ibkr"!==s||"USStock"===e.selectedMarketCategory){a.n=3;break}e.$message.error(e.$t("trading-assistant.validation.ibkrOnlyForUSStock"));try{e.form&&e.form.setFieldsValue&&e.form.setFieldsValue({credential_id:void 0})}catch(n){}return e.currentExchangeId="",e.connectionTestResult=null,a.a(2);case 3:if(r=["binance","okx","bitget","bybit","coinbaseexchange","kraken","kucoin","gate","bitfinex"],!r.includes(s)||"Crypto"===e.selectedMarketCategory){a.n=4;break}e.$message.error(e.$t("trading-assistant.validation.cryptoExchangeOnlyForCrypto"));try{e.form&&e.form.setFieldsValue&&e.form.setFieldsValue({credential_id:void 0})}catch(n){}return e.currentExchangeId="",e.connectionTestResult=null,a.a(2);case 4:e.currentExchangeId=i.exchange_id||"";case 5:e.connectionTestResult=null;case 6:return a.a(2)}},a)}))()},onSaveCredentialChange:function(t){var e=!!(t&&t.target&&t.target.checked);this.saveCredentialUi=e;try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({save_credential:e})}catch(a){}},onExecutionModeChange:function(t){var e=t&&t.target?t.target.value:t;this.executionModeUi=e||"signal",this.liveDisclaimerAckUi=!1;try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({live_disclaimer_ack:!1})}catch(a){}if(!this.canUseLiveTrading&&"signal"!==this.executionModeUi){this.executionModeUi="signal";try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({execution_mode:"signal"})}catch(a){}}},onLiveDisclaimerAckChange:function(t){var e=!!(t&&t.target&&t.target.checked);this.liveDisclaimerAckUi=e;try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({live_disclaimer_ack:e})}catch(a){}},onNotifyChannelsChange:function(t){this.notifyChannelsUi=Array.isArray(t)?t:[]},formatCurrency:function(t){return null===t||void 0===t?"-":"$"+t.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})},formatPnl:function(t){if(null===t||void 0===t)return"-";var e=t>=0?"+":"";return e+"$"+Math.abs(t).toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})},formatPnlPercent:function(t){if(null===t||void 0===t)return"-";var e=t>=0?"+":"";return e+Math.abs(t).toFixed(2)+"%"},loadStrategies:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a,i,s;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return t.loading=!0,e.p=1,e.n=2,(0,m.EM)();case 2:a=e.v,1===a.code?(i=a.data.strategies||[],t.strategies=i,t.selectedStrategy&&(s=t.strategies.find(function(e){return e.id===t.selectedStrategy.id}),t.selectedStrategy=s||null)):t.$message.error(a.msg||t.$t("trading-assistant.messages.loadFailed")),e.n=4;break;case 3:e.p=3,e.v,t.$message.error(t.$t("trading-assistant.messages.loadFailed"));case 4:return e.p=4,t.loading=!1,e.f(4);case 5:return e.a(2)}},e,null,[[1,3,4,5]])}))()},handleCreateStrategy:function(){var t=this;this.isEditMode=!1,this.editingStrategy=null,this.strategyType="indicator",this.currentStep=0,this.currentExchangeId="",this.currentBrokerId="ibkr",this.selectedIndicator=null,this.connectionTestResult=null,this.executionModeUi="signal",this.notifyChannelsUi=["browser"],this.saveCredentialUi=!1,this.backtestCollapseKeys=["risk"],this.trailingEnabledUi=!1,this.entryPctMaxUi=100,this.aiFilterEnabledUi=!1,this.selectedMarketCategory="Crypto",this.selectedSymbols=[],this.showAdvancedSettings=!1,this.form.resetFields(),this.form.setFieldsValue({execution_mode:"signal",notify_channels:["browser"],save_credential:!1,live_disclaimer_ack:!1}),this.liveDisclaimerAckUi=!1,this.showFormModal=!0,this.$nextTick(function(){t.loadWatchlist(),t.loadIndicators(),t.loadExchangeCredentials()})},handleEditStrategy:function(t){var e=this;"running"!==t.status?(this.strategyType="indicator",this.isEditMode=!0,this.editingStrategy=t,this.currentStep=0,this.currentExchangeId="",this.selectedIndicator=null,this.connectionTestResult=null,this.form.resetFields(),this.backtestCollapseKeys=["risk"],this.trailingEnabledUi=!1,this.entryPctMaxUi=100,this.aiFilterEnabledUi=!1,this.showFormModal=!0,this.$nextTick((0,l.A)((0,o.A)().m(function a(){return(0,o.A)().w(function(a){while(1)switch(a.n){case 0:return e.loadWatchlist(),e.loadIndicators(),e.loadExchangeCredentials(),a.n=1,e.loadStrategyDataToForm(t);case 1:return a.a(2)}},a)})))):this.$message.warning(this.$t("trading-assistant.messages.runningWarning"))},loadStrategyDataToForm:function(t){var e=this;return(0,l.A)((0,o.A)().m(function a(){var i,s,r,l,d,c,u,m,g,p,h,_,y,f,v,b,S,k,x,C,w,$,A,P,M,F,T,V,I,N,U,E,z,D,R,K,q,L,B,O,H,W;return(0,o.A)().w(function(a){while(1)switch(a.n){case 0:if(e.indicatorsLoaded){a.n=1;break}return a.n=1,e.loadIndicators();case 1:return a.n=2,e.$nextTick();case 2:return e.selectedMarketCategory=t.market_category||"Crypto",c=t.execution_mode||"signal",e.executionModeUi=c,e.liveDisclaimerAckUi="live"===c,u=t.notification_config&&t.notification_config.channels||["browser"],e.notifyChannelsUi=Array.isArray(u)?u:["browser"],m=!1,g=!1,t.trading_config&&(f=t.trading_config||{},v=f.trailing&&"object"===(0,n.A)(f.trailing)?f.trailing:null,m=void 0!==f.trailing_enabled?!!f.trailing_enabled:!(!v||!v.enabled),b=f.enable_ai_filter,g=!0===b||"true"===b||1===b||"1"===b,S=f.scale&&"object"===(0,n.A)(f.scale)?f.scale:null,k=f.position&&"object"===(0,n.A)(f.position)?f.position:null,x=new Set(["risk"]),(f.trend_add_enabled||f.dca_add_enabled||S&&(null!==(p=S.trendAdd)&&void 0!==p&&p.enabled||null!==(h=S.dcaAdd)&&void 0!==h&&h.enabled))&&x.add("scale"),(f.trend_reduce_enabled||f.adverse_reduce_enabled||S&&(null!==(_=S.trendReduce)&&void 0!==_&&_.enabled||null!==(y=S.adverseReduce)&&void 0!==y&&y.enabled))&&x.add("reduce"),(void 0!==f.entry_pct||k&&void 0!==k.entryPct)&&x.add("position"),e.backtestCollapseKeys=Array.from(x)),e.trailingEnabledUi=m,e.aiFilterEnabledUi=g,a.n=3,e.$nextTick();case 3:return e.form.setFieldsValue({enable_ai_filter:g}),a.n=4,e.$nextTick();case 4:if(e.form.setFieldsValue({execution_mode:e.executionModeUi,live_disclaimer_ack:e.liveDisclaimerAckUi,notify_channels:e.notifyChannelsUi,notify_email:(null===(i=t.notification_config)||void 0===i||null===(i=i.targets)||void 0===i?void 0:i.email)||"",notify_phone:(null===(s=t.notification_config)||void 0===s||null===(s=s.targets)||void 0===s?void 0:s.phone)||"",notify_telegram:(null===(r=t.notification_config)||void 0===r||null===(r=r.targets)||void 0===r?void 0:r.telegram)||"",notify_discord:(null===(l=t.notification_config)||void 0===l||null===(l=l.targets)||void 0===l?void 0:l.discord)||"",notify_webhook:(null===(d=t.notification_config)||void 0===d||null===(d=d.targets)||void 0===d?void 0:d.webhook)||""}),!t.indicator_config||!t.indicator_config.indicator_id){a.n=7;break}if(C=t.indicator_config.indicator_id,w=e.availableIndicators.find(function(t){return String(t.id)===String(C)}),!w){a.n=6;break}return A=String(w.id),e.form.setFieldsValue({indicator_id:A}),a.n=5,e.handleIndicatorChange(A);case 5:P=null===($=t.trading_config)||void 0===$?void 0:$.indicator_params,P&&"object"===(0,n.A)(P)&&Object.keys(P).forEach(function(t){t in e.indicatorParamValues&&e.$set(e.indicatorParamValues,t,P[t])}),a.n=7;break;case 6:e.form.setFieldsValue({indicator_id:String(C)});case 7:if(!t.exchange_config){a.n=11;break}if(M=t.exchange_config.exchange_id||"",F="live"===e.executionModeUi,T=["Crypto","USStock","Forex"].includes(e.selectedMarketCategory),V="USStock"===e.selectedMarketCategory,I="Forex"===e.selectedMarketCategory,!F||!T){a.n=10;break}if(!V){a.n=8;break}e.currentBrokerId=M||"ibkr",e.form.setFieldsValue({broker_id:M||"ibkr",ibkr_host:t.exchange_config.ibkr_host||"127.0.0.1",ibkr_port:t.exchange_config.ibkr_port||7497,ibkr_client_id:t.exchange_config.ibkr_client_id||1,ibkr_account:t.exchange_config.ibkr_account||""}),a.n=10;break;case 8:if(!I){a.n=9;break}e.currentBrokerId=M||"mt5",e.form.setFieldsValue({forex_broker_id:M||"mt5",mt5_server:t.exchange_config.mt5_server||"",mt5_login:t.exchange_config.mt5_login||"",mt5_password:t.exchange_config.mt5_password||"",mt5_terminal_path:t.exchange_config.mt5_terminal_path||""}),a.n=10;break;case 9:if(e.currentExchangeId=M||t.exchange_config.exchange_id||"",N=t.exchange_config.credential_id,!N){a.n=10;break}return e.form.setFieldsValue({credential_id:N}),a.n=10,e.handleCredentialSelectChange(N);case 10:V||I?e.currentBrokerId=M||(I?"mt5":"ibkr"):e.currentExchangeId=M;case 11:if(t.trading_config){if(U=t.trading_config||{},E=U.trailing&&"object"===(0,n.A)(U.trailing)?U.trailing:null,z=U.scale&&"object"===(0,n.A)(U.scale)?U.scale:null,D=U.position&&"object"===(0,n.A)(U.position)?U.position:null,R=U.strategy_type||t.strategy_type||"single","cross_sectional"===R)if(e.form.setFieldsValue({cs_strategy_type:"cross_sectional",portfolio_size:U.portfolio_size||10,long_ratio:U.long_ratio||.5,rebalance_frequency:U.rebalance_frequency||"daily"}),U.symbol_list&&Array.isArray(U.symbol_list))e.crossSectionalSymbols=U.symbol_list;else if(t.symbol_list)try{K="string"===typeof t.symbol_list?JSON.parse(t.symbol_list):t.symbol_list,Array.isArray(K)&&(e.crossSectionalSymbols=K)}catch(o){e.crossSectionalSymbols=[]}else e.crossSectionalSymbols=[];else e.form.setFieldsValue({cs_strategy_type:"single"}),e.crossSectionalSymbols=[];q=z&&z.trendAdd?z.trendAdd:null,L=z&&z.dcaAdd?z.dcaAdd:null,B=z&&z.trendReduce?z.trendReduce:null,O=z&&z.adverseReduce?z.adverseReduce:null,H=U.symbol,W="string"===typeof H&&H.includes(":")?H:"".concat(e.selectedMarketCategory,":").concat(H),e.form.setFieldsValue({strategy_name:t.strategy_name,symbol:W,initial_capital:U.initial_capital,leverage:U.leverage,trade_direction:U.trade_direction||"long",timeframe:U.timeframe||"1H",market_type:"futures"===U.market_type?"swap":U.market_type||"swap",take_profit_pct:U.take_profit_pct||0,stop_loss_pct:U.stop_loss_pct||0,trailing_enabled:m,trailing_stop_pct:void 0!==U.trailing_stop_pct?U.trailing_stop_pct||0:E&&E.pct||0,trailing_activation_pct:void 0!==U.trailing_activation_pct?U.trailing_activation_pct||0:E&&E.activationPct||0,trend_add_enabled:void 0!==U.trend_add_enabled?!!U.trend_add_enabled:!(!q||!q.enabled),trend_add_step_pct:void 0!==U.trend_add_step_pct?U.trend_add_step_pct||0:q&&q.stepPct||0,trend_add_size_pct:void 0!==U.trend_add_size_pct?U.trend_add_size_pct||0:q&&q.sizePct||0,trend_add_max_times:void 0!==U.trend_add_max_times?U.trend_add_max_times||0:q&&q.maxTimes||0,dca_add_enabled:void 0!==U.dca_add_enabled?!!U.dca_add_enabled:!(!L||!L.enabled),dca_add_step_pct:void 0!==U.dca_add_step_pct?U.dca_add_step_pct||0:L&&L.stepPct||0,dca_add_size_pct:void 0!==U.dca_add_size_pct?U.dca_add_size_pct||0:L&&L.sizePct||0,dca_add_max_times:void 0!==U.dca_add_max_times?U.dca_add_max_times||0:L&&L.maxTimes||0,trend_reduce_enabled:void 0!==U.trend_reduce_enabled?!!U.trend_reduce_enabled:!(!B||!B.enabled),trend_reduce_step_pct:void 0!==U.trend_reduce_step_pct?U.trend_reduce_step_pct||0:B&&B.stepPct||0,trend_reduce_size_pct:void 0!==U.trend_reduce_size_pct?U.trend_reduce_size_pct||0:B&&B.sizePct||0,trend_reduce_max_times:void 0!==U.trend_reduce_max_times?U.trend_reduce_max_times||0:B&&B.maxTimes||0,adverse_reduce_enabled:void 0!==U.adverse_reduce_enabled?!!U.adverse_reduce_enabled:!(!O||!O.enabled),adverse_reduce_step_pct:void 0!==U.adverse_reduce_step_pct?U.adverse_reduce_step_pct||0:O&&O.stepPct||0,adverse_reduce_size_pct:void 0!==U.adverse_reduce_size_pct?U.adverse_reduce_size_pct||0:O&&O.sizePct||0,adverse_reduce_max_times:void 0!==U.adverse_reduce_max_times?U.adverse_reduce_max_times||0:O&&O.maxTimes||0,entry_pct:0===U.entry_pct||U.entry_pct?U.entry_pct:D&&D.entryPct?D.entryPct:100,enable_ai_filter:g}),e.$nextTick(function(){e.recalcEntryPctMaxUi(),e.normalizeEntryPct()})}case 12:return a.a(2)}},a)}))()},handleSelectStrategy:function(t){this.selectedStrategy=t,this.currentEquity=null,this.loadStrategyDetails(),this.startEquityPolling()},loadStrategyDetails:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a,i,s,n,l,d,u,g,p,h,_,y,f;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.selectedStrategy){e.n=1;break}return e.a(2,Promise.resolve());case 1:return e.p=1,e.n=2,Promise.all([(0,m.Yx)(t.selectedStrategy.id),(0,m.oK)(t.selectedStrategy.id)]);case 2:if(a=e.v,i=(0,r.A)(a,2),s=i[0],n=i[1],l=null,1===s.code&&s.data&&(Array.isArray(s.data)&&s.data.length>0?(d=s.data[s.data.length-1],l=d.equity):(g=(null===(u=t.selectedStrategy.trading_config)||void 0===u?void 0:u.initial_capital)||t.selectedStrategy.initial_capital,l=g||null)),p=0,1===n.code&&n.data){h=n.data.positions||n.data.items||[],_=(0,c.A)(h);try{for(_.s();!(y=_.n()).done;)f=y.value,p+=parseFloat(f.unrealized_pnl||f.unrealizedPnl||0)}catch(o){_.e(o)}finally{_.f()}}t.currentEquity=null!==l?l+p:null,e.n=4;break;case 3:e.p=3,e.v;case 4:return e.a(2)}},e,null,[[1,3]])}))()},startEquityPolling:function(){var t=this;this.stopEquityPolling(),this.selectedStrategy&&(this.loadStrategyDetails(),this.equityPollingTimer=setInterval(function(){t.loadStrategyDetails()},1e4))},stopEquityPolling:function(){this.equityPollingTimer&&(clearInterval(this.equityPollingTimer),this.equityPollingTimer=null)},handleCloseModal:function(){this.showFormModal=!1,this.editingStrategy=null,this.isEditMode=!1,this.strategyType="indicator",this.currentStep=0,this.currentExchangeId="",this.selectedIndicator=null,this.connectionTestResult=null,this.indicatorsLoaded=!1,this.availableIndicators=[],this.backtestCollapseKeys=["risk"],this.trailingEnabledUi=!1,this.entryPctMaxUi=100,this.aiFilterEnabledUi=!1,this.showAdvancedSettings=!1,this.executionModeUi="signal",this.liveDisclaimerAckUi=!1,this.form.resetFields()},handleRefresh:function(){this.loadStrategies(),this.showFormModal=!1},handleMenuClick:function(t,e){switch(t){case"start":this.handleStartStrategy(e.id);break;case"stop":this.handleStopStrategy(e.id);break;case"edit":this.handleEditStrategy(e);break;case"delete":this.handleDeleteStrategy(e);break}},toggleGroup:function(t){this.$set(this.collapsedGroups,t,!this.collapsedGroups[t])},handleGroupMenuClick:function(t,e){var a=this;return(0,l.A)((0,o.A)().m(function i(){var s,r;return(0,o.A)().w(function(i){while(1)switch(i.n){case 0:s=e.strategies.map(function(t){return t.id}),r=t,i.n="startAll"===r?1:"stopAll"===r?3:"deleteAll"===r?5:7;break;case 1:return i.n=2,a.handleBatchStartStrategies(s,e.baseName);case 2:return i.a(3,7);case 3:return i.n=4,a.handleBatchStopStrategies(s,e.baseName);case 4:return i.a(3,7);case 5:return i.n=6,a.handleBatchDeleteStrategies(s,e.baseName);case 6:return i.a(3,7);case 7:return i.a(2)}},i)}))()},handleBatchStartStrategies:function(t,e){var a=this;return(0,l.A)((0,o.A)().m(function e(){var i,s,r;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.p=0,e.n=1,(0,m.UH)({strategy_ids:t});case 1:i=e.v,1===i.code?(r=(null===(s=i.data)||void 0===s||null===(s=s.success_ids)||void 0===s?void 0:s.length)||t.length,a.$message.success(a.$t("trading-assistant.messages.batchStartSuccess",{count:r})),a.loadStrategies()):a.$message.error(i.msg||a.$t("trading-assistant.messages.batchStartFailed")),e.n=3;break;case 2:e.p=2,e.v,a.$message.error(a.$t("trading-assistant.messages.batchStartFailed"));case 3:return e.a(2)}},e,null,[[0,2]])}))()},handleBatchStopStrategies:function(t,e){var a=this;return(0,l.A)((0,o.A)().m(function e(){var i,s,r;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.p=0,e.n=1,(0,m.GF)({strategy_ids:t});case 1:i=e.v,1===i.code?(r=(null===(s=i.data)||void 0===s||null===(s=s.success_ids)||void 0===s?void 0:s.length)||t.length,a.$message.success(a.$t("trading-assistant.messages.batchStopSuccess",{count:r})),a.loadStrategies()):a.$message.error(i.msg||a.$t("trading-assistant.messages.batchStopFailed")),e.n=3;break;case 2:e.p=2,e.v,a.$message.error(a.$t("trading-assistant.messages.batchStopFailed"));case 3:return e.a(2)}},e,null,[[0,2]])}))()},handleBatchDeleteStrategies:function(t,e){var a=this;return(0,l.A)((0,o.A)().m(function i(){var s;return(0,o.A)().w(function(i){while(1)switch(i.n){case 0:s=a.$t("trading-assistant.messages.batchDeleteConfirm",{count:t.length,name:e}),a.$confirm({title:a.$t("trading-assistant.deleteAll"),content:s,okText:a.$t("trading-assistant.deleteAll"),okType:"danger",cancelText:a.$t("trading-assistant.form.cancel"),onOk:function(){var e=(0,l.A)((0,o.A)().m(function e(){var i,s,r;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.p=0,e.n=1,(0,m.xQ)({strategy_ids:t});case 1:i=e.v,1===i.code?(r=(null===(s=i.data)||void 0===s||null===(s=s.success_ids)||void 0===s?void 0:s.length)||t.length,a.$message.success(a.$t("trading-assistant.messages.batchDeleteSuccess",{count:r})),a.selectedStrategy&&t.includes(a.selectedStrategy.id)&&(a.selectedStrategy=null,a.stopEquityPolling()),a.loadStrategies()):a.$message.error(i.msg||a.$t("trading-assistant.messages.batchDeleteFailed")),e.n=3;break;case 2:e.p=2,e.v,a.$message.error(a.$t("trading-assistant.messages.batchDeleteFailed"));case 3:return e.a(2)}},e,null,[[0,2]])}));function i(){return e.apply(this,arguments)}return i}()});case 1:return i.a(2)}},i)}))()},handleStartStrategy:function(t){var e=this;return(0,l.A)((0,o.A)().m(function a(){var i;return(0,o.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return a.p=0,a.n=1,(0,m.mV)(t);case 1:i=a.v,1===i.code?(e.$message.success(e.$t("trading-assistant.messages.startSuccess")),e.loadStrategies(),e.selectedStrategy&&e.selectedStrategy.id===t&&(e.selectedStrategy.status="running")):e.$message.error(i.msg||e.$t("trading-assistant.messages.startFailed")),a.n=3;break;case 2:a.p=2,a.v,e.$message.error(e.$t("trading-assistant.messages.startFailed"));case 3:return a.a(2)}},a,null,[[0,2]])}))()},handleStopStrategy:function(t){var e=this;return(0,l.A)((0,o.A)().m(function a(){var i;return(0,o.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return a.p=0,a.n=1,(0,m.Ke)(t);case 1:i=a.v,1===i.code?(e.$message.success(e.$t("trading-assistant.messages.stopSuccess")),e.loadStrategies(),e.selectedStrategy&&e.selectedStrategy.id===t&&(e.selectedStrategy.status="stopped")):e.$message.error(i.msg||e.$t("trading-assistant.messages.stopFailed")),a.n=3;break;case 2:a.p=2,a.v,e.$message.error(e.$t("trading-assistant.messages.stopFailed"));case 3:return a.a(2)}},a,null,[[0,2]])}))()},handleDeleteStrategy:function(t){var e=this,a=this.$t("trading-assistant.messages.deleteConfirmWithName",{name:t.strategy_name});this.$confirm({title:this.$t("trading-assistant.deleteStrategy"),content:a,okText:this.$t("trading-assistant.deleteStrategy"),okType:"danger",cancelText:this.$t("trading-assistant.form.cancel"),onOk:function(){var a=(0,l.A)((0,o.A)().m(function a(){var i;return(0,o.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return a.p=0,a.n=1,(0,m.v_)(t.id);case 1:i=a.v,1===i.code?(e.$message.success(e.$t("trading-assistant.messages.deleteSuccess")),e.selectedStrategy&&e.selectedStrategy.id===t.id&&(e.selectedStrategy=null,e.stopEquityPolling()),e.loadStrategies()):e.$message.error(i.msg||e.$t("trading-assistant.messages.deleteFailed")),a.n=3;break;case 2:a.p=2,a.v,e.$message.error(e.$t("trading-assistant.messages.deleteFailed"));case 3:return a.a(2)}},a,null,[[0,2]])}));function i(){return a.apply(this,arguments)}return i}()})},getStatusColor:function(t){var e={running:"green",stopped:"default",error:"red"};return e[t]||"default"},getStatusText:function(t){return this.$t("trading-assistant.status.".concat(t))||t},getStrategyTypeText:function(t){return this.$t("trading-assistant.strategyType.".concat(t))||t},getTradeDirectionText:function(t){if(!t)return"";var e={long:this.$t("trading-assistant.form.tradeDirectionLong")||"做多",short:this.$t("trading-assistant.form.tradeDirectionShort")||"做空",both:this.$t("trading-assistant.form.tradeDirectionBoth")||"双向"};return e[t]||t},handleIndicatorSelectFocus:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){return(0,o.A)().w(function(e){while(1)switch(e.n){case 0:if(t.indicatorsLoaded||t.loadingIndicators){e.n=1;break}return e.n=1,t.loadIndicators();case 1:return e.a(2)}},e)}))()},loadIndicators:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a,i,s,r;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(!t.loadingIndicators){e.n=1;break}return e.a(2,new Promise(function(e){var a=setInterval(function(){t.loadingIndicators||(clearInterval(a),e())},100)}));case 1:if(!t.indicatorsLoaded){e.n=2;break}return e.a(2,Promise.resolve());case 2:return a=t.$store.getters.userInfo||{},i=a.id||1,t.loadingIndicators=!0,e.p=3,e.n=4,(0,y.Ay)({url:"/api/indicator/getIndicators",method:"get",params:{userid:i}});case 4:s=e.v,1===s.code&&s.data?(r=s.data.map(function(t){return{id:t.id,name:t.name,description:t.description,type:t.indicator_type||t.indicatorType||"python",code:t.code,is_buy:t.is_buy,source:1===t.is_buy?"bought":"custom"}}),t.availableIndicators=r,t.indicatorsLoaded=!0):(t.availableIndicators=[],t.$message.warning(s.msg||t.$t("trading-assistant.messages.loadIndicatorsFailed"))),e.n=6;break;case 5:e.p=5,e.v,t.availableIndicators=[],t.$message.warning(t.$t("trading-assistant.messages.loadIndicatorsFailed"));case 6:return e.p=6,t.loadingIndicators=!1,e.f(6);case 7:return e.a(2)}},e,null,[[3,5,6,7]])}))()},handleIndicatorChange:function(t){var e=this;return(0,l.A)((0,o.A)().m(function a(){var i,s,r;return(0,o.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(i=String(t),e.selectedIndicator=e.availableIndicators.find(function(t){return String(t.id)===i}),e.indicatorParams=[],e.indicatorParamValues={},!t){a.n=4;break}return a.p=1,a.n=2,e.$http.get("/api/indicator/getIndicatorParams",{params:{indicator_id:t}});case 2:s=a.v,s&&1===s.code&&Array.isArray(s.data)&&(e.indicatorParams=s.data,r={},s.data.forEach(function(t){r[t.name]=t.default}),e.indicatorParamValues=r),a.n=4;break;case 3:a.p=3,a.v;case 4:return a.a(2)}},a,null,[[1,3]])}))()},handleMarketTypeChange:function(t){var e=t.target.value;"spot"===e&&this.form.setFieldsValue({trade_direction:"long",leverage:1})},recalcEntryPctMaxUi:function(){if(this.form){var t=!!this.form.getFieldValue("trend_add_enabled"),e=!!this.form.getFieldValue("dca_add_enabled"),a=Number(this.form.getFieldValue("trend_add_max_times")||0),i=Number(this.form.getFieldValue("dca_add_max_times")||0),s=Number(this.form.getFieldValue("trend_add_size_pct")||0),r=Number(this.form.getFieldValue("dca_add_size_pct")||0),n=(t?a*s:0)+(e?i*r:0),o=Math.max(0,Math.min(100,100-n));this.entryPctMaxUi=o}else this.entryPctMaxUi=100},normalizeEntryPct:function(){if(this.form){var t=Number(this.form.getFieldValue("entry_pct")||0),e=Number(this.entryPctMaxUi||100);t>e&&this.form.setFieldsValue({entry_pct:e})}},onTrendAddToggle:function(t){var e=this;this.form&&(t&&this.form.setFieldsValue({dca_add_enabled:!1}),this.$nextTick(function(){e.recalcEntryPctMaxUi(),e.normalizeEntryPct()}))},onDcaAddToggle:function(t){var e=this;this.form&&(t&&this.form.setFieldsValue({trend_add_enabled:!1}),this.$nextTick(function(){e.recalcEntryPctMaxUi(),e.normalizeEntryPct()}))},onScaleParamsChange:function(){var t=this;this.$nextTick(function(){t.recalcEntryPctMaxUi(),t.normalizeEntryPct()})},onEntryPctChange:function(){var t=this;this.$nextTick(function(){return t.normalizeEntryPct()})},onTrailingToggle:function(t){this.form&&(this.trailingEnabledUi=!!t,t||this.form.setFieldsValue({trailing_stop_pct:0,trailing_activation_pct:0}))},onAiFilterToggle:function(t){this.aiFilterEnabledUi=!!t;try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({enable_ai_filter:!!t})}catch(e){}},filterIndicatorOption:function(t,e){var a=e.componentOptions.children[0].children[0].text;return a.toLowerCase().indexOf(t.toLowerCase())>=0},filterSymbolOption:function(t,e){return e.componentOptions.children[0].text.toLowerCase().indexOf(t.toLowerCase())>=0},getIndicatorTypeColor:function(t){var e={trend:"blue",momentum:"green",volatility:"orange",volume:"purple",custom:"default"};return e[t]||"default"},getIndicatorTypeName:function(t){return this.$t("trading-assistant.indicatorType.".concat(t))||t},getExchangeName:function(t){if(t.labelKey){var e="trading-assistant.exchangeNames.".concat(t.labelKey),a=this.$t(e);return a===e?t.value.charAt(0).toUpperCase()+t.value.slice(1):a}return t.label||t.value},getExchangeDisplayName:function(t){if(!t)return"";var e=this.exchangeOptions.find(function(e){return e.value===t});return e?this.getExchangeName(e):t.charAt(0).toUpperCase()+t.slice(1)},getExchangeTagColor:function(t){var e={binance:"gold",okx:"blue",coinbaseexchange:"cyan",kraken:"purple",bitfinex:"geekblue",huobi:"orange",gate:"green",mexc:"lime",kucoin:"volcano",bybit:"red",bitget:"magenta",bitmex:"red",deribit:"blue",phemex:"cyan",bitmart:"geekblue",bitstamp:"purple",bittrex:"orange",poloniex:"green",gemini:"lime",cryptocom:"volcano",blockchaincom:"magenta",bitflyer:"red",upbit:"blue",bithumb:"cyan",coinone:"purple",zb:"geekblue",lbank:"orange",bibox:"green",bigone:"lime",bitrue:"volcano",coinex:"magenta",ftx:"red",ftxus:"blue",binanceus:"gold",binancecoinm:"gold",binanceusdm:"gold",ibkr:"green"};return e[t]||"default"},handleApiConfigChange:function(){this.connectionTestResult=null},getModalPopupContainer:function(){return window.document.body},handleBrokerSelectChange:function(t){this.currentBrokerId=t||"ibkr",this.connectionTestResult=null},handleForexBrokerSelectChange:function(t){this.currentBrokerId=t||"mt5",this.connectionTestResult=null},handleExchangeSelectChange:function(t){var e=this;this.currentExchangeId=t||"",this.connectionTestResult=null,this.suppressApiClearOnce?this.suppressApiClearOnce=!1:this.$nextTick(function(){var t={api_key:void 0,secret_key:void 0,passphrase:void 0,enable_demo_trading:!1};setTimeout(function(){e.form.setFieldsValue(t)},100)})},getPlaceholder:function(t){var e={okx:{api_key:"请输入API Key",secret_key:"请输入Secret Key",passphrase:"请输入Passphrase(创建API时设置)"},okex:{api_key:"请输入API Key",secret_key:"请输入Secret Key",passphrase:"请输入Passphrase(创建API时设置)"},binance:{api_key:"请输入API Key",secret_key:"请输入Secret Key"},coinbaseexchange:{api_key:"请输入API Key(或Key Name)",secret_key:"请输入API Secret(或Private Key)",passphrase:"请输入Passphrase(Legacy Pro API需要)"},kucoin:{api_key:"请输入API Key",secret_key:"请输入Secret Key",passphrase:"请输入Passphrase"},gate:{api_key:"请输入API Key",secret_key:"请输入Secret Key"},mexc:{api_key:"请输入Access Key",secret_key:"请输入Secret Key"},kraken:{api_key:"请输入API Key",secret_key:"请输入Secret Key"},bitfinex:{api_key:"请输入API Key",secret_key:"请输入Secret Key"},bybit:{api_key:"请输入API Key",secret_key:"请输入Secret Key"},bitget:{api_key:"请输入API Key",secret_key:"请输入Secret Key",passphrase:"请输入Passphrase(Legacy Pro API需要)"}},a=e[this.currentExchangeId]||{};if(a[t])return a[t];var i={api_key:this.$t("trading-assistant.placeholders.inputApiKey"),secret_key:this.$t("trading-assistant.placeholders.inputSecretKey"),passphrase:this.$t("trading-assistant.placeholders.inputPassphrase")};return i[t]||this.$t("trading-assistant.placeholders.inputApiKey")},handleNext:function(){var t=this;if(0===this.currentStep){var e=["indicator_id","strategy_name"];(this.isAdvancedMode||this.editingStrategy)&&e.push("initial_capital","market_type","leverage","trade_direction","timeframe"),this.isEditMode&&e.push("symbol"),this.form.validateFields(e,function(e,a){if(!e){if(!t.isEditMode){var i=t.form.getFieldValue("cs_strategy_type")||"single";if("cross_sectional"===i){if(!t.crossSectionalSymbols||0===t.crossSectionalSymbols.length)return void t.$message.warning(t.$t("trading-assistant.validation.symbolsRequired"))}else if(!t.selectedSymbols||0===t.selectedSymbols.length)return void t.$message.warning(t.$t("trading-assistant.validation.symbolsRequired"))}try{var s=a&&a.market_type||t.form.getFieldValue("market_type");"spot"===s&&t.form.setFieldsValue({leverage:1,trade_direction:"long"})}catch(r){}t.backtestCollapseKeys=["risk"];try{t.trailingEnabledUi=!!t.form.getFieldValue("trailing_enabled")}catch(r){t.trailingEnabledUi=!1}t.$nextTick(function(){t.recalcEntryPctMaxUi(),t.normalizeEntryPct()}),t.isSimpleMode&&!t.editingStrategy?t.currentStep=2:t.currentStep++}})}else if(1===this.currentStep){try{var a=this.form.getFieldValue("execution_mode")||"signal";this.executionModeUi=a;var i=this.form.getFieldValue("notify_channels")||["browser"];this.notifyChannelsUi=Array.isArray(i)?i:["browser"]}catch(s){}this.currentStep++}},handlePrev:function(){this.currentStep>0&&(this.isSimpleMode&&!this.editingStrategy&&2===this.currentStep?this.currentStep=0:this.currentStep--)},handleSubmit:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){return(0,o.A)().w(function(e){while(1)switch(e.n){case 0:t.form.validateFields(function(){var e=(0,l.A)((0,o.A)().m(function e(a,i){var s,r,n,l,d,c,u,g,p,h,_,y,f,v,b,S,k;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(a){e.n=14;break}if(e.p=1,t.saving=!0,s=t.canUseLiveTrading&&"live"===i.execution_mode,!s||i.live_disclaimer_ack){e.n=2;break}return t.$message.warning(t.$t("trading-assistant.liveDisclaimer.required")),t.saving=!1,e.a(2);case 2:if(!s){e.n=3;break}if(r=i.credential_id,r){e.n=3;break}return t.$message.warning(t.$t("trading-assistant.validation.credentialRequired")),t.saving=!1,e.a(2);case 3:if(n={channels:i.notify_channels||[],targets:{email:t.userNotificationSettings.email||"",phone:t.userNotificationSettings.phone||"",telegram:t.userNotificationSettings.telegram_chat_id||"",telegram_bot_token:t.userNotificationSettings.telegram_bot_token||"",discord:t.userNotificationSettings.discord_webhook||"",webhook:t.userNotificationSettings.webhook_url||"",webhook_token:t.userNotificationSettings.webhook_token||""}},n.channels&&0!==n.channels.length){e.n=4;break}return t.$message.warning(t.$t("trading-assistant.validation.notifyChannelRequired")),t.saving=!1,e.a(2);case 4:if(l=String(i.indicator_id),d=t.availableIndicators.find(function(t){return String(t.id)===l}),d){e.n=5;break}return t.$message.error(t.$t("trading-assistant.validation.indicatorRequired")),t.saving=!1,e.a(2);case 5:if(c=!!t.aiFilterEnabledUi,u="futures"===i.market_type?"swap":i.market_type||"swap",g=i.leverage||1,p=i.trade_direction||"long","spot"===u?(g=1,p="long",t.$message.info(t.$t("trading-assistant.messages.spotLimitations"))):(g<1&&(g=1),g>125&&(g=125)),h={strategy_name:i.strategy_name,market_category:t.selectedMarketCategory||"Crypto",execution_mode:i.execution_mode||"signal",notification_config:n,indicator_config:{indicator_id:d.id,indicator_name:d.name,indicator_code:d.code||""},exchange_config:s?t.isIBKRMarket?{exchange_id:i.broker_id||t.currentBrokerId||"ibkr",ibkr_host:i.ibkr_host||"127.0.0.1",ibkr_port:i.ibkr_port||7497,ibkr_client_id:i.ibkr_client_id||1,ibkr_account:i.ibkr_account||""}:t.isMT5Market?{exchange_id:i.forex_broker_id||t.currentBrokerId||"mt5",mt5_server:i.mt5_server||"",mt5_login:i.mt5_login||"",mt5_password:i.mt5_password||"",mt5_terminal_path:i.mt5_terminal_path||""}:{credential_id:i.credential_id,exchange_id:t.currentExchangeId||void 0}:void 0,trading_config:{initial_capital:i.initial_capital,leverage:g,trade_direction:p,timeframe:i.timeframe,market_type:u,margin_mode:"cross",signal_mode:"confirmed",take_profit_pct:i.take_profit_pct||0,stop_loss_pct:i.stop_loss_pct||0,trailing_enabled:!!i.trailing_enabled,trailing_stop_pct:i.trailing_stop_pct||0,trailing_activation_pct:i.trailing_activation_pct||0,trend_add_enabled:!!i.trend_add_enabled,trend_add_step_pct:i.trend_add_step_pct||0,trend_add_size_pct:i.trend_add_size_pct||0,trend_add_max_times:i.trend_add_max_times||0,dca_add_enabled:!!i.dca_add_enabled,dca_add_step_pct:i.dca_add_step_pct||0,dca_add_size_pct:i.dca_add_size_pct||0,dca_add_max_times:i.dca_add_max_times||0,trend_reduce_enabled:!!i.trend_reduce_enabled,trend_reduce_step_pct:i.trend_reduce_step_pct||0,trend_reduce_size_pct:i.trend_reduce_size_pct||0,trend_reduce_max_times:i.trend_reduce_max_times||0,adverse_reduce_enabled:!!i.adverse_reduce_enabled,adverse_reduce_step_pct:i.adverse_reduce_step_pct||0,adverse_reduce_size_pct:i.adverse_reduce_size_pct||0,adverse_reduce_max_times:i.adverse_reduce_max_times||0,entry_pct:0===i.entry_pct||i.entry_pct?i.entry_pct:100,commission:i.commission||0,slippage:i.slippage||0,enable_ai_filter:c,indicator_params:t.indicatorParamValues,strategy_type:i.cs_strategy_type||"single",symbol_list:"cross_sectional"===i.cs_strategy_type?t.crossSectionalSymbols:void 0,portfolio_size:"cross_sectional"===i.cs_strategy_type?i.portfolio_size||10:void 0,long_ratio:"cross_sectional"===i.cs_strategy_type?i.long_ratio||.5:void 0,rebalance_frequency:"cross_sectional"===i.cs_strategy_type?i.rebalance_frequency||"daily":void 0}},!t.editingStrategy){e.n=7;break}return y=i.symbol,"string"===typeof y&&y.includes(":")&&(f=y.indexOf(":"),h.market_category=y.slice(0,f)||h.market_category,y=y.slice(f+1)),h.trading_config.symbol=y,e.n=6,(0,m.P7)(t.editingStrategy.id,h);case 6:_=e.v,e.n=11;break;case 7:if(h.user_id=1,h.strategy_type="IndicatorStrategy","cross_sectional"!==i.cs_strategy_type){e.n=9;break}return h.strategy_type="IndicatorStrategy",h.trading_config.symbol=null,e.n=8,(0,m.WM)(h);case 8:_=e.v,e.n=11;break;case 9:return h.symbols=t.selectedSymbols,e.n=10,(0,m.Ox)(h);case 10:_=e.v;case 11:1===_.code?(t.isEditMode?t.$message.success(t.$t("trading-assistant.messages.updateSuccess")):(b=i.cs_strategy_type||"single",S="cross_sectional"===b?t.crossSectionalSymbols.length:t.selectedSymbols.length,k=(null===(v=_.data)||void 0===v?void 0:v.total_created)||S,t.$message.success(t.$t("trading-assistant.messages.batchCreateSuccess",{count:k}))),t.handleRefresh()):t.$message.error(_.msg||(t.isEditMode?t.$t("trading-assistant.messages.updateFailed"):t.$t("trading-assistant.messages.createFailed"))),e.n=13;break;case 12:e.p=12,e.v,t.$message.error(t.isEditMode?t.$t("trading-assistant.messages.updateFailed"):t.$t("trading-assistant.messages.createFailed"));case 13:return e.p=13,t.saving=!1,e.f(13);case 14:return e.a(2)}},e,null,[[1,12,13,14]])}));return function(t,a){return e.apply(this,arguments)}}());case 1:return e.a(2)}},e)}))()},getFormValues:function(){var t=this;return new Promise(function(e,a){t.form.validateFields(function(t,i){t?a(t):e(i)})})},getDropdownContainer:function(t){return document.body}}},E=U,z=(0,k.A)(E,i,s,!1,null,"13cac835",null),D=z.exports},42430:function(t,e,a){a.d(e,{IA:function(){return n},N6:function(){return d},PR:function(){return o},kI:function(){return l}});var i=a(76338),s=a(75769),r={list:"/api/credentials/list",get:"/api/credentials/get",create:"/api/credentials/create",delete:"/api/credentials/delete",egressIp:"/api/credentials/egress-ip"};function n(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,s.Ay)({url:r.list,method:"get",params:t})}function o(t){return(0,s.Ay)({url:r.create,method:"post",data:t})}function l(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return(0,s.Ay)({url:r.delete,method:"delete",params:(0,i.A)({id:t},e)})}function d(){return(0,s.Ay)({url:r.egressIp,method:"get"})}},35038:function(t,e,a){a.d(e,{Qo:function(){return r},_3:function(){return c},dp:function(){return n},iO:function(){return d},mk:function(){return o},ms:function(){return l},z6:function(){return u}});var i=a(75769),s={GetWatchlist:"/api/market/watchlist/get",AddWatchlist:"/api/market/watchlist/add",RemoveWatchlist:"/api/market/watchlist/remove",GetWatchlistPrices:"/api/market/watchlist/prices",MultiAnalysis:"/api/analysis/multiAnalysis",CreateAnalysisTask:"/api/analysis/createTask",GetAnalysisTaskStatus:"/api/analysis/getTaskStatus",GetAnalysisHistoryList:"/api/analysis/getHistoryList",DeleteAnalysisTask:"/api/analysis/deleteTask",ReflectAnalysis:"/api/analysis/reflect",ChatMessage:"/api/ai/chat/message",GetChatHistory:"/api/ai/chat/history",SaveChatHistory:"/api/ai/chat/history/save",GetConfig:"/api/market/config",GetMenuFooterConfig:"/api/market/menuFooterConfig",GetMarketTypes:"/api/market/types",SearchSymbols:"/api/market/symbols/search",GetHotSymbols:"/api/market/symbols/hot"};function r(t){return(0,i.Ay)({url:s.GetWatchlist,method:"get",params:t})}function n(t){return(0,i.Ay)({url:s.AddWatchlist,method:"post",data:t})}function o(t){return(0,i.Ay)({url:s.RemoveWatchlist,method:"post",data:t})}function l(t){return(0,i.Ay)({url:s.GetWatchlistPrices,method:"get",params:{watchlist:JSON.stringify(t.watchlist||[])}})}function d(){return(0,i.Ay)({url:s.GetMarketTypes,method:"get"})}function c(t){return(0,i.Ay)({url:s.SearchSymbols,method:"get",params:t})}function u(t){return(0,i.Ay)({url:s.GetHotSymbols,method:"get",params:t})}},84841:function(t,e,a){a.d(e,{DK:function(){return v},E$:function(){return c},Gl:function(){return g},O0:function(){return d},TK:function(){return n},aU:function(){return s},cw:function(){return l},d$:function(){return S},hG:function(){return o},hl:function(){return p},kg:function(){return r},nY:function(){return f},r7:function(){return u},rx:function(){return _},v9:function(){return h},vF:function(){return m},vi:function(){return b},wq:function(){return y}});var i=a(75769);function s(t){return(0,i.Ay)({url:"/api/users/list",method:"get",params:t})}function r(t){return(0,i.Ay)({url:"/api/users/create",method:"post",data:t})}function n(t,e){return(0,i.Ay)({url:"/api/users/update",method:"put",params:{id:t},data:e})}function o(t){return(0,i.Ay)({url:"/api/users/delete",method:"delete",params:{id:t}})}function l(t){return(0,i.Ay)({url:"/api/users/reset-password",method:"post",data:t})}function d(){return(0,i.Ay)({url:"/api/users/roles",method:"get"})}function c(){return(0,i.Ay)({url:"/api/users/profile",method:"get"})}function u(t){return(0,i.Ay)({url:"/api/users/profile/update",method:"put",data:t})}function m(){return(0,i.Ay)({url:"/api/users/notification-settings",method:"get"})}function g(t){return(0,i.Ay)({url:"/api/users/notification-settings",method:"put",data:t})}function p(){return(0,i.Ay)({url:"/api/users/notification-settings/test",method:"post",data:{}})}function h(t){return(0,i.Ay)({url:"/api/users/my-credits-log",method:"get",params:t})}function _(t){return(0,i.Ay)({url:"/api/users/my-referrals",method:"get",params:t})}function y(t){return(0,i.Ay)({url:"/api/users/set-credits",method:"post",data:t})}function f(t){return(0,i.Ay)({url:"/api/users/set-vip",method:"post",data:t})}function v(t){return(0,i.Ay)({url:"/api/users/system-strategies",method:"get",params:t})}function b(t){return(0,i.Ay)({url:"/api/users/admin-orders",method:"get",params:t})}function S(t){return(0,i.Ay)({url:"/api/users/admin-ai-stats",method:"get",params:t})}}}]); \ No newline at end of file diff --git a/frontend/dist/js/727.f889c30b.js b/frontend/dist/js/727.f889c30b.js new file mode 100644 index 0000000..0656eb4 --- /dev/null +++ b/frontend/dist/js/727.f889c30b.js @@ -0,0 +1 @@ +"use strict";(self["webpackChunkvue_antd_pro"]=self["webpackChunkvue_antd_pro"]||[]).push([[727],{41108:function(e,t,a){a.r(t),a.d(t,{default:function(){return v}});var s=function(){var e=this,t=e._self._c;return t("div",{staticClass:"settings-page",class:{"theme-dark":e.isDarkTheme}},[e.showRestartTip?t("a-alert",{staticClass:"restart-alert",attrs:{type:"warning",showIcon:"",closable:""},on:{close:function(t){e.showRestartTip=!1}}},[t("template",{slot:"message"},[t("span",[e._v(e._s(e.$t("settings.restartRequired")))]),t("a-button",{attrs:{size:"small",type:"link"},on:{click:e.copyRestartCommand}},[e._v(" "+e._s(e.$t("settings.copyRestartCmd"))+" ")])],1)],2):e._e(),t("div",{staticClass:"settings-header"},[t("h2",{staticClass:"page-title"},[t("a-icon",{attrs:{type:"setting"}}),t("span",[e._v(e._s(e.$t("settings.title")))])],1),t("p",{staticClass:"page-desc"},[e._v(e._s(e.$t("settings.description")))])]),t("a-spin",{attrs:{spinning:e.loading}},[t("div",{staticClass:"settings-content"},[t("a-collapse",{staticClass:"settings-collapse",attrs:{bordered:!1},model:{value:e.activeKeys,callback:function(t){e.activeKeys=t},expression:"activeKeys"}},e._l(e.sortedSchema,function(a,s){return t("a-collapse-panel",{key:s},[t("template",{slot:"header"},[t("span",{staticClass:"panel-header"},[t("a-icon",{staticClass:"panel-icon-left",attrs:{type:a.icon||e.getGroupIcon(s)}}),t("span",{staticClass:"panel-title"},[e._v(e._s(e.getGroupTitle(s,a.title)))])],1)]),"ai"===s?t("div",{staticClass:"openrouter-balance-card"},[t("a-card",{attrs:{size:"small",bordered:!1}},[t("div",{staticClass:"balance-header"},[t("span",{staticClass:"balance-title"},[t("a-icon",{staticStyle:{"margin-right":"6px"},attrs:{type:"wallet"}}),e._v(" "+e._s(e.$t("settings.openrouterBalance")||"OpenRouter 账户余额")+" ")],1),t("a-button",{attrs:{size:"small",type:"primary",ghost:"",loading:e.balanceLoading},on:{click:e.queryOpenRouterBalance}},[t("a-icon",{attrs:{type:"sync"}}),e._v(" "+e._s(e.$t("settings.queryBalance")||"查询余额")+" ")],1)],1),e.openrouterBalance?t("div",{staticClass:"balance-info"},[t("a-row",{attrs:{gutter:16}},[t("a-col",{attrs:{span:8}},[t("a-statistic",{attrs:{title:e.$t("settings.balanceUsage")||"已使用",value:e.openrouterBalance.usage,prefix:"$",precision:4,"value-style":{color:"#cf1322"}}})],1),t("a-col",{attrs:{span:8}},[t("a-statistic",{attrs:{title:e.$t("settings.balanceRemaining")||"剩余额度",value:null!==e.openrouterBalance.limit_remaining?e.openrouterBalance.limit_remaining:"∞",prefix:null!==e.openrouterBalance.limit_remaining?"$":"",precision:null!==e.openrouterBalance.limit_remaining?4:0,"value-style":{color:null!==e.openrouterBalance.limit_remaining&&e.openrouterBalance.limit_remaining<1?"#cf1322":"#3f8600"}}})],1),t("a-col",{attrs:{span:8}},[t("a-statistic",{attrs:{title:e.$t("settings.balanceLimit")||"总限额",value:null!==e.openrouterBalance.limit?e.openrouterBalance.limit:"∞",prefix:null!==e.openrouterBalance.limit?"$":"",precision:null!==e.openrouterBalance.limit?2:0}})],1)],1),e.openrouterBalance.is_free_tier?t("div",{staticClass:"free-tier-badge"},[t("a-tag",{attrs:{color:"blue"}},[e._v(e._s(e.$t("settings.freeTier")))])],1):e._e()],1):t("div",{staticClass:"balance-empty"},[t("a-icon",{staticStyle:{"margin-right":"6px"},attrs:{type:"info-circle"}}),e._v(" "+e._s(e.$t("settings.balanceNotQueried")||'点击"查询余额"获取账户信息')+" ")],1)])],1):e._e(),t("a-form",{staticClass:"settings-form",attrs:{form:e.form,layout:"vertical"}},[t("a-row",{attrs:{gutter:24}},e._l(a.items,function(a){return t("a-col",{key:a.key,attrs:{xs:24,sm:24,md:12,lg:12}},[t("a-form-item",[t("template",{slot:"label"},[t("span",{staticClass:"form-label-with-tooltip"},[t("span",{staticClass:"label-text"},[e._v(e._s(e.getItemLabel(s,a)))]),a.description?t("a-tooltip",{attrs:{placement:"top"}},[t("template",{slot:"title"},[e._v(" "+e._s(e.getItemDescription(s,a))+" ")]),t("a-icon",{staticClass:"help-icon",attrs:{type:"question-circle"}})],2):e._e(),a.link?t("a",{staticClass:"api-link",attrs:{href:a.link,target:"_blank",rel:"noopener noreferrer"},on:{click:function(e){e.stopPropagation()}}},[t("a-icon",{attrs:{type:"link"}}),e._v(" "+e._s(e.getLinkText(a.link_text))+" ")],1):e._e()],1)]),"text"===a.type?[t("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:[a.key,{initialValue:e.getFieldValue(s,a.key)}],expression:"[item.key, { initialValue: getFieldValue(groupKey, item.key) }]"}],attrs:{placeholder:a.default?"".concat(e.$t("settings.default"),": ").concat(a.default):"",allowClear:""}})]:"password"===a.type?[t("div",{staticClass:"password-field"},[t("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:[a.key,{initialValue:e.getFieldValue(s,a.key)}],expression:"[item.key, { initialValue: getFieldValue(groupKey, item.key) }]"}],attrs:{type:e.passwordVisible[a.key]?"text":"password",placeholder:e.$t("settings.inputApiKey"),allowClear:""}},[t("a-icon",{staticStyle:{cursor:"pointer"},attrs:{slot:"suffix",type:e.passwordVisible[a.key]?"eye":"eye-invisible"},on:{click:function(t){return e.togglePasswordVisible(a.key)}},slot:"suffix"})],1)],1)]:"number"===a.type?[t("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:[a.key,{initialValue:e.getNumberValue(s,a.key,a.default)}],expression:"[item.key, { initialValue: getNumberValue(groupKey, item.key, item.default) }]"}],staticStyle:{width:"100%"},attrs:{placeholder:a.default?"".concat(e.$t("settings.default"),": ").concat(a.default):""}})]:"boolean"===a.type?[t("a-switch",{directives:[{name:"decorator",rawName:"v-decorator",value:[a.key,{valuePropName:"checked",initialValue:e.getBoolValue(s,a.key,a.default)}],expression:"[item.key, { valuePropName: 'checked', initialValue: getBoolValue(groupKey, item.key, item.default) }]"}]})]:"select"===a.type?[t("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:[a.key,{initialValue:e.getFieldValue(s,a.key)||a.default}],expression:"[item.key, { initialValue: getFieldValue(groupKey, item.key) || item.default }]"}],attrs:{placeholder:a.default?"".concat(e.$t("settings.default"),": ").concat(a.default):e.$t("settings.pleaseSelect")}},e._l(e.getSelectOptions(a),function(a){return t("a-select-option",{key:a.value,attrs:{value:a.value}},[e._v(" "+e._s(a.label)+" ")])}),1)]:e._e(),a.default&&"boolean"!==a.type&&"password"!==a.type?t("div",{staticClass:"field-default"},[e._v(" "+e._s(e.$t("settings.default"))+": "+e._s(a.default)+" ")]):e._e()],2)],1)}),1)],1)],2)}),1)],1)]),t("div",{staticClass:"settings-footer"},[t("a-button",{attrs:{disabled:e.saving},on:{click:e.handleReset}},[t("a-icon",{attrs:{type:"undo"}}),e._v(" "+e._s(e.$t("settings.reset"))+" ")],1),t("a-button",{attrs:{type:"primary",loading:e.saving},on:{click:e.handleSave}},[t("a-icon",{attrs:{type:"save"}}),e._v(" "+e._s(e.$t("settings.save"))+" ")],1)],1)],1)},i=[],n=a(57532),r=a(81127),l=a(56252),o=a(44735),c=a(15863),u=a(53003),p=a(55434),d={name:"Settings",mixins:[p.t],data:function(){return{loading:!1,saving:!1,schema:{},values:{},activeKeys:["auth","ai","trading"],passwordVisible:{},showRestartTip:!1,balanceLoading:!1,openrouterBalance:null}},computed:{isDarkTheme:function(){return"dark"===this.navTheme||"realdark"===this.navTheme},sortedSchema:function(){var e=Object.entries(this.schema);e.sort(function(e,t){var a=e[1].order||999,s=t[1].order||999;return a-s});for(var t={},a=0,s=e;a0?a("div",{staticClass:"opp-section"},[a("div",{staticClass:"opp-header"},[a("span",{staticClass:"opp-title"},[a("a-icon",{attrs:{type:"radar-chart"}}),t._v(" "+t._s(t.$t("aiAssetAnalysis.opportunities.title")))],1),a("span",{staticClass:"opp-header-right"},[a("span",{staticClass:"opp-update-hint"},[a("a-icon",{attrs:{type:"clock-circle"}}),t._v(" "+t._s(t.$t("aiAssetAnalysis.opportunities.updateHint"))+" ")],1),a("a-button",{attrs:{type:"link",size:"small",icon:"reload",loading:t.oppLoading},on:{click:function(a){return t.loadOpportunities(!0)}}},[t._v(" "+t._s(t.$t("common.refresh")||"刷新")+" ")])],1)]),a("div",{staticClass:"opp-carousel-wrapper",on:{mouseenter:function(a){t.oppHover=!0},mouseleave:function(a){t.oppHover=!1}}},[a("div",{staticClass:"opp-track",class:{paused:t.oppHover},style:t.oppTrackStyle},t._l(t.carouselItems,function(e,s){return a("div",{key:"opp-"+s,staticClass:"opp-card",class:[e.impact,"market-"+(e.market||"").toLowerCase(),{"is-prediction-market":"PredictionMarket"===e.market}],on:{click:function(a){return t.analyzeOpportunity(e)}}},[a("div",{staticClass:"opp-top"},[a("span",{staticClass:"opp-symbol",class:{"prediction-title":"PredictionMarket"===e.market}},[t._v(" "+t._s("PredictionMarket"===e.market&&e.name||e.symbol)+" ")]),a("a-tag",{staticClass:"opp-market-tag",attrs:{color:t.getMarketTagColor(e.market),size:"small"}},[t._v(" "+t._s(t.getMarketLabel(e.market))+" ")])],1),"PredictionMarket"!==e.market?a("div",{staticClass:"opp-price"},[t._v("$"+t._s(t.formatOppPrice(e.price)))]):a("div",{staticClass:"opp-price"},[t._v(t._s((e.price||0).toFixed(1))+"%")]),"PredictionMarket"!==e.market?a("div",{staticClass:"opp-change",class:e.change_24h>=0?"up":"down"},[t._v(" "+t._s(e.change_24h>=0?"+":"")+t._s((e.change_24h||0).toFixed(1))+"% ")]):e.ai_analysis?a("div",{staticClass:"opp-change"},[a("a-tag",{attrs:{color:t.getRecommendationColor(e.ai_analysis.recommendation),size:"small"}},[t._v(" "+t._s(t.getRecommendationLabel(e.ai_analysis.recommendation))+" ")]),a("span",{staticStyle:{"margin-left":"8px","font-size":"12px",color:"rgba(0,0,0,0.65)"}},[t._v(" 机会评分: "+t._s(e.ai_analysis.opportunity_score.toFixed(0))+" ")])],1):t._e(),"PredictionMarket"!==e.market?a("div",{staticClass:"opp-signal"},[a("a-tag",{attrs:{color:t.getSignalColor(e.signal),size:"small"}},[t._v(t._s(t.getSignalLabel(e.signal)))])],1):t._e(),a("div",{staticClass:"opp-reason"},[t._v(t._s(t.getReasonText(e)))]),a("div",{staticClass:"opp-actions"},["PredictionMarket"!==e.market?a("span",{staticClass:"opp-action",on:{click:function(a){return a.stopPropagation(),t.analyzeOpportunity(e)}}},[a("a-icon",{attrs:{type:"thunderbolt"}}),t._v(" "+t._s(t.$t("aiAssetAnalysis.opportunities.analyze"))+" ")],1):a("span",{staticClass:"opp-action",on:{click:function(a){return a.stopPropagation(),t.analyzeOpportunity(e)}}},[a("a-icon",{attrs:{type:"link"}}),t._v(" "+t._s(t.$t("polymarket.action.viewDetail"))+" ")],1),"Crypto"===e.market?a("span",{staticClass:"opp-trade-btn",on:{click:function(a){return a.stopPropagation(),t.openQuickTradeFromOpp(e)}}},[a("a-icon",{attrs:{type:"transaction"}}),t._v(" "+t._s(t.$t("quickTrade.tradeNow"))+" ")],1):t._e()])])}),0)])]):t._e(),a("a-tooltip",{attrs:{title:t.$t("quickTrade.openPanel"),placement:"left"}},[!t.showQuickTrade&&t.currentAnalysisSymbol?a("div",{staticClass:"qt-floating-btn",on:{click:t.openQuickTradeFromCurrent}},[a("a-icon",{attrs:{type:"thunderbolt",theme:"filled"}})],1):t._e()]),a("quick-trade-panel",{attrs:{visible:t.showQuickTrade,symbol:t.qtSymbol,"preset-side":t.qtSide,"preset-price":t.qtPrice,source:t.qtSource,"market-type":"swap"},on:{close:function(a){t.showQuickTrade=!1},"order-success":t.onQuickTradeSuccess,"update:symbol":t.handleQuickTradeSymbolChange}}),a("a-card",{staticClass:"workspace-card",attrs:{bordered:!1}},[a("a-tabs",{staticClass:"workspace-tabs",attrs:{size:"large"},model:{value:t.activeTab,callback:function(a){t.activeTab=a},expression:"activeTab"}},[a("a-tab-pane",{key:"quick"},[a("span",{attrs:{slot:"tab"},slot:"tab"},[a("a-icon",{attrs:{type:"thunderbolt"}}),t._v(" "+t._s(t.$t("aiAssetAnalysis.tabs.quick"))+" ")],1),a("div",{staticClass:"tab-body"},["quick"===t.activeTab?a("AnalysisView",{attrs:{embedded:!0,"preset-symbol":t.presetSymbol,"auto-analyze-signal":t.autoAnalyzeSignal},on:{"symbol-change":t.onAnalysisSymbolChange}}):t._e()],1)]),a("a-tab-pane",{key:"polymarket"},[a("span",{attrs:{slot:"tab"},slot:"tab"},[a("a-icon",{attrs:{type:"radar-chart"}}),t._v(" "+t._s(t.$t("aiAssetAnalysis.tabs.polymarket"))+" ")],1),a("div",{staticClass:"tab-body"},[a("div",{staticClass:"polymarket-tab-content"},[a("div",{staticClass:"polymarket-placeholder"},[a("div",{staticClass:"placeholder-icon"},[a("a-icon",{attrs:{type:"radar-chart"}})],1),a("h3",[t._v(t._s(t.$t("polymarket.analysis.title")))]),a("p",[t._v(t._s(t.$t("polymarket.analysis.description")))]),a("a-button",{staticStyle:{"margin-top":"16px"},attrs:{type:"primary",size:"large",icon:"thunderbolt"},on:{click:function(a){t.showPolymarketModal=!0}}},[t._v(" "+t._s(t.$t("polymarket.analysis.startAnalysis"))+" ")])],1)])])])],1)],1),a("PolymarketAnalysisModal",{attrs:{visible:t.showPolymarketModal},on:{close:function(a){t.showPolymarketModal=!1}}})],1)},i=[],n=e(81127),r=e(56252),o=e(2403),l=e(76338),c=(e(74423),e(95353)),p=e(18662),u=e(44146),y=e(62611),d=function(){var t=this,a=t._self._c;return a("a-modal",{attrs:{visible:t.visible,title:t.$t("polymarket.analysis.title"),width:900,footer:null,wrapClassName:t.isDarkTheme?"qd-dark-modal":"",maskClosable:!1},on:{cancel:t.handleClose}},[a("div",{staticClass:"polymarket-analysis-modal",class:{"theme-dark":t.isDarkTheme}},[a("a-tabs",{attrs:{"default-active-key":"analyze"},on:{change:t.handleTabChange}},[a("a-tab-pane",{key:"analyze",attrs:{tab:t.$t("polymarket.analysis.tabAnalyze")}},[t.analysisResult?t._e():a("div",{staticClass:"input-section"},[a("a-alert",{staticStyle:{"margin-bottom":"16px"},attrs:{message:t.$t("polymarket.analysis.inputHint"),type:"info","show-icon":""}}),a("a-textarea",{attrs:{placeholder:t.$t("polymarket.analysis.inputPlaceholder"),rows:3,disabled:t.analyzing},on:{pressEnter:t.handleAnalyze},model:{value:t.inputText,callback:function(a){t.inputText=a},expression:"inputText"}}),a("div",{staticClass:"input-actions"},[a("a-button",{staticStyle:{width:"100%","margin-top":"12px"},attrs:{type:"primary",size:"large",icon:"thunderbolt",loading:t.analyzing,disabled:!t.inputText.trim()},on:{click:t.handleAnalyze}},[t._v(" "+t._s(t.$t("polymarket.analysis.analyzeButton"))+" ")])],1)],1),t.analysisResult?a("div",{staticClass:"result-section"},[a("div",{staticClass:"market-info"},[a("h3",[t._v(t._s(t.analysisResult.market.question))]),a("div",{staticClass:"market-meta"},[a("a-tag",{attrs:{color:t.getStatusColor(t.analysisResult.market.status)}},[t._v(" "+t._s(t.analysisResult.market.status)+" ")]),a("span",{staticClass:"meta-item"},[a("a-icon",{attrs:{type:"percentage"}}),t._v(" "+t._s(t.analysisResult.market.current_probability)+"% ")],1),t.analysisResult.market.volume_24h?a("span",{staticClass:"meta-item"},[a("a-icon",{attrs:{type:"dollar"}}),t._v(" "+t._s(t.formatVolume(t.analysisResult.market.volume_24h))+" ")],1):t._e(),t.analysisResult.market.polymarket_url?a("a-button",{attrs:{type:"link",size:"small",icon:"link",href:t.analysisResult.market.polymarket_url,target:"_blank"}},[t._v(" "+t._s(t.$t("polymarket.analysis.viewOnPolymarket"))+" ")]):t._e()],1)]),a("div",{staticClass:"analysis-result"},[a("a-divider",[t._v(t._s(t.$t("polymarket.analysis.aiAnalysis")))]),a("div",{staticClass:"probability-comparison"},[a("div",{staticClass:"prob-item"},[a("div",{staticClass:"prob-label"},[t._v(t._s(t.$t("polymarket.analysis.marketProbability")))]),a("div",{staticClass:"prob-value"},[t._v(t._s(t.analysisResult.analysis.market_probability)+"%")])]),a("div",{staticClass:"prob-item"},[a("div",{staticClass:"prob-label"},[t._v(t._s(t.$t("polymarket.analysis.aiPredictedProbability")))]),a("div",{staticClass:"prob-value ai-prob"},[t._v(t._s(t.analysisResult.analysis.ai_predicted_probability)+"%")])]),a("div",{staticClass:"prob-item"},[a("div",{staticClass:"prob-label"},[t._v(t._s(t.$t("polymarket.analysis.divergence")))]),a("div",{staticClass:"prob-value",class:t.getDivergenceClass(t.analysisResult.analysis.divergence)},[t._v(" "+t._s(t.analysisResult.analysis.divergence>=0?"+":"")+t._s(t.analysisResult.analysis.divergence.toFixed(2))+"% ")])])]),a("div",{staticClass:"recommendation-section"},[a("a-row",{attrs:{gutter:16}},[a("a-col",{attrs:{span:8}},[a("div",{staticClass:"rec-card"},[a("div",{staticClass:"rec-label"},[t._v(t._s(t.$t("polymarket.analysis.recommendation")))]),a("a-tag",{staticStyle:{"font-size":"16px",padding:"4px 12px"},attrs:{color:t.getRecommendationColor(t.analysisResult.analysis.recommendation)}},[t._v(" "+t._s(t.getRecommendationLabel(t.analysisResult.analysis.recommendation))+" ")])],1)]),a("a-col",{attrs:{span:8}},[a("div",{staticClass:"rec-card"},[a("div",{staticClass:"rec-label"},[t._v(t._s(t.$t("polymarket.analysis.confidenceScore")))]),a("div",{staticClass:"rec-value"},[t._v(t._s(t.analysisResult.analysis.confidence_score.toFixed(0)))])])]),a("a-col",{attrs:{span:8}},[a("div",{staticClass:"rec-card"},[a("div",{staticClass:"rec-label"},[t._v(t._s(t.$t("polymarket.analysis.opportunityScore")))]),a("div",{staticClass:"rec-value"},[t._v(t._s(t.analysisResult.analysis.opportunity_score.toFixed(0)))])])])],1)],1),t.analysisResult.analysis.reasoning?a("div",{staticClass:"reasoning-section"},[a("h4",[t._v(t._s(t.$t("polymarket.analysis.reasoning")))]),a("p",{staticClass:"reasoning-text"},[t._v(t._s(t.analysisResult.analysis.reasoning))])]):t._e(),t.analysisResult.analysis.key_factors&&t.analysisResult.analysis.key_factors.length>0?a("div",{staticClass:"key-factors-section"},[a("h4",[t._v(t._s(t.$t("polymarket.analysis.keyFactors")))]),t._l(t.analysisResult.analysis.key_factors,function(e,s){return a("a-tag",{key:s,staticStyle:{margin:"4px"},attrs:{color:"blue"}},[t._v(" "+t._s(e)+" ")])})],2):t._e(),t.analysisResult.credits_charged>0?a("div",{staticClass:"billing-info"},[a("a-alert",{staticStyle:{"margin-top":"16px"},attrs:{message:t.$t("polymarket.analysis.creditsCharged",{credits:t.analysisResult.credits_charged}),type:"success","show-icon":""}}),void 0!==t.analysisResult.remaining_credits?a("div",{staticStyle:{"margin-top":"8px","text-align":"right"},style:{color:t.isDarkTheme?"rgba(255,255,255,0.75)":"rgba(0,0,0,0.65)"}},[t._v(" "+t._s(t.$t("polymarket.analysis.remainingCredits",{credits:t.analysisResult.remaining_credits.toFixed(0)}))+" ")]):t._e()],1):t._e()],1),a("div",{staticClass:"result-actions"},[a("a-button",{staticStyle:{"margin-right":"8px"},on:{click:t.handleNewAnalysis}},[t._v(" "+t._s(t.$t("polymarket.analysis.newAnalysis"))+" ")]),a("a-button",{attrs:{type:"primary"},on:{click:t.handleClose}},[t._v(" "+t._s(t.$t("common.close"))+" ")])],1)]):t._e(),t.analyzing?a("div",{staticClass:"loading-section"},[a("a-spin",{attrs:{size:"large"}}),a("p",{style:{marginTop:"16px",color:t.isDarkTheme?"rgba(255,255,255,0.75)":"rgba(0,0,0,0.65)"}},[t._v(" "+t._s(t.$t("polymarket.analysis.analyzing"))+" ")])],1):t._e()]),a("a-tab-pane",{key:"history",attrs:{tab:t.$t("polymarket.analysis.tabHistory")}},[a("div",{staticClass:"history-section"},[a("a-spin",{attrs:{spinning:t.historyLoading}},[a("a-table",{attrs:{columns:t.historyColumns,"data-source":t.historyList,pagination:t.historyPagination,"row-key":function(t){return t.id},size:"small"},on:{change:t.handleHistoryTableChange},scopedSlots:t._u([{key:"market_title",fn:function(e,s){return[a("a-button",{staticStyle:{padding:"0"},attrs:{type:"link"},on:{click:function(a){return t.viewHistoryItem(s)}}},[t._v(" "+t._s(e)+" ")])]}},{key:"recommendation",fn:function(e){return[a("a-tag",{attrs:{color:t.getRecommendationColor(e)}},[t._v(" "+t._s(t.getRecommendationLabel(e))+" ")])]}},{key:"created_at",fn:function(a){return[t._v(" "+t._s(t.formatDateTime(a))+" ")]}}])})],1)],1)])],1)],1)])},m=[],h=e(75769),k="/api/polymarket";function v(t){return(0,h.Ay)({url:"".concat(k,"/analyze"),method:"post",data:t,timeout:12e4})}function g(t){return(0,h.Ay)({url:"".concat(k,"/history"),method:"get",params:t})}var _={name:"PolymarketAnalysisModal",props:{visible:{type:Boolean,default:!1}},data:function(){var t=this;return{inputText:"",analyzing:!1,analysisResult:null,activeTab:"analyze",historyLoading:!1,historyList:[],historyPagination:{current:1,pageSize:20,total:0,showSizeChanger:!0,showTotal:function(a){return t.$t("polymarket.analysis.historyTotal",{total:a})}},historyColumns:[]}},computed:(0,l.A)((0,l.A)({},(0,c.aH)({navTheme:function(t){return t.app.theme}})),{},{isDarkTheme:function(){return"dark"===this.navTheme||"realdark"===this.navTheme}}),methods:{handleAnalyze:function(){var t=this;this.inputText.trim()?(this.analyzing=!0,this.analysisResult=null,v({input:this.inputText.trim(),language:this.$i18n.locale||"zh-CN"}).then(function(a){1===a.code?(t.analysisResult=a.data,t.$message.success(t.$t("polymarket.analysis.success"))):"Insufficient credits"===a.msg?(t.$message.error(t.$t("polymarket.analysis.insufficientCredits")),t.$router.push("/billing")):t.$message.error(a.msg||t.$t("polymarket.analysis.failed"))}).catch(function(a){a.response&&a.response.data&&"Insufficient credits"===a.response.data.msg?(t.$message.error(t.$t("polymarket.analysis.insufficientCredits")),t.$router.push("/billing")):t.$message.error(t.$t("polymarket.analysis.failed"))}).finally(function(){t.analyzing=!1})):this.$message.warning(this.$t("polymarket.analysis.inputRequired"))},handleNewAnalysis:function(){this.inputText="",this.analysisResult=null},handleClose:function(){var t=this;this.$emit("close"),setTimeout(function(){t.inputText="",t.analysisResult=null,t.analyzing=!1},300)},getStatusColor:function(t){var a={active:"green",closed:"default",resolved:"blue"};return a[t]||"default"},getRecommendationColor:function(t){var a={YES:"green",NO:"red",HOLD:"orange"};return a[t]||"default"},getRecommendationLabel:function(t){var a={YES:this.$t("polymarket.analysis.recommendationYes"),NO:this.$t("polymarket.analysis.recommendationNo"),HOLD:this.$t("polymarket.analysis.recommendationHold")};return a[t]||t},getDivergenceClass:function(t){return t>5?"divergence-positive":t<-5?"divergence-negative":"divergence-neutral"},formatVolume:function(t){return t>=1e6?"$".concat((t/1e6).toFixed(2),"M"):t>=1e3?"$".concat((t/1e3).toFixed(2),"K"):"$".concat(t.toFixed(2))},handleTabChange:function(t){this.activeTab=t,"history"===t&&0===this.historyList.length&&this.loadHistory()},loadHistory:function(){var t=this;return(0,r.A)((0,n.A)().m(function a(){var e;return(0,n.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return t.historyLoading=!0,a.p=1,a.n=2,g({page:t.historyPagination.current,page_size:t.historyPagination.pageSize});case 2:e=a.v,1===e.code&&e.data&&(t.historyList=e.data.items||[],t.historyPagination.total=e.data.total||0),a.n=4;break;case 3:a.p=3,a.v,t.$message.error(t.$t("polymarket.analysis.loadHistoryFailed"));case 4:return a.p=4,t.historyLoading=!1,a.f(4);case 5:return a.a(2)}},a,null,[[1,3,4,5]])}))()},handleHistoryTableChange:function(t){this.historyPagination.current=t.current,this.historyPagination.pageSize=t.pageSize,this.loadHistory()},viewHistoryItem:function(t){this.activeTab="analyze",this.analysisResult={market:{question:t.market_title,market_id:t.market_id,polymarket_url:t.market_url,current_probability:t.market_probability,status:"active"},analysis:{ai_predicted_probability:t.ai_predicted_probability,market_probability:t.market_probability,recommendation:t.recommendation,opportunity_score:t.opportunity_score,confidence_score:t.confidence_score}}},formatDateTime:function(t){if(!t)return"";var a=new Date(t);return a.toLocaleString("zh-CN"===this.$i18n.locale?"zh-CN":"en-US")}},mounted:function(){this.historyColumns=[{title:this.$t("polymarket.analysis.historyMarket"),dataIndex:"market_title",key:"market_title",scopedSlots:{customRender:"market_title"}},{title:this.$t("polymarket.analysis.historyRecommendation"),dataIndex:"recommendation",key:"recommendation",width:120,scopedSlots:{customRender:"recommendation"}},{title:this.$t("polymarket.analysis.historyOpportunityScore"),dataIndex:"opportunity_score",key:"opportunity_score",width:120,align:"right"},{title:this.$t("polymarket.analysis.historyCreatedAt"),dataIndex:"created_at",key:"created_at",width:180,scopedSlots:{customRender:"created_at"}}]}},b=_,f=e(845),C=(0,f.A)(b,d,m,!1,null,"67e891d2",null),S=C.exports,$={name:"AIAssetAnalysis",components:{AnalysisView:p["default"],QuickTradePanel:y.A,PolymarketAnalysisModal:S},data:function(){return{activeTab:"quick",opportunities:[],oppLoading:!1,oppHover:!1,presetSymbol:"",autoAnalyzeSignal:0,showQuickTrade:!1,qtSymbol:"",qtSide:"",qtPrice:0,qtSource:"ai_radar",currentAnalysisSymbol:"",currentAnalysisMarket:"",showPolymarketModal:!1}},computed:(0,l.A)((0,l.A)({},(0,c.aH)({navTheme:function(t){return t.app.theme}})),{},{isDarkTheme:function(){return"dark"===this.navTheme||"realdark"===this.navTheme},carouselItems:function(){return 0===this.opportunities.length?[]:[].concat((0,o.A)(this.opportunities),(0,o.A)(this.opportunities))},oppTrackStyle:function(){var t=3*this.opportunities.length;return{animationDuration:t+"s"}}}),created:function(){this.loadOpportunities()},methods:{loadOpportunities:function(){var t=arguments,a=this;return(0,r.A)((0,n.A)().m(function e(){var s,i,r;return(0,n.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return s=t.length>0&&void 0!==t[0]&&t[0],a.oppLoading=!0,e.p=1,i=s?{force:!0}:{},e.n=2,(0,u.r9)(i);case 2:r=e.v,r&&1===r.code&&Array.isArray(r.data)&&(a.opportunities=r.data.slice(0,20)),e.n=4;break;case 3:e.p=3,e.v;case 4:return e.p=4,a.oppLoading=!1,e.f(4);case 5:return e.a(2)}},e,null,[[1,3,4,5]])}))()},getSignalColor:function(t){var a={overbought:"volcano",oversold:"green",bullish_momentum:"cyan",bearish_momentum:"red"};return a[t]||"default"},getSignalLabel:function(t){var a="aiAssetAnalysis.opportunities.signal.".concat(t),e=this.$t(a);return e!==a?e:t},getMarketTagColor:function(t){var a={Crypto:"purple",USStock:"green",Forex:"gold",PredictionMarket:"cyan"};return a[t]||"default"},getMarketLabel:function(t){var a="aiAssetAnalysis.opportunities.market.".concat(t),e=this.$t(a);return e!==a?e:t},getReasonText:function(t){var a=(t.market||"Crypto").toLowerCase(),e=t.signal||"",s="aiAssetAnalysis.opportunities.reason.".concat(a,".").concat(e),i=this.$t(s);if(i===s)return t.reason||"";var n=Math.abs(t.change_24h||0).toFixed(1),r=Math.abs(t.change_7d||0).toFixed(1);return i.replace("{change}",n).replace("{change7d}",r)},formatOppPrice:function(t){return t?t>=1e4?(t/1e3).toFixed(1)+"K":t>=1?t.toFixed(2):t.toFixed(4):"--"},analyzeOpportunity:function(t){var a=this;if("PredictionMarket"===t.market)return this.activeTab="polymarket",void(this.showPolymarketModal=!0);this.activeTab="quick";var e=t.market||"Crypto";this.presetSymbol="".concat(e,":").concat(t.symbol),this.$nextTick(function(){a.autoAnalyzeSignal++})},getRecommendationColor:function(t){var a={YES:"green",NO:"red",HOLD:"default"};return a[t]||"default"},getRecommendationLabel:function(t){return this.$t("polymarket.recommendation.".concat(t))||t},onAnalysisSymbolChange:function(t){if(!t)return this.currentAnalysisSymbol="",void(this.currentAnalysisMarket="");var a=t.split(":"),e=a.length>1?a[0]:"Crypto",s=a.length>1?a[1]:a[0];this.currentAnalysisMarket=e,this.currentAnalysisSymbol="Crypto"===e?s:""},openQuickTradeFromCurrent:function(){this.currentAnalysisSymbol&&(this.qtSymbol=this.currentAnalysisSymbol,this.qtSide="",this.qtPrice=0,this.qtSource="ai_analysis",this.showQuickTrade=!0)},openQuickTradeFromOpp:function(t){if("Crypto"===t.market){this.qtSymbol=t.symbol||"";var a=(t.signal||"").toLowerCase();a.includes("oversold")||a.includes("bullish")?this.qtSide="buy":a.includes("overbought")||a.includes("bearish")?this.qtSide="sell":this.qtSide="",this.qtPrice=t.price||0,this.qtSource="ai_radar",this.showQuickTrade=!0}},onQuickTradeSuccess:function(){this.$message.success(this.$t("quickTrade.orderSuccess"))},handleQuickTradeSymbolChange:function(t){t&&(this.qtSymbol=t)}}},A=$,T=(0,f.A)(A,s,i,!1,null,"443699fa",null),w=T.exports}}]); \ No newline at end of file diff --git a/frontend/dist/js/805-legacy.7541cd95.js b/frontend/dist/js/805-legacy.7541cd95.js deleted file mode 100644 index 718938f..0000000 --- a/frontend/dist/js/805-legacy.7541cd95.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self["webpackChunkvue_antd_pro"]=self["webpackChunkvue_antd_pro"]||[]).push([[805],{86805:function(t,a,s){s.r(a),s.d(a,{default:function(){return D}});s(28706),s(74423),s(34782),s(62010),s(9868),s(21699);var e=function(){var t=this,a=t._self._c;return a("div",{staticClass:"ai-analysis-container",class:{"theme-dark":t.isDarkTheme,embedded:t.embedded},style:{"--primary-color":t.primaryColor}},[a("div",{staticClass:"main-content-full"},[a("div",{staticClass:"top-index-bar"},[t.loadingSentiment?[t._m(0),t._m(1),t._m(2)]:[a("div",{staticClass:"indicator-box fear-greed",class:t.getFearGreedClass(t.marketData.fearGreed)},[a("span",{staticClass:"ind-label"},[t._v(t._s(t.$t("globalMarket.fearGreedShort")))]),a("span",{staticClass:"ind-value"},[t._v(t._s(t.marketData.fearGreed||"--"))])]),a("div",{staticClass:"indicator-box vix",class:t.getVixLevel(t.marketData.vix)},[a("span",{staticClass:"ind-label"},[t._v("VIX")]),a("span",{staticClass:"ind-value"},[t._v(t._s(t.marketData.vix||"--"))])]),a("div",{staticClass:"indicator-box dxy"},[a("span",{staticClass:"ind-label"},[t._v("DXY")]),a("span",{staticClass:"ind-value"},[t._v(t._s(t.marketData.dxy||"--"))])])],a("div",{staticClass:"indices-marquee"},[t.loadingIndices?[a("div",{staticClass:"indices-loading"},[a("a-icon",{attrs:{type:"loading"}}),t._v(" "+t._s(t.$t("common.loading")||"加载中...")+" ")],1)]:t.marketData.indices.length>0?[a("div",{staticClass:"marquee-track"},[t._l(t.marketData.indices,function(s){return a("div",{key:"a-"+s.symbol,staticClass:"index-item"},[a("span",{staticClass:"idx-flag"},[t._v(t._s(s.flag))]),a("span",{staticClass:"idx-symbol"},[t._v(t._s(s.symbol))]),a("span",{staticClass:"idx-price"},[t._v(t._s(t.formatPrice(s.price)))]),a("span",{staticClass:"idx-change",class:s.change>=0?"up":"down"},[a("a-icon",{attrs:{type:s.change>=0?"caret-up":"caret-down"}}),t._v(" "+t._s(Math.abs(s.change).toFixed(2))+"% ")],1)])}),t._l(t.marketData.indices,function(s){return a("div",{key:"b-"+s.symbol,staticClass:"index-item"},[a("span",{staticClass:"idx-flag"},[t._v(t._s(s.flag))]),a("span",{staticClass:"idx-symbol"},[t._v(t._s(s.symbol))]),a("span",{staticClass:"idx-price"},[t._v(t._s(t.formatPrice(s.price)))]),a("span",{staticClass:"idx-change",class:s.change>=0?"up":"down"},[a("a-icon",{attrs:{type:s.change>=0?"caret-up":"caret-down"}}),t._v(" "+t._s(Math.abs(s.change).toFixed(2))+"% ")],1)])})],2)]:[a("div",{staticClass:"indices-empty"},[t._v("--")])]],2),a("a-button",{staticClass:"refresh-btn",attrs:{type:"link",size:"small",loading:t.loadingMarket},on:{click:t.loadMarketData}},[a("a-icon",{attrs:{type:"sync",spin:t.loadingMarket}})],1)],2),a("div",{staticClass:"main-body"},[a("div",{staticClass:"left-panel"},[a("div",{staticClass:"heatmap-box"},[a("div",{staticClass:"box-header"},[a("a-radio-group",{attrs:{size:"small","button-style":"solid"},model:{value:t.heatmapType,callback:function(a){t.heatmapType=a},expression:"heatmapType"}},[a("a-radio-button",{attrs:{value:"crypto"}},[t._v(t._s(t.$t("globalMarket.cryptoHeatmap")))]),a("a-radio-button",{attrs:{value:"commodities"}},[t._v(t._s(t.$t("globalMarket.commoditiesHeatmap")))]),a("a-radio-button",{attrs:{value:"sectors"}},[t._v(t._s(t.$t("globalMarket.sectorHeatmap")))]),a("a-radio-button",{attrs:{value:"forex"}},[t._v(t._s(t.$t("globalMarket.forexHeatmap")))])],1)],1),a("div",{staticClass:"heatmap-grid"},[t.loadingHeatmap?t._l(12,function(t){return a("div",{key:"skel-"+t,staticClass:"heat-cell skeleton-cell"},[a("span",{staticClass:"skeleton-text short"}),a("span",{staticClass:"skeleton-text"})])}):t.currentHeatmap.length>0?t._l(t.currentHeatmap.slice(0,12),function(s,e){return a("div",{key:e,staticClass:"heat-cell",style:t.getHeatmapStyle(s.value)},[a("span",{staticClass:"heat-name"},[t._v(t._s(t.getHeatmapName(s)))]),s.price?a("span",{staticClass:"heat-price"},[t._v(t._s(t.formatHeatmapPrice(s.price)))]):t._e(),a("span",{staticClass:"heat-val"},[t._v(t._s(s.value>=0?"+":"")+t._s(t.formatNum(s.value))+"%")])])}):[a("div",{staticClass:"heatmap-empty"},[t._v(t._s(t.$t("common.noData")||"暂无数据"))])]],2)]),a("div",{staticClass:"calendar-box"},[a("div",{staticClass:"box-header"},[a("span",{staticClass:"box-title"},[a("a-icon",{attrs:{type:"calendar"}}),t._v(" "+t._s(t.$t("globalMarket.calendar")))],1)]),a("div",{staticClass:"calendar-list"},[t.loadingCalendar?t._l(5,function(t){return a("div",{key:"cal-skel-"+t,staticClass:"cal-item skeleton-item"},[a("span",{staticClass:"skeleton-text short"}),a("span",{staticClass:"skeleton-text short"}),a("span",{staticClass:"skeleton-text"})])}):t.marketData.calendar.length>0?t._l(t.marketData.calendar.slice(0,10),function(s){return a("div",{key:s.id,staticClass:"cal-item",class:s.importance},[a("span",{staticClass:"cal-date"},[t._v(t._s(t.formatCalendarDate(s.date)))]),a("span",{staticClass:"cal-time"},[t._v(t._s(s.time||"--:--"))]),a("span",{staticClass:"cal-flag"},[t._v(t._s(t.getCountryFlag(s.country)))]),a("span",{staticClass:"cal-name"},[t._v(t._s(t.isZhLocale?s.name:s.name_en))]),a("span",{staticClass:"cal-impact",class:t.getImpactClass(s)},["bullish"===t.getImpactClass(s)?a("a-icon",{attrs:{type:"arrow-up"}}):"bearish"===t.getImpactClass(s)?a("a-icon",{attrs:{type:"arrow-down"}}):a("a-icon",{attrs:{type:"minus"}}),t._v(" "+t._s(s.actual||s.forecast||"--")+" ")],1)])}):[a("div",{staticClass:"cal-empty"},[t._v(t._s(t.$t("globalMarket.noEvents")))])]],2)])]),a("div",{staticClass:"right-panel"},[a("div",{staticClass:"analysis-toolbar"},[a("a-select",{staticClass:"symbol-selector",attrs:{placeholder:t.$t("dashboard.analysis.empty.selectSymbol"),size:"large","show-search":"","allow-clear":"","filter-option":t.filterSymbolOption},on:{change:t.handleSymbolChange},model:{value:t.selectedSymbol,callback:function(a){t.selectedSymbol=a},expression:"selectedSymbol"}},[t._l(t.watchlist||[],function(s){return a("a-select-option",{key:"".concat(s.market,"-").concat(s.symbol),attrs:{value:"".concat(s.market,":").concat(s.symbol)}},[a("span",{staticClass:"symbol-option"},[a("a-tag",{attrs:{color:t.getMarketColor(s.market),size:"small"}},[t._v(t._s(t.getMarketName(s.market)))]),a("strong",{staticStyle:{"margin-left":"6px"}},[t._v(t._s(s.symbol))]),s.name?a("span",{staticClass:"symbol-name"},[t._v(t._s(s.name))]):t._e()],1)])}),a("a-select-option",{key:"add-stock-option",staticClass:"add-stock-option",attrs:{value:"__add_stock_option__"}},[a("div",{staticStyle:{"text-align":"center",padding:"4px 0",color:"#1890ff"}},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"plus"}}),t._v(t._s(t.$t("dashboard.analysis.watchlist.add"))+" ")],1)])],2),a("a-button",{staticClass:"analyze-button",attrs:{type:"primary",size:"large",icon:"thunderbolt",loading:t.analyzing,disabled:!t.selectedSymbol||t.analyzing},on:{click:t.startFastAnalysis}},[t._v(" "+t._s(t.$t("fastAnalysis.startAnalysis"))+" ")]),a("a-button",{staticClass:"history-button",attrs:{size:"large",icon:"history"},on:{click:function(a){t.showHistoryModal=!0,t.loadHistoryList()}}},[t._v(" "+t._s(t.$t("fastAnalysis.history"))+" ")])],1),a("div",{staticClass:"analysis-main"},[t.analysisResult||t.analyzing||t.analysisError?t._e():a("div",{staticClass:"analysis-placeholder"},[a("div",{staticClass:"placeholder-hero"},[t._m(3),a("div",{staticClass:"hero-body"},[a("div",{staticClass:"hero-badge"},[t._v("AI-POWERED")]),a("h2",{staticClass:"hero-title"},[t._v(t._s(t.$t("aiAssetAnalysis.placeholder.title")))]),a("p",{staticClass:"hero-subtitle"},[t._v(t._s(t.$t("aiAssetAnalysis.placeholder.subtitle")))]),a("div",{staticClass:"hero-stats"},[a("div",{staticClass:"hstat"},[a("div",{staticClass:"hstat-icon"},[a("a-icon",{attrs:{type:"line-chart"}})],1),a("div",{staticClass:"hstat-body"},[a("span",{staticClass:"hstat-val"},[t._v(t._s(t.$t("aiAssetAnalysis.placeholder.feature1")))]),a("span",{staticClass:"hstat-label"},[t._v(t._s(t.$t("aiAssetAnalysis.placeholder.feature1Desc")))])])]),a("div",{staticClass:"hstat"},[a("div",{staticClass:"hstat-icon"},[a("a-icon",{attrs:{type:"dashboard"}})],1),a("div",{staticClass:"hstat-body"},[a("span",{staticClass:"hstat-val"},[t._v(t._s(t.$t("aiAssetAnalysis.placeholder.feature2")))]),a("span",{staticClass:"hstat-label"},[t._v(t._s(t.$t("aiAssetAnalysis.placeholder.feature2Desc")))])])]),a("div",{staticClass:"hstat"},[a("div",{staticClass:"hstat-icon"},[a("a-icon",{attrs:{type:"apartment"}})],1),a("div",{staticClass:"hstat-body"},[a("span",{staticClass:"hstat-val"},[t._v(t._s(t.$t("aiAssetAnalysis.placeholder.feature3")))]),a("span",{staticClass:"hstat-label"},[t._v(t._s(t.$t("aiAssetAnalysis.placeholder.feature3Desc")))])])])]),a("div",{staticClass:"hero-cta"},[a("a-button",{attrs:{type:"primary",size:"large",icon:"plus"},on:{click:function(a){t.showAddStockModal=!0}}},[t._v(" "+t._s(t.$t("dashboard.analysis.watchlist.add"))+" ")]),a("a-button",{attrs:{size:"large",icon:"thunderbolt",disabled:!t.selectedSymbol},on:{click:t.startFastAnalysis}},[t._v(" "+t._s(t.$t("fastAnalysis.startAnalysis"))+" ")])],1),a("p",{staticClass:"hero-hint"},[t._v(t._s(t.$t("aiAssetAnalysis.placeholder.quickStart")))])])])]),t.analysisResult||t.analyzing||t.analysisError?a("FastAnalysisReport",{attrs:{result:t.analysisResult,loading:t.analyzing,error:t.analysisError,"error-tone":t.analysisErrorTone},on:{retry:t.startFastAnalysis}}):t._e()],1)]),a("div",{staticClass:"watchlist-panel"},[a("div",{staticClass:"panel-header"},[a("span",{staticClass:"panel-title"},[a("a-icon",{attrs:{type:"star",theme:"filled"}}),t._v(" "+t._s(t.$t("dashboard.analysis.watchlist.title")))],1),a("span",{staticClass:"panel-header-actions"},[a("a-tooltip",{attrs:{title:t.$t("aiAssetAnalysis.tasks.manage")}},[a("a-badge",{attrs:{count:t.monitors.length,offset:[-2,2],"number-style":{fontSize:"9px",minWidth:"14px",height:"14px",lineHeight:"14px",padding:"0 3px"}}},[a("a-icon",{staticClass:"panel-header-icon",attrs:{type:"unordered-list"},on:{click:function(a){t.showTaskDrawer=!0}}})],1)],1),a("a-tooltip",{attrs:{title:t.$t("aiAssetAnalysis.batch.schedule")}},[a("a-icon",{staticClass:"panel-header-icon",attrs:{type:"schedule"},on:{click:t.toggleBatchMode}})],1),a("a-icon",{staticClass:"panel-header-icon",attrs:{type:"plus"},on:{click:function(a){t.showAddStockModal=!0}}})],1)]),t.watchlist&&t.watchlist.length>0?a("div",{staticClass:"panel-summary"},[a("div",{staticClass:"summary-chip"},[a("span",{staticClass:"sc-num"},[t._v(t._s(t.watchlist.length))]),a("span",{staticClass:"sc-label"},[t._v(t._s(t.$t("aiAssetAnalysis.watchlist.totalAssets")))])]),t.watchlistPositionCount>0?a("div",{staticClass:"summary-chip"},[a("span",{staticClass:"sc-num"},[t._v(t._s(t.watchlistPositionCount))]),a("span",{staticClass:"sc-label"},[t._v(t._s(t.$t("aiAssetAnalysis.watchlist.positionCount")))])]):t._e(),t.watchlistTaskCount>0?a("div",{staticClass:"summary-chip"},[a("span",{staticClass:"sc-num"},[t._v(t._s(t.watchlistTaskCount))]),a("span",{staticClass:"sc-label"},[t._v(t._s(t.$t("aiAssetAnalysis.watchlist.taskCount")))])]):t._e(),0!==t.watchlistTotalPnl?a("div",{staticClass:"summary-chip pnl"},[a("span",{staticClass:"sc-num",class:t.watchlistTotalPnl>=0?"up":"down"},[t._v(t._s(t.watchlistTotalPnl>=0?"+":"")+t._s(t.formatNum(t.watchlistTotalPnl)))]),a("span",{staticClass:"sc-label"},[t._v("P&L")])]):t._e()]):t._e(),t.batchMode?a("div",{staticClass:"batch-bar"},[a("a-checkbox",{staticClass:"batch-all-cb",attrs:{checked:t.batchSelectedAll,indeterminate:t.batchIndeterminate},on:{change:t.onBatchSelectAll}},[t._v(" "+t._s(t.$t("aiAssetAnalysis.batch.selectAll"))+" ")]),a("a-button",{attrs:{type:"primary",size:"small",icon:"clock-circle",disabled:0===t.batchSelectedKeys.length},on:{click:t.openBatchScheduleModal}},[t._v(" "+t._s(t.$t("aiAssetAnalysis.batch.schedule"))+" "),t.batchSelectedKeys.length>0?a("span",[t._v("("+t._s(t.batchSelectedKeys.length)+")")]):t._e()]),a("a-button",{attrs:{size:"small"},on:{click:t.toggleBatchMode}},[t._v(t._s(t.$t("common.cancel")))])],1):t._e(),a("div",{staticClass:"watchlist-list"},[t._l(t.watchlist||[],function(s){var e,i,n;return a("div",{key:"wl-".concat(s.market,"-").concat(s.symbol),staticClass:"wl-card",class:{active:t.selectedSymbol==="".concat(s.market,":").concat(s.symbol)},on:{click:function(a){return t.selectWatchlistItem(s)}}},[t.batchMode?a("a-checkbox",{staticClass:"wl-card-cb",attrs:{checked:t.batchSelectedKeys.includes("".concat(s.market,":").concat(s.symbol))},on:{change:function(a){return t.onBatchItemToggle(s,a)}},nativeOn:{click:function(t){t.stopPropagation()}}}):t._e(),a("div",{staticClass:"wl-card-body",class:{"with-cb":t.batchMode}},[a("div",{staticClass:"wl-row-main"},[a("span",{staticClass:"wl-symbol"},[t._v(t._s(s.symbol))]),a("span",{staticClass:"wl-market"},[t._v(t._s(t.getMarketName(s.market)))]),a("span",{staticClass:"wl-spacer"}),t.watchlistPrices["".concat(s.market,":").concat(s.symbol)]?[a("span",{staticClass:"wl-price"},[t._v(t._s(t.formatPrice(t.watchlistPrices["".concat(s.market,":").concat(s.symbol)].price)))]),a("span",{staticClass:"wl-change",class:((null===(e=t.watchlistPrices["".concat(s.market,":").concat(s.symbol)])||void 0===e?void 0:e.change)||0)>=0?"up":"down"},[t._v(" "+t._s(((null===(i=t.watchlistPrices["".concat(s.market,":").concat(s.symbol)])||void 0===i?void 0:i.change)||0)>=0?"+":"")+t._s(t.formatNum(null===(n=t.watchlistPrices["".concat(s.market,":").concat(s.symbol)])||void 0===n?void 0:n.change))+"% ")])]:t._e()],2),t.positionSummaryMap["".concat(s.market,":").concat(s.symbol)]?a("div",{staticClass:"wl-row-pnl"},[a("span",{staticClass:"wl-pnl-qty"},[t._v(t._s(t.formatNum(t.positionSummaryMap["".concat(s.market,":").concat(s.symbol)].quantity,4))+" @ "+t._s(t.formatPrice(t.positionSummaryMap["".concat(s.market,":").concat(s.symbol)].avgEntry||0)))]),a("span",{staticClass:"wl-pnl-val",class:t.positionSummaryMap["".concat(s.market,":").concat(s.symbol)].pnl>=0?"up":"down"},[t._v(" "+t._s(t.positionSummaryMap["".concat(s.market,":").concat(s.symbol)].pnl>=0?"+":"")+t._s(t.formatNum(t.positionSummaryMap["".concat(s.market,":").concat(s.symbol)].pnl||0))+" ("+t._s(t.positionSummaryMap["".concat(s.market,":").concat(s.symbol)].pnlPercent>=0?"+":"")+t._s(t.formatNum(t.positionSummaryMap["".concat(s.market,":").concat(s.symbol)].pnlPercent||0))+"%) ")])]):t._e(),t.getMonitorMeta(s)?a("div",{staticClass:"wl-row-task"},[a("span",{staticClass:"wl-task-badge",class:t.getMonitorMeta(s).activeCount>0?"active":"paused",on:{click:function(a){return a.stopPropagation(),t.toggleStockMonitor(s)}}},[a("a-icon",{attrs:{type:t.getMonitorMeta(s).activeCount>0?"sync":"pause-circle",spin:t.getMonitorMeta(s).activeCount>0}}),t._v(" "+t._s(t.getMonitorMeta(s).activeCount>0?t.$t("aiAssetAnalysis.monitor.running"):t.$t("aiAssetAnalysis.monitor.paused"))+" ")],1),t.getMonitorMeta(s).nextRunAtText?a("span",{staticClass:"wl-task-next"},[t._v(t._s(t.getMonitorMeta(s).nextRunAtText))]):t._e()]):t._e()]),a("div",{staticClass:"wl-card-hover-actions"},[a("a-tooltip",{attrs:{title:t.$t("aiAssetAnalysis.position.quickAdd")}},[a("span",{staticClass:"wl-hover-btn",on:{click:function(a){return a.stopPropagation(),t.openPositionModal(s)}}},[a("a-icon",{attrs:{type:"wallet"}})],1)]),a("a-tooltip",{attrs:{title:t.$t("aiAssetAnalysis.monitor.quickTask")}},[a("span",{staticClass:"wl-hover-btn",on:{click:function(a){return a.stopPropagation(),t.openMonitorModal(s)}}},[a("a-icon",{attrs:{type:"clock-circle"}})],1)]),a("span",{staticClass:"wl-hover-btn danger",on:{click:function(a){return a.stopPropagation(),t.removeFromWatchlist(s)}}},[a("a-icon",{attrs:{type:"delete"}})],1)],1)],1)}),t.watchlist&&0!==t.watchlist.length?t._e():a("div",{staticClass:"watchlist-empty"},[a("div",{staticClass:"we-icon"},[a("a-icon",{attrs:{type:"star"}})],1),a("p",[t._v(t._s(t.$t("dashboard.analysis.empty.noWatchlist")))]),a("a-button",{attrs:{type:"primary",size:"small",icon:"plus"},on:{click:function(a){t.showAddStockModal=!0}}},[t._v(" "+t._s(t.$t("dashboard.analysis.watchlist.add"))+" ")])],1)],2)])])]),a("a-modal",{attrs:{title:t.$t("dashboard.analysis.modal.addStock.title"),visible:t.showAddStockModal,confirmLoading:t.addingStock,width:"600px",wrapClassName:t.isDarkTheme?"qd-dark-modal":"",okText:t.$t("dashboard.analysis.modal.addStock.confirm"),cancelText:t.$t("dashboard.analysis.modal.addStock.cancel")},on:{ok:t.handleAddStock,cancel:t.handleCloseAddStockModal}},[a("div",{staticClass:"add-stock-modal-content"},[a("a-tabs",{staticClass:"market-tabs",on:{change:t.handleMarketTabChange},model:{value:t.selectedMarketTab,callback:function(a){t.selectedMarketTab=a},expression:"selectedMarketTab"}},t._l(t.marketTypes,function(s){return a("a-tab-pane",{key:s.value,attrs:{tab:t.$t(s.i18nKey||"dashboard.analysis.market.".concat(s.value))}})}),1),a("div",{staticClass:"symbol-search-section"},[a("a-input-search",{attrs:{placeholder:t.$t("dashboard.analysis.modal.addStock.searchOrInputPlaceholder"),loading:t.searchingSymbols,size:"large","allow-clear":""},on:{search:t.handleSearchOrInput,change:t.handleSymbolSearchInput},model:{value:t.symbolSearchKeyword,callback:function(a){t.symbolSearchKeyword=a},expression:"symbolSearchKeyword"}},[a("a-button",{attrs:{slot:"enterButton",type:"primary",icon:"search"},slot:"enterButton"},[t._v(" "+t._s(t.$t("dashboard.analysis.modal.addStock.search"))+" ")])],1)],1),t.symbolSearchResults.length>0?a("div",{staticClass:"search-results-section"},[a("div",{staticClass:"section-title"},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"search"}}),t._v(" "+t._s(t.$t("dashboard.analysis.modal.addStock.searchResults"))+" ")],1),a("a-list",{staticClass:"symbol-list",attrs:{"data-source":t.symbolSearchResults,loading:t.searchingSymbols,size:"small"},scopedSlots:t._u([{key:"renderItem",fn:function(s){return a("a-list-item",{staticClass:"symbol-list-item",on:{click:function(a){return t.selectSymbol(s)}}},[a("a-list-item-meta",[a("template",{slot:"title"},[a("div",{staticClass:"symbol-item-content"},[a("span",{staticClass:"symbol-code"},[t._v(t._s(s.symbol))]),a("span",{staticClass:"symbol-name"},[t._v(t._s(s.name))]),s.exchange?a("a-tag",{staticStyle:{"margin-left":"8px"},attrs:{size:"small",color:"blue"}},[t._v(" "+t._s(s.exchange)+" ")]):t._e()],1)])],2)],1)}}],null,!1,1074844145)})],1):t._e(),a("div",{staticClass:"hot-symbols-section"},[a("div",{staticClass:"section-title"},[a("a-icon",{staticStyle:{color:"#ff4d4f","margin-right":"4px"},attrs:{type:"fire"}}),t._v(" "+t._s(t.$t("dashboard.analysis.modal.addStock.hotSymbols"))+" ")],1),a("a-spin",{attrs:{spinning:t.loadingHotSymbols}},[t.hotSymbols.length>0?a("a-list",{staticClass:"symbol-list",attrs:{"data-source":t.hotSymbols,size:"small"},scopedSlots:t._u([{key:"renderItem",fn:function(s){return a("a-list-item",{staticClass:"symbol-list-item",on:{click:function(a){return t.selectSymbol(s)}}},[a("a-list-item-meta",[a("template",{slot:"title"},[a("div",{staticClass:"symbol-item-content"},[a("span",{staticClass:"symbol-code"},[t._v(t._s(s.symbol))]),a("span",{staticClass:"symbol-name"},[t._v(t._s(s.name))]),s.exchange?a("a-tag",{staticStyle:{"margin-left":"8px"},attrs:{size:"small",color:"orange"}},[t._v(" "+t._s(s.exchange)+" ")]):t._e()],1)])],2)],1)}}],null,!1,2177647935)}):a("a-empty",{attrs:{description:t.$t("dashboard.analysis.modal.addStock.noHotSymbols"),image:!1}})],1)],1),t.selectedSymbolForAdd?a("div",{staticClass:"selected-symbol-section"},[a("a-alert",{attrs:{message:t.$t("dashboard.analysis.modal.addStock.selectedSymbol"),type:"info","show-icon":"",closable:""},on:{close:function(a){t.selectedSymbolForAdd=null}}},[a("template",{slot:"description"},[a("div",{staticClass:"selected-symbol-info"},[a("a-tag",{staticStyle:{"margin-right":"8px"},attrs:{color:t.getMarketColor(t.selectedSymbolForAdd.market)}},[t._v(" "+t._s(t.$t("dashboard.analysis.market.".concat(t.selectedSymbolForAdd.market)))+" ")]),a("strong",[t._v(t._s(t.selectedSymbolForAdd.symbol))]),t.selectedSymbolForAdd.name?a("span",{staticStyle:{color:"#999","margin-left":"8px"}},[t._v(t._s(t.selectedSymbolForAdd.name))]):t._e()],1)])],2)],1):t._e()],1)]),a("a-modal",{attrs:{visible:t.showPositionModal,title:"".concat(t.$i18n&&"zh-CN"===t.$i18n.locale?"创建持仓(虚拟仓)":"Create Position (Virtual)"," - ").concat(t.targetStockForOps?t.targetStockForOps.symbol:""),wrapClassName:t.isDarkTheme?"qd-dark-modal":""},on:{ok:t.savePosition,cancel:function(a){t.showPositionModal=!1}}},[a("a-form",{attrs:{layout:"vertical"}},[a("a-form-item",{attrs:{label:t.$t("portfolio.positions.side")||"Direction"}},[a("a-select",{model:{value:t.positionForm.side,callback:function(a){t.$set(t.positionForm,"side",a)},expression:"positionForm.side"}},[a("a-select-option",{attrs:{value:"long"}},[t._v(t._s(t.$t("portfolio.positions.long")||"Long"))]),a("a-select-option",{attrs:{value:"short"}},[t._v(t._s(t.$t("portfolio.positions.short")||"Short"))])],1)],1),a("a-form-item",{attrs:{label:t.$i18n&&"zh-CN"===t.$i18n.locale?"数量":"Quantity"}},[a("a-input-number",{staticStyle:{width:"100%"},attrs:{min:0,step:.01},model:{value:t.positionForm.quantity,callback:function(a){t.$set(t.positionForm,"quantity",a)},expression:"positionForm.quantity"}})],1),a("a-form-item",{attrs:{label:t.$i18n&&"zh-CN"===t.$i18n.locale?"买入单价":"Entry Price"}},[a("a-input-number",{staticStyle:{width:"100%"},attrs:{min:0,step:.01},model:{value:t.positionForm.entryPrice,callback:function(a){t.$set(t.positionForm,"entryPrice",a)},expression:"positionForm.entryPrice"}})],1)],1)],1),a("a-modal",{attrs:{visible:t.showMonitorModal,title:"".concat(t.$t("aiAssetAnalysis.monitor.quickTask")," - ").concat(t.targetStockForOps?t.targetStockForOps.symbol:""),wrapClassName:t.isDarkTheme?"qd-dark-modal":""},on:{ok:t.saveMonitorTask,cancel:function(a){t.showMonitorModal=!1}}},[a("a-form",{attrs:{layout:"vertical"}},[a("a-form-item",{attrs:{label:t.$t("aiAssetAnalysis.batch.intervalLabel")}},[a("a-select",{staticStyle:{width:"100%"},model:{value:t.monitorForm.interval_min,callback:function(a){t.$set(t.monitorForm,"interval_min",a)},expression:"monitorForm.interval_min"}},[a("a-select-option",{attrs:{value:60}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval1h")))]),a("a-select-option",{attrs:{value:240}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval4h")))]),a("a-select-option",{attrs:{value:720}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval12h")))]),a("a-select-option",{attrs:{value:1440}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval24h")))])],1)],1),a("a-form-item",{attrs:{label:t.$t("aiAssetAnalysis.batch.notifyLabel")}},[a("a-checkbox-group",{staticStyle:{width:"100%"},model:{value:t.monitorForm.notify_channels,callback:function(a){t.$set(t.monitorForm,"notify_channels",a)},expression:"monitorForm.notify_channels"}},[a("a-row",{attrs:{gutter:8}},[a("a-col",{attrs:{span:8}},[a("a-checkbox",{attrs:{value:"email"}},[a("a-icon",{attrs:{type:"mail"}}),t._v(" Email")],1)],1),a("a-col",{attrs:{span:8}},[a("a-checkbox",{attrs:{value:"telegram"}},[a("a-icon",{attrs:{type:"send"}}),t._v(" Telegram")],1)],1),a("a-col",{attrs:{span:8}},[a("a-checkbox",{attrs:{value:"webhook"}},[a("a-icon",{attrs:{type:"api"}}),t._v(" Webhook")],1)],1)],1)],1)],1),a("a-alert",{attrs:{message:t.$t("aiAssetAnalysis.monitor.tip"),type:"info","show-icon":""}})],1)],1),a("a-modal",{attrs:{visible:t.showBatchScheduleModal,title:t.$t("aiAssetAnalysis.batch.scheduleTitle"),confirmLoading:t.batchRunning,width:"520px",wrapClassName:t.isDarkTheme?"qd-dark-modal":""},on:{ok:t.saveBatchSchedule,cancel:function(a){t.showBatchScheduleModal=!1}}},[a("div",{staticClass:"batch-modal-summary"},[a("p",[t._v(t._s(t.$t("aiAssetAnalysis.batch.scheduleDesc",{count:t.batchSelectedKeys.length})))]),a("div",{staticClass:"batch-symbols-preview"},t._l(t.batchSelectedKeys,function(s){return a("a-tag",{key:s,staticStyle:{"margin-bottom":"4px"},attrs:{color:"blue"}},[t._v(t._s(s.split(":")[1]))])}),1)]),a("a-form",{attrs:{layout:"vertical"}},[a("a-form-item",{attrs:{label:t.$t("aiAssetAnalysis.batch.intervalLabel")}},[a("a-select",{staticStyle:{width:"100%"},model:{value:t.batchScheduleForm.interval_min,callback:function(a){t.$set(t.batchScheduleForm,"interval_min",a)},expression:"batchScheduleForm.interval_min"}},[a("a-select-option",{attrs:{value:60}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval1h")))]),a("a-select-option",{attrs:{value:240}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval4h")))]),a("a-select-option",{attrs:{value:720}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval12h")))]),a("a-select-option",{attrs:{value:1440}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval24h")))])],1)],1),a("a-form-item",{attrs:{label:t.$t("aiAssetAnalysis.batch.notifyLabel")}},[a("a-checkbox-group",{staticStyle:{width:"100%"},model:{value:t.batchScheduleForm.notify_channels,callback:function(a){t.$set(t.batchScheduleForm,"notify_channels",a)},expression:"batchScheduleForm.notify_channels"}},[a("a-row",{attrs:{gutter:8}},[a("a-col",{attrs:{span:8}},[a("a-checkbox",{attrs:{value:"email"}},[a("a-icon",{attrs:{type:"mail"}}),t._v(" Email")],1)],1),a("a-col",{attrs:{span:8}},[a("a-checkbox",{attrs:{value:"telegram"}},[a("a-icon",{attrs:{type:"send"}}),t._v(" Telegram")],1)],1),a("a-col",{attrs:{span:8}},[a("a-checkbox",{attrs:{value:"webhook"}},[a("a-icon",{attrs:{type:"api"}}),t._v(" Webhook")],1)],1)],1)],1)],1)],1),a("a-alert",{staticStyle:{"margin-top":"8px"},attrs:{message:t.$t("aiAssetAnalysis.batch.scheduleTip"),type:"info","show-icon":""}})],1),a("a-drawer",{attrs:{title:t.$t("aiAssetAnalysis.tasks.manage"),visible:t.showTaskDrawer,width:"420",placement:"right",wrapClassName:t.isDarkTheme?"qd-dark-drawer":""},on:{close:function(a){t.showTaskDrawer=!1}}},[0===t.monitors.length?a("div",{staticClass:"task-drawer-empty"},[a("a-icon",{staticStyle:{"font-size":"40px",color:"#ccc"},attrs:{type:"inbox"}}),a("p",[t._v(t._s(t.$t("aiAssetAnalysis.tasks.empty")))])],1):a("div",{staticClass:"task-drawer-list"},t._l(t.monitors,function(s){return a("div",{key:s.id,staticClass:"task-item"},[a("div",{staticClass:"task-item-header"},[a("span",{staticClass:"task-item-name"},[t._v(t._s(s.name||"AI Task"))]),a("a-tag",{attrs:{color:s.is_active?"green":"default",size:"small"}},[t._v(" "+t._s(s.is_active?t.$t("aiAssetAnalysis.monitor.running"):t.$t("aiAssetAnalysis.monitor.paused"))+" ")])],1),a("div",{staticClass:"task-item-meta"},[s.config&&s.config.run_interval_minutes?a("span",[a("a-icon",{attrs:{type:"clock-circle"}}),t._v(" "+t._s(t.formatIntervalText(s.config.run_interval_minutes))+" ")],1):t._e(),s.next_run_at?a("span",[a("a-icon",{attrs:{type:"calendar"}}),t._v(" "+t._s(t._formatNextRunText(s.next_run_at))+" ")],1):t._e()]),a("div",{staticClass:"task-item-actions"},[a("a-button",{attrs:{size:"small",type:s.is_active?"default":"primary",icon:"poweroff"},on:{click:function(a){return t.handleToggleTask(s)}}},[t._v(" "+t._s(s.is_active?t.$t("aiAssetAnalysis.tasks.pause"):t.$t("aiAssetAnalysis.tasks.resume"))+" ")]),a("a-button",{attrs:{size:"small",icon:"edit"},on:{click:function(a){return t.handleEditTask(s)}}},[t._v(t._s(t.$t("aiAssetAnalysis.tasks.edit")))]),a("a-popconfirm",{attrs:{title:t.$t("aiAssetAnalysis.tasks.deleteConfirm"),okText:t.$t("common.confirm"),cancelText:t.$t("common.cancel")},on:{confirm:function(a){return t.handleDeleteTask(s)}}},[a("a-button",{attrs:{size:"small",type:"danger",icon:"delete"}},[t._v(t._s(t.$t("aiAssetAnalysis.tasks.delete")))])],1)],1)])}),0)]),a("a-modal",{attrs:{visible:t.showEditTaskModal,title:t.$t("aiAssetAnalysis.tasks.edit"),confirmLoading:t.editTaskLoading,wrapClassName:t.isDarkTheme?"qd-dark-modal":""},on:{ok:t.saveEditTask,cancel:function(a){t.showEditTaskModal=!1}}},[t.editTaskForm?a("a-form",{attrs:{layout:"vertical"}},[a("a-form-item",{attrs:{label:t.$t("aiAssetAnalysis.tasks.name")}},[a("a-input",{model:{value:t.editTaskForm.name,callback:function(a){t.$set(t.editTaskForm,"name",a)},expression:"editTaskForm.name"}})],1),a("a-form-item",{attrs:{label:t.$t("aiAssetAnalysis.batch.intervalLabel")}},[a("a-select",{staticStyle:{width:"100%"},model:{value:t.editTaskForm.interval_min,callback:function(a){t.$set(t.editTaskForm,"interval_min",a)},expression:"editTaskForm.interval_min"}},[a("a-select-option",{attrs:{value:60}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval1h")))]),a("a-select-option",{attrs:{value:240}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval4h")))]),a("a-select-option",{attrs:{value:720}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval12h")))]),a("a-select-option",{attrs:{value:1440}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval24h")))])],1)],1),a("a-form-item",{attrs:{label:t.$t("aiAssetAnalysis.batch.notifyLabel")}},[a("a-checkbox-group",{staticStyle:{width:"100%"},model:{value:t.editTaskForm.notify_channels,callback:function(a){t.$set(t.editTaskForm,"notify_channels",a)},expression:"editTaskForm.notify_channels"}},[a("a-row",{attrs:{gutter:8}},[a("a-col",{attrs:{span:8}},[a("a-checkbox",{attrs:{value:"email"}},[a("a-icon",{attrs:{type:"mail"}}),t._v(" Email")],1)],1),a("a-col",{attrs:{span:8}},[a("a-checkbox",{attrs:{value:"telegram"}},[a("a-icon",{attrs:{type:"send"}}),t._v(" Telegram")],1)],1),a("a-col",{attrs:{span:8}},[a("a-checkbox",{attrs:{value:"webhook"}},[a("a-icon",{attrs:{type:"api"}}),t._v(" Webhook")],1)],1)],1)],1)],1)],1):t._e()],1),a("a-modal",{attrs:{title:t.$t("dashboard.analysis.modal.history.title"),visible:t.showHistoryModal,footer:null,width:"800px",bodyStyle:{maxHeight:"60vh",overflowY:"auto"},wrapClassName:t.isDarkTheme?"qd-dark-modal":""},on:{cancel:function(a){t.showHistoryModal=!1}}},[a("a-spin",{attrs:{spinning:t.historyLoading}},[a("a-list",{attrs:{"data-source":t.historyList,pagination:{current:t.historyPage,pageSize:t.historyPageSize,total:t.historyTotal,onChange:function(a){t.historyPage=a,t.loadHistoryList()},showSizeChanger:!0,pageSizeOptions:["10","20","50"],onShowSizeChange:function(a,s){t.historyPageSize=s,t.historyPage=1,t.loadHistoryList()}}},scopedSlots:t._u([{key:"renderItem",fn:function(s){return a("a-list-item",{},[a("a-list-item-meta",[a("template",{slot:"title"},[a("div",{staticStyle:{display:"flex","align-items":"center","justify-content":"space-between"}},[a("div",[a("a-tag",{staticStyle:{"margin-right":"8px"},attrs:{color:t.getMarketColor(s.market)}},[t._v(" "+t._s(t.getMarketName(s.market))+" ")]),a("strong",[t._v(t._s(s.symbol))]),a("a-tag",{staticStyle:{"margin-left":"12px"},attrs:{color:"BUY"===s.decision?"green":"SELL"===s.decision?"red":"blue"}},[t._v(" "+t._s(s.decision)+" ")]),a("a-tag",{staticStyle:{"margin-left":"8px"},attrs:{color:t.getStatusColor(s.status||"completed")}},[t._v(" "+t._s(t.getStatusText(s.status||"completed"))+" ")]),a("span",{staticStyle:{color:"#999","margin-left":"8px","font-size":"12px"}},[t._v(" "+t._s(t.$t("fastAnalysis.confidence"))+": "+t._s(s.confidence)+"% ")])],1),a("div",[a("a-button",{attrs:{type:"link",size:"small",icon:"eye",disabled:"processing"===(s.status||"").toLowerCase()},on:{click:function(a){return t.viewHistoryResult(s)}}},[t._v(" "+t._s(t.$t("dashboard.analysis.modal.history.viewResult"))+" ")]),a("a-popconfirm",{attrs:{title:t.$t("dashboard.analysis.modal.history.deleteConfirm"),"ok-text":t.$t("common.confirm"),"cancel-text":t.$t("common.cancel")},on:{confirm:function(a){return t.deleteHistoryItem(s)}}},[a("a-button",{staticStyle:{color:"#ff4d4f"},attrs:{type:"link",size:"small",icon:"delete"}},[t._v(" "+t._s(t.$t("dashboard.analysis.modal.history.delete"))+" ")])],1)],1)])]),a("template",{slot:"description"},[a("div",{staticStyle:{color:"#666","font-size":"12px"}},[s.price?a("span",[t._v("$"+t._s(t.formatNumber(s.price)))]):t._e(),s.summary?a("span",{staticStyle:{"margin-left":"8px"}},[t._v(t._s(s.summary.substring(0,80))+t._s(s.summary.length>80?"...":""))]):t._e()]),s.created_at?a("div",{staticStyle:{color:"#999","font-size":"12px","margin-top":"4px"}},[t._v(" "+t._s(t.formatIsoTime(s.created_at))+" ")]):t._e()])],2)],1)}}])}),t.historyLoading||0!==t.historyList.length?t._e():a("a-empty",{attrs:{description:t.$t("dashboard.analysis.empty.noHistory")}})],1)],1)],1)},i=[function(){var t=this,a=t._self._c;return a("div",{staticClass:"indicator-box skeleton-box"},[a("span",{staticClass:"skeleton-text short"}),a("span",{staticClass:"skeleton-text"})])},function(){var t=this,a=t._self._c;return a("div",{staticClass:"indicator-box skeleton-box"},[a("span",{staticClass:"skeleton-text short"}),a("span",{staticClass:"skeleton-text"})])},function(){var t=this,a=t._self._c;return a("div",{staticClass:"indicator-box skeleton-box"},[a("span",{staticClass:"skeleton-text short"}),a("span",{staticClass:"skeleton-text"})])},function(){var t=this,a=t._self._c;return a("div",{staticClass:"hero-bg"},[a("div",{staticClass:"hero-bg-circle c1"}),a("div",{staticClass:"hero-bg-circle c2"}),a("div",{staticClass:"hero-bg-grid"})])}],n=s(44735),r=s(21560),o=s(57532),l=s(2403),c=s(15863),d=s(81127),u=s(56252),m=s(76338),h=(s(2008),s(50113),s(62062),s(2892),s(32637),s(40150),s(79432),s(26099),s(16034),s(31415),s(47764),s(42762),s(23500),s(62953),s(95353)),p=s(505),v=s(35038),y=s(24364),f=s(75769),b="/api/fast-analysis";function g(t){return(0,f.Ay)({url:"".concat(b,"/analyze"),method:"post",data:t,timeout:3e5})}function _(t){return(0,f.Ay)({url:"".concat(b,"/history/all"),method:"get",params:t})}function k(t){return(0,f.Ay)({url:"".concat(b,"/history/").concat(t),method:"delete"})}function C(t){return(0,f.Ay)({url:"".concat(b,"/feedback"),method:"post",data:t})}var A=s(44146),S=function(){var t,a,s,e,i,n,r,o,l,c,d,u,m,h,p,v,y,f,b,g,_,k,C=this,A=C._self._c;return A("div",{staticClass:"fast-analysis-report",class:{"theme-dark":C.isDarkTheme}},[C.loading?A("div",{staticClass:"loading-container"},[A("div",{staticClass:"loading-content-pro"},[A("div",{staticClass:"loading-header"},[A("a-icon",{staticClass:"loading-icon-pro",attrs:{type:"thunderbolt"}}),A("span",{staticClass:"loading-title"},[C._v(C._s(C.$t("fastAnalysis.analyzing")))])],1),A("div",{staticClass:"progress-wrapper"},[A("a-progress",{attrs:{percent:C.progressPercent,showInfo:!1,strokeColor:"#1890ff",strokeWidth:8}}),A("span",{staticClass:"progress-text"},[C._v(C._s(C.formatProgress(C.progressPercent))+"%")])],1),A("div",{staticClass:"current-step"},[A("a-icon",{attrs:{type:"loading",spin:""}}),A("span",[C._v(C._s(C.currentStepText))])],1),A("div",{staticClass:"steps-list"},[A("div",{staticClass:"step-item",class:{done:C.step>1,active:1===C.step}},[A("span",{staticClass:"step-dot"}),A("span",{staticClass:"step-text"},[C._v(C._s(C.$t("fastAnalysis.step1")||"获取实时数据"))]),C.step>1?A("a-icon",{staticClass:"step-check",attrs:{type:"check"}}):C._e()],1),A("div",{staticClass:"step-item",class:{done:C.step>2,active:2===C.step}},[A("span",{staticClass:"step-dot"}),A("span",{staticClass:"step-text"},[C._v(C._s(C.$t("fastAnalysis.step2")||"计算技术指标"))]),C.step>2?A("a-icon",{staticClass:"step-check",attrs:{type:"check"}}):C._e()],1),A("div",{staticClass:"step-item",class:{done:C.step>3,active:3===C.step}},[A("span",{staticClass:"step-dot"}),A("span",{staticClass:"step-text"},[C._v(C._s(C.$t("fastAnalysis.step3")||"AI深度分析"))]),C.step>3?A("a-icon",{staticClass:"step-check",attrs:{type:"check"}}):C._e()],1),A("div",{staticClass:"step-item",class:{done:C.step>4,active:4===C.step}},[A("span",{staticClass:"step-dot"}),A("span",{staticClass:"step-text"},[C._v(C._s(C.$t("fastAnalysis.step4")||"生成报告"))]),C.step>4?A("a-icon",{staticClass:"step-check",attrs:{type:"check"}}):C._e()],1)]),A("div",{staticClass:"loading-footer"},[A("span",{staticClass:"elapsed-time"},[C._v(C._s(C.elapsedTimeText))])])])]):C.error?A("div",{staticClass:"error-container"},[A("a-result",{attrs:{status:"warning"===C.errorTone?"warning":"error",title:C.errorTitle,"sub-title":C.error},scopedSlots:C._u([{key:"extra",fn:function(){return[A("a-button",{attrs:{type:"primary"},on:{click:function(t){return C.$emit("retry")}}},[C._v(" "+C._s(C.$t("fastAnalysis.retry"))+" ")])]},proxy:!0}])})],1):C.result?A("div",{staticClass:"result-container"},[A("div",{staticClass:"decision-card",class:C.decisionClass},[A("div",{staticClass:"decision-main"},[A("div",{staticClass:"decision-badge"},[A("a-icon",{attrs:{type:C.decisionIcon}}),A("span",{staticClass:"decision-text"},[C._v(C._s(C.result.decision))])],1),A("div",{staticClass:"confidence-ring"},[A("a-progress",{attrs:{type:"circle",percent:C.result.confidence,width:80,strokeColor:C.confidenceColor},scopedSlots:C._u([{key:"format",fn:function(t){return[A("span",{staticClass:"confidence-value"},[C._v(C._s(t)+"%")])]}}])}),A("div",{staticClass:"confidence-label"},[C._v(C._s(C.$t("fastAnalysis.confidence")))])],1)]),A("div",{staticClass:"decision-summary"},[C._v(" "+C._s(C.result.summary)+" ")]),C.consensusBlock?A("div",{staticClass:"consensus-strip"},[A("div",{staticClass:"consensus-strip-title"},[A("a-icon",{attrs:{type:"cluster"}}),C._v(" "+C._s(C.$t("fastAnalysis.consensusTitle"))+" ")],1),A("div",{staticClass:"consensus-strip-metrics"},[A("span",{staticClass:"cm-item"},[A("em",[C._v(C._s(C.$t("fastAnalysis.consensusDecision")))]),C._v(" "+C._s(C.consensusBlock.consensus_decision)+" ")]),A("span",{staticClass:"cm-item"},[A("em",[C._v(C._s(C.$t("fastAnalysis.consensusScore")))]),C._v(" "+C._s(C.formatConsensusNum(C.consensusBlock.consensus_score))+" ")]),null!=C.consensusBlock.agreement_ratio?A("span",{staticClass:"cm-item"},[A("em",[C._v(C._s(C.$t("fastAnalysis.consensusAgreement")))]),C._v(" "+C._s(C.formatAgreementPct(C.consensusBlock.agreement_ratio))+" ")]):C._e()])]):C._e()]),A("div",{staticClass:"price-info-row"},[A("div",{staticClass:"price-card current"},[A("div",{staticClass:"price-label"},[C._v(C._s(C.$t("fastAnalysis.currentPrice")))]),A("div",{staticClass:"price-value"},[C._v("$"+C._s(C.formatPrice(null===(t=C.result.market_data)||void 0===t?void 0:t.current_price)))]),A("div",{staticClass:"price-change",class:(null===(a=C.result.market_data)||void 0===a?void 0:a.change_24h)>=0?"positive":"negative"},[C._v(" "+C._s((null===(s=C.result.market_data)||void 0===s?void 0:s.change_24h)>=0?"+":"")+C._s(C.formatNumber(null===(e=C.result.market_data)||void 0===e?void 0:e.change_24h,2))+"% ")])]),A("div",{staticClass:"price-card entry"},[A("div",{staticClass:"price-label"},[C._v(C._s(C.$t("fastAnalysis.entryPrice")))]),A("div",{staticClass:"price-value"},[C._v("$"+C._s(C.formatPrice(C.tradingPlan.entry_price)))])]),A("div",{staticClass:"price-card stop"},[A("div",{staticClass:"price-label"},[C._v(C._s(C.$t("fastAnalysis.stopLoss")))]),A("div",{staticClass:"price-value negative"},[C._v("$"+C._s(C.formatPrice(C.tradingPlan.stop_loss)))]),A("div",{staticClass:"price-hint"},[A("a-tooltip",{attrs:{title:C.stopLossHintText}},[A("a-icon",{attrs:{type:"info-circle"}}),C._v(" "+C._s(C.$t("fastAnalysis.atrBased"))+" ")],1)],1)]),A("div",{staticClass:"price-card target"},[A("div",{staticClass:"price-label"},[C._v(C._s(C.$t("fastAnalysis.takeProfit")))]),A("div",{staticClass:"price-value positive"},[C._v("$"+C._s(C.formatPrice(C.tradingPlan.take_profit)))]),A("div",{staticClass:"price-hint"},[A("a-tooltip",{attrs:{title:C.takeProfitHintText}},[A("a-icon",{attrs:{type:"info-circle"}}),C._v(" "+C._s(C.$t("fastAnalysis.atrBased"))+" ")],1)],1)])]),C.trendOutlookBlocks.length||C.trendOutlookSummaryText?A("div",{staticClass:"trend-outlook-card"},[A("div",{staticClass:"trend-outlook-header"},[A("a-icon",{attrs:{type:"calendar"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.trendOutlookTitle")))])],1),C.trendOutlookSummaryText?A("div",{staticClass:"trend-outlook-summary"},[C._v(" "+C._s(C.trendOutlookSummaryText)+" ")]):C._e(),C.trendOutlookBlocks.length?A("div",{staticClass:"trend-outlook-grid"},C._l(C.trendOutlookBlocks,function(t){return A("div",{key:t.key,staticClass:"trend-outlook-item"},[A("div",{staticClass:"to-label"},[C._v(C._s(t.label))]),A("div",{staticClass:"to-trend",class:C.outlookTrendClass(t.trend)},[C._v(" "+C._s(C.formatOutlookTrend(t.trend))+" ")]),A("div",{staticClass:"to-meta"},[A("span",{staticClass:"to-score"},[C._v(C._s(null!=t.score?t.score:"--"))]),A("span",{staticClass:"to-str"},[C._v(C._s(t.strength||"--"))])])])}),0):C._e()]):C._e(),A("div",{staticClass:"scores-row"},[A("div",{staticClass:"score-item"},[A("div",{staticClass:"score-header"},[A("a-icon",{attrs:{type:"line-chart"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.technical")))])],1),A("a-progress",{attrs:{percent:(null===(i=C.result.scores)||void 0===i?void 0:i.technical)||50,strokeColor:C.getScoreColor(null===(n=C.result.scores)||void 0===n?void 0:n.technical),showInfo:!1}}),A("div",{staticClass:"score-value"},[C._v(C._s((null===(r=C.result.scores)||void 0===r?void 0:r.technical)||50))])],1),A("div",{staticClass:"score-item"},[A("div",{staticClass:"score-header"},[A("a-icon",{attrs:{type:"bank"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.fundamental")))])],1),A("a-progress",{attrs:{percent:(null===(o=C.result.scores)||void 0===o?void 0:o.fundamental)||50,strokeColor:C.getScoreColor(null===(l=C.result.scores)||void 0===l?void 0:l.fundamental),showInfo:!1}}),A("div",{staticClass:"score-value"},[C._v(C._s((null===(c=C.result.scores)||void 0===c?void 0:c.fundamental)||50))])],1),A("div",{staticClass:"score-item"},[A("div",{staticClass:"score-header"},[A("a-icon",{attrs:{type:"heart"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.sentiment")))])],1),A("a-progress",{attrs:{percent:(null===(d=C.result.scores)||void 0===d?void 0:d.sentiment)||50,strokeColor:C.getScoreColor(null===(u=C.result.scores)||void 0===u?void 0:u.sentiment),showInfo:!1}}),A("div",{staticClass:"score-value"},[C._v(C._s((null===(m=C.result.scores)||void 0===m?void 0:m.sentiment)||50))])],1),A("div",{staticClass:"score-item overall"},[A("div",{staticClass:"score-header"},[A("a-icon",{attrs:{type:"dashboard"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.overall")))])],1),A("a-progress",{attrs:{percent:(null===(h=C.result.scores)||void 0===h?void 0:h.overall)||50,strokeColor:C.getScoreColor(null===(p=C.result.scores)||void 0===p?void 0:p.overall),showInfo:!1}}),A("div",{staticClass:"score-value"},[C._v(C._s((null===(v=C.result.scores)||void 0===v?void 0:v.overall)||50))])],1)]),C.result.detailed_analysis?A("div",{staticClass:"detailed-analysis"},[C.result.detailed_analysis.technical?A("div",{staticClass:"analysis-card technical"},[A("div",{staticClass:"analysis-card-header"},[A("a-icon",{attrs:{type:"line-chart"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.technicalAnalysis")))]),A("a-tag",{attrs:{color:C.getScoreTagColor(null===(y=C.result.scores)||void 0===y?void 0:y.technical)}},[C._v(" "+C._s((null===(f=C.result.scores)||void 0===f?void 0:f.technical)||50)+"分 ")])],1),A("div",{staticClass:"analysis-card-content"},[C._v(" "+C._s(C.result.detailed_analysis.technical)+" ")])]):C._e(),C.result.detailed_analysis.fundamental?A("div",{staticClass:"analysis-card fundamental"},[A("div",{staticClass:"analysis-card-header"},[A("a-icon",{attrs:{type:"bank"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.fundamentalAnalysis")))]),A("a-tag",{attrs:{color:C.getScoreTagColor(null===(b=C.result.scores)||void 0===b?void 0:b.fundamental)}},[C._v(" "+C._s((null===(g=C.result.scores)||void 0===g?void 0:g.fundamental)||50)+"分 ")])],1),A("div",{staticClass:"analysis-card-content"},[C._v(" "+C._s(C.result.detailed_analysis.fundamental)+" ")])]):C._e(),C.result.detailed_analysis.sentiment?A("div",{staticClass:"analysis-card sentiment"},[A("div",{staticClass:"analysis-card-header"},[A("a-icon",{attrs:{type:"heart"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.sentimentAnalysis")))]),A("a-tag",{attrs:{color:C.getScoreTagColor(null===(_=C.result.scores)||void 0===_?void 0:_.sentiment)}},[C._v(" "+C._s((null===(k=C.result.scores)||void 0===k?void 0:k.sentiment)||50)+"分 ")])],1),A("div",{staticClass:"analysis-card-content"},[C._v(" "+C._s(C.result.detailed_analysis.sentiment)+" ")])]):C._e()]):C._e(),A("div",{staticClass:"analysis-details"},[A("div",{staticClass:"detail-section reasons"},[A("div",{staticClass:"section-title"},[A("a-icon",{attrs:{type:"bulb",theme:"twoTone",twoToneColor:"#52c41a"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.keyReasons")))])],1),A("ul",{staticClass:"detail-list"},C._l(C.result.reasons,function(t,a){return A("li",{key:"r-"+a},[C._v(" "+C._s(t)+" ")])}),0)]),A("div",{staticClass:"detail-section risks"},[A("div",{staticClass:"section-title"},[A("a-icon",{attrs:{type:"warning",theme:"twoTone",twoToneColor:"#faad14"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.risks")))])],1),A("ul",{staticClass:"detail-list"},C._l(C.result.risks,function(t,a){return A("li",{key:"k-"+a},[C._v(" "+C._s(t)+" ")])}),0)])]),C.result.indicators&&Object.keys(C.result.indicators).length>0?A("div",{staticClass:"indicators-section"},[A("div",{staticClass:"section-title"},[A("a-icon",{attrs:{type:"stock"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.indicators")))]),A("a-tag",{staticClass:"indicators-pro-badge",attrs:{color:"blue"}},[C._v(C._s(C.$t("fastAnalysis.indicatorsProBadge")))])],1),A("div",{staticClass:"indicators-methodology"},[A("a-icon",{attrs:{type:"experiment"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.indicatorsProSubtitle")))])],1),A("div",{staticClass:"indicators-grid"},[C.result.indicators.rsi?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v("RSI (14)")]),A("div",{staticClass:"indicator-value",class:C.getRsiClass(C.result.indicators.rsi.value)},[C._v(" "+C._s(C.formatNumber(C.result.indicators.rsi.value,1))+" ")]),A("div",{staticClass:"indicator-signal"},[C._v(C._s(C.translateSignal(C.result.indicators.rsi.signal)))])]):C._e(),C.result.indicators.macd?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v("MACD (12,26,9)")]),A("div",{staticClass:"indicator-value",class:"bullish"===C.result.indicators.macd.signal?"bullish":"bearish"===C.result.indicators.macd.signal?"bearish":""},[C._v(" "+C._s(C.translateTrend(C.result.indicators.macd.trend))+" ")]),A("div",{staticClass:"indicator-signal"},[C._v(C._s(C.translateSignal(C.result.indicators.macd.signal)))])]):C._e(),C.result.indicators.moving_averages?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v(C._s(C.$t("fastAnalysis.maTrend")))]),A("div",{staticClass:"indicator-value",class:C.getMaTrendClass(C.result.indicators.moving_averages.trend)},[C._v(" "+C._s(C.translateTrend(C.result.indicators.moving_averages.trend))+" ")])]):C._e(),C.result.indicators.volatility&&null!=C.result.indicators.volatility.atr?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v("ATR (14)")]),A("div",{staticClass:"indicator-value",class:C.getVolatilityClass(C.result.indicators.volatility.level)},[C._v(" $"+C._s(C.formatPrice(C.result.indicators.volatility.atr))+" ")]),A("div",{staticClass:"indicator-signal"},[C._v(C._s(C.$t("fastAnalysis.atrTrueRange")))])]):C._e(),C.result.indicators.bollinger&&null!=C.result.indicators.bollinger.BB_width?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v(C._s(C.$t("fastAnalysis.bbWidth")))]),A("div",{staticClass:"indicator-value"},[C._v(C._s(C.formatNumber(C.result.indicators.bollinger.BB_width,2))+"%")]),A("div",{staticClass:"indicator-signal"},[C._v(C._s(C.$t("fastAnalysis.bbWidthHint")))])]):C._e(),null!=C.result.indicators.price_position?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v(C._s(C.$t("fastAnalysis.rangePct20")))]),A("div",{staticClass:"indicator-value"},[C._v(C._s(C.formatNumber(C.result.indicators.price_position,1))+"%")]),A("div",{staticClass:"indicator-signal"},[C._v(C._s(C.$t("fastAnalysis.rangePct20Hint")))])]):C._e(),null!=C.result.indicators.volume_ratio?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v(C._s(C.$t("fastAnalysis.volumeRatio")))]),A("div",{staticClass:"indicator-value",class:C.volumeRatioClass(C.result.indicators.volume_ratio)},[C._v(" "+C._s(C.formatNumber(C.result.indicators.volume_ratio,2))+"× ")]),A("div",{staticClass:"indicator-signal"},[C._v(C._s(C.$t("fastAnalysis.volumeRatioHint")))])]):C._e(),C.result.indicators.levels?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v(C._s(C.$t("fastAnalysis.support")))]),A("div",{staticClass:"indicator-value"},[C._v("$"+C._s(C.formatPrice(C.result.indicators.levels.support)))])]):C._e(),C.result.indicators.levels?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v(C._s(C.$t("fastAnalysis.resistance")))]),A("div",{staticClass:"indicator-value"},[C._v("$"+C._s(C.formatPrice(C.result.indicators.levels.resistance)))])]):C._e(),C.result.indicators.volatility?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v(C._s(C.$t("fastAnalysis.volatility")))]),A("div",{staticClass:"indicator-value",class:C.getVolatilityClass(C.result.indicators.volatility.level)},[C._v(" "+C._s(C.translateVolatility(C.result.indicators.volatility.level))+" ("+C._s(C.result.indicators.volatility.pct)+"%) ")])]):C._e()]),C.professionalIndicatorRows.length?A("div",{staticClass:"indicators-pro-wrap"},[A("div",{staticClass:"indicators-pro-title"},[A("a-icon",{attrs:{type:"deployment-unit"}}),C._v(" "+C._s(C.$t("fastAnalysis.indicatorsProTableTitle"))+" ")],1),A("a-descriptions",{staticClass:"indicators-pro-desc",attrs:{bordered:"",size:"small",column:2}},C._l(C.professionalIndicatorRows,function(t){return A("a-descriptions-item",{key:t.key,attrs:{label:t.label}},[A("span",{class:t.valueClass},[C._v(C._s(t.text))])])}),1)],1):C._e()]):C._e(),A("div",{staticClass:"feedback-section"},[A("div",{staticClass:"feedback-question"},[C._v(C._s(C.$t("fastAnalysis.wasHelpful")))]),A("div",{staticClass:"feedback-buttons"},[A("a-button",{attrs:{type:"helpful"===C.userFeedback?"primary":"default",size:"small",loading:"helpful"===C.feedbackLoading},on:{click:function(t){return C.submitFeedback("helpful")}}},[A("a-icon",{attrs:{type:"like"}}),C._v(" "+C._s(C.$t("fastAnalysis.helpful"))+" ")],1),A("a-button",{attrs:{type:"not_helpful"===C.userFeedback?"danger":"default",size:"small",loading:"not_helpful"===C.feedbackLoading},on:{click:function(t){return C.submitFeedback("not_helpful")}}},[A("a-icon",{attrs:{type:"dislike"}}),C._v(" "+C._s(C.$t("fastAnalysis.notHelpful"))+" ")],1)],1),A("div",{staticClass:"analysis-meta"},[A("span",[C._v(C._s(C.$t("fastAnalysis.analysisTime"))+": "+C._s(C.result.analysis_time_ms)+"ms")]),C.result.memory_id?A("span",[C._v("ID: #"+C._s(C.result.memory_id))]):C._e()])])]):A("div",{staticClass:"empty-container"},[A("div",{staticClass:"empty-content"},[A("a-icon",{staticClass:"empty-icon",attrs:{type:"radar-chart"}}),A("div",{staticClass:"empty-title"},[C._v(C._s(C.$t("fastAnalysis.selectSymbol")))]),A("div",{staticClass:"empty-hint"},[C._v(C._s(C.$t("fastAnalysis.selectHint")))])],1)])])},w=[],$={name:"FastAnalysisReport",props:{result:{type:Object,default:null},loading:{type:Boolean,default:!1},error:{type:String,default:null},errorTone:{type:String,default:"error",validator:function(t){return["error","warning","info"].includes(t)}}},data:function(){return{userFeedback:null,feedbackLoading:null,progress:0,elapsedSeconds:0,mainTimer:null}},computed:(0,m.A)((0,m.A)({},(0,h.aH)({navTheme:function(t){return t.app.theme}})),{},{isDarkTheme:function(){return"dark"===this.navTheme||"realdark"===this.navTheme},progressPercent:function(){return Math.round(10*this.progress)/10},step:function(){return this.progress<25?1:this.progress<50?2:this.progress<75?3:4},currentStepText:function(){var t={1:this.$t("fastAnalysis.step1")||"获取实时数据",2:this.$t("fastAnalysis.step2")||"计算技术指标",3:this.$t("fastAnalysis.step3")||"AI深度分析",4:this.$t("fastAnalysis.step4")||"生成报告"};return t[this.step]||this.$t("fastAnalysis.preparing")||"准备中..."},elapsedTimeText:function(){if(this.elapsedSeconds<60)return"".concat(this.elapsedSeconds,"s");var t=Math.floor(this.elapsedSeconds/60),a=this.elapsedSeconds%60;return"".concat(t,"m ").concat(a,"s")},decisionClass:function(){if(!this.result)return"";var t=this.result.decision;return"BUY"===t?"decision-buy":"SELL"===t?"decision-sell":"decision-hold"},decisionIcon:function(){if(!this.result)return"question";var t=this.result.decision;return"BUY"===t?"arrow-up":"SELL"===t?"arrow-down":"pause"},confidenceColor:function(){var t,a=(null===(t=this.result)||void 0===t?void 0:t.confidence)||50;return a>=70?"#52c41a":a>=50?"#1890ff":"#faad14"},consensusBlock:function(){var t,a=null===(t=this.result)||void 0===t?void 0:t.consensus;return a&&"object"===(0,n.A)(a)?null==a.consensus_decision&&null==a.consensus_score?null:a:null},tradingPlan:function(){var t,a,s,e,i,n,r=(null===(t=this.result)||void 0===t?void 0:t.trading_plan)||{},o=null!==(a=r.entry_price)&&void 0!==a?a:r.entryPrice,l=null!==(s=null!==(e=r.stop_loss)&&void 0!==e?e:r.stopLoss)&&void 0!==s?s:r.loss_exit_price,c=null!==(i=null!==(n=r.take_profit)&&void 0!==n?n:r.takeProfit)&&void 0!==i?i:r.profit_target_price;return{entry_price:o,stop_loss:l,take_profit:c}},trendOutlookRaw:function(){var t,a;return(null===(t=this.result)||void 0===t?void 0:t.trend_outlook)||(null===(a=this.result)||void 0===a?void 0:a.trendOutlook)||null},trendOutlookSummaryText:function(){var t,a,s=(null===(t=this.result)||void 0===t?void 0:t.trend_outlook_summary)||(null===(a=this.result)||void 0===a?void 0:a.trendOutlookSummary);return s&&String(s).trim()?String(s).trim():""},trendOutlookBlocks:function(){var t=this,a=this.trendOutlookRaw;if(!a||"object"!==(0,n.A)(a))return[];var s=[{key:"next_24h",labelKey:"fastAnalysis.outlook24h"},{key:"next_3d",labelKey:"fastAnalysis.outlook3d"},{key:"next_1w",labelKey:"fastAnalysis.outlook1w"},{key:"next_1m",labelKey:"fastAnalysis.outlook1m"}];return s.map(function(s){var e=s.key,i=s.labelKey,n=a[e]||{};return{key:e,label:t.$t(i),trend:n.trend,score:n.score,strength:n.strength}}).filter(function(t){var s=a[t.key];return s&&"object"===(0,n.A)(s)&&(null!=s.trend||null!=s.score)})},stopLossHintText:function(){var t,a=String((null===(t=this.result)||void 0===t?void 0:t.decision)||"").toUpperCase();return"SELL"===a?this.$t("fastAnalysis.stopLossHintShort"):this.$t("fastAnalysis.stopLossHint")},takeProfitHintText:function(){var t,a=String((null===(t=this.result)||void 0===t?void 0:t.decision)||"").toUpperCase();return"SELL"===a?this.$t("fastAnalysis.takeProfitHintShort"):this.$t("fastAnalysis.takeProfitHint")},professionalIndicatorRows:function(){var t,a=(null===(t=this.result)||void 0===t?void 0:t.indicators)||{},s=[],e=function(t,a,e){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"";void 0!==e&&null!==e&&""!==e&&s.push({key:t,label:a,text:String(e),valueClass:i})},i=a.macd||{};if(null!=i.value&&e("macd_dif",this.$t("fastAnalysis.macdDif"),this.formatCompactNum(i.value)),null!=i.signal_line&&e("macd_dea",this.$t("fastAnalysis.macdDea"),this.formatCompactNum(i.signal_line)),null!=i.histogram){var n=Number(i.histogram),r=n>0?"bullish":n<0?"bearish":"";e("macd_hist",this.$t("fastAnalysis.macdHist"),this.formatCompactNum(i.histogram),r)}var o=a.moving_averages||{};null!=o.ma5&&e("ma5",this.$t("fastAnalysis.ma5Label"),"$"+this.formatPrice(o.ma5)),null!=o.ma10&&e("ma10",this.$t("fastAnalysis.ma10Label"),"$"+this.formatPrice(o.ma10)),null!=o.ma20&&e("ma20",this.$t("fastAnalysis.ma20Label"),"$"+this.formatPrice(o.ma20));var l=a.bollinger||{};null!=l.BB_upper&&e("bb_u",this.$t("fastAnalysis.bbUpper"),"$"+this.formatPrice(l.BB_upper)),null!=l.BB_middle&&e("bb_m",this.$t("fastAnalysis.bbMiddle"),"$"+this.formatPrice(l.BB_middle)),null!=l.BB_lower&&e("bb_l",this.$t("fastAnalysis.bbLower"),"$"+this.formatPrice(l.BB_lower)),null!=l.BB_width&&e("bb_w",this.$t("fastAnalysis.bbWidthPct"),this.formatNumber(l.BB_width,2)+"%");var c=a.levels||{};null!=c.pivot&&e("piv",this.$t("fastAnalysis.pivotStd"),"$"+this.formatPrice(c.pivot)),null!=c.s1&&e("s1",this.$t("fastAnalysis.levelS1"),"$"+this.formatPrice(c.s1)),null!=c.r1&&e("r1",this.$t("fastAnalysis.levelR1"),"$"+this.formatPrice(c.r1)),null!=c.s2&&e("s2",this.$t("fastAnalysis.levelS2"),"$"+this.formatPrice(c.s2)),null!=c.r2&&e("r2",this.$t("fastAnalysis.levelR2"),"$"+this.formatPrice(c.r2)),null!=c.swing_high&&e("sw_h",this.$t("fastAnalysis.swingHigh20"),"$"+this.formatPrice(c.swing_high)),null!=c.swing_low&&e("sw_l",this.$t("fastAnalysis.swingLow20"),"$"+this.formatPrice(c.swing_low));var d=a.volatility||{};if(null!=d.atr){var u=null!=d.pct?this.formatNumber(d.pct,2)+"% ATR/Price":"";e("atr14",this.$t("fastAnalysis.atr14Label"),"$"+this.formatPrice(d.atr)+(u?" · "+u:""))}var m=a.trading_levels||{};return null!=m.risk_reward_ratio&&Number(m.risk_reward_ratio)>0&&e("rr",this.$t("fastAnalysis.rrLongRef"),"1 : "+this.formatNumber(m.risk_reward_ratio,2)),null!=a.current_price&&e("cref",this.$t("fastAnalysis.refClose"),"$"+this.formatPrice(a.current_price)),s},insufficientCreditsError:function(){if(!this.error)return!1;var t=String(this.error);return t.includes("积分不足")||t.toLowerCase().includes("insufficient credits")},errorTitle:function(){return"warning"===this.errorTone?this.$t("fastAnalysis.analysisInProgressTitle"):this.insufficientCreditsError?this.$t("fastAnalysis.insufficientCredits"):this.$t("fastAnalysis.error")}}),watch:{result:function(){this.userFeedback=null},loading:{handler:function(t){t?this.startProgressTimer():this.stopProgressTimer()},immediate:!0}},mounted:function(){this.loading&&this.startProgressTimer()},beforeDestroy:function(){this.stopProgressTimer()},methods:{formatPrice:function(t){if(void 0===t||null===t)return"--";var a=parseFloat(t);return isNaN(a)?"--":a<1?a.toFixed(6):a<100?a.toFixed(4):a<1e4?a.toFixed(2):a.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})},formatNumber:function(t){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2;if(void 0===t||null===t)return"--";var s=parseFloat(t);return isNaN(s)?"--":s.toFixed(a)},formatConsensusNum:function(t){if(void 0===t||null===t||""===t)return"--";var a=Number(t);return Number.isNaN(a)?"--":a.toFixed(1)},formatAgreementPct:function(t){var a=Number(t);return Number.isNaN(a)?"--":"".concat(Math.round(100*a),"%")},formatProgress:function(t){var a=parseFloat(t)||0;return a%1===0?a.toFixed(0):a.toFixed(1)},formatOutlookTrend:function(t){var a=String(t||"HOLD").toUpperCase();return"BUY"===a?this.$t("fastAnalysis.outlookBull"):"SELL"===a?this.$t("fastAnalysis.outlookBear"):this.$t("fastAnalysis.outlookNeutral")},outlookTrendClass:function(t){var a=String(t||"").toUpperCase();return"BUY"===a?"trend-bull":"SELL"===a?"trend-bear":"trend-neutral"},formatCompactNum:function(t){var a=parseFloat(t);return Number.isNaN(a)?"--":0!==a&&Math.abs(a)<1e-4?a.toExponential(2):Math.abs(a)<1?a.toFixed(6):Math.abs(a)<100?a.toFixed(4):a.toFixed(2)},volumeRatioClass:function(t){var a=parseFloat(t);return Number.isNaN(a)?"":a>=1.5?"bullish":a<=.65?"bearish":""},getScoreColor:function(t){return t>=70?"#52c41a":t>=50?"#1890ff":t>=30?"#faad14":"#ff4d4f"},getScoreTagColor:function(t){return t>=70?"green":t>=50?"blue":t>=30?"orange":"red"},getRsiClass:function(t){return t<30?"oversold":t>70?"overbought":""},getMaTrendClass:function(t){return t?t.includes("uptrend")||t.includes("strong_uptrend")?"bullish":t.includes("downtrend")||t.includes("strong_downtrend")?"bearish":"":""},getVolatilityClass:function(t){return"high"===t?"high-volatility":"low"===t?"low-volatility":""},translateSignal:function(t){if(!t)return"--";var a="fastAnalysis.signal.".concat(t),s=this.$t(a);return s===a?t:s},translateTrend:function(t){if(!t)return"--";var a="fastAnalysis.trend.".concat(t),s=this.$t(a);return s===a?t:s},translateVolatility:function(t){if(!t)return"--";var a="fastAnalysis.volatilityLevel.".concat(t),s=this.$t(a);return s===a?t:s},submitFeedback:function(t){var a=this;return(0,u.A)((0,d.A)().m(function s(){var e;return(0,d.A)().w(function(s){while(1)switch(s.p=s.n){case 0:if(null!==(e=a.result)&&void 0!==e&&e.memory_id){s.n=1;break}return a.$message.warning(a.$t("fastAnalysis.feedbackUnavailable")||"反馈功能暂不可用,请刷新后重试"),s.a(2);case 1:return a.feedbackLoading=t,s.p=2,s.n=3,C({memory_id:a.result.memory_id,feedback:t});case 3:a.userFeedback=t,a.$message.success(a.$t("fastAnalysis.feedbackThanks")),s.n=5;break;case 4:s.p=4,s.v,a.$message.error(a.$t("fastAnalysis.feedbackFailed"));case 5:return s.p=5,a.feedbackLoading=null,s.f(5);case 6:return s.a(2)}},s,null,[[2,4,5,6]])}))()},startProgressTimer:function(){var t=this;this.stopProgressTimer(),this.progress=0,this.elapsedSeconds=0;var a=Date.now();this.mainTimer=window.setInterval(function(){t.elapsedSeconds=Math.floor((Date.now()-a)/1e3),t.progress<75?t.progress=Math.min(t.progress+1,75):t.progress<90?t.progress=Math.min(t.progress+.5,90):t.progress<95&&(t.progress=Math.min(t.progress+.2,95))},100)},stopProgressTimer:function(){this.mainTimer&&(window.clearInterval(this.mainTimer),this.mainTimer=null),this.progress=0,this.elapsedSeconds=0}}},T=$,x=s(845),M=(0,x.A)(T,S,w,!1,null,"75da11ec",null),P=M.exports,F={name:"Analysis",props:{embedded:{type:Boolean,default:!1},presetSymbol:{type:String,default:""},autoAnalyzeSignal:{type:Number,default:0}},components:{FastAnalysisReport:P},data:function(){return{loadingMarket:!1,heatmapType:"crypto",marketData:{fearGreed:null,vix:null,dxy:null,indices:[],heatmap:{crypto:[],commodities:[],sectors:[],forex:[]},calendar:[]},loadingSentiment:!1,loadingIndices:!1,loadingHeatmap:!1,loadingCalendar:!1,watchlistPriceTimer:null,watchlistPrices:{},localUserInfo:{},loadingUserInfo:!1,userId:1,watchlist:[],loadingWatchlist:!1,showAddStockModal:!1,addingStock:!1,selectedSymbol:void 0,analyzing:!1,analysisResult:null,analysisError:null,analysisErrorTone:"error",showHistoryModal:!1,historyList:[],historyLoading:!1,historyPage:1,historyPageSize:20,historyTotal:0,currentTaskId:null,taskPollingTimer:null,taskPollingStartedAt:0,marketTypes:[],selectedMarketTab:"",symbolSearchKeyword:"",symbolSearchResults:[],searchingSymbols:!1,hotSymbols:[],loadingHotSymbols:!1,selectedSymbolForAdd:null,searchTimer:null,hasSearched:!1,positions:[],monitors:[],positionSummaryMap:{},showPositionModal:!1,showMonitorModal:!1,targetStockForOps:null,positionForm:{side:"long",quantity:null,entryPrice:null},monitorForm:{interval_min:240,notify_channels:[]},batchMode:!1,batchSelectedKeys:[],batchRunning:!1,batchProgress:0,showBatchScheduleModal:!1,batchScheduleForm:{interval_min:240,notify_channels:[]},showTaskDrawer:!1,showEditTaskModal:!1,editTaskLoading:!1,editTaskId:null,editTaskForm:{name:"",interval_min:240,notify_channels:[]}}},computed:(0,m.A)((0,m.A)((0,m.A)({},(0,h.L8)(["userInfo"])),(0,h.aH)({navTheme:function(t){return t.app.theme},primaryColor:function(t){return t.app.color||"#1890ff"}})),{},{isDarkTheme:function(){return"dark"===this.navTheme||"realdark"===this.navTheme},isZhLocale:function(){return"zh-CN"===this.$i18n.locale},currentHeatmap:function(){return this.marketData.heatmap[this.heatmapType]||[]},storeUserInfo:function(){return this.userInfo||{}},mergedUserInfo:function(){return this.localUserInfo&&this.localUserInfo.email?this.localUserInfo:this.storeUserInfo},watchlistTotalPnl:function(){return Object.values(this.positionSummaryMap).reduce(function(t,a){return t+(Number(a.pnl)||0)},0)},watchlistPositionCount:function(){return Object.values(this.positionSummaryMap).filter(function(t){return t.quantity>0}).length},watchlistTaskCount:function(){return Object.values(this.positionSummaryMap).reduce(function(t,a){return t+(a.monitorCount||0)},0)},batchSelectedAll:function(){return this.watchlist&&this.watchlist.length>0&&this.batchSelectedKeys.length===this.watchlist.length},batchIndeterminate:function(){return this.batchSelectedKeys.length>0&&this.batchSelectedKeys.length<(this.watchlist||[]).length}}),created:function(){this.loadUserInfo(),this.loadMarketTypes(),this.loadWatchlist(),this.loadPositionData(),this.loadMarketData()},mounted:function(){this.startWatchlistPriceRefresh()},beforeDestroy:function(){this.watchlistPriceTimer&&clearInterval(this.watchlistPriceTimer),this.taskPollingTimer&&(clearInterval(this.taskPollingTimer),this.taskPollingTimer=null)},methods:{stopTaskPolling:function(){this.taskPollingTimer&&(clearInterval(this.taskPollingTimer),this.taskPollingTimer=null),this.currentTaskId=null,this.taskPollingStartedAt=0},pollTaskResult:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e,i,n;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(t.currentTaskId){a.n=1;break}return a.a(2);case 1:return a.p=1,a.n=2,_({page:1,pagesize:50});case 2:if(s=a.v,s&&1===s.code&&s.data){a.n=3;break}return a.a(2);case 3:if(e=s.data.list||[],i=e.find(function(a){return Number(a.id)===Number(t.currentTaskId)}),i){a.n=4;break}return a.a(2);case 4:if(n=String(i.status||"").toLowerCase(),"completed"!==n){a.n=8;break}if(!i.full_result){a.n=5;break}t.analysisResult=i.full_result,a.n=6;break;case 5:return a.n=6,t.viewHistoryResult(i);case 6:return t.$message.success(t.$t("dashboard.analysis.message.analysisComplete")),a.n=7,t.refreshUserInfoFromServer();case 7:t.analyzing=!1,t.stopTaskPolling(),a.n=11;break;case 8:if("failed"!==n){a.n=10;break}return t.analysisError=i.error_message||t.$t("dashboard.analysis.message.analysisFailed"),t.analysisErrorTone="error",t.$message.error(t.analysisError),a.n=9,t.refreshUserInfoFromServer();case 9:t.analyzing=!1,t.stopTaskPolling(),a.n=11;break;case 10:Date.now()-t.taskPollingStartedAt>18e4&&(t.$message.warning(t.$t("fastAnalysis.analysisStillProcessing")||"任务仍在处理中,请稍后在历史记录查看"),t.analyzing=!1,t.stopTaskPolling());case 11:a.n=13;break;case 12:a.p=12,a.v;case 13:return a.a(2)}},a,null,[[1,12]])}))()},startTaskPolling:function(t){var a=this;return(0,u.A)((0,d.A)().m(function s(){return(0,d.A)().w(function(s){while(1)switch(s.n){case 0:return a.stopTaskPolling(),a.currentTaskId=Number(t),a.taskPollingStartedAt=Date.now(),s.n=1,a.pollTaskResult();case 1:a.taskPollingTimer=setInterval(function(){a.pollTaskResult()},2500);case 2:return s.a(2)}},s)}))()},filterSymbolOption:function(t,a){var s,e=(null===(s=a.componentOptions)||void 0===s||null===(s=s.propsData)||void 0===s?void 0:s.value)||"";return"__add_stock_option__"===e||e.toLowerCase().includes(t.toLowerCase())},handleSymbolChange:function(t){var a=this;if("__add_stock_option__"===t)return this.showAddStockModal=!0,void this.$nextTick(function(){a.selectedSymbol=void 0});this.selectedSymbol=t,this.analysisResult=null,this.analysisError=null,this.analysisErrorTone="error",this.$emit("symbol-change",t)},selectWatchlistItem:function(t){this.selectedSymbol="".concat(t.market,":").concat(t.symbol),this.analysisResult=null,this.analysisError=null,this.analysisErrorTone="error",this.$emit("symbol-change",this.selectedSymbol)},hasMonitorForStock:function(t){if(!t)return!1;var a="".concat(t.market,":").concat(t.symbol),s=this.positionSummaryMap[a];return!!(s&&s.monitorCount>0)},getMonitorMeta:function(t){if(!t)return null;var a="".concat(t.market,":").concat(t.symbol),s=this.positionSummaryMap[a];return!s||s.monitorCount<=0?null:{activeCount:s.activeMonitorCount||0,nextRunAtText:s.nextRunAtText||""}},getPnlBarStyle:function(t){var a=Math.abs(Number((null===t||void 0===t?void 0:t.pnlPercent)||0)),s=Math.min(100,Math.max(4,a));return{width:"".concat(s,"%")}},_formatNextRunText:function(t){if(!t)return"";try{var a=new Date(t);return Number.isNaN(a.getTime())?"":a.toLocaleString(this.isZhLocale?"zh-CN":"en-US",{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"})}catch(s){return""}},buildPositionSummary:function(){var t=this,a={},s=Array.isArray(this.positions)?this.positions:[],e=Array.isArray(this.monitors)?this.monitors:[],i=new Set,n={};s.forEach(function(t){n[Number(t.id)]="".concat(t.market,":").concat(t.symbol)}),e.forEach(function(s){var e=Array.isArray(s.position_ids)?s.position_ids:[];e.forEach(function(t){return i.add(Number(t))});var r=!!s.is_active,o=s.next_run_at||"";e.forEach(function(s){var e=n[Number(s)];e&&(a[e]||(a[e]={quantity:0,weightedEntry:0,pnl:0,marketValue:0,monitorCount:0,activeMonitorCount:0,nextRunAtText:""}),a[e].monitorCount+=1,r&&(a[e].activeMonitorCount+=1),!a[e].nextRunAtText&&o&&(a[e].nextRunAtText=t._formatNextRunText(o)))})}),s.forEach(function(t){var s="".concat(t.market,":").concat(t.symbol),e=Number(t.quantity||0),n=Number(t.entry_price||0);a[s]||(a[s]={quantity:0,weightedEntry:0,pnl:0,marketValue:0,monitorCount:0,activeMonitorCount:0,nextRunAtText:""}),a[s].quantity+=e,a[s].weightedEntry+=e*n,a[s].pnl+=Number(t.pnl||0),a[s].marketValue+=Number(t.market_value||0),i.has(Number(t.id))&&(a[s].monitorCount+=1)}),Object.keys(a).forEach(function(t){var s=a[t];s.avgEntry=s.quantity>0?s.weightedEntry/s.quantity:0;var e=s.quantity>0?s.weightedEntry:0;s.pnlPercent=e>0?s.pnl/e*100:0}),this.positionSummaryMap=a},toggleStockMonitor:function(t){var a=this;return(0,u.A)((0,d.A)().m(function s(){var e,i,n,r,o,l;return(0,d.A)().w(function(s){while(1)switch(s.p=s.n){case 0:if(e="".concat(t.market,":").concat(t.symbol),i=(a.positions||[]).filter(function(t){return"".concat(t.market,":").concat(t.symbol)===e}).map(function(t){return Number(t.id)}).filter(Boolean),0!==i.length){s.n=1;break}return s.a(2);case 1:if(n=(a.monitors||[]).filter(function(t){var a=Array.isArray(t.position_ids)?t.position_ids.map(function(t){return Number(t)}):[];return a.some(function(t){return i.includes(t)})}),0!==n.length){s.n=2;break}return s.a(2);case 2:return r=!n.some(function(t){return!!t.is_active}),s.p=3,s.n=4,Promise.all(n.map(function(t){return(0,y.sk)(t.id,{is_active:r})}));case 4:return a.$message.success(r?a.$t("aiAssetAnalysis.monitor.enabled")||"已启用任务":a.$t("aiAssetAnalysis.monitor.disabled")||"已暂停任务"),s.n=5,a.loadPositionData();case 5:s.n=7;break;case 6:s.p=6,l=s.v,a.$message.error((null===l||void 0===l||null===(o=l.response)||void 0===o||null===(o=o.data)||void 0===o?void 0:o.msg)||(null===l||void 0===l?void 0:l.message)||"Toggle monitor failed");case 7:return s.a(2)}},s,null,[[3,6]])}))()},loadPositionData:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e,i,n;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return a.p=0,a.n=1,Promise.all([(0,y.Dt)(),(0,y.w1)()]);case 1:s=a.v,e=(0,c.A)(s,2),i=e[0],n=e[1],t.positions=i&&1===i.code&&i.data||[],t.monitors=n&&1===n.code&&n.data||[],t.buildPositionSummary(),a.n=3;break;case 2:a.p=2,a.v,t.positions=[],t.monitors=[],t.positionSummaryMap={};case 3:return a.a(2)}},a,null,[[0,2]])}))()},openPositionModal:function(t){this.targetStockForOps=t;var a="".concat(t.market,":").concat(t.symbol),s=(this.positions||[]).find(function(t){return"".concat(t.market,":").concat(t.symbol)===a});if(s){var e=Number(s.quantity||0);this.positionForm={side:s.side||(e<0?"short":"long"),quantity:Math.abs(e)||null,entryPrice:Number(s.entry_price||0)||null}}else this.positionForm={side:"long",quantity:null,entryPrice:null};this.showPositionModal=!0},savePosition:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e,i,n,r,o;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(s=t.targetStockForOps,s){a.n=1;break}return a.a(2);case 1:if(e=Number(t.positionForm.quantity||0),i=Number(t.positionForm.entryPrice||0),e>0&&i>0){a.n=2;break}return t.$message.warning(t.$i18n&&"zh-CN"===t.$i18n.locale?"请输入有效的数量和买入单价":"Please enter valid quantity and entry price"),a.a(2);case 2:return a.p=2,a.n=3,(0,y.Ps)({market:s.market,symbol:s.symbol,name:s.name||s.symbol,side:t.positionForm.side||"long",quantity:e,entry_price:i});case 3:if(n=a.v,!n||1!==n.code){a.n=5;break}return t.$message.success(t.$t("portfolio.positions.add")+" OK"),t.showPositionModal=!1,a.n=4,t.loadPositionData();case 4:a.n=6;break;case 5:t.$message.error((null===n||void 0===n?void 0:n.msg)||"Add position failed");case 6:a.n=8;break;case 7:a.p=7,o=a.v,t.$message.error((null===o||void 0===o||null===(r=o.response)||void 0===r||null===(r=r.data)||void 0===r?void 0:r.msg)||(null===o||void 0===o?void 0:o.message)||"Add position failed");case 8:return a.a(2)}},a,null,[[2,7]])}))()},openMonitorModal:function(t){this.targetStockForOps=t,this.monitorForm={interval_min:240,notify_channels:[]},this.showMonitorModal=!0},saveMonitorTask:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e,i,n,r,o,l,c;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(s=t.targetStockForOps,s){a.n=1;break}return a.a(2);case 1:return e="".concat(s.market,":").concat(s.symbol),i=t.monitorForm.interval_min,n=t.monitorForm.notify_channels||[],r=(t.positions||[]).filter(function(t){return"".concat(t.market,":").concat(t.symbol)===e}).map(function(t){return Number(t.id)}).filter(Boolean),a.p=2,a.n=3,(0,y.yr)({name:"AI-".concat(s.symbol,"-").concat(i,"m"),position_ids:r,monitor_type:"ai",config:{run_interval_minutes:i,symbol:s.symbol,market:s.market},notification_config:{channels:n},is_active:!0});case 3:if(o=a.v,!o||1!==o.code){a.n=5;break}return t.$message.success(t.$t("aiAssetAnalysis.monitor.created")),t.showMonitorModal=!1,a.n=4,t.loadPositionData();case 4:a.n=6;break;case 5:t.$message.error((null===o||void 0===o?void 0:o.msg)||"Create monitor failed");case 6:a.n=8;break;case 7:a.p=7,c=a.v,t.$message.error((null===c||void 0===c||null===(l=c.response)||void 0===l||null===(l=l.data)||void 0===l?void 0:l.msg)||(null===c||void 0===c?void 0:c.message)||"Create monitor failed");case 8:return a.a(2)}},a,null,[[2,7]])}))()},toggleBatchMode:function(){this.batchMode=!this.batchMode,this.batchMode||(this.batchSelectedKeys=[])},onBatchSelectAll:function(t){t.target.checked?this.batchSelectedKeys=(this.watchlist||[]).map(function(t){return"".concat(t.market,":").concat(t.symbol)}):this.batchSelectedKeys=[]},onBatchItemToggle:function(t,a){var s="".concat(t.market,":").concat(t.symbol);a.target.checked?this.batchSelectedKeys.includes(s)||this.batchSelectedKeys.push(s):this.batchSelectedKeys=this.batchSelectedKeys.filter(function(t){return t!==s})},openBatchScheduleModal:function(){0!==this.batchSelectedKeys.length&&(this.batchScheduleForm={interval_min:240,notify_channels:[]},this.showBatchScheduleModal=!0)},saveBatchSchedule:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e,i,n,u,m,h,p;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(s=(0,l.A)(t.batchSelectedKeys),0!==s.length){a.n=1;break}return a.a(2);case 1:t.batchRunning=!0,e=t.batchScheduleForm.interval_min,i=t.batchScheduleForm.notify_channels||[],n=0,u=(0,o.A)(s),a.p=2,h=(0,d.A)().m(function a(){var s,r,o,l,u,h,p;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(s=m.value,r=s.split(":"),o=(0,c.A)(r,2),l=o[0],u=o[1],h=(t.watchlist||[]).find(function(t){return t.market===l&&t.symbol===u}),h){a.n=1;break}return a.a(2,1);case 1:return p=(t.positions||[]).filter(function(t){return"".concat(t.market,":").concat(t.symbol)===s}).map(function(t){return Number(t.id)}).filter(Boolean),a.p=2,a.n=3,(0,y.yr)({name:"AI-".concat(u,"-").concat(e,"m"),position_ids:p,monitor_type:"ai",config:{run_interval_minutes:e,symbol:u,market:l},notification_config:{channels:i},is_active:!0});case 3:n++,a.n=5;break;case 4:a.p=4,a.v;case 5:return a.a(2)}},a,null,[[2,4]])}),u.s();case 3:if((m=u.n()).done){a.n=6;break}return a.d((0,r.A)(h()),4);case 4:if(!a.v){a.n=5;break}return a.a(3,5);case 5:a.n=3;break;case 6:a.n=8;break;case 7:a.p=7,p=a.v,u.e(p);case 8:return a.p=8,u.f(),a.f(8);case 9:return t.batchRunning=!1,t.showBatchScheduleModal=!1,t.batchMode=!1,t.batchSelectedKeys=[],a.n=10,t.loadPositionData();case 10:t.$message.success(t.$t("aiAssetAnalysis.batch.done")+" (".concat(n,"/").concat(s.length,")"));case 11:return a.a(2)}},a,null,[[2,7,8,9]])}))()},formatIntervalText:function(t){return t>=1440?"".concat(Math.round(t/1440),"d"):t>=60?"".concat(Math.round(t/60),"h"):"".concat(t,"m")},handleToggleTask:function(t){var a=this;return(0,u.A)((0,d.A)().m(function s(){var e,i;return(0,d.A)().w(function(s){while(1)switch(s.p=s.n){case 0:return s.p=0,s.n=1,(0,y.sk)(t.id,{is_active:!t.is_active});case 1:return a.$message.success(t.is_active?a.$t("aiAssetAnalysis.tasks.paused"):a.$t("aiAssetAnalysis.tasks.resumed")),s.n=2,a.loadPositionData();case 2:s.n=4;break;case 3:s.p=3,i=s.v,a.$message.error((null===i||void 0===i||null===(e=i.response)||void 0===e||null===(e=e.data)||void 0===e?void 0:e.msg)||(null===i||void 0===i?void 0:i.message)||"Failed");case 4:return s.a(2)}},s,null,[[0,3]])}))()},handleEditTask:function(t){this.editTaskId=t.id,this.editTaskForm={name:t.name||"",interval_min:t.config&&t.config.run_interval_minutes||240,notify_channels:t.notification_config&&t.notification_config.channels||[]},this.showEditTaskModal=!0},saveEditTask:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(t.editTaskId){a.n=1;break}return a.a(2);case 1:return t.editTaskLoading=!0,a.p=2,a.n=3,(0,y.sk)(t.editTaskId,{name:t.editTaskForm.name,config:{run_interval_minutes:t.editTaskForm.interval_min},notification_config:{channels:t.editTaskForm.notify_channels}});case 3:return t.$message.success("OK"),t.showEditTaskModal=!1,a.n=4,t.loadPositionData();case 4:a.n=6;break;case 5:a.p=5,e=a.v,t.$message.error((null===e||void 0===e||null===(s=e.response)||void 0===s||null===(s=s.data)||void 0===s?void 0:s.msg)||(null===e||void 0===e?void 0:e.message)||"Failed");case 6:return a.p=6,t.editTaskLoading=!1,a.f(6);case 7:return a.a(2)}},a,null,[[2,5,6,7]])}))()},handleDeleteTask:function(t){var a=this;return(0,u.A)((0,d.A)().m(function s(){var e,i;return(0,d.A)().w(function(s){while(1)switch(s.p=s.n){case 0:return s.p=0,s.n=1,(0,y.ei)(t.id);case 1:return a.$message.success(a.$t("aiAssetAnalysis.tasks.deleted")),s.n=2,a.loadPositionData();case 2:s.n=4;break;case 3:s.p=3,i=s.v,a.$message.error((null===i||void 0===i||null===(e=i.response)||void 0===e||null===(e=e.data)||void 0===e?void 0:e.msg)||(null===i||void 0===i?void 0:i.message)||"Failed");case 4:return s.a(2)}},s,null,[[0,3]])}))()},loadMarketData:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){return(0,d.A)().w(function(a){while(1)switch(a.n){case 0:t.loadingMarket=!0,t.loadSentimentData(),t.loadIndicesData(),t.loadHeatmapData(),t.loadCalendarData();case 1:return a.a(2)}},a)}))()},loadSentimentData:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e,i,n;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return t.loadingSentiment=!0,a.p=1,a.n=2,(0,A.EF)();case 2:s=a.v,1===(null===s||void 0===s?void 0:s.code)&&null!==s&&void 0!==s&&s.data&&(t.marketData.fearGreed=(null===(e=s.data.fear_greed)||void 0===e?void 0:e.value)||null,t.marketData.vix=(null===(i=s.data.vix)||void 0===i?void 0:i.value)||null,t.marketData.dxy=(null===(n=s.data.dxy)||void 0===n?void 0:n.value)||null),a.n=4;break;case 3:a.p=3,a.v;case 4:return a.p=4,t.loadingSentiment=!1,t.checkAllLoaded(),a.f(4);case 5:return a.a(2)}},a,null,[[1,3,4,5]])}))()},loadIndicesData:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return t.loadingIndices=!0,a.p=1,a.n=2,(0,A.yI)();case 2:s=a.v,1===(null===s||void 0===s?void 0:s.code)&&null!==s&&void 0!==s&&s.data&&(t.marketData.indices=s.data.indices||[]),a.n=4;break;case 3:a.p=3,a.v;case 4:return a.p=4,t.loadingIndices=!1,t.checkAllLoaded(),a.f(4);case 5:return a.a(2)}},a,null,[[1,3,4,5]])}))()},loadHeatmapData:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return t.loadingHeatmap=!0,a.p=1,a.n=2,(0,A.f$)();case 2:s=a.v,1===(null===s||void 0===s?void 0:s.code)&&null!==s&&void 0!==s&&s.data&&(t.marketData.heatmap={crypto:s.data.crypto||[],commodities:s.data.commodities||[],sectors:s.data.sectors||[],forex:s.data.forex||[]}),a.n=4;break;case 3:a.p=3,a.v;case 4:return a.p=4,t.loadingHeatmap=!1,t.checkAllLoaded(),a.f(4);case 5:return a.a(2)}},a,null,[[1,3,4,5]])}))()},loadCalendarData:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return t.loadingCalendar=!0,a.p=1,a.n=2,(0,A.kF)();case 2:s=a.v,1===(null===s||void 0===s?void 0:s.code)&&(t.marketData.calendar=s.data||[]),a.n=4;break;case 3:a.p=3,a.v;case 4:return a.p=4,t.loadingCalendar=!1,t.checkAllLoaded(),a.f(4);case 5:return a.a(2)}},a,null,[[1,3,4,5]])}))()},checkAllLoaded:function(){this.loadingSentiment||this.loadingIndices||this.loadingHeatmap||this.loadingCalendar||(this.loadingMarket=!1)},getFearGreedClass:function(t){return t?t<=25?"extreme-fear":t<=45?"fear":t<=55?"neutral":t<=75?"greed":"extreme-greed":""},getVixLevel:function(t){return t?t<15?"low":t<25?"medium":"high":""},formatNum:function(t){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2;return void 0===t||null===t||isNaN(t)?"--":Number(t).toFixed(a)},getHeatmapStyle:function(t){var a=parseFloat(t)||0,s=Math.min(Math.abs(a)/5,1),e=this.isDarkTheme;if(a>=0){var i=e?a>2?"#fff":"#4ade80":a>2?"#fff":"#166534";return{background:"rgba(34, 197, 94, ".concat(.15+.6*s,")"),color:i}}var n=e?a<-2?"#fff":"#f87171":a<-2?"#fff":"#991b1b";return{background:"rgba(239, 68, 68, ".concat(.15+.6*s,")"),color:n}},getCountryFlag:function(t){var a={US:"🇺🇸",CN:"🇨🇳",EU:"🇪🇺",JP:"🇯🇵",UK:"🇬🇧",DE:"🇩🇪",AU:"🇦🇺",CA:"🇨🇦"};return a[t]||"🌍"},formatCalendarDate:function(t){if(!t)return"";try{var a=new Date(t),s=new Date,e=new Date(s);if(e.setDate(e.getDate()+1),a.toDateString()===s.toDateString())return this.isZhLocale?"今天":"Today";if(a.toDateString()===e.toDateString())return this.isZhLocale?"明天":"Tmrw";var i=a.getMonth()+1,n=a.getDate();return"".concat(i,"/").concat(n)}catch(r){return t}},formatPrice:function(t){return t?t>=1e4?(t/1e3).toFixed(1)+"K":t>=1e3?t.toFixed(0):t.toFixed(2):"--"},formatHeatmapPrice:function(t){return t?t>=1e4?"$"+(t/1e3).toFixed(1)+"K":t>=1e3?"$"+t.toFixed(0):t>=1?"$"+t.toFixed(2):"$"+t.toFixed(4):""},getHeatmapName:function(t){return"sectors"===this.heatmapType||"commodities"===this.heatmapType||"forex"===this.heatmapType?this.isZhLocale?t.name_cn||t.name:t.name_en||t.name:t.name},getImpactClass:function(t){return t.actual_impact||t.expected_impact||"neutral"},getMarketColor:function(t){var a={USStock:"green",Crypto:"purple",Forex:"gold",Futures:"cyan"};return a[t]||"default"},getCurrencySymbol:function(t){return"$"},formatCreditNum:function(t){if(void 0===t||null===t||""===t)return"--";var a=Number(t);return Number.isNaN(a)?String(t):Number.isInteger(a)?String(a):a.toFixed(2)},refreshUserInfoFromServer:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return a.p=0,a.n=1,(0,p.ug)();case 1:s=a.v,s&&1===s.code&&s.data&&(t.localUserInfo=s.data,t.userId=s.data.id,t.$store.commit("SET_INFO",s.data)),a.n=3;break;case 2:a.p=2,a.v;case 3:return a.a(2)}},a,null,[[0,2]])}))()},startFastAnalysis:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e,i,n,r,o,l,u,h,p,v,y,f,b,_,k,C;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(!t.analyzing){a.n=1;break}return a.a(2);case 1:if(t.selectedSymbol){a.n=2;break}return t.$message.warning(t.$t("dashboard.analysis.message.selectSymbol")),a.a(2);case 2:return t.analyzing=!0,t.analysisError=null,t.analysisErrorTone="error",s=t.selectedSymbol.split(":"),e=(0,c.A)(s,2),i=e[0],n=e[1],r=t.$store.getters.lang||"zh-CN",o=!1,a.p=3,a.n=4,g({market:i,symbol:n,language:r,timeframe:"1D",async_submit:!0});case 4:if(l=a.v,!l||1!==l.code||!l.data){a.n=9;break}if("processing"!==l.data.status){a.n=6;break}return o=!0,u=l.data.remaining_credits,void 0!==u&&null!==u?t.$message.success(t.$t("fastAnalysis.analysisSubmittedWithCredits",{remaining:t.formatCreditNum(u)})):t.$message.success(t.$t("fastAnalysis.analysisSubmitted")||"任务已提交,正在分析中"),a.n=5,t.startTaskPolling(l.data.task_id);case 5:a.n=7;break;case 6:h=(0,m.A)({},l.data),delete h.credits_charged,delete h.remaining_credits,t.analysisResult=h,p=l.data.remaining_credits,void 0!==p&&null!==p?t.$message.success(t.$t("fastAnalysis.analysisCompleteWithCredits",{remaining:t.formatCreditNum(p)})):t.$message.success(t.$t("dashboard.analysis.message.analysisComplete"));case 7:return a.n=8,t.refreshUserInfoFromServer();case 8:a.n=10;break;case 9:throw new Error((null===l||void 0===l?void 0:l.msg)||"分析失败");case 10:a.n=12;break;case 11:a.p=11,C=a.v,f=null===C||void 0===C||null===(v=C.response)||void 0===v?void 0:v.status,b=(null===C||void 0===C||null===(y=C.response)||void 0===y?void 0:y.data)||{},_=b.msg,k=b.data,429===f&&k&&k.in_progress?(t.analysisErrorTone="warning",t.analysisError=t.$t("fastAnalysis.analysisInProgress"),t.$message.warning(t.analysisError)):400===f&&"Insufficient credits"===_?(t.analysisError=t.$t("fastAnalysis.insufficientCreditsDetail",{required:t.formatCreditNum(null===k||void 0===k?void 0:k.required),current:t.formatCreditNum(null===k||void 0===k?void 0:k.current),shortage:t.formatCreditNum(null===k||void 0===k?void 0:k.shortage)}),t.$message.error(t.analysisError)):(t.analysisError=_||(null===C||void 0===C?void 0:C.message)||t.$t("dashboard.analysis.message.analysisFailed"),t.$message.error(t.analysisError));case 12:return a.p=12,o||(t.analyzing=!1),a.f(12);case 13:return a.a(2)}},a,null,[[3,11,12,13]])}))()},loadHistoryList:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return t.historyLoading=!0,a.p=1,a.n=2,_({page:t.historyPage,pagesize:t.historyPageSize});case 2:s=a.v,s&&1===s.code&&s.data&&(t.historyList=s.data.list||[],t.historyTotal=s.data.total||0),a.n=4;break;case 3:a.p=3,a.v,t.$message.error(t.$t("dashboard.analysis.message.loadHistoryFailed")||"加载历史记录失败");case 4:return a.p=4,t.historyLoading=!1,a.f(4);case 5:return a.a(2)}},a,null,[[1,3,4,5]])}))()},viewHistoryResult:function(t){var a=this;return(0,u.A)((0,d.A)().m(function s(){var e,i,n,r;return(0,d.A)().w(function(s){while(1)switch(s.n){case 0:if("processing"!==(t.status||"").toLowerCase()){s.n=1;break}return a.$message.info(a.$t("fastAnalysis.analysisStillProcessing")||"该任务仍在处理中,请稍后刷新历史记录"),s.a(2);case 1:if(!t.full_result){s.n=2;break}return a.analysisResult=t.full_result,a.selectedSymbol="".concat(t.market,":").concat(t.symbol),a.showHistoryModal=!1,s.a(2);case 2:e=Number(t.price)||0,i=String(t.decision||"HOLD").toUpperCase(),n=null,r=null,e>0&&("SELL"===i?(n=1.05*e,r=.95*e):"BUY"===i&&(n=.95*e,r=1.05*e)),a.analysisResult={decision:t.decision,confidence:t.confidence,summary:t.summary,market_data:{current_price:t.price,change_24h:0},trading_plan:{entry_price:t.price,stop_loss:n,take_profit:r},scores:t.scores||{},reasons:t.reasons||[],risks:[],indicators:t.indicators||{},memory_id:t.id,analysis_time_ms:0},a.selectedSymbol="".concat(t.market,":").concat(t.symbol),a.showHistoryModal=!1;case 3:return s.a(2)}},s)}))()},deleteHistoryItem:function(t){var a=this;return(0,u.A)((0,d.A)().m(function s(){var e;return(0,d.A)().w(function(s){while(1)switch(s.p=s.n){case 0:return s.p=0,s.n=1,k(t.id);case 1:e=s.v,e&&1===e.code?(a.$message.success(a.$t("dashboard.analysis.message.deleteSuccess")),a.loadHistoryList()):a.$message.error((null===e||void 0===e?void 0:e.msg)||a.$t("dashboard.analysis.message.deleteFailed")),s.n=3;break;case 2:s.p=2,s.v,a.$message.error(a.$t("dashboard.analysis.message.deleteFailed"));case 3:return s.a(2)}},s,null,[[0,2]])}))()},formatTime:function(t){if(!t)return"-";var a=new Date(1e3*t);return a.toLocaleString("zh-CN")},formatIsoTime:function(t){if(!t)return"-";var a=new Date(t);return a.toLocaleString("zh-CN")},getStatusColor:function(t){var a={pending:"orange",processing:"blue",completed:"green",failed:"red"};return a[t]||"default"},getStatusText:function(t){var a={pending:"dashboard.analysis.status.pending",processing:"dashboard.analysis.status.processing",completed:"dashboard.analysis.status.completed",failed:"dashboard.analysis.status.failed"},s=a[t];return s?this.$t(s):t},loadUserInfo:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(t.loadingUserInfo=!0,a.p=1,!t.storeUserInfo||!t.storeUserInfo.email){a.n=2;break}return t.localUserInfo=t.storeUserInfo,t.userId=t.storeUserInfo.id,t.loadingUserInfo=!1,t.loadWatchlist(),a.a(2);case 2:return a.n=3,(0,p.ug)();case 3:s=a.v,s&&1===s.code&&s.data&&(t.localUserInfo=s.data,t.userId=s.data.id,t.$store.commit("SET_INFO",s.data),t.loadWatchlist()),a.n=5;break;case 4:a.p=4,a.v;case 5:return a.p=5,t.loadingUserInfo=!1,a.f(5);case 6:return a.a(2)}},a,null,[[1,4,5,6]])}))()},loadWatchlist:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(t.userId){a.n=1;break}return a.a(2);case 1:return t.loadingWatchlist=!0,a.p=2,a.n=3,(0,v.Qo)({userid:t.userId});case 3:if(s=a.v,!s||1!==s.code||!s.data){a.n=4;break}return t.watchlist=s.data.map(function(t){return(0,m.A)((0,m.A)({},t),{},{price:0,change:0,changePercent:0})}),a.n=4,t.loadWatchlistPrices();case 4:a.n=6;break;case 5:a.p=5,a.v;case 6:return a.p=6,t.loadingWatchlist=!1,a.f(6);case 7:return a.a(2)}},a,null,[[2,5,6,7]])}))()},loadWatchlistPrices:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e,i,n;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(t.watchlist&&0!==t.watchlist.length){a.n=1;break}return a.a(2);case 1:return a.p=1,s=t.watchlist.map(function(t){return{market:t.market,symbol:t.symbol}}),a.n=2,(0,v.ms)({watchlist:s});case 2:e=a.v,e&&1===e.code&&e.data&&(i={},n={},e.data.forEach(function(t){i["".concat(t.market,"-").concat(t.symbol)]=t,n["".concat(t.market,":").concat(t.symbol)]={price:t.price||0,change:t.changePercent||0}}),t.watchlistPrices=n,t.watchlist=t.watchlist.map(function(t){var a="".concat(t.market,"-").concat(t.symbol),s=i[a];return s?(0,m.A)((0,m.A)({},t),{},{price:s.price||0,change:s.change||0,changePercent:s.changePercent||0}):t})),a.n=4;break;case 3:a.p=3,a.v;case 4:return a.a(2)}},a,null,[[1,3]])}))()},startWatchlistPriceRefresh:function(){var t=this;this.watchlistPriceTimer=setInterval(function(){t.watchlist&&t.watchlist.length>0&&t.loadWatchlistPrices()},3e4),this.watchlist&&this.watchlist.length>0&&this.loadWatchlistPrices()},handleAddStock:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e,i,n,r,o,l;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(s="",e="",i="",!t.selectedSymbolForAdd){a.n=1;break}s=t.selectedSymbolForAdd.market,e=t.selectedSymbolForAdd.symbol.toUpperCase(),i=t.selectedSymbolForAdd.name||"",a.n=4;break;case 1:if(!t.symbolSearchKeyword||!t.symbolSearchKeyword.trim()){a.n=3;break}if(t.selectedMarketTab){a.n=2;break}return t.$message.warning(t.$t("dashboard.analysis.modal.addStock.pleaseSelectMarket")),a.a(2);case 2:s=t.selectedMarketTab,e=t.symbolSearchKeyword.trim().toUpperCase(),i="",a.n=4;break;case 3:return t.$message.warning(t.$t("dashboard.analysis.modal.addStock.pleaseSelectOrEnterSymbol")),a.a(2);case 4:return t.addingStock=!0,a.p=5,a.n=6,(0,v.dp)({userid:t.userId,market:s,symbol:e,name:i});case 6:if(n=a.v,!n||1!==n.code){a.n=8;break}return t.$message.success(t.$t("dashboard.analysis.message.addStockSuccess")),t.handleCloseAddStockModal(),a.n=7,t.loadWatchlist();case 7:a.n=9;break;case 8:t.$message.error((null===n||void 0===n?void 0:n.msg)||t.$t("dashboard.analysis.message.addStockFailed"));case 9:a.n=11;break;case 10:a.p=10,l=a.v,o=(null===l||void 0===l||null===(r=l.response)||void 0===r||null===(r=r.data)||void 0===r?void 0:r.msg)||(null===l||void 0===l?void 0:l.message)||t.$t("dashboard.analysis.message.addStockFailed"),t.$message.error(o);case 11:return a.p=11,t.addingStock=!1,a.f(11);case 12:return a.a(2)}},a,null,[[5,10,11,12]])}))()},handleCloseAddStockModal:function(){this.showAddStockModal=!1,this.selectedSymbolForAdd=null,this.symbolSearchKeyword="",this.symbolSearchResults=[],this.hasSearched=!1,this.selectedMarketTab=this.marketTypes.length>0?this.marketTypes[0].value:""},handleMarketTabChange:function(t){this.selectedMarketTab=t,this.symbolSearchKeyword="",this.symbolSearchResults=[],this.selectedSymbolForAdd=null,this.hasSearched=!1,this.loadHotSymbols(t)},handleSymbolSearchInput:function(t){var a=this,s=t.target.value;if(this.symbolSearchKeyword=s,this.searchTimer&&clearTimeout(this.searchTimer),!s||""===s.trim())return this.symbolSearchResults=[],this.hasSearched=!1,void(this.selectedSymbolForAdd=null);this.searchTimer=setTimeout(function(){a.searchSymbolsInModal(s)},500)},handleSearchOrInput:function(t){t&&t.trim()&&(this.selectedMarketTab?this.symbolSearchResults.length>0||(this.hasSearched&&0===this.symbolSearchResults.length?this.handleDirectAdd():this.searchSymbolsInModal(t)):this.$message.warning(this.$t("dashboard.analysis.modal.addStock.pleaseSelectMarket")))},searchSymbolsInModal:function(t){var a=this;return(0,u.A)((0,d.A)().m(function s(){var e;return(0,d.A)().w(function(s){while(1)switch(s.p=s.n){case 0:if(t&&""!==t.trim()){s.n=1;break}return a.symbolSearchResults=[],a.hasSearched=!1,s.a(2);case 1:if(a.selectedMarketTab){s.n=2;break}return a.$message.warning(a.$t("dashboard.analysis.modal.addStock.pleaseSelectMarket")),s.a(2);case 2:return a.searchingSymbols=!0,a.hasSearched=!0,s.p=3,s.n=4,(0,v._3)({market:a.selectedMarketTab,keyword:t.trim(),limit:20});case 4:e=s.v,e&&1===e.code&&e.data&&e.data.length>0?a.symbolSearchResults=e.data:(a.symbolSearchResults=[],a.selectedSymbolForAdd={market:a.selectedMarketTab,symbol:t.trim().toUpperCase(),name:""}),s.n=6;break;case 5:s.p=5,s.v,a.symbolSearchResults=[],a.selectedSymbolForAdd={market:a.selectedMarketTab,symbol:t.trim().toUpperCase(),name:""};case 6:return s.p=6,a.searchingSymbols=!1,s.f(6);case 7:return s.a(2)}},s,null,[[3,5,6,7]])}))()},handleDirectAdd:function(){this.symbolSearchKeyword&&this.symbolSearchKeyword.trim()?this.selectedMarketTab?this.selectedSymbolForAdd={market:this.selectedMarketTab,symbol:this.symbolSearchKeyword.trim().toUpperCase(),name:""}:this.$message.warning(this.$t("dashboard.analysis.modal.addStock.pleaseSelectMarket")):this.$message.warning(this.$t("dashboard.analysis.modal.addStock.pleaseEnterSymbol"))},selectSymbol:function(t){this.selectedSymbolForAdd={market:t.market,symbol:t.symbol,name:t.name||t.symbol}},loadHotSymbols:function(t){var a=this;return(0,u.A)((0,d.A)().m(function s(){var e;return(0,d.A)().w(function(s){while(1)switch(s.p=s.n){case 0:if(t||(t=a.selectedMarketTab||(a.marketTypes.length>0?a.marketTypes[0].value:"")),t){s.n=1;break}return s.a(2);case 1:return a.loadingHotSymbols=!0,s.p=2,s.n=3,(0,v.z6)({market:t,limit:10});case 3:e=s.v,e&&1===e.code&&e.data?a.hotSymbols=e.data:a.hotSymbols=[],s.n=5;break;case 4:s.p=4,s.v,a.hotSymbols=[];case 5:return s.p=5,a.loadingHotSymbols=!1,s.f(5);case 6:return s.a(2)}},s,null,[[2,4,5,6]])}))()},removeFromWatchlist:function(t){var a=arguments,s=this;return(0,u.A)((0,d.A)().m(function e(){var i,r,o;return(0,d.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(s.userId){e.n=1;break}return e.a(2);case 1:return i="object"===(0,n.A)(t)?t.symbol:t,r="object"===(0,n.A)(t)?t.market:a[1],e.p=2,e.n=3,(0,v.mk)({userid:s.userId,symbol:i,market:r});case 3:if(o=e.v,!o||1!==o.code){e.n=5;break}return s.$message.success(s.$t("dashboard.analysis.message.removeStockSuccess")),e.n=4,s.loadWatchlist();case 4:e.n=6;break;case 5:s.$message.error((null===o||void 0===o?void 0:o.msg)||s.$t("dashboard.analysis.message.removeStockFailed"));case 6:e.n=8;break;case 7:e.p=7,e.v,s.$message.error(s.$t("dashboard.analysis.message.removeStockFailed"));case 8:return e.a(2)}},e,null,[[2,7]])}))()},getMarketName:function(t){return this.$t("dashboard.analysis.market.".concat(t))||t},formatNumber:function(t){return"string"===typeof t?t:t.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})},loadMarketTypes:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return a.p=0,a.n=1,(0,v.iO)();case 1:s=a.v,s&&1===s.code&&s.data&&Array.isArray(s.data)?t.marketTypes=s.data.map(function(t){return{value:t.value,i18nKey:t.i18nKey||"dashboard.analysis.market.".concat(t.value)}}):t.marketTypes=[{value:"USStock",i18nKey:"dashboard.analysis.market.USStock"},{value:"Crypto",i18nKey:"dashboard.analysis.market.Crypto"},{value:"Forex",i18nKey:"dashboard.analysis.market.Forex"},{value:"Futures",i18nKey:"dashboard.analysis.market.Futures"}],a.n=3;break;case 2:a.p=2,a.v,t.marketTypes=[{value:"USStock",i18nKey:"dashboard.analysis.market.USStock"},{value:"Crypto",i18nKey:"dashboard.analysis.market.Crypto"},{value:"Forex",i18nKey:"dashboard.analysis.market.Forex"},{value:"Futures",i18nKey:"dashboard.analysis.market.Futures"}];case 3:t.marketTypes.length>0&&!t.selectedMarketTab&&(t.selectedMarketTab=t.marketTypes[0].value);case 4:return a.a(2)}},a,null,[[0,2]])}))()}},watch:{presetSymbol:function(t){t&&t!==this.selectedSymbol&&(this.selectedSymbol=t,this.analysisResult=null,this.analysisError=null,this.analysisErrorTone="error")},autoAnalyzeSignal:function(t){var a=this;t&&(this.presetSymbol&&this.presetSymbol!==this.selectedSymbol&&(this.selectedSymbol=this.presetSymbol),this.$nextTick(function(){a.startFastAnalysis()}))},showAddStockModal:function(t){t?(this.marketTypes.length>0&&!this.selectedMarketTab&&(this.selectedMarketTab=this.marketTypes[0].value),this.selectedMarketTab&&this.loadHotSymbols(this.selectedMarketTab)):(this.selectedSymbolForAdd=null,this.symbolSearchKeyword="",this.symbolSearchResults=[],this.hasSearched=!1,this.searchTimer&&(clearTimeout(this.searchTimer),this.searchTimer=null))}}},N=F,I=(0,x.A)(N,e,i,!1,null,"5cbe52d9",null),D=I.exports},44146:function(t,a,s){s.d(a,{EF:function(){return l},f$:function(){return r},kF:function(){return o},r9:function(){return c},yI:function(){return n}});var e=s(75769),i="/api/global-market";function n(){return(0,e.Ay)({url:"".concat(i,"/overview"),method:"get"})}function r(){return(0,e.Ay)({url:"".concat(i,"/heatmap"),method:"get"})}function o(){return(0,e.Ay)({url:"".concat(i,"/calendar"),method:"get"})}function l(){return(0,e.Ay)({url:"".concat(i,"/sentiment"),method:"get"})}function c(t){return(0,e.Ay)({url:"".concat(i,"/opportunities"),method:"get",params:t})}},35038:function(t,a,s){s.d(a,{Qo:function(){return n},_3:function(){return d},dp:function(){return r},iO:function(){return c},mk:function(){return o},ms:function(){return l},z6:function(){return u}});var e=s(75769),i={GetWatchlist:"/api/market/watchlist/get",AddWatchlist:"/api/market/watchlist/add",RemoveWatchlist:"/api/market/watchlist/remove",GetWatchlistPrices:"/api/market/watchlist/prices",MultiAnalysis:"/api/analysis/multiAnalysis",CreateAnalysisTask:"/api/analysis/createTask",GetAnalysisTaskStatus:"/api/analysis/getTaskStatus",GetAnalysisHistoryList:"/api/analysis/getHistoryList",DeleteAnalysisTask:"/api/analysis/deleteTask",ReflectAnalysis:"/api/analysis/reflect",ChatMessage:"/api/ai/chat/message",GetChatHistory:"/api/ai/chat/history",SaveChatHistory:"/api/ai/chat/history/save",GetConfig:"/api/market/config",GetMenuFooterConfig:"/api/market/menuFooterConfig",GetMarketTypes:"/api/market/types",SearchSymbols:"/api/market/symbols/search",GetHotSymbols:"/api/market/symbols/hot"};function n(t){return(0,e.Ay)({url:i.GetWatchlist,method:"get",params:t})}function r(t){return(0,e.Ay)({url:i.AddWatchlist,method:"post",data:t})}function o(t){return(0,e.Ay)({url:i.RemoveWatchlist,method:"post",data:t})}function l(t){return(0,e.Ay)({url:i.GetWatchlistPrices,method:"get",params:{watchlist:JSON.stringify(t.watchlist||[])}})}function c(){return(0,e.Ay)({url:i.GetMarketTypes,method:"get"})}function d(t){return(0,e.Ay)({url:i.SearchSymbols,method:"get",params:t})}function u(t){return(0,e.Ay)({url:i.GetHotSymbols,method:"get",params:t})}},24364:function(t,a,s){s.d(a,{$p:function(){return o},Dt:function(){return i},Iw:function(){return v},Ps:function(){return n},Xg:function(){return r},_3:function(){return g},aU:function(){return h},bC:function(){return l},cg:function(){return y},ei:function(){return m},f:function(){return b},iO:function(){return _},qS:function(){return f},qu:function(){return p},sk:function(){return u},w1:function(){return c},yr:function(){return d}});var e=s(75769);function i(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,e.Ay)({url:"/api/portfolio/positions",method:"get",params:t})}function n(t){return(0,e.Ay)({url:"/api/portfolio/positions",method:"post",data:t})}function r(t,a){return(0,e.Ay)({url:"/api/portfolio/positions/".concat(t),method:"put",data:a})}function o(t){return(0,e.Ay)({url:"/api/portfolio/positions/".concat(t),method:"delete"})}function l(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,e.Ay)({url:"/api/portfolio/summary",method:"get",params:t})}function c(){return(0,e.Ay)({url:"/api/portfolio/monitors",method:"get"})}function d(t){return(0,e.Ay)({url:"/api/portfolio/monitors",method:"post",data:t})}function u(t,a){return(0,e.Ay)({url:"/api/portfolio/monitors/".concat(t),method:"put",data:a})}function m(t){return(0,e.Ay)({url:"/api/portfolio/monitors/".concat(t),method:"delete"})}function h(t){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return(0,e.Ay)({url:"/api/portfolio/monitors/".concat(t,"/run"),method:"post",data:a})}function p(){return(0,e.Ay)({url:"/api/portfolio/alerts",method:"get"})}function v(t){return(0,e.Ay)({url:"/api/portfolio/alerts",method:"post",data:t})}function y(t,a){return(0,e.Ay)({url:"/api/portfolio/alerts/".concat(t),method:"put",data:a})}function f(t){return(0,e.Ay)({url:"/api/portfolio/alerts/".concat(t),method:"delete"})}function b(){return(0,e.Ay)({url:"/api/portfolio/groups",method:"get"})}function g(t){return(0,e.Ay)({url:"/api/market/symbols/search",method:"post",data:t})}function _(){return(0,e.Ay)({url:"/api/market/types",method:"get"})}},21560:function(t,a,s){s.d(a,{A:function(){return i}});s(52675),s(89463),s(2259),s(26099),s(47764),s(62953);var e=s(44735);function i(t){if(null!=t){var a=t["function"==typeof Symbol&&Symbol.iterator||"@@iterator"],s=0;if(a)return a.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length))return{next:function(){return t&&s>=t.length&&(t=void 0),{value:t&&t[s++],done:!t}}}}throw new TypeError((0,e.A)(t)+" is not iterable")}}}]); \ No newline at end of file diff --git a/frontend/dist/js/855.b7c480e0.js b/frontend/dist/js/855.b7c480e0.js new file mode 100644 index 0000000..bdea2cb --- /dev/null +++ b/frontend/dist/js/855.b7c480e0.js @@ -0,0 +1 @@ +"use strict";(self["webpackChunkvue_antd_pro"]=self["webpackChunkvue_antd_pro"]||[]).push([[855],{37855:function(t,a,s){s.r(a),s.d(a,{default:function(){return D}});s(74423);var e=function(){var t=this,a=t._self._c;return a("div",{staticClass:"ai-analysis-container",class:{"theme-dark":t.isDarkTheme,embedded:t.embedded},style:{"--primary-color":t.primaryColor}},[a("div",{staticClass:"main-content-full"},[a("div",{staticClass:"top-index-bar"},[t.loadingSentiment?[t._m(0),t._m(1),t._m(2)]:[a("div",{staticClass:"indicator-box fear-greed",class:t.getFearGreedClass(t.marketData.fearGreed)},[a("span",{staticClass:"ind-label"},[t._v(t._s(t.$t("globalMarket.fearGreedShort")))]),a("span",{staticClass:"ind-value"},[t._v(t._s(t.marketData.fearGreed||"--"))])]),a("div",{staticClass:"indicator-box vix",class:t.getVixLevel(t.marketData.vix)},[a("span",{staticClass:"ind-label"},[t._v("VIX")]),a("span",{staticClass:"ind-value"},[t._v(t._s(t.marketData.vix||"--"))])]),a("div",{staticClass:"indicator-box dxy"},[a("span",{staticClass:"ind-label"},[t._v("DXY")]),a("span",{staticClass:"ind-value"},[t._v(t._s(t.marketData.dxy||"--"))])])],a("div",{staticClass:"indices-marquee"},[t.loadingIndices?[a("div",{staticClass:"indices-loading"},[a("a-icon",{attrs:{type:"loading"}}),t._v(" "+t._s(t.$t("common.loading")||"加载中...")+" ")],1)]:t.marketData.indices.length>0?[a("div",{staticClass:"marquee-track"},[t._l(t.marketData.indices,function(s){return a("div",{key:"a-"+s.symbol,staticClass:"index-item"},[a("span",{staticClass:"idx-flag"},[t._v(t._s(s.flag))]),a("span",{staticClass:"idx-symbol"},[t._v(t._s(s.symbol))]),a("span",{staticClass:"idx-price"},[t._v(t._s(t.formatPrice(s.price)))]),a("span",{staticClass:"idx-change",class:s.change>=0?"up":"down"},[a("a-icon",{attrs:{type:s.change>=0?"caret-up":"caret-down"}}),t._v(" "+t._s(Math.abs(s.change).toFixed(2))+"% ")],1)])}),t._l(t.marketData.indices,function(s){return a("div",{key:"b-"+s.symbol,staticClass:"index-item"},[a("span",{staticClass:"idx-flag"},[t._v(t._s(s.flag))]),a("span",{staticClass:"idx-symbol"},[t._v(t._s(s.symbol))]),a("span",{staticClass:"idx-price"},[t._v(t._s(t.formatPrice(s.price)))]),a("span",{staticClass:"idx-change",class:s.change>=0?"up":"down"},[a("a-icon",{attrs:{type:s.change>=0?"caret-up":"caret-down"}}),t._v(" "+t._s(Math.abs(s.change).toFixed(2))+"% ")],1)])})],2)]:[a("div",{staticClass:"indices-empty"},[t._v("--")])]],2),a("a-button",{staticClass:"refresh-btn",attrs:{type:"link",size:"small",loading:t.loadingMarket},on:{click:t.loadMarketData}},[a("a-icon",{attrs:{type:"sync",spin:t.loadingMarket}})],1)],2),a("div",{staticClass:"main-body"},[a("div",{staticClass:"left-panel"},[a("div",{staticClass:"heatmap-box"},[a("div",{staticClass:"box-header"},[a("a-radio-group",{attrs:{size:"small","button-style":"solid"},model:{value:t.heatmapType,callback:function(a){t.heatmapType=a},expression:"heatmapType"}},[a("a-radio-button",{attrs:{value:"crypto"}},[t._v(t._s(t.$t("globalMarket.cryptoHeatmap")))]),a("a-radio-button",{attrs:{value:"commodities"}},[t._v(t._s(t.$t("globalMarket.commoditiesHeatmap")))]),a("a-radio-button",{attrs:{value:"sectors"}},[t._v(t._s(t.$t("globalMarket.sectorHeatmap")))]),a("a-radio-button",{attrs:{value:"forex"}},[t._v(t._s(t.$t("globalMarket.forexHeatmap")))])],1)],1),a("div",{staticClass:"heatmap-grid"},[t.loadingHeatmap?t._l(12,function(t){return a("div",{key:"skel-"+t,staticClass:"heat-cell skeleton-cell"},[a("span",{staticClass:"skeleton-text short"}),a("span",{staticClass:"skeleton-text"})])}):t.currentHeatmap.length>0?t._l(t.currentHeatmap.slice(0,12),function(s,e){return a("div",{key:e,staticClass:"heat-cell",style:t.getHeatmapStyle(s.value)},[a("span",{staticClass:"heat-name"},[t._v(t._s(t.getHeatmapName(s)))]),s.price?a("span",{staticClass:"heat-price"},[t._v(t._s(t.formatHeatmapPrice(s.price)))]):t._e(),a("span",{staticClass:"heat-val"},[t._v(t._s(s.value>=0?"+":"")+t._s(t.formatNum(s.value))+"%")])])}):[a("div",{staticClass:"heatmap-empty"},[t._v(t._s(t.$t("common.noData")||"暂无数据"))])]],2)]),a("div",{staticClass:"calendar-box"},[a("div",{staticClass:"box-header"},[a("span",{staticClass:"box-title"},[a("a-icon",{attrs:{type:"calendar"}}),t._v(" "+t._s(t.$t("globalMarket.calendar")))],1)]),a("div",{staticClass:"calendar-list"},[t.loadingCalendar?t._l(5,function(t){return a("div",{key:"cal-skel-"+t,staticClass:"cal-item skeleton-item"},[a("span",{staticClass:"skeleton-text short"}),a("span",{staticClass:"skeleton-text short"}),a("span",{staticClass:"skeleton-text"})])}):t.marketData.calendar.length>0?t._l(t.marketData.calendar.slice(0,10),function(s){return a("div",{key:s.id,staticClass:"cal-item",class:s.importance},[a("span",{staticClass:"cal-date"},[t._v(t._s(t.formatCalendarDate(s.date)))]),a("span",{staticClass:"cal-time"},[t._v(t._s(s.time||"--:--"))]),a("span",{staticClass:"cal-flag"},[t._v(t._s(t.getCountryFlag(s.country)))]),a("span",{staticClass:"cal-name"},[t._v(t._s(t.isZhLocale?s.name:s.name_en))]),a("span",{staticClass:"cal-impact",class:t.getImpactClass(s)},["bullish"===t.getImpactClass(s)?a("a-icon",{attrs:{type:"arrow-up"}}):"bearish"===t.getImpactClass(s)?a("a-icon",{attrs:{type:"arrow-down"}}):a("a-icon",{attrs:{type:"minus"}}),t._v(" "+t._s(s.actual||s.forecast||"--")+" ")],1)])}):[a("div",{staticClass:"cal-empty"},[t._v(t._s(t.$t("globalMarket.noEvents")))])]],2)])]),a("div",{staticClass:"right-panel"},[a("div",{staticClass:"analysis-toolbar"},[a("a-select",{staticClass:"symbol-selector",attrs:{placeholder:t.$t("dashboard.analysis.empty.selectSymbol"),size:"large","show-search":"","allow-clear":"","filter-option":t.filterSymbolOption},on:{change:t.handleSymbolChange},model:{value:t.selectedSymbol,callback:function(a){t.selectedSymbol=a},expression:"selectedSymbol"}},[t._l(t.watchlist||[],function(s){return a("a-select-option",{key:"".concat(s.market,"-").concat(s.symbol),attrs:{value:"".concat(s.market,":").concat(s.symbol)}},[a("span",{staticClass:"symbol-option"},[a("a-tag",{attrs:{color:t.getMarketColor(s.market),size:"small"}},[t._v(t._s(t.getMarketName(s.market)))]),a("strong",{staticStyle:{"margin-left":"6px"}},[t._v(t._s(s.symbol))]),s.name?a("span",{staticClass:"symbol-name"},[t._v(t._s(s.name))]):t._e()],1)])}),a("a-select-option",{key:"add-stock-option",staticClass:"add-stock-option",attrs:{value:"__add_stock_option__"}},[a("div",{staticStyle:{"text-align":"center",padding:"4px 0",color:"#1890ff"}},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"plus"}}),t._v(t._s(t.$t("dashboard.analysis.watchlist.add"))+" ")],1)])],2),a("a-button",{staticClass:"analyze-button",attrs:{type:"primary",size:"large",icon:"thunderbolt",loading:t.analyzing,disabled:!t.selectedSymbol||t.analyzing},on:{click:t.startFastAnalysis}},[t._v(" "+t._s(t.$t("fastAnalysis.startAnalysis"))+" ")]),a("a-button",{staticClass:"history-button",attrs:{size:"large",icon:"history"},on:{click:function(a){t.showHistoryModal=!0,t.loadHistoryList()}}},[t._v(" "+t._s(t.$t("fastAnalysis.history"))+" ")])],1),a("div",{staticClass:"analysis-main"},[t.analysisResult||t.analyzing||t.analysisError?t._e():a("div",{staticClass:"analysis-placeholder"},[a("div",{staticClass:"placeholder-hero"},[t._m(3),a("div",{staticClass:"hero-body"},[a("div",{staticClass:"hero-badge"},[t._v("AI-POWERED")]),a("h2",{staticClass:"hero-title"},[t._v(t._s(t.$t("aiAssetAnalysis.placeholder.title")))]),a("p",{staticClass:"hero-subtitle"},[t._v(t._s(t.$t("aiAssetAnalysis.placeholder.subtitle")))]),a("div",{staticClass:"hero-stats"},[a("div",{staticClass:"hstat"},[a("div",{staticClass:"hstat-icon"},[a("a-icon",{attrs:{type:"line-chart"}})],1),a("div",{staticClass:"hstat-body"},[a("span",{staticClass:"hstat-val"},[t._v(t._s(t.$t("aiAssetAnalysis.placeholder.feature1")))]),a("span",{staticClass:"hstat-label"},[t._v(t._s(t.$t("aiAssetAnalysis.placeholder.feature1Desc")))])])]),a("div",{staticClass:"hstat"},[a("div",{staticClass:"hstat-icon"},[a("a-icon",{attrs:{type:"dashboard"}})],1),a("div",{staticClass:"hstat-body"},[a("span",{staticClass:"hstat-val"},[t._v(t._s(t.$t("aiAssetAnalysis.placeholder.feature2")))]),a("span",{staticClass:"hstat-label"},[t._v(t._s(t.$t("aiAssetAnalysis.placeholder.feature2Desc")))])])]),a("div",{staticClass:"hstat"},[a("div",{staticClass:"hstat-icon"},[a("a-icon",{attrs:{type:"apartment"}})],1),a("div",{staticClass:"hstat-body"},[a("span",{staticClass:"hstat-val"},[t._v(t._s(t.$t("aiAssetAnalysis.placeholder.feature3")))]),a("span",{staticClass:"hstat-label"},[t._v(t._s(t.$t("aiAssetAnalysis.placeholder.feature3Desc")))])])])]),a("div",{staticClass:"hero-cta"},[a("a-button",{attrs:{type:"primary",size:"large",icon:"plus"},on:{click:function(a){t.showAddStockModal=!0}}},[t._v(" "+t._s(t.$t("dashboard.analysis.watchlist.add"))+" ")]),a("a-button",{attrs:{size:"large",icon:"thunderbolt",disabled:!t.selectedSymbol},on:{click:t.startFastAnalysis}},[t._v(" "+t._s(t.$t("fastAnalysis.startAnalysis"))+" ")])],1),a("p",{staticClass:"hero-hint"},[t._v(t._s(t.$t("aiAssetAnalysis.placeholder.quickStart")))])])])]),t.analysisResult||t.analyzing||t.analysisError?a("FastAnalysisReport",{attrs:{result:t.analysisResult,loading:t.analyzing,error:t.analysisError,"error-tone":t.analysisErrorTone},on:{retry:t.startFastAnalysis}}):t._e()],1)]),a("div",{staticClass:"watchlist-panel"},[a("div",{staticClass:"panel-header"},[a("span",{staticClass:"panel-title"},[a("a-icon",{attrs:{type:"star",theme:"filled"}}),t._v(" "+t._s(t.$t("dashboard.analysis.watchlist.title")))],1),a("span",{staticClass:"panel-header-actions"},[a("a-tooltip",{attrs:{title:t.$t("aiAssetAnalysis.tasks.manage")}},[a("a-badge",{attrs:{count:t.monitors.length,offset:[-2,2],"number-style":{fontSize:"9px",minWidth:"14px",height:"14px",lineHeight:"14px",padding:"0 3px"}}},[a("a-icon",{staticClass:"panel-header-icon",attrs:{type:"unordered-list"},on:{click:function(a){t.showTaskDrawer=!0}}})],1)],1),a("a-tooltip",{attrs:{title:t.$t("aiAssetAnalysis.batch.schedule")}},[a("a-icon",{staticClass:"panel-header-icon",attrs:{type:"schedule"},on:{click:t.toggleBatchMode}})],1),a("a-icon",{staticClass:"panel-header-icon",attrs:{type:"plus"},on:{click:function(a){t.showAddStockModal=!0}}})],1)]),t.watchlist&&t.watchlist.length>0?a("div",{staticClass:"panel-summary"},[a("div",{staticClass:"summary-chip"},[a("span",{staticClass:"sc-num"},[t._v(t._s(t.watchlist.length))]),a("span",{staticClass:"sc-label"},[t._v(t._s(t.$t("aiAssetAnalysis.watchlist.totalAssets")))])]),t.watchlistPositionCount>0?a("div",{staticClass:"summary-chip"},[a("span",{staticClass:"sc-num"},[t._v(t._s(t.watchlistPositionCount))]),a("span",{staticClass:"sc-label"},[t._v(t._s(t.$t("aiAssetAnalysis.watchlist.positionCount")))])]):t._e(),t.watchlistTaskCount>0?a("div",{staticClass:"summary-chip"},[a("span",{staticClass:"sc-num"},[t._v(t._s(t.watchlistTaskCount))]),a("span",{staticClass:"sc-label"},[t._v(t._s(t.$t("aiAssetAnalysis.watchlist.taskCount")))])]):t._e(),0!==t.watchlistTotalPnl?a("div",{staticClass:"summary-chip pnl"},[a("span",{staticClass:"sc-num",class:t.watchlistTotalPnl>=0?"up":"down"},[t._v(t._s(t.watchlistTotalPnl>=0?"+":"")+t._s(t.formatNum(t.watchlistTotalPnl)))]),a("span",{staticClass:"sc-label"},[t._v("P&L")])]):t._e()]):t._e(),t.batchMode?a("div",{staticClass:"batch-bar"},[a("a-checkbox",{staticClass:"batch-all-cb",attrs:{checked:t.batchSelectedAll,indeterminate:t.batchIndeterminate},on:{change:t.onBatchSelectAll}},[t._v(" "+t._s(t.$t("aiAssetAnalysis.batch.selectAll"))+" ")]),a("a-button",{attrs:{type:"primary",size:"small",disabled:0===t.batchSelectedKeys.length},on:{click:t.openBatchScheduleModal}},[t._v(" "+t._s(t.$t("aiAssetAnalysis.batch.schedule"))),t.batchSelectedKeys.length>0?[t._v(" "+t._s(t.batchSelectedKeys.length))]:t._e()],2),a("a-button",{attrs:{size:"small"},on:{click:t.toggleBatchMode}},[t._v(t._s(t.$t("common.cancel")))])],1):t._e(),a("div",{staticClass:"watchlist-list"},[t._l(t.watchlist||[],function(s){var e,i,n;return a("div",{key:"wl-".concat(s.market,"-").concat(s.symbol),staticClass:"wl-card",class:{active:t.selectedSymbol==="".concat(s.market,":").concat(s.symbol)},on:{click:function(a){return t.selectWatchlistItem(s)}}},[t.batchMode?a("a-checkbox",{staticClass:"wl-card-cb",attrs:{checked:t.batchSelectedKeys.includes("".concat(s.market,":").concat(s.symbol))},on:{change:function(a){return t.onBatchItemToggle(s,a)}},nativeOn:{click:function(t){t.stopPropagation()}}}):t._e(),a("div",{staticClass:"wl-card-body",class:{"with-cb":t.batchMode}},[a("div",{staticClass:"wl-row-main"},[a("span",{staticClass:"wl-symbol"},[t._v(t._s(s.symbol))]),a("span",{staticClass:"wl-market"},[t._v(t._s(t.getMarketName(s.market)))]),a("span",{staticClass:"wl-spacer"}),t.watchlistPrices["".concat(s.market,":").concat(s.symbol)]?[a("span",{staticClass:"wl-price"},[t._v(t._s(t.formatPrice(t.watchlistPrices["".concat(s.market,":").concat(s.symbol)].price)))]),a("span",{staticClass:"wl-change",class:((null===(e=t.watchlistPrices["".concat(s.market,":").concat(s.symbol)])||void 0===e?void 0:e.change)||0)>=0?"up":"down"},[t._v(" "+t._s(((null===(i=t.watchlistPrices["".concat(s.market,":").concat(s.symbol)])||void 0===i?void 0:i.change)||0)>=0?"+":"")+t._s(t.formatNum(null===(n=t.watchlistPrices["".concat(s.market,":").concat(s.symbol)])||void 0===n?void 0:n.change))+"% ")])]:t._e()],2),t.positionSummaryMap["".concat(s.market,":").concat(s.symbol)]?a("div",{staticClass:"wl-row-pnl"},[a("span",{staticClass:"wl-pnl-qty"},[t._v(t._s(t.formatNum(t.positionSummaryMap["".concat(s.market,":").concat(s.symbol)].quantity,4))+" @ "+t._s(t.formatPrice(t.positionSummaryMap["".concat(s.market,":").concat(s.symbol)].avgEntry||0)))]),a("span",{staticClass:"wl-pnl-val",class:t.positionSummaryMap["".concat(s.market,":").concat(s.symbol)].pnl>=0?"up":"down"},[t._v(" "+t._s(t.positionSummaryMap["".concat(s.market,":").concat(s.symbol)].pnl>=0?"+":"")+t._s(t.formatNum(t.positionSummaryMap["".concat(s.market,":").concat(s.symbol)].pnl||0))+" ("+t._s(t.positionSummaryMap["".concat(s.market,":").concat(s.symbol)].pnlPercent>=0?"+":"")+t._s(t.formatNum(t.positionSummaryMap["".concat(s.market,":").concat(s.symbol)].pnlPercent||0))+"%) ")])]):t._e(),t.getMonitorMeta(s)?a("div",{staticClass:"wl-row-task"},[a("span",{staticClass:"wl-task-badge",class:t.getMonitorMeta(s).activeCount>0?"active":"paused",on:{click:function(a){return a.stopPropagation(),t.toggleStockMonitor(s)}}},[a("a-icon",{attrs:{type:t.getMonitorMeta(s).activeCount>0?"sync":"pause-circle",spin:t.getMonitorMeta(s).activeCount>0}}),t._v(" "+t._s(t.getMonitorMeta(s).activeCount>0?t.$t("aiAssetAnalysis.monitor.running"):t.$t("aiAssetAnalysis.monitor.paused"))+" ")],1),t.getMonitorMeta(s).nextRunAtText?a("span",{staticClass:"wl-task-next"},[t._v(t._s(t.getMonitorMeta(s).nextRunAtText))]):t._e()]):t._e()]),a("div",{staticClass:"wl-card-hover-actions"},[a("a-tooltip",{attrs:{title:t.$t("aiAssetAnalysis.position.quickAdd")}},[a("span",{staticClass:"wl-hover-btn",on:{click:function(a){return a.stopPropagation(),t.openPositionModal(s)}}},[a("a-icon",{attrs:{type:"wallet"}})],1)]),a("a-tooltip",{attrs:{title:t.$t("aiAssetAnalysis.monitor.quickTask")}},[a("span",{staticClass:"wl-hover-btn",on:{click:function(a){return a.stopPropagation(),t.openMonitorModal(s)}}},[a("a-icon",{attrs:{type:"clock-circle"}})],1)]),a("span",{staticClass:"wl-hover-btn danger",on:{click:function(a){return a.stopPropagation(),t.removeFromWatchlist(s)}}},[a("a-icon",{attrs:{type:"delete"}})],1)],1)],1)}),t.watchlist&&0!==t.watchlist.length?t._e():a("div",{staticClass:"watchlist-empty"},[a("div",{staticClass:"we-icon"},[a("a-icon",{attrs:{type:"star"}})],1),a("p",[t._v(t._s(t.$t("dashboard.analysis.empty.noWatchlist")))]),a("a-button",{attrs:{type:"primary",size:"small",icon:"plus"},on:{click:function(a){t.showAddStockModal=!0}}},[t._v(" "+t._s(t.$t("dashboard.analysis.watchlist.add"))+" ")])],1)],2)])])]),a("a-modal",{attrs:{title:t.$t("dashboard.analysis.modal.addStock.title"),visible:t.showAddStockModal,confirmLoading:t.addingStock,width:"600px",wrapClassName:t.isDarkTheme?"qd-dark-modal":"",okText:t.$t("dashboard.analysis.modal.addStock.confirm"),cancelText:t.$t("dashboard.analysis.modal.addStock.cancel")},on:{ok:t.handleAddStock,cancel:t.handleCloseAddStockModal}},[a("div",{staticClass:"add-stock-modal-content"},[a("a-tabs",{staticClass:"market-tabs",on:{change:t.handleMarketTabChange},model:{value:t.selectedMarketTab,callback:function(a){t.selectedMarketTab=a},expression:"selectedMarketTab"}},t._l(t.marketTypes,function(s){return a("a-tab-pane",{key:s.value,attrs:{tab:t.$t(s.i18nKey||"dashboard.analysis.market.".concat(s.value))}})}),1),a("div",{staticClass:"symbol-search-section"},[a("a-input-search",{attrs:{placeholder:t.$t("dashboard.analysis.modal.addStock.searchOrInputPlaceholder"),loading:t.searchingSymbols,size:"large","allow-clear":""},on:{search:t.handleSearchOrInput,change:t.handleSymbolSearchInput},model:{value:t.symbolSearchKeyword,callback:function(a){t.symbolSearchKeyword=a},expression:"symbolSearchKeyword"}},[a("a-button",{attrs:{slot:"enterButton",type:"primary",icon:"search"},slot:"enterButton"},[t._v(" "+t._s(t.$t("dashboard.analysis.modal.addStock.search"))+" ")])],1)],1),t.symbolSearchResults.length>0?a("div",{staticClass:"search-results-section"},[a("div",{staticClass:"section-title"},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"search"}}),t._v(" "+t._s(t.$t("dashboard.analysis.modal.addStock.searchResults"))+" ")],1),a("a-list",{staticClass:"symbol-list",attrs:{"data-source":t.symbolSearchResults,loading:t.searchingSymbols,size:"small"},scopedSlots:t._u([{key:"renderItem",fn:function(s){return a("a-list-item",{staticClass:"symbol-list-item",on:{click:function(a){return t.selectSymbol(s)}}},[a("a-list-item-meta",[a("template",{slot:"title"},[a("div",{staticClass:"symbol-item-content"},[a("span",{staticClass:"symbol-code"},[t._v(t._s(s.symbol))]),a("span",{staticClass:"symbol-name"},[t._v(t._s(s.name))]),s.exchange?a("a-tag",{staticStyle:{"margin-left":"8px"},attrs:{size:"small",color:"blue"}},[t._v(" "+t._s(s.exchange)+" ")]):t._e()],1)])],2)],1)}}],null,!1,1074844145)})],1):t._e(),a("div",{staticClass:"hot-symbols-section"},[a("div",{staticClass:"section-title"},[a("a-icon",{staticStyle:{color:"#ff4d4f","margin-right":"4px"},attrs:{type:"fire"}}),t._v(" "+t._s(t.$t("dashboard.analysis.modal.addStock.hotSymbols"))+" ")],1),a("a-spin",{attrs:{spinning:t.loadingHotSymbols}},[t.hotSymbols.length>0?a("a-list",{staticClass:"symbol-list",attrs:{"data-source":t.hotSymbols,size:"small"},scopedSlots:t._u([{key:"renderItem",fn:function(s){return a("a-list-item",{staticClass:"symbol-list-item",on:{click:function(a){return t.selectSymbol(s)}}},[a("a-list-item-meta",[a("template",{slot:"title"},[a("div",{staticClass:"symbol-item-content"},[a("span",{staticClass:"symbol-code"},[t._v(t._s(s.symbol))]),a("span",{staticClass:"symbol-name"},[t._v(t._s(s.name))]),s.exchange?a("a-tag",{staticStyle:{"margin-left":"8px"},attrs:{size:"small",color:"orange"}},[t._v(" "+t._s(s.exchange)+" ")]):t._e()],1)])],2)],1)}}],null,!1,2177647935)}):a("a-empty",{attrs:{description:t.$t("dashboard.analysis.modal.addStock.noHotSymbols"),image:!1}})],1)],1),t.selectedSymbolForAdd?a("div",{staticClass:"selected-symbol-section"},[a("a-alert",{attrs:{message:t.$t("dashboard.analysis.modal.addStock.selectedSymbol"),type:"info","show-icon":"",closable:""},on:{close:function(a){t.selectedSymbolForAdd=null}}},[a("template",{slot:"description"},[a("div",{staticClass:"selected-symbol-info"},[a("a-tag",{staticStyle:{"margin-right":"8px"},attrs:{color:t.getMarketColor(t.selectedSymbolForAdd.market)}},[t._v(" "+t._s(t.$t("dashboard.analysis.market.".concat(t.selectedSymbolForAdd.market)))+" ")]),a("strong",[t._v(t._s(t.selectedSymbolForAdd.symbol))]),t.selectedSymbolForAdd.name?a("span",{staticStyle:{color:"#999","margin-left":"8px"}},[t._v(t._s(t.selectedSymbolForAdd.name))]):t._e()],1)])],2)],1):t._e()],1)]),a("a-modal",{attrs:{visible:t.showPositionModal,title:"".concat(t.$i18n&&"zh-CN"===t.$i18n.locale?"创建持仓(虚拟仓)":"Create Position (Virtual)"," - ").concat(t.targetStockForOps?t.targetStockForOps.symbol:""),wrapClassName:t.isDarkTheme?"qd-dark-modal":""},on:{ok:t.savePosition,cancel:function(a){t.showPositionModal=!1}}},[a("a-form",{attrs:{layout:"vertical"}},[a("a-form-item",{attrs:{label:t.$t("portfolio.positions.side")||"Direction"}},[a("a-select",{model:{value:t.positionForm.side,callback:function(a){t.$set(t.positionForm,"side",a)},expression:"positionForm.side"}},[a("a-select-option",{attrs:{value:"long"}},[t._v(t._s(t.$t("portfolio.positions.long")||"Long"))]),a("a-select-option",{attrs:{value:"short"}},[t._v(t._s(t.$t("portfolio.positions.short")||"Short"))])],1)],1),a("a-form-item",{attrs:{label:t.$i18n&&"zh-CN"===t.$i18n.locale?"数量":"Quantity"}},[a("a-input-number",{staticStyle:{width:"100%"},attrs:{min:0,step:.01},model:{value:t.positionForm.quantity,callback:function(a){t.$set(t.positionForm,"quantity",a)},expression:"positionForm.quantity"}})],1),a("a-form-item",{attrs:{label:t.$i18n&&"zh-CN"===t.$i18n.locale?"买入单价":"Entry Price"}},[a("a-input-number",{staticStyle:{width:"100%"},attrs:{min:0,step:.01},model:{value:t.positionForm.entryPrice,callback:function(a){t.$set(t.positionForm,"entryPrice",a)},expression:"positionForm.entryPrice"}})],1)],1)],1),a("a-modal",{attrs:{visible:t.showMonitorModal,title:"".concat(t.$t("aiAssetAnalysis.monitor.quickTask")," - ").concat(t.targetStockForOps?t.targetStockForOps.symbol:""),wrapClassName:t.isDarkTheme?"qd-dark-modal":""},on:{ok:t.saveMonitorTask,cancel:function(a){t.showMonitorModal=!1}}},[a("a-form",{attrs:{layout:"vertical"}},[a("a-form-item",{attrs:{label:t.$t("aiAssetAnalysis.batch.intervalLabel")}},[a("a-select",{staticStyle:{width:"100%"},model:{value:t.monitorForm.interval_min,callback:function(a){t.$set(t.monitorForm,"interval_min",a)},expression:"monitorForm.interval_min"}},[a("a-select-option",{attrs:{value:60}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval1h")))]),a("a-select-option",{attrs:{value:240}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval4h")))]),a("a-select-option",{attrs:{value:720}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval12h")))]),a("a-select-option",{attrs:{value:1440}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval24h")))])],1)],1),a("a-form-item",{attrs:{label:t.$t("aiAssetAnalysis.batch.notifyLabel")}},[a("a-checkbox-group",{staticStyle:{width:"100%"},model:{value:t.monitorForm.notify_channels,callback:function(a){t.$set(t.monitorForm,"notify_channels",a)},expression:"monitorForm.notify_channels"}},[a("a-row",{attrs:{gutter:8}},[a("a-col",{attrs:{span:8}},[a("a-checkbox",{attrs:{value:"email"}},[a("a-icon",{attrs:{type:"mail"}}),t._v(" Email")],1)],1),a("a-col",{attrs:{span:8}},[a("a-checkbox",{attrs:{value:"telegram"}},[a("a-icon",{attrs:{type:"send"}}),t._v(" Telegram")],1)],1),a("a-col",{attrs:{span:8}},[a("a-checkbox",{attrs:{value:"webhook"}},[a("a-icon",{attrs:{type:"api"}}),t._v(" Webhook")],1)],1)],1)],1)],1),a("a-alert",{attrs:{message:t.$t("aiAssetAnalysis.monitor.tip"),type:"info","show-icon":""}})],1)],1),a("a-modal",{attrs:{visible:t.showBatchScheduleModal,title:t.$t("aiAssetAnalysis.batch.scheduleTitle"),confirmLoading:t.batchRunning,width:"520px",wrapClassName:t.isDarkTheme?"qd-dark-modal":""},on:{ok:t.saveBatchSchedule,cancel:function(a){t.showBatchScheduleModal=!1}}},[a("div",{staticClass:"batch-modal-summary"},[a("p",[t._v(t._s(t.$t("aiAssetAnalysis.batch.scheduleDesc",{count:t.batchSelectedKeys.length})))]),a("div",{staticClass:"batch-symbols-preview"},t._l(t.batchSelectedKeys,function(s){return a("a-tag",{key:s,staticStyle:{"margin-bottom":"4px"},attrs:{color:"blue"}},[t._v(t._s(s.split(":")[1]))])}),1)]),a("a-form",{attrs:{layout:"vertical"}},[a("a-form-item",{attrs:{label:t.$t("aiAssetAnalysis.batch.intervalLabel")}},[a("a-select",{staticStyle:{width:"100%"},model:{value:t.batchScheduleForm.interval_min,callback:function(a){t.$set(t.batchScheduleForm,"interval_min",a)},expression:"batchScheduleForm.interval_min"}},[a("a-select-option",{attrs:{value:60}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval1h")))]),a("a-select-option",{attrs:{value:240}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval4h")))]),a("a-select-option",{attrs:{value:720}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval12h")))]),a("a-select-option",{attrs:{value:1440}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval24h")))])],1)],1),a("a-form-item",{attrs:{label:t.$t("aiAssetAnalysis.batch.notifyLabel")}},[a("a-checkbox-group",{staticStyle:{width:"100%"},model:{value:t.batchScheduleForm.notify_channels,callback:function(a){t.$set(t.batchScheduleForm,"notify_channels",a)},expression:"batchScheduleForm.notify_channels"}},[a("a-row",{attrs:{gutter:8}},[a("a-col",{attrs:{span:8}},[a("a-checkbox",{attrs:{value:"email"}},[a("a-icon",{attrs:{type:"mail"}}),t._v(" Email")],1)],1),a("a-col",{attrs:{span:8}},[a("a-checkbox",{attrs:{value:"telegram"}},[a("a-icon",{attrs:{type:"send"}}),t._v(" Telegram")],1)],1),a("a-col",{attrs:{span:8}},[a("a-checkbox",{attrs:{value:"webhook"}},[a("a-icon",{attrs:{type:"api"}}),t._v(" Webhook")],1)],1)],1)],1)],1)],1),a("a-alert",{staticStyle:{"margin-top":"8px"},attrs:{message:t.$t("aiAssetAnalysis.batch.scheduleTip"),type:"info","show-icon":""}})],1),a("a-drawer",{attrs:{title:t.$t("aiAssetAnalysis.tasks.manage"),visible:t.showTaskDrawer,width:"420",placement:"right",wrapClassName:t.isDarkTheme?"qd-dark-drawer":""},on:{close:function(a){t.showTaskDrawer=!1}}},[0===t.monitors.length?a("div",{staticClass:"task-drawer-empty"},[a("a-icon",{staticStyle:{"font-size":"40px",color:"#ccc"},attrs:{type:"inbox"}}),a("p",[t._v(t._s(t.$t("aiAssetAnalysis.tasks.empty")))])],1):a("div",{staticClass:"task-drawer-list"},t._l(t.monitors,function(s){return a("div",{key:s.id,staticClass:"task-item"},[a("div",{staticClass:"task-item-header"},[a("span",{staticClass:"task-item-name"},[t._v(t._s(s.name||"AI Task"))]),a("a-tag",{attrs:{color:s.is_active?"green":"default",size:"small"}},[t._v(" "+t._s(s.is_active?t.$t("aiAssetAnalysis.monitor.running"):t.$t("aiAssetAnalysis.monitor.paused"))+" ")])],1),a("div",{staticClass:"task-item-meta"},[s.config&&s.config.run_interval_minutes?a("span",[a("a-icon",{attrs:{type:"clock-circle"}}),t._v(" "+t._s(t.formatIntervalText(s.config.run_interval_minutes))+" ")],1):t._e(),s.next_run_at?a("span",[a("a-icon",{attrs:{type:"calendar"}}),t._v(" "+t._s(t._formatNextRunText(s.next_run_at))+" ")],1):t._e()]),a("div",{staticClass:"task-item-actions"},[a("a-button",{attrs:{size:"small",type:s.is_active?"default":"primary",icon:"poweroff"},on:{click:function(a){return t.handleToggleTask(s)}}},[t._v(" "+t._s(s.is_active?t.$t("aiAssetAnalysis.tasks.pause"):t.$t("aiAssetAnalysis.tasks.resume"))+" ")]),a("a-button",{attrs:{size:"small",icon:"edit"},on:{click:function(a){return t.handleEditTask(s)}}},[t._v(t._s(t.$t("aiAssetAnalysis.tasks.edit")))]),a("a-popconfirm",{attrs:{title:t.$t("aiAssetAnalysis.tasks.deleteConfirm"),okText:t.$t("common.confirm"),cancelText:t.$t("common.cancel")},on:{confirm:function(a){return t.handleDeleteTask(s)}}},[a("a-button",{attrs:{size:"small",type:"danger",icon:"delete"}},[t._v(t._s(t.$t("aiAssetAnalysis.tasks.delete")))])],1)],1)])}),0)]),a("a-modal",{attrs:{visible:t.showEditTaskModal,title:t.$t("aiAssetAnalysis.tasks.edit"),confirmLoading:t.editTaskLoading,wrapClassName:t.isDarkTheme?"qd-dark-modal":""},on:{ok:t.saveEditTask,cancel:function(a){t.showEditTaskModal=!1}}},[t.editTaskForm?a("a-form",{attrs:{layout:"vertical"}},[a("a-form-item",{attrs:{label:t.$t("aiAssetAnalysis.tasks.name")}},[a("a-input",{model:{value:t.editTaskForm.name,callback:function(a){t.$set(t.editTaskForm,"name",a)},expression:"editTaskForm.name"}})],1),a("a-form-item",{attrs:{label:t.$t("aiAssetAnalysis.batch.intervalLabel")}},[a("a-select",{staticStyle:{width:"100%"},model:{value:t.editTaskForm.interval_min,callback:function(a){t.$set(t.editTaskForm,"interval_min",a)},expression:"editTaskForm.interval_min"}},[a("a-select-option",{attrs:{value:60}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval1h")))]),a("a-select-option",{attrs:{value:240}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval4h")))]),a("a-select-option",{attrs:{value:720}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval12h")))]),a("a-select-option",{attrs:{value:1440}},[t._v(t._s(t.$t("aiAssetAnalysis.batch.interval24h")))])],1)],1),a("a-form-item",{attrs:{label:t.$t("aiAssetAnalysis.batch.notifyLabel")}},[a("a-checkbox-group",{staticStyle:{width:"100%"},model:{value:t.editTaskForm.notify_channels,callback:function(a){t.$set(t.editTaskForm,"notify_channels",a)},expression:"editTaskForm.notify_channels"}},[a("a-row",{attrs:{gutter:8}},[a("a-col",{attrs:{span:8}},[a("a-checkbox",{attrs:{value:"email"}},[a("a-icon",{attrs:{type:"mail"}}),t._v(" Email")],1)],1),a("a-col",{attrs:{span:8}},[a("a-checkbox",{attrs:{value:"telegram"}},[a("a-icon",{attrs:{type:"send"}}),t._v(" Telegram")],1)],1),a("a-col",{attrs:{span:8}},[a("a-checkbox",{attrs:{value:"webhook"}},[a("a-icon",{attrs:{type:"api"}}),t._v(" Webhook")],1)],1)],1)],1)],1)],1):t._e()],1),a("a-modal",{attrs:{title:t.$t("dashboard.analysis.modal.history.title"),visible:t.showHistoryModal,footer:null,width:"800px",bodyStyle:{maxHeight:"60vh",overflowY:"auto"},wrapClassName:t.isDarkTheme?"qd-dark-modal":""},on:{cancel:function(a){t.showHistoryModal=!1}}},[a("a-spin",{attrs:{spinning:t.historyLoading}},[a("a-list",{attrs:{"data-source":t.historyList,pagination:{current:t.historyPage,pageSize:t.historyPageSize,total:t.historyTotal,onChange:function(a){t.historyPage=a,t.loadHistoryList()},showSizeChanger:!0,pageSizeOptions:["10","20","50"],onShowSizeChange:function(a,s){t.historyPageSize=s,t.historyPage=1,t.loadHistoryList()}}},scopedSlots:t._u([{key:"renderItem",fn:function(s){return a("a-list-item",{},[a("a-list-item-meta",[a("template",{slot:"title"},[a("div",{staticStyle:{display:"flex","align-items":"center","justify-content":"space-between"}},[a("div",[a("a-tag",{staticStyle:{"margin-right":"8px"},attrs:{color:t.getMarketColor(s.market)}},[t._v(" "+t._s(t.getMarketName(s.market))+" ")]),a("strong",[t._v(t._s(s.symbol))]),a("a-tag",{staticStyle:{"margin-left":"12px"},attrs:{color:"BUY"===s.decision?"green":"SELL"===s.decision?"red":"blue"}},[t._v(" "+t._s(s.decision)+" ")]),a("a-tag",{staticStyle:{"margin-left":"8px"},attrs:{color:t.getStatusColor(s.status||"completed")}},[t._v(" "+t._s(t.getStatusText(s.status||"completed"))+" ")]),a("span",{staticStyle:{color:"#999","margin-left":"8px","font-size":"12px"}},[t._v(" "+t._s(t.$t("fastAnalysis.confidence"))+": "+t._s(s.confidence)+"% ")])],1),a("div",[a("a-button",{attrs:{type:"link",size:"small",icon:"eye",disabled:"processing"===(s.status||"").toLowerCase()},on:{click:function(a){return t.viewHistoryResult(s)}}},[t._v(" "+t._s(t.$t("dashboard.analysis.modal.history.viewResult"))+" ")]),a("a-popconfirm",{attrs:{title:t.$t("dashboard.analysis.modal.history.deleteConfirm"),"ok-text":t.$t("common.confirm"),"cancel-text":t.$t("common.cancel")},on:{confirm:function(a){return t.deleteHistoryItem(s)}}},[a("a-button",{staticStyle:{color:"#ff4d4f"},attrs:{type:"link",size:"small",icon:"delete"}},[t._v(" "+t._s(t.$t("dashboard.analysis.modal.history.delete"))+" ")])],1)],1)])]),a("template",{slot:"description"},[a("div",{staticStyle:{color:"#666","font-size":"12px"}},[s.price?a("span",[t._v("$"+t._s(t.formatNumber(s.price)))]):t._e(),s.summary?a("span",{staticStyle:{"margin-left":"8px"}},[t._v(t._s(s.summary.substring(0,80))+t._s(s.summary.length>80?"...":""))]):t._e()]),s.created_at?a("div",{staticStyle:{color:"#999","font-size":"12px","margin-top":"4px"}},[t._v(" "+t._s(t.formatIsoTime(s.created_at))+" ")]):t._e()])],2)],1)}}])}),t.historyLoading||0!==t.historyList.length?t._e():a("a-empty",{attrs:{description:t.$t("dashboard.analysis.empty.noHistory")}})],1)],1)],1)},i=[function(){var t=this,a=t._self._c;return a("div",{staticClass:"indicator-box skeleton-box"},[a("span",{staticClass:"skeleton-text short"}),a("span",{staticClass:"skeleton-text"})])},function(){var t=this,a=t._self._c;return a("div",{staticClass:"indicator-box skeleton-box"},[a("span",{staticClass:"skeleton-text short"}),a("span",{staticClass:"skeleton-text"})])},function(){var t=this,a=t._self._c;return a("div",{staticClass:"indicator-box skeleton-box"},[a("span",{staticClass:"skeleton-text short"}),a("span",{staticClass:"skeleton-text"})])},function(){var t=this,a=t._self._c;return a("div",{staticClass:"hero-bg"},[a("div",{staticClass:"hero-bg-circle c1"}),a("div",{staticClass:"hero-bg-circle c2"}),a("div",{staticClass:"hero-bg-grid"})])}],n=s(44735),r=s(21560),o=s(57532),l=s(2403),c=s(15863),d=s(81127),u=s(56252),m=s(76338),h=s(95353),p=s(505),v=s(35038),y=s(24364),f=s(75769),b="/api/fast-analysis";function g(t){return(0,f.Ay)({url:"".concat(b,"/analyze"),method:"post",data:t,timeout:3e5})}function _(t){return(0,f.Ay)({url:"".concat(b,"/history/all"),method:"get",params:t})}function k(t){return(0,f.Ay)({url:"".concat(b,"/history/").concat(t),method:"delete"})}function C(t){return(0,f.Ay)({url:"".concat(b,"/feedback"),method:"post",data:t})}var A=s(44146),S=function(){var t,a,s,e,i,n,r,o,l,c,d,u,m,h,p,v,y,f,b,g,_,k,C=this,A=C._self._c;return A("div",{staticClass:"fast-analysis-report",class:{"theme-dark":C.isDarkTheme}},[C.loading?A("div",{staticClass:"loading-container"},[A("div",{staticClass:"loading-content-pro"},[A("div",{staticClass:"loading-header"},[A("a-icon",{staticClass:"loading-icon-pro",attrs:{type:"thunderbolt"}}),A("span",{staticClass:"loading-title"},[C._v(C._s(C.$t("fastAnalysis.analyzing")))])],1),A("div",{staticClass:"progress-wrapper"},[A("a-progress",{attrs:{percent:C.progressPercent,showInfo:!1,strokeColor:"#1890ff",strokeWidth:8}}),A("span",{staticClass:"progress-text"},[C._v(C._s(C.formatProgress(C.progressPercent))+"%")])],1),A("div",{staticClass:"current-step"},[A("a-icon",{attrs:{type:"loading",spin:""}}),A("span",[C._v(C._s(C.currentStepText))])],1),A("div",{staticClass:"steps-list"},[A("div",{staticClass:"step-item",class:{done:C.step>1,active:1===C.step}},[A("span",{staticClass:"step-dot"}),A("span",{staticClass:"step-text"},[C._v(C._s(C.$t("fastAnalysis.step1")||"获取实时数据"))]),C.step>1?A("a-icon",{staticClass:"step-check",attrs:{type:"check"}}):C._e()],1),A("div",{staticClass:"step-item",class:{done:C.step>2,active:2===C.step}},[A("span",{staticClass:"step-dot"}),A("span",{staticClass:"step-text"},[C._v(C._s(C.$t("fastAnalysis.step2")||"计算技术指标"))]),C.step>2?A("a-icon",{staticClass:"step-check",attrs:{type:"check"}}):C._e()],1),A("div",{staticClass:"step-item",class:{done:C.step>3,active:3===C.step}},[A("span",{staticClass:"step-dot"}),A("span",{staticClass:"step-text"},[C._v(C._s(C.$t("fastAnalysis.step3")||"AI深度分析"))]),C.step>3?A("a-icon",{staticClass:"step-check",attrs:{type:"check"}}):C._e()],1),A("div",{staticClass:"step-item",class:{done:C.step>4,active:4===C.step}},[A("span",{staticClass:"step-dot"}),A("span",{staticClass:"step-text"},[C._v(C._s(C.$t("fastAnalysis.step4")||"生成报告"))]),C.step>4?A("a-icon",{staticClass:"step-check",attrs:{type:"check"}}):C._e()],1)]),A("div",{staticClass:"loading-footer"},[A("span",{staticClass:"elapsed-time"},[C._v(C._s(C.elapsedTimeText))])])])]):C.error?A("div",{staticClass:"error-container"},[A("a-result",{attrs:{status:"warning"===C.errorTone?"warning":"error",title:C.errorTitle,"sub-title":C.error},scopedSlots:C._u([{key:"extra",fn:function(){return[A("a-button",{attrs:{type:"primary"},on:{click:function(t){return C.$emit("retry")}}},[C._v(" "+C._s(C.$t("fastAnalysis.retry"))+" ")])]},proxy:!0}])})],1):C.result?A("div",{staticClass:"result-container"},[A("div",{staticClass:"decision-card",class:C.decisionClass},[A("div",{staticClass:"decision-main"},[A("div",{staticClass:"decision-badge"},[A("a-icon",{attrs:{type:C.decisionIcon}}),A("span",{staticClass:"decision-text"},[C._v(C._s(C.result.decision))])],1),A("div",{staticClass:"confidence-ring"},[A("a-progress",{attrs:{type:"circle",percent:C.result.confidence,width:80,strokeColor:C.confidenceColor},scopedSlots:C._u([{key:"format",fn:function(t){return[A("span",{staticClass:"confidence-value"},[C._v(C._s(t)+"%")])]}}])}),A("div",{staticClass:"confidence-label"},[C._v(C._s(C.$t("fastAnalysis.confidence")))])],1)]),A("div",{staticClass:"decision-summary"},[C._v(" "+C._s(C.result.summary)+" ")]),C.consensusBlock?A("div",{staticClass:"consensus-strip"},[A("div",{staticClass:"consensus-strip-title"},[A("a-icon",{attrs:{type:"cluster"}}),C._v(" "+C._s(C.$t("fastAnalysis.consensusTitle"))+" ")],1),A("div",{staticClass:"consensus-strip-metrics"},[A("span",{staticClass:"cm-item"},[A("em",[C._v(C._s(C.$t("fastAnalysis.consensusDecision")))]),C._v(" "+C._s(C.consensusBlock.consensus_decision)+" ")]),A("span",{staticClass:"cm-item"},[A("em",[C._v(C._s(C.$t("fastAnalysis.consensusScore")))]),C._v(" "+C._s(C.formatConsensusNum(C.consensusBlock.consensus_score))+" ")]),null!=C.consensusBlock.agreement_ratio?A("span",{staticClass:"cm-item"},[A("em",[C._v(C._s(C.$t("fastAnalysis.consensusAgreement")))]),C._v(" "+C._s(C.formatAgreementPct(C.consensusBlock.agreement_ratio))+" ")]):C._e()])]):C._e()]),A("div",{staticClass:"price-info-row",class:{"hold-mode":C.isHoldDecision}},[A("div",{staticClass:"price-card current"},[A("div",{staticClass:"price-label"},[C._v(C._s(C.$t("fastAnalysis.currentPrice")))]),A("div",{staticClass:"price-value"},[C._v("$"+C._s(C.formatPrice(null===(t=C.result.market_data)||void 0===t?void 0:t.current_price)))]),A("div",{staticClass:"price-change",class:(null===(a=C.result.market_data)||void 0===a?void 0:a.change_24h)>=0?"positive":"negative"},[C._v(" "+C._s((null===(s=C.result.market_data)||void 0===s?void 0:s.change_24h)>=0?"+":"")+C._s(C.formatNumber(null===(e=C.result.market_data)||void 0===e?void 0:e.change_24h,2))+"% ")])]),C.isHoldDecision?C._e():[A("div",{staticClass:"price-card entry"},[A("div",{staticClass:"price-label"},[C._v(C._s(C.$t("fastAnalysis.entryPrice")))]),A("div",{staticClass:"price-value"},[C._v("$"+C._s(C.formatPrice(C.tradingPlan.entry_price)))])]),A("div",{staticClass:"price-card stop"},[A("div",{staticClass:"price-label"},[C._v(C._s(C.$t("fastAnalysis.stopLoss")))]),A("div",{staticClass:"price-value negative"},[C._v("$"+C._s(C.formatPrice(C.tradingPlan.stop_loss)))]),A("div",{staticClass:"price-hint"},[A("a-tooltip",{attrs:{title:C.stopLossHintText}},[A("a-icon",{attrs:{type:"info-circle"}}),C._v(" "+C._s(C.$t("fastAnalysis.atrBased"))+" ")],1)],1)]),A("div",{staticClass:"price-card target"},[A("div",{staticClass:"price-label"},[C._v(C._s(C.$t("fastAnalysis.takeProfit")))]),A("div",{staticClass:"price-value positive"},[C._v("$"+C._s(C.formatPrice(C.tradingPlan.take_profit)))]),A("div",{staticClass:"price-hint"},[A("a-tooltip",{attrs:{title:C.takeProfitHintText}},[A("a-icon",{attrs:{type:"info-circle"}}),C._v(" "+C._s(C.$t("fastAnalysis.atrBased"))+" ")],1)],1)])]],2),C.trendOutlookBlocks.length||C.trendOutlookSummaryText?A("div",{staticClass:"trend-outlook-card"},[A("div",{staticClass:"trend-outlook-header"},[A("a-icon",{attrs:{type:"calendar"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.trendOutlookTitle")))])],1),C.trendOutlookSummaryText?A("div",{staticClass:"trend-outlook-summary"},[C._v(" "+C._s(C.trendOutlookSummaryText)+" ")]):C._e(),C.trendOutlookBlocks.length?A("div",{staticClass:"trend-outlook-grid"},C._l(C.trendOutlookBlocks,function(t){return A("div",{key:t.key,staticClass:"trend-outlook-item"},[A("div",{staticClass:"to-label"},[C._v(C._s(t.label))]),A("div",{staticClass:"to-trend",class:C.outlookTrendClass(t.trend)},[C._v(" "+C._s(C.formatOutlookTrend(t.trend))+" ")]),A("div",{staticClass:"to-meta"},[A("span",{staticClass:"to-score"},[C._v(C._s(null!=t.score?t.score:"--"))]),A("span",{staticClass:"to-str"},[C._v(C._s(t.strength||"--"))])])])}),0):C._e()]):C._e(),A("div",{staticClass:"scores-row"},[A("div",{staticClass:"score-item"},[A("div",{staticClass:"score-header"},[A("a-icon",{attrs:{type:"line-chart"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.technical")))])],1),A("a-progress",{attrs:{percent:(null===(i=C.result.scores)||void 0===i?void 0:i.technical)||50,strokeColor:C.getScoreColor(null===(n=C.result.scores)||void 0===n?void 0:n.technical),showInfo:!1}}),A("div",{staticClass:"score-value"},[C._v(C._s((null===(r=C.result.scores)||void 0===r?void 0:r.technical)||50))])],1),A("div",{staticClass:"score-item"},[A("div",{staticClass:"score-header"},[A("a-icon",{attrs:{type:"bank"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.fundamental")))])],1),A("a-progress",{attrs:{percent:(null===(o=C.result.scores)||void 0===o?void 0:o.fundamental)||50,strokeColor:C.getScoreColor(null===(l=C.result.scores)||void 0===l?void 0:l.fundamental),showInfo:!1}}),A("div",{staticClass:"score-value"},[C._v(C._s((null===(c=C.result.scores)||void 0===c?void 0:c.fundamental)||50))])],1),A("div",{staticClass:"score-item"},[A("div",{staticClass:"score-header"},[A("a-icon",{attrs:{type:"heart"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.sentiment")))])],1),A("a-progress",{attrs:{percent:(null===(d=C.result.scores)||void 0===d?void 0:d.sentiment)||50,strokeColor:C.getScoreColor(null===(u=C.result.scores)||void 0===u?void 0:u.sentiment),showInfo:!1}}),A("div",{staticClass:"score-value"},[C._v(C._s((null===(m=C.result.scores)||void 0===m?void 0:m.sentiment)||50))])],1),A("div",{staticClass:"score-item overall"},[A("div",{staticClass:"score-header"},[A("a-icon",{attrs:{type:"dashboard"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.overall")))])],1),A("a-progress",{attrs:{percent:(null===(h=C.result.scores)||void 0===h?void 0:h.overall)||50,strokeColor:C.getScoreColor(null===(p=C.result.scores)||void 0===p?void 0:p.overall),showInfo:!1}}),A("div",{staticClass:"score-value"},[C._v(C._s((null===(v=C.result.scores)||void 0===v?void 0:v.overall)||50))])],1)]),C.result.detailed_analysis?A("div",{staticClass:"detailed-analysis"},[C.result.detailed_analysis.technical?A("div",{staticClass:"analysis-card technical"},[A("div",{staticClass:"analysis-card-header"},[A("a-icon",{attrs:{type:"line-chart"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.technicalAnalysis")))]),A("a-tag",{attrs:{color:C.getScoreTagColor(null===(y=C.result.scores)||void 0===y?void 0:y.technical)}},[C._v(" "+C._s((null===(f=C.result.scores)||void 0===f?void 0:f.technical)||50)+"分 ")])],1),A("div",{staticClass:"analysis-card-content"},[C._v(" "+C._s(C.result.detailed_analysis.technical)+" ")])]):C._e(),C.result.detailed_analysis.fundamental?A("div",{staticClass:"analysis-card fundamental"},[A("div",{staticClass:"analysis-card-header"},[A("a-icon",{attrs:{type:"bank"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.fundamentalAnalysis")))]),A("a-tag",{attrs:{color:C.getScoreTagColor(null===(b=C.result.scores)||void 0===b?void 0:b.fundamental)}},[C._v(" "+C._s((null===(g=C.result.scores)||void 0===g?void 0:g.fundamental)||50)+"分 ")])],1),A("div",{staticClass:"analysis-card-content"},[C._v(" "+C._s(C.result.detailed_analysis.fundamental)+" ")])]):C._e(),C.result.detailed_analysis.sentiment?A("div",{staticClass:"analysis-card sentiment"},[A("div",{staticClass:"analysis-card-header"},[A("a-icon",{attrs:{type:"heart"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.sentimentAnalysis")))]),A("a-tag",{attrs:{color:C.getScoreTagColor(null===(_=C.result.scores)||void 0===_?void 0:_.sentiment)}},[C._v(" "+C._s((null===(k=C.result.scores)||void 0===k?void 0:k.sentiment)||50)+"分 ")])],1),A("div",{staticClass:"analysis-card-content"},[C._v(" "+C._s(C.result.detailed_analysis.sentiment)+" ")])]):C._e()]):C._e(),A("div",{staticClass:"analysis-details"},[A("div",{staticClass:"detail-section reasons"},[A("div",{staticClass:"section-title"},[A("a-icon",{attrs:{type:"bulb",theme:"twoTone",twoToneColor:"#52c41a"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.keyReasons")))])],1),A("ul",{staticClass:"detail-list"},C._l(C.result.reasons,function(t,a){return A("li",{key:"r-"+a},[C._v(" "+C._s(t)+" ")])}),0)]),A("div",{staticClass:"detail-section risks"},[A("div",{staticClass:"section-title"},[A("a-icon",{attrs:{type:"warning",theme:"twoTone",twoToneColor:"#faad14"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.risks")))])],1),A("ul",{staticClass:"detail-list"},C._l(C.result.risks,function(t,a){return A("li",{key:"k-"+a},[C._v(" "+C._s(t)+" ")])}),0)])]),C.result.indicators&&Object.keys(C.result.indicators).length>0?A("div",{staticClass:"indicators-section"},[A("div",{staticClass:"section-title"},[A("a-icon",{attrs:{type:"stock"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.indicators")))]),A("a-tag",{staticClass:"indicators-pro-badge",attrs:{color:"blue"}},[C._v(C._s(C.$t("fastAnalysis.indicatorsProBadge")))])],1),A("div",{staticClass:"indicators-methodology"},[A("a-icon",{attrs:{type:"experiment"}}),A("span",[C._v(C._s(C.$t("fastAnalysis.indicatorsProSubtitle")))])],1),A("div",{staticClass:"indicators-grid"},[C.result.indicators.rsi?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v("RSI (14)")]),A("div",{staticClass:"indicator-value",class:C.getRsiClass(C.result.indicators.rsi.value)},[C._v(" "+C._s(C.formatNumber(C.result.indicators.rsi.value,1))+" ")]),A("div",{staticClass:"indicator-signal"},[C._v(C._s(C.translateSignal(C.result.indicators.rsi.signal)))])]):C._e(),C.result.indicators.macd?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v("MACD (12,26,9)")]),A("div",{staticClass:"indicator-value",class:"bullish"===C.result.indicators.macd.signal?"bullish":"bearish"===C.result.indicators.macd.signal?"bearish":""},[C._v(" "+C._s(C.translateTrend(C.result.indicators.macd.trend))+" ")]),A("div",{staticClass:"indicator-signal"},[C._v(C._s(C.translateSignal(C.result.indicators.macd.signal)))])]):C._e(),C.result.indicators.moving_averages?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v(C._s(C.$t("fastAnalysis.maTrend")))]),A("div",{staticClass:"indicator-value",class:C.getMaTrendClass(C.result.indicators.moving_averages.trend)},[C._v(" "+C._s(C.translateTrend(C.result.indicators.moving_averages.trend))+" ")])]):C._e(),C.result.indicators.volatility&&null!=C.result.indicators.volatility.atr?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v("ATR (14)")]),A("div",{staticClass:"indicator-value",class:C.getVolatilityClass(C.result.indicators.volatility.level)},[C._v(" $"+C._s(C.formatPrice(C.result.indicators.volatility.atr))+" ")]),A("div",{staticClass:"indicator-signal"},[C._v(C._s(C.$t("fastAnalysis.atrTrueRange")))])]):C._e(),C.result.indicators.bollinger&&null!=C.result.indicators.bollinger.BB_width?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v(C._s(C.$t("fastAnalysis.bbWidth")))]),A("div",{staticClass:"indicator-value"},[C._v(C._s(C.formatNumber(C.result.indicators.bollinger.BB_width,2))+"%")]),A("div",{staticClass:"indicator-signal"},[C._v(C._s(C.$t("fastAnalysis.bbWidthHint")))])]):C._e(),null!=C.result.indicators.price_position?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v(C._s(C.$t("fastAnalysis.rangePct20")))]),A("div",{staticClass:"indicator-value"},[C._v(C._s(C.formatNumber(C.result.indicators.price_position,1))+"%")]),A("div",{staticClass:"indicator-signal"},[C._v(C._s(C.$t("fastAnalysis.rangePct20Hint")))])]):C._e(),null!=C.result.indicators.volume_ratio?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v(C._s(C.$t("fastAnalysis.volumeRatio")))]),A("div",{staticClass:"indicator-value",class:C.volumeRatioClass(C.result.indicators.volume_ratio)},[C._v(" "+C._s(C.formatNumber(C.result.indicators.volume_ratio,2))+"× ")]),A("div",{staticClass:"indicator-signal"},[C._v(C._s(C.$t("fastAnalysis.volumeRatioHint")))])]):C._e(),C.result.indicators.levels?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v(C._s(C.$t("fastAnalysis.support")))]),A("div",{staticClass:"indicator-value"},[C._v("$"+C._s(C.formatPrice(C.result.indicators.levels.support)))])]):C._e(),C.result.indicators.levels?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v(C._s(C.$t("fastAnalysis.resistance")))]),A("div",{staticClass:"indicator-value"},[C._v("$"+C._s(C.formatPrice(C.result.indicators.levels.resistance)))])]):C._e(),C.result.indicators.volatility?A("div",{staticClass:"indicator-item"},[A("div",{staticClass:"indicator-name"},[C._v(C._s(C.$t("fastAnalysis.volatility")))]),A("div",{staticClass:"indicator-value",class:C.getVolatilityClass(C.result.indicators.volatility.level)},[C._v(" "+C._s(C.translateVolatility(C.result.indicators.volatility.level))+" ("+C._s(C.result.indicators.volatility.pct)+"%) ")])]):C._e()]),C.professionalIndicatorRows.length?A("div",{staticClass:"indicators-pro-wrap"},[A("div",{staticClass:"indicators-pro-title"},[A("a-icon",{attrs:{type:"deployment-unit"}}),C._v(" "+C._s(C.$i18n&&"zh-CN"===C.$i18n.locale?"量化参数明细":"Quant Parameters")+" ")],1),A("a-descriptions",{staticClass:"indicators-pro-desc",attrs:{bordered:"",size:"small",column:2}},C._l(C.professionalIndicatorRows,function(t){return A("a-descriptions-item",{key:t.key,attrs:{label:t.label}},[A("span",{class:t.valueClass},[C._v(C._s(t.text))])])}),1)],1):C._e()]):C._e(),A("div",{staticClass:"feedback-section"},[A("div",{staticClass:"feedback-question"},[C._v(C._s(C.$t("fastAnalysis.wasHelpful")))]),A("div",{staticClass:"feedback-buttons"},[A("a-button",{attrs:{type:"helpful"===C.userFeedback?"primary":"default",size:"small",loading:"helpful"===C.feedbackLoading},on:{click:function(t){return C.submitFeedback("helpful")}}},[A("a-icon",{attrs:{type:"like"}}),C._v(" "+C._s(C.$t("fastAnalysis.helpful"))+" ")],1),A("a-button",{attrs:{type:"not_helpful"===C.userFeedback?"danger":"default",size:"small",loading:"not_helpful"===C.feedbackLoading},on:{click:function(t){return C.submitFeedback("not_helpful")}}},[A("a-icon",{attrs:{type:"dislike"}}),C._v(" "+C._s(C.$t("fastAnalysis.notHelpful"))+" ")],1)],1),A("div",{staticClass:"analysis-meta"},[A("span",[C._v(C._s(C.$t("fastAnalysis.analysisTime"))+": "+C._s(C.result.analysis_time_ms)+"ms")]),C.result.memory_id?A("span",[C._v("ID: #"+C._s(C.result.memory_id))]):C._e()])])]):A("div",{staticClass:"empty-container"},[A("div",{staticClass:"empty-content"},[A("a-icon",{staticClass:"empty-icon",attrs:{type:"radar-chart"}}),A("div",{staticClass:"empty-title"},[C._v(C._s(C.$t("fastAnalysis.selectSymbol")))]),A("div",{staticClass:"empty-hint"},[C._v(C._s(C.$t("fastAnalysis.selectHint")))])],1)])])},w=[],$={name:"FastAnalysisReport",props:{result:{type:Object,default:null},loading:{type:Boolean,default:!1},error:{type:String,default:null},errorTone:{type:String,default:"error",validator:function(t){return["error","warning","info"].includes(t)}}},data:function(){return{userFeedback:null,feedbackLoading:null,progress:0,elapsedSeconds:0,mainTimer:null}},computed:(0,m.A)((0,m.A)({},(0,h.aH)({navTheme:function(t){return t.app.theme}})),{},{isDarkTheme:function(){return"dark"===this.navTheme||"realdark"===this.navTheme},progressPercent:function(){return Math.round(10*this.progress)/10},step:function(){return this.progress<25?1:this.progress<50?2:this.progress<75?3:4},currentStepText:function(){var t={1:this.$t("fastAnalysis.step1")||"获取实时数据",2:this.$t("fastAnalysis.step2")||"计算技术指标",3:this.$t("fastAnalysis.step3")||"AI深度分析",4:this.$t("fastAnalysis.step4")||"生成报告"};return t[this.step]||this.$t("fastAnalysis.preparing")||"准备中..."},elapsedTimeText:function(){if(this.elapsedSeconds<60)return"".concat(this.elapsedSeconds,"s");var t=Math.floor(this.elapsedSeconds/60),a=this.elapsedSeconds%60;return"".concat(t,"m ").concat(a,"s")},isHoldDecision:function(){return this.result&&"HOLD"===this.result.decision},decisionClass:function(){if(!this.result)return"";var t=this.result.decision;return"BUY"===t?"decision-buy":"SELL"===t?"decision-sell":"decision-hold"},decisionIcon:function(){if(!this.result)return"question";var t=this.result.decision;return"BUY"===t?"arrow-up":"SELL"===t?"arrow-down":"pause"},confidenceColor:function(){var t,a=(null===(t=this.result)||void 0===t?void 0:t.confidence)||50;return a>=70?"#52c41a":a>=50?"#1890ff":"#faad14"},consensusBlock:function(){var t,a=null===(t=this.result)||void 0===t?void 0:t.consensus;return a&&"object"===(0,n.A)(a)?null==a.consensus_decision&&null==a.consensus_score?null:a:null},tradingPlan:function(){var t,a,s,e,i,n,r=(null===(t=this.result)||void 0===t?void 0:t.trading_plan)||{},o=null!==(a=r.entry_price)&&void 0!==a?a:r.entryPrice,l=null!==(s=null!==(e=r.stop_loss)&&void 0!==e?e:r.stopLoss)&&void 0!==s?s:r.loss_exit_price,c=null!==(i=null!==(n=r.take_profit)&&void 0!==n?n:r.takeProfit)&&void 0!==i?i:r.profit_target_price;return{entry_price:o,stop_loss:l,take_profit:c}},trendOutlookRaw:function(){var t,a;return(null===(t=this.result)||void 0===t?void 0:t.trend_outlook)||(null===(a=this.result)||void 0===a?void 0:a.trendOutlook)||null},trendOutlookSummaryText:function(){var t,a,s=(null===(t=this.result)||void 0===t?void 0:t.trend_outlook_summary)||(null===(a=this.result)||void 0===a?void 0:a.trendOutlookSummary);return s&&String(s).trim()?String(s).trim():""},trendOutlookBlocks:function(){var t=this,a=this.trendOutlookRaw;if(!a||"object"!==(0,n.A)(a))return[];var s=[{key:"next_24h",labelKey:"fastAnalysis.outlook24h"},{key:"next_3d",labelKey:"fastAnalysis.outlook3d"},{key:"next_1w",labelKey:"fastAnalysis.outlook1w"},{key:"next_1m",labelKey:"fastAnalysis.outlook1m"}];return s.map(function(s){var e=s.key,i=s.labelKey,n=a[e]||{};return{key:e,label:t.$t(i),trend:n.trend,score:n.score,strength:n.strength}}).filter(function(t){var s=a[t.key];return s&&"object"===(0,n.A)(s)&&(null!=s.trend||null!=s.score)})},stopLossHintText:function(){var t,a=String((null===(t=this.result)||void 0===t?void 0:t.decision)||"").toUpperCase();return"SELL"===a?this.$t("fastAnalysis.stopLossHintShort"):this.$t("fastAnalysis.stopLossHint")},takeProfitHintText:function(){var t,a=String((null===(t=this.result)||void 0===t?void 0:t.decision)||"").toUpperCase();return"SELL"===a?this.$t("fastAnalysis.takeProfitHintShort"):this.$t("fastAnalysis.takeProfitHint")},professionalIndicatorRows:function(){var t,a=(null===(t=this.result)||void 0===t?void 0:t.indicators)||{},s=[],e=function(t,a,e){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"";void 0!==e&&null!==e&&""!==e&&s.push({key:t,label:a,text:String(e),valueClass:i})},i=a.macd||{};if(null!=i.value&&e("macd_dif",this.$t("fastAnalysis.macdDif"),this.formatCompactNum(i.value)),null!=i.signal_line&&e("macd_dea",this.$t("fastAnalysis.macdDea"),this.formatCompactNum(i.signal_line)),null!=i.histogram){var n=Number(i.histogram),r=n>0?"bullish":n<0?"bearish":"";e("macd_hist",this.$t("fastAnalysis.macdHist"),this.formatCompactNum(i.histogram),r)}var o=a.moving_averages||{};null!=o.ma5&&e("ma5",this.$t("fastAnalysis.ma5Label"),"$"+this.formatPrice(o.ma5)),null!=o.ma10&&e("ma10",this.$t("fastAnalysis.ma10Label"),"$"+this.formatPrice(o.ma10)),null!=o.ma20&&e("ma20",this.$t("fastAnalysis.ma20Label"),"$"+this.formatPrice(o.ma20));var l=a.bollinger||{};null!=l.BB_upper&&e("bb_u",this.$t("fastAnalysis.bbUpper"),"$"+this.formatPrice(l.BB_upper)),null!=l.BB_middle&&e("bb_m",this.$t("fastAnalysis.bbMiddle"),"$"+this.formatPrice(l.BB_middle)),null!=l.BB_lower&&e("bb_l",this.$t("fastAnalysis.bbLower"),"$"+this.formatPrice(l.BB_lower)),null!=l.BB_width&&e("bb_w",this.$t("fastAnalysis.bbWidthPct"),this.formatNumber(l.BB_width,2)+"%");var c=a.levels||{};null!=c.pivot&&e("piv",this.$t("fastAnalysis.pivotStd"),"$"+this.formatPrice(c.pivot)),null!=c.s1&&e("s1",this.$t("fastAnalysis.levelS1"),"$"+this.formatPrice(c.s1)),null!=c.r1&&e("r1",this.$t("fastAnalysis.levelR1"),"$"+this.formatPrice(c.r1)),null!=c.s2&&e("s2",this.$t("fastAnalysis.levelS2"),"$"+this.formatPrice(c.s2)),null!=c.r2&&e("r2",this.$t("fastAnalysis.levelR2"),"$"+this.formatPrice(c.r2)),null!=c.swing_high&&e("sw_h",this.$t("fastAnalysis.swingHigh20"),"$"+this.formatPrice(c.swing_high)),null!=c.swing_low&&e("sw_l",this.$t("fastAnalysis.swingLow20"),"$"+this.formatPrice(c.swing_low));var d=a.volatility||{};if(null!=d.atr){var u=null!=d.pct?this.formatNumber(d.pct,2)+"% ATR/Price":"";e("atr14",this.$t("fastAnalysis.atr14Label"),"$"+this.formatPrice(d.atr)+(u?" · "+u:""))}var m=a.trading_levels||{};return null!=m.risk_reward_ratio&&Number(m.risk_reward_ratio)>0&&e("rr",this.$t("fastAnalysis.rrLongRef"),"1 : "+this.formatNumber(m.risk_reward_ratio,2)),null!=a.current_price&&e("cref",this.$t("fastAnalysis.refClose"),"$"+this.formatPrice(a.current_price)),s},insufficientCreditsError:function(){if(!this.error)return!1;var t=String(this.error);return t.includes("积分不足")||t.toLowerCase().includes("insufficient credits")},errorTitle:function(){return"warning"===this.errorTone?this.$t("fastAnalysis.analysisInProgressTitle"):this.insufficientCreditsError?this.$t("fastAnalysis.insufficientCredits"):this.$t("fastAnalysis.error")}}),watch:{result:function(){this.userFeedback=null},loading:{handler:function(t){t?this.startProgressTimer():this.stopProgressTimer()},immediate:!0}},mounted:function(){this.loading&&this.startProgressTimer()},beforeDestroy:function(){this.stopProgressTimer()},methods:{formatPrice:function(t){if(void 0===t||null===t)return"--";var a=parseFloat(t);return isNaN(a)?"--":a<1?a.toFixed(6):a<100?a.toFixed(4):a<1e4?a.toFixed(2):a.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})},formatNumber:function(t){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2;if(void 0===t||null===t)return"--";var s=parseFloat(t);return isNaN(s)?"--":s.toFixed(a)},formatConsensusNum:function(t){if(void 0===t||null===t||""===t)return"--";var a=Number(t);return Number.isNaN(a)?"--":a.toFixed(1)},formatAgreementPct:function(t){var a=Number(t);return Number.isNaN(a)?"--":"".concat(Math.round(100*a),"%")},formatProgress:function(t){var a=parseFloat(t)||0;return a%1===0?a.toFixed(0):a.toFixed(1)},formatOutlookTrend:function(t){var a=String(t||"HOLD").toUpperCase();return"BUY"===a?this.$t("fastAnalysis.outlookBull"):"SELL"===a?this.$t("fastAnalysis.outlookBear"):this.$t("fastAnalysis.outlookNeutral")},outlookTrendClass:function(t){var a=String(t||"").toUpperCase();return"BUY"===a?"trend-bull":"SELL"===a?"trend-bear":"trend-neutral"},formatCompactNum:function(t){var a=parseFloat(t);return Number.isNaN(a)?"--":0!==a&&Math.abs(a)<1e-4?a.toExponential(2):Math.abs(a)<1?a.toFixed(6):Math.abs(a)<100?a.toFixed(4):a.toFixed(2)},volumeRatioClass:function(t){var a=parseFloat(t);return Number.isNaN(a)?"":a>=1.5?"bullish":a<=.65?"bearish":""},getScoreColor:function(t){return t>=70?"#52c41a":t>=50?"#1890ff":t>=30?"#faad14":"#ff4d4f"},getScoreTagColor:function(t){return t>=70?"green":t>=50?"blue":t>=30?"orange":"red"},getRsiClass:function(t){return t<30?"oversold":t>70?"overbought":""},getMaTrendClass:function(t){return t?t.includes("uptrend")||t.includes("strong_uptrend")?"bullish":t.includes("downtrend")||t.includes("strong_downtrend")?"bearish":"":""},getVolatilityClass:function(t){return"high"===t?"high-volatility":"low"===t?"low-volatility":""},translateSignal:function(t){if(!t)return"--";var a="fastAnalysis.signal.".concat(t),s=this.$t(a);return s===a?t:s},translateTrend:function(t){if(!t)return"--";var a="fastAnalysis.trend.".concat(t),s=this.$t(a);return s===a?t:s},translateVolatility:function(t){if(!t)return"--";var a="fastAnalysis.volatilityLevel.".concat(t),s=this.$t(a);return s===a?t:s},submitFeedback:function(t){var a=this;return(0,u.A)((0,d.A)().m(function s(){var e;return(0,d.A)().w(function(s){while(1)switch(s.p=s.n){case 0:if(null!==(e=a.result)&&void 0!==e&&e.memory_id){s.n=1;break}return a.$message.warning(a.$t("fastAnalysis.feedbackUnavailable")||"反馈功能暂不可用,请刷新后重试"),s.a(2);case 1:return a.feedbackLoading=t,s.p=2,s.n=3,C({memory_id:a.result.memory_id,feedback:t});case 3:a.userFeedback=t,a.$message.success(a.$t("fastAnalysis.feedbackThanks")),s.n=5;break;case 4:s.p=4,s.v,a.$message.error(a.$t("fastAnalysis.feedbackFailed"));case 5:return s.p=5,a.feedbackLoading=null,s.f(5);case 6:return s.a(2)}},s,null,[[2,4,5,6]])}))()},startProgressTimer:function(){var t=this;this.stopProgressTimer(),this.progress=0,this.elapsedSeconds=0;var a=Date.now();this.mainTimer=window.setInterval(function(){t.elapsedSeconds=Math.floor((Date.now()-a)/1e3),t.progress<75?t.progress=Math.min(t.progress+1,75):t.progress<90?t.progress=Math.min(t.progress+.5,90):t.progress<95&&(t.progress=Math.min(t.progress+.2,95))},100)},stopProgressTimer:function(){this.mainTimer&&(window.clearInterval(this.mainTimer),this.mainTimer=null),this.progress=0,this.elapsedSeconds=0}}},T=$,x=s(845),M=(0,x.A)(T,S,w,!1,null,"03feb1fa",null),P=M.exports,F={name:"Analysis",props:{embedded:{type:Boolean,default:!1},presetSymbol:{type:String,default:""},autoAnalyzeSignal:{type:Number,default:0}},components:{FastAnalysisReport:P},data:function(){return{loadingMarket:!1,heatmapType:"crypto",marketData:{fearGreed:null,vix:null,dxy:null,indices:[],heatmap:{crypto:[],commodities:[],sectors:[],forex:[]},calendar:[]},loadingSentiment:!1,loadingIndices:!1,loadingHeatmap:!1,loadingCalendar:!1,watchlistPriceTimer:null,watchlistPrices:{},localUserInfo:{},loadingUserInfo:!1,userId:1,watchlist:[],loadingWatchlist:!1,showAddStockModal:!1,addingStock:!1,selectedSymbol:void 0,analyzing:!1,analysisResult:null,analysisError:null,analysisErrorTone:"error",showHistoryModal:!1,historyList:[],historyLoading:!1,historyPage:1,historyPageSize:20,historyTotal:0,currentTaskId:null,taskPollingTimer:null,taskPollingStartedAt:0,marketTypes:[],selectedMarketTab:"",symbolSearchKeyword:"",symbolSearchResults:[],searchingSymbols:!1,hotSymbols:[],loadingHotSymbols:!1,selectedSymbolForAdd:null,searchTimer:null,hasSearched:!1,positions:[],monitors:[],positionSummaryMap:{},showPositionModal:!1,showMonitorModal:!1,targetStockForOps:null,positionForm:{side:"long",quantity:null,entryPrice:null},monitorForm:{interval_min:240,notify_channels:[]},batchMode:!1,batchSelectedKeys:[],batchRunning:!1,batchProgress:0,showBatchScheduleModal:!1,batchScheduleForm:{interval_min:240,notify_channels:[]},showTaskDrawer:!1,showEditTaskModal:!1,editTaskLoading:!1,editTaskId:null,editTaskForm:{name:"",interval_min:240,notify_channels:[]}}},computed:(0,m.A)((0,m.A)((0,m.A)({},(0,h.L8)(["userInfo"])),(0,h.aH)({navTheme:function(t){return t.app.theme},primaryColor:function(t){return t.app.color||"#1890ff"}})),{},{isDarkTheme:function(){return"dark"===this.navTheme||"realdark"===this.navTheme},isZhLocale:function(){return"zh-CN"===this.$i18n.locale},currentHeatmap:function(){return this.marketData.heatmap[this.heatmapType]||[]},storeUserInfo:function(){return this.userInfo||{}},mergedUserInfo:function(){return this.localUserInfo&&this.localUserInfo.email?this.localUserInfo:this.storeUserInfo},watchlistTotalPnl:function(){return Object.values(this.positionSummaryMap).reduce(function(t,a){return t+(Number(a.pnl)||0)},0)},watchlistPositionCount:function(){return Object.values(this.positionSummaryMap).filter(function(t){return t.quantity>0}).length},watchlistTaskCount:function(){return Object.values(this.positionSummaryMap).reduce(function(t,a){return t+(a.monitorCount||0)},0)},batchSelectedAll:function(){return this.watchlist&&this.watchlist.length>0&&this.batchSelectedKeys.length===this.watchlist.length},batchIndeterminate:function(){return this.batchSelectedKeys.length>0&&this.batchSelectedKeys.length<(this.watchlist||[]).length}}),created:function(){this.loadUserInfo(),this.loadMarketTypes(),this.loadWatchlist(),this.loadPositionData(),this.loadMarketData()},mounted:function(){this.startWatchlistPriceRefresh()},beforeDestroy:function(){this.watchlistPriceTimer&&clearInterval(this.watchlistPriceTimer),this.taskPollingTimer&&(clearInterval(this.taskPollingTimer),this.taskPollingTimer=null)},methods:{stopTaskPolling:function(){this.taskPollingTimer&&(clearInterval(this.taskPollingTimer),this.taskPollingTimer=null),this.currentTaskId=null,this.taskPollingStartedAt=0},pollTaskResult:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e,i,n;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(t.currentTaskId){a.n=1;break}return a.a(2);case 1:return a.p=1,a.n=2,_({page:1,pagesize:50});case 2:if(s=a.v,s&&1===s.code&&s.data){a.n=3;break}return a.a(2);case 3:if(e=s.data.list||[],i=e.find(function(a){return Number(a.id)===Number(t.currentTaskId)}),i){a.n=4;break}return a.a(2);case 4:if(n=String(i.status||"").toLowerCase(),"completed"!==n){a.n=8;break}if(!i.full_result){a.n=5;break}t.analysisResult=i.full_result,a.n=6;break;case 5:return a.n=6,t.viewHistoryResult(i);case 6:return t.$message.success(t.$t("dashboard.analysis.message.analysisComplete")),a.n=7,t.refreshUserInfoFromServer();case 7:t.analyzing=!1,t.stopTaskPolling(),a.n=11;break;case 8:if("failed"!==n){a.n=10;break}return t.analysisError=i.error_message||t.$t("dashboard.analysis.message.analysisFailed"),t.analysisErrorTone="error",t.$message.error(t.analysisError),a.n=9,t.refreshUserInfoFromServer();case 9:t.analyzing=!1,t.stopTaskPolling(),a.n=11;break;case 10:Date.now()-t.taskPollingStartedAt>18e4&&(t.$message.warning(t.$t("fastAnalysis.analysisStillProcessing")||"任务仍在处理中,请稍后在历史记录查看"),t.analyzing=!1,t.stopTaskPolling());case 11:a.n=13;break;case 12:a.p=12,a.v;case 13:return a.a(2)}},a,null,[[1,12]])}))()},startTaskPolling:function(t){var a=this;return(0,u.A)((0,d.A)().m(function s(){return(0,d.A)().w(function(s){while(1)switch(s.n){case 0:return a.stopTaskPolling(),a.currentTaskId=Number(t),a.taskPollingStartedAt=Date.now(),s.n=1,a.pollTaskResult();case 1:a.taskPollingTimer=setInterval(function(){a.pollTaskResult()},2500);case 2:return s.a(2)}},s)}))()},filterSymbolOption:function(t,a){var s,e=(null===(s=a.componentOptions)||void 0===s||null===(s=s.propsData)||void 0===s?void 0:s.value)||"";return"__add_stock_option__"===e||e.toLowerCase().includes(t.toLowerCase())},handleSymbolChange:function(t){var a=this;if("__add_stock_option__"===t)return this.showAddStockModal=!0,void this.$nextTick(function(){a.selectedSymbol=void 0});this.selectedSymbol=t,this.analysisResult=null,this.analysisError=null,this.analysisErrorTone="error",this.$emit("symbol-change",t)},selectWatchlistItem:function(t){this.selectedSymbol="".concat(t.market,":").concat(t.symbol),this.analysisResult=null,this.analysisError=null,this.analysisErrorTone="error",this.$emit("symbol-change",this.selectedSymbol)},hasMonitorForStock:function(t){if(!t)return!1;var a="".concat(t.market,":").concat(t.symbol),s=this.positionSummaryMap[a];return!!(s&&s.monitorCount>0)},getMonitorMeta:function(t){if(!t)return null;var a="".concat(t.market,":").concat(t.symbol),s=this.positionSummaryMap[a];return!s||s.monitorCount<=0?null:{activeCount:s.activeMonitorCount||0,nextRunAtText:s.nextRunAtText||""}},getPnlBarStyle:function(t){var a=Math.abs(Number((null===t||void 0===t?void 0:t.pnlPercent)||0)),s=Math.min(100,Math.max(4,a));return{width:"".concat(s,"%")}},_formatNextRunText:function(t){if(!t)return"";try{var a=new Date(t);return Number.isNaN(a.getTime())?"":a.toLocaleString(this.isZhLocale?"zh-CN":"en-US",{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"})}catch(s){return""}},buildPositionSummary:function(){var t=this,a={},s=Array.isArray(this.positions)?this.positions:[],e=Array.isArray(this.monitors)?this.monitors:[],i=new Set,n={};s.forEach(function(t){n[Number(t.id)]="".concat(t.market,":").concat(t.symbol)}),e.forEach(function(s){var e=Array.isArray(s.position_ids)?s.position_ids:[];e.forEach(function(t){return i.add(Number(t))});var r=!!s.is_active,o=s.next_run_at||"";e.forEach(function(s){var e=n[Number(s)];e&&(a[e]||(a[e]={quantity:0,weightedEntry:0,pnl:0,marketValue:0,monitorCount:0,activeMonitorCount:0,nextRunAtText:""}),a[e].monitorCount+=1,r&&(a[e].activeMonitorCount+=1),!a[e].nextRunAtText&&o&&(a[e].nextRunAtText=t._formatNextRunText(o)))})}),s.forEach(function(t){var s="".concat(t.market,":").concat(t.symbol),e=Number(t.quantity||0),n=Number(t.entry_price||0);a[s]||(a[s]={quantity:0,weightedEntry:0,pnl:0,marketValue:0,monitorCount:0,activeMonitorCount:0,nextRunAtText:""}),a[s].quantity+=e,a[s].weightedEntry+=e*n,a[s].pnl+=Number(t.pnl||0),a[s].marketValue+=Number(t.market_value||0),i.has(Number(t.id))&&(a[s].monitorCount+=1)}),Object.keys(a).forEach(function(t){var s=a[t];s.avgEntry=s.quantity>0?s.weightedEntry/s.quantity:0;var e=s.quantity>0?s.weightedEntry:0;s.pnlPercent=e>0?s.pnl/e*100:0}),this.positionSummaryMap=a},toggleStockMonitor:function(t){var a=this;return(0,u.A)((0,d.A)().m(function s(){var e,i,n,r,o,l;return(0,d.A)().w(function(s){while(1)switch(s.p=s.n){case 0:if(e="".concat(t.market,":").concat(t.symbol),i=(a.positions||[]).filter(function(t){return"".concat(t.market,":").concat(t.symbol)===e}).map(function(t){return Number(t.id)}).filter(Boolean),0!==i.length){s.n=1;break}return s.a(2);case 1:if(n=(a.monitors||[]).filter(function(t){var a=Array.isArray(t.position_ids)?t.position_ids.map(function(t){return Number(t)}):[];return a.some(function(t){return i.includes(t)})}),0!==n.length){s.n=2;break}return s.a(2);case 2:return r=!n.some(function(t){return!!t.is_active}),s.p=3,s.n=4,Promise.all(n.map(function(t){return(0,y.sk)(t.id,{is_active:r})}));case 4:return a.$message.success(r?a.$t("aiAssetAnalysis.monitor.enabled")||"已启用任务":a.$t("aiAssetAnalysis.monitor.disabled")||"已暂停任务"),s.n=5,a.loadPositionData();case 5:s.n=7;break;case 6:s.p=6,l=s.v,a.$message.error((null===l||void 0===l||null===(o=l.response)||void 0===o||null===(o=o.data)||void 0===o?void 0:o.msg)||(null===l||void 0===l?void 0:l.message)||"Toggle monitor failed");case 7:return s.a(2)}},s,null,[[3,6]])}))()},loadPositionData:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e,i,n;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return a.p=0,a.n=1,Promise.all([(0,y.Dt)(),(0,y.w1)()]);case 1:s=a.v,e=(0,c.A)(s,2),i=e[0],n=e[1],t.positions=i&&1===i.code&&i.data||[],t.monitors=n&&1===n.code&&n.data||[],t.buildPositionSummary(),a.n=3;break;case 2:a.p=2,a.v,t.positions=[],t.monitors=[],t.positionSummaryMap={};case 3:return a.a(2)}},a,null,[[0,2]])}))()},openPositionModal:function(t){this.targetStockForOps=t;var a="".concat(t.market,":").concat(t.symbol),s=(this.positions||[]).find(function(t){return"".concat(t.market,":").concat(t.symbol)===a});if(s){var e=Number(s.quantity||0);this.positionForm={side:s.side||(e<0?"short":"long"),quantity:Math.abs(e)||null,entryPrice:Number(s.entry_price||0)||null}}else this.positionForm={side:"long",quantity:null,entryPrice:null};this.showPositionModal=!0},savePosition:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e,i,n,r,o;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(s=t.targetStockForOps,s){a.n=1;break}return a.a(2);case 1:if(e=Number(t.positionForm.quantity||0),i=Number(t.positionForm.entryPrice||0),e>0&&i>0){a.n=2;break}return t.$message.warning(t.$i18n&&"zh-CN"===t.$i18n.locale?"请输入有效的数量和买入单价":"Please enter valid quantity and entry price"),a.a(2);case 2:return a.p=2,a.n=3,(0,y.Ps)({market:s.market,symbol:s.symbol,name:s.name||s.symbol,side:t.positionForm.side||"long",quantity:e,entry_price:i});case 3:if(n=a.v,!n||1!==n.code){a.n=5;break}return t.$message.success(t.$t("portfolio.positions.add")+" OK"),t.showPositionModal=!1,a.n=4,t.loadPositionData();case 4:a.n=6;break;case 5:t.$message.error((null===n||void 0===n?void 0:n.msg)||"Add position failed");case 6:a.n=8;break;case 7:a.p=7,o=a.v,t.$message.error((null===o||void 0===o||null===(r=o.response)||void 0===r||null===(r=r.data)||void 0===r?void 0:r.msg)||(null===o||void 0===o?void 0:o.message)||"Add position failed");case 8:return a.a(2)}},a,null,[[2,7]])}))()},openMonitorModal:function(t){this.targetStockForOps=t,this.monitorForm={interval_min:240,notify_channels:[]},this.showMonitorModal=!0},saveMonitorTask:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e,i,n,r,o,l,c;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(s=t.targetStockForOps,s){a.n=1;break}return a.a(2);case 1:return e="".concat(s.market,":").concat(s.symbol),i=t.monitorForm.interval_min,n=t.monitorForm.notify_channels||[],r=(t.positions||[]).filter(function(t){return"".concat(t.market,":").concat(t.symbol)===e}).map(function(t){return Number(t.id)}).filter(Boolean),a.p=2,a.n=3,(0,y.yr)({name:"AI-".concat(s.symbol,"-").concat(i,"m"),position_ids:r,monitor_type:"ai",config:{run_interval_minutes:i,symbol:s.symbol,market:s.market},notification_config:{channels:n},is_active:!0});case 3:if(o=a.v,!o||1!==o.code){a.n=5;break}return t.$message.success(t.$t("aiAssetAnalysis.monitor.created")),t.showMonitorModal=!1,a.n=4,t.loadPositionData();case 4:a.n=6;break;case 5:t.$message.error((null===o||void 0===o?void 0:o.msg)||"Create monitor failed");case 6:a.n=8;break;case 7:a.p=7,c=a.v,t.$message.error((null===c||void 0===c||null===(l=c.response)||void 0===l||null===(l=l.data)||void 0===l?void 0:l.msg)||(null===c||void 0===c?void 0:c.message)||"Create monitor failed");case 8:return a.a(2)}},a,null,[[2,7]])}))()},toggleBatchMode:function(){this.batchMode=!this.batchMode,this.batchMode||(this.batchSelectedKeys=[])},onBatchSelectAll:function(t){t.target.checked?this.batchSelectedKeys=(this.watchlist||[]).map(function(t){return"".concat(t.market,":").concat(t.symbol)}):this.batchSelectedKeys=[]},onBatchItemToggle:function(t,a){var s="".concat(t.market,":").concat(t.symbol);a.target.checked?this.batchSelectedKeys.includes(s)||this.batchSelectedKeys.push(s):this.batchSelectedKeys=this.batchSelectedKeys.filter(function(t){return t!==s})},openBatchScheduleModal:function(){0!==this.batchSelectedKeys.length&&(this.batchScheduleForm={interval_min:240,notify_channels:[]},this.showBatchScheduleModal=!0)},saveBatchSchedule:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e,i,n,u,m,h,p;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(s=(0,l.A)(t.batchSelectedKeys),0!==s.length){a.n=1;break}return a.a(2);case 1:t.batchRunning=!0,e=t.batchScheduleForm.interval_min,i=t.batchScheduleForm.notify_channels||[],n=0,u=(0,o.A)(s),a.p=2,h=(0,d.A)().m(function a(){var s,r,o,l,u,h,p;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(s=m.value,r=s.split(":"),o=(0,c.A)(r,2),l=o[0],u=o[1],h=(t.watchlist||[]).find(function(t){return t.market===l&&t.symbol===u}),h){a.n=1;break}return a.a(2,1);case 1:return p=(t.positions||[]).filter(function(t){return"".concat(t.market,":").concat(t.symbol)===s}).map(function(t){return Number(t.id)}).filter(Boolean),a.p=2,a.n=3,(0,y.yr)({name:"AI-".concat(u,"-").concat(e,"m"),position_ids:p,monitor_type:"ai",config:{run_interval_minutes:e,symbol:u,market:l},notification_config:{channels:i},is_active:!0});case 3:n++,a.n=5;break;case 4:a.p=4,a.v;case 5:return a.a(2)}},a,null,[[2,4]])}),u.s();case 3:if((m=u.n()).done){a.n=6;break}return a.d((0,r.A)(h()),4);case 4:if(!a.v){a.n=5;break}return a.a(3,5);case 5:a.n=3;break;case 6:a.n=8;break;case 7:a.p=7,p=a.v,u.e(p);case 8:return a.p=8,u.f(),a.f(8);case 9:return t.batchRunning=!1,t.showBatchScheduleModal=!1,t.batchMode=!1,t.batchSelectedKeys=[],a.n=10,t.loadPositionData();case 10:t.$message.success(t.$t("aiAssetAnalysis.batch.done")+" (".concat(n,"/").concat(s.length,")"));case 11:return a.a(2)}},a,null,[[2,7,8,9]])}))()},formatIntervalText:function(t){return t>=1440?"".concat(Math.round(t/1440),"d"):t>=60?"".concat(Math.round(t/60),"h"):"".concat(t,"m")},handleToggleTask:function(t){var a=this;return(0,u.A)((0,d.A)().m(function s(){var e,i;return(0,d.A)().w(function(s){while(1)switch(s.p=s.n){case 0:return s.p=0,s.n=1,(0,y.sk)(t.id,{is_active:!t.is_active});case 1:return a.$message.success(t.is_active?a.$t("aiAssetAnalysis.tasks.paused"):a.$t("aiAssetAnalysis.tasks.resumed")),s.n=2,a.loadPositionData();case 2:s.n=4;break;case 3:s.p=3,i=s.v,a.$message.error((null===i||void 0===i||null===(e=i.response)||void 0===e||null===(e=e.data)||void 0===e?void 0:e.msg)||(null===i||void 0===i?void 0:i.message)||"Failed");case 4:return s.a(2)}},s,null,[[0,3]])}))()},handleEditTask:function(t){this.editTaskId=t.id,this.editTaskForm={name:t.name||"",interval_min:t.config&&t.config.run_interval_minutes||240,notify_channels:t.notification_config&&t.notification_config.channels||[]},this.showEditTaskModal=!0},saveEditTask:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(t.editTaskId){a.n=1;break}return a.a(2);case 1:return t.editTaskLoading=!0,a.p=2,a.n=3,(0,y.sk)(t.editTaskId,{name:t.editTaskForm.name,config:{run_interval_minutes:t.editTaskForm.interval_min},notification_config:{channels:t.editTaskForm.notify_channels}});case 3:return t.$message.success("OK"),t.showEditTaskModal=!1,a.n=4,t.loadPositionData();case 4:a.n=6;break;case 5:a.p=5,e=a.v,t.$message.error((null===e||void 0===e||null===(s=e.response)||void 0===s||null===(s=s.data)||void 0===s?void 0:s.msg)||(null===e||void 0===e?void 0:e.message)||"Failed");case 6:return a.p=6,t.editTaskLoading=!1,a.f(6);case 7:return a.a(2)}},a,null,[[2,5,6,7]])}))()},handleDeleteTask:function(t){var a=this;return(0,u.A)((0,d.A)().m(function s(){var e,i;return(0,d.A)().w(function(s){while(1)switch(s.p=s.n){case 0:return s.p=0,s.n=1,(0,y.ei)(t.id);case 1:return a.$message.success(a.$t("aiAssetAnalysis.tasks.deleted")),s.n=2,a.loadPositionData();case 2:s.n=4;break;case 3:s.p=3,i=s.v,a.$message.error((null===i||void 0===i||null===(e=i.response)||void 0===e||null===(e=e.data)||void 0===e?void 0:e.msg)||(null===i||void 0===i?void 0:i.message)||"Failed");case 4:return s.a(2)}},s,null,[[0,3]])}))()},loadMarketData:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){return(0,d.A)().w(function(a){while(1)switch(a.n){case 0:t.loadingMarket=!0,t.loadSentimentData(),t.loadIndicesData(),t.loadHeatmapData(),t.loadCalendarData();case 1:return a.a(2)}},a)}))()},loadSentimentData:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e,i,n;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return t.loadingSentiment=!0,a.p=1,a.n=2,(0,A.EF)();case 2:s=a.v,1===(null===s||void 0===s?void 0:s.code)&&null!==s&&void 0!==s&&s.data&&(t.marketData.fearGreed=(null===(e=s.data.fear_greed)||void 0===e?void 0:e.value)||null,t.marketData.vix=(null===(i=s.data.vix)||void 0===i?void 0:i.value)||null,t.marketData.dxy=(null===(n=s.data.dxy)||void 0===n?void 0:n.value)||null),a.n=4;break;case 3:a.p=3,a.v;case 4:return a.p=4,t.loadingSentiment=!1,t.checkAllLoaded(),a.f(4);case 5:return a.a(2)}},a,null,[[1,3,4,5]])}))()},loadIndicesData:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return t.loadingIndices=!0,a.p=1,a.n=2,(0,A.yI)();case 2:s=a.v,1===(null===s||void 0===s?void 0:s.code)&&null!==s&&void 0!==s&&s.data&&(t.marketData.indices=s.data.indices||[]),a.n=4;break;case 3:a.p=3,a.v;case 4:return a.p=4,t.loadingIndices=!1,t.checkAllLoaded(),a.f(4);case 5:return a.a(2)}},a,null,[[1,3,4,5]])}))()},loadHeatmapData:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return t.loadingHeatmap=!0,a.p=1,a.n=2,(0,A.f$)();case 2:s=a.v,1===(null===s||void 0===s?void 0:s.code)&&null!==s&&void 0!==s&&s.data&&(t.marketData.heatmap={crypto:s.data.crypto||[],commodities:s.data.commodities||[],sectors:s.data.sectors||[],forex:s.data.forex||[]}),a.n=4;break;case 3:a.p=3,a.v;case 4:return a.p=4,t.loadingHeatmap=!1,t.checkAllLoaded(),a.f(4);case 5:return a.a(2)}},a,null,[[1,3,4,5]])}))()},loadCalendarData:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return t.loadingCalendar=!0,a.p=1,a.n=2,(0,A.kF)();case 2:s=a.v,1===(null===s||void 0===s?void 0:s.code)&&(t.marketData.calendar=s.data||[]),a.n=4;break;case 3:a.p=3,a.v;case 4:return a.p=4,t.loadingCalendar=!1,t.checkAllLoaded(),a.f(4);case 5:return a.a(2)}},a,null,[[1,3,4,5]])}))()},checkAllLoaded:function(){this.loadingSentiment||this.loadingIndices||this.loadingHeatmap||this.loadingCalendar||(this.loadingMarket=!1)},getFearGreedClass:function(t){return t?t<=25?"extreme-fear":t<=45?"fear":t<=55?"neutral":t<=75?"greed":"extreme-greed":""},getVixLevel:function(t){return t?t<15?"low":t<25?"medium":"high":""},formatNum:function(t){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2;return void 0===t||null===t||isNaN(t)?"--":Number(t).toFixed(a)},getHeatmapStyle:function(t){var a=parseFloat(t)||0,s=Math.min(Math.abs(a)/5,1),e=this.isDarkTheme;if(a>=0){var i=e?a>2?"#fff":"#4ade80":a>2?"#fff":"#166534";return{background:"rgba(34, 197, 94, ".concat(.15+.6*s,")"),color:i}}var n=e?a<-2?"#fff":"#f87171":a<-2?"#fff":"#991b1b";return{background:"rgba(239, 68, 68, ".concat(.15+.6*s,")"),color:n}},getCountryFlag:function(t){var a={US:"🇺🇸",CN:"🇨🇳",EU:"🇪🇺",JP:"🇯🇵",UK:"🇬🇧",DE:"🇩🇪",AU:"🇦🇺",CA:"🇨🇦"};return a[t]||"🌍"},formatCalendarDate:function(t){if(!t)return"";try{var a=new Date(t),s=new Date,e=new Date(s);if(e.setDate(e.getDate()+1),a.toDateString()===s.toDateString())return this.isZhLocale?"今天":"Today";if(a.toDateString()===e.toDateString())return this.isZhLocale?"明天":"Tmrw";var i=a.getMonth()+1,n=a.getDate();return"".concat(i,"/").concat(n)}catch(r){return t}},formatPrice:function(t){return t?t>=1e4?(t/1e3).toFixed(1)+"K":t>=1e3?t.toFixed(0):t.toFixed(2):"--"},formatHeatmapPrice:function(t){return t?t>=1e4?"$"+(t/1e3).toFixed(1)+"K":t>=1e3?"$"+t.toFixed(0):t>=1?"$"+t.toFixed(2):"$"+t.toFixed(4):""},getHeatmapName:function(t){return"sectors"===this.heatmapType||"commodities"===this.heatmapType||"forex"===this.heatmapType?this.isZhLocale?t.name_cn||t.name:t.name_en||t.name:t.name},getImpactClass:function(t){return t.actual_impact||t.expected_impact||"neutral"},getMarketColor:function(t){var a={USStock:"green",Crypto:"purple",Forex:"gold",Futures:"cyan"};return a[t]||"default"},getCurrencySymbol:function(t){return"$"},formatCreditNum:function(t){if(void 0===t||null===t||""===t)return"--";var a=Number(t);return Number.isNaN(a)?String(t):Number.isInteger(a)?String(a):a.toFixed(2)},refreshUserInfoFromServer:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return a.p=0,a.n=1,(0,p.ug)();case 1:s=a.v,s&&1===s.code&&s.data&&(t.localUserInfo=s.data,t.userId=s.data.id,t.$store.commit("SET_INFO",s.data)),a.n=3;break;case 2:a.p=2,a.v;case 3:return a.a(2)}},a,null,[[0,2]])}))()},startFastAnalysis:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e,i,n,r,o,l,u,h,p,v,y,f,b,_,k,C;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(!t.analyzing){a.n=1;break}return a.a(2);case 1:if(t.selectedSymbol){a.n=2;break}return t.$message.warning(t.$t("dashboard.analysis.message.selectSymbol")),a.a(2);case 2:return t.analyzing=!0,t.analysisError=null,t.analysisErrorTone="error",s=t.selectedSymbol.split(":"),e=(0,c.A)(s,2),i=e[0],n=e[1],r=t.$store.getters.lang||"zh-CN",o=!1,a.p=3,a.n=4,g({market:i,symbol:n,language:r,timeframe:"1D",async_submit:!0});case 4:if(l=a.v,!l||1!==l.code||!l.data){a.n=9;break}if("processing"!==l.data.status){a.n=6;break}return o=!0,u=l.data.remaining_credits,void 0!==u&&null!==u?t.$message.success(t.$t("fastAnalysis.analysisSubmittedWithCredits",{remaining:t.formatCreditNum(u)})):t.$message.success(t.$t("fastAnalysis.analysisSubmitted")||"任务已提交,正在分析中"),a.n=5,t.startTaskPolling(l.data.task_id);case 5:a.n=7;break;case 6:h=(0,m.A)({},l.data),delete h.credits_charged,delete h.remaining_credits,t.analysisResult=h,p=l.data.remaining_credits,void 0!==p&&null!==p?t.$message.success(t.$t("fastAnalysis.analysisCompleteWithCredits",{remaining:t.formatCreditNum(p)})):t.$message.success(t.$t("dashboard.analysis.message.analysisComplete"));case 7:return a.n=8,t.refreshUserInfoFromServer();case 8:a.n=10;break;case 9:throw new Error((null===l||void 0===l?void 0:l.msg)||"分析失败");case 10:a.n=12;break;case 11:a.p=11,C=a.v,f=null===C||void 0===C||null===(v=C.response)||void 0===v?void 0:v.status,b=(null===C||void 0===C||null===(y=C.response)||void 0===y?void 0:y.data)||{},_=b.msg,k=b.data,429===f&&k&&k.in_progress?(t.analysisErrorTone="warning",t.analysisError=t.$t("fastAnalysis.analysisInProgress"),t.$message.warning(t.analysisError)):400===f&&"Insufficient credits"===_?(t.analysisError=t.$t("fastAnalysis.insufficientCreditsDetail",{required:t.formatCreditNum(null===k||void 0===k?void 0:k.required),current:t.formatCreditNum(null===k||void 0===k?void 0:k.current),shortage:t.formatCreditNum(null===k||void 0===k?void 0:k.shortage)}),t.$message.error(t.analysisError)):(t.analysisError=_||(null===C||void 0===C?void 0:C.message)||t.$t("dashboard.analysis.message.analysisFailed"),t.$message.error(t.analysisError));case 12:return a.p=12,o||(t.analyzing=!1),a.f(12);case 13:return a.a(2)}},a,null,[[3,11,12,13]])}))()},loadHistoryList:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return t.historyLoading=!0,a.p=1,a.n=2,_({page:t.historyPage,pagesize:t.historyPageSize});case 2:s=a.v,s&&1===s.code&&s.data&&(t.historyList=s.data.list||[],t.historyTotal=s.data.total||0),a.n=4;break;case 3:a.p=3,a.v,t.$message.error(t.$t("dashboard.analysis.message.loadHistoryFailed")||"加载历史记录失败");case 4:return a.p=4,t.historyLoading=!1,a.f(4);case 5:return a.a(2)}},a,null,[[1,3,4,5]])}))()},viewHistoryResult:function(t){var a=this;return(0,u.A)((0,d.A)().m(function s(){var e,i,n,r;return(0,d.A)().w(function(s){while(1)switch(s.n){case 0:if("processing"!==(t.status||"").toLowerCase()){s.n=1;break}return a.$message.info(a.$t("fastAnalysis.analysisStillProcessing")||"该任务仍在处理中,请稍后刷新历史记录"),s.a(2);case 1:if(!t.full_result){s.n=2;break}return a.analysisResult=t.full_result,a.selectedSymbol="".concat(t.market,":").concat(t.symbol),a.showHistoryModal=!1,s.a(2);case 2:e=Number(t.price)||0,i=String(t.decision||"HOLD").toUpperCase(),n=null,r=null,e>0&&("SELL"===i?(n=1.05*e,r=.95*e):"BUY"===i&&(n=.95*e,r=1.05*e)),a.analysisResult={decision:t.decision,confidence:t.confidence,summary:t.summary,market_data:{current_price:t.price,change_24h:0},trading_plan:{entry_price:t.price,stop_loss:n,take_profit:r},scores:t.scores||{},reasons:t.reasons||[],risks:[],indicators:t.indicators||{},memory_id:t.id,analysis_time_ms:0},a.selectedSymbol="".concat(t.market,":").concat(t.symbol),a.showHistoryModal=!1;case 3:return s.a(2)}},s)}))()},deleteHistoryItem:function(t){var a=this;return(0,u.A)((0,d.A)().m(function s(){var e;return(0,d.A)().w(function(s){while(1)switch(s.p=s.n){case 0:return s.p=0,s.n=1,k(t.id);case 1:e=s.v,e&&1===e.code?(a.$message.success(a.$t("dashboard.analysis.message.deleteSuccess")),a.loadHistoryList()):a.$message.error((null===e||void 0===e?void 0:e.msg)||a.$t("dashboard.analysis.message.deleteFailed")),s.n=3;break;case 2:s.p=2,s.v,a.$message.error(a.$t("dashboard.analysis.message.deleteFailed"));case 3:return s.a(2)}},s,null,[[0,2]])}))()},formatTime:function(t){if(!t)return"-";var a=new Date(1e3*t);return a.toLocaleString("zh-CN")},formatIsoTime:function(t){if(!t)return"-";var a=new Date(t);return a.toLocaleString("zh-CN")},getStatusColor:function(t){var a={pending:"orange",processing:"blue",completed:"green",failed:"red"};return a[t]||"default"},getStatusText:function(t){var a={pending:"dashboard.analysis.status.pending",processing:"dashboard.analysis.status.processing",completed:"dashboard.analysis.status.completed",failed:"dashboard.analysis.status.failed"},s=a[t];return s?this.$t(s):t},loadUserInfo:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(t.loadingUserInfo=!0,a.p=1,!t.storeUserInfo||!t.storeUserInfo.email){a.n=2;break}return t.localUserInfo=t.storeUserInfo,t.userId=t.storeUserInfo.id,t.loadingUserInfo=!1,t.loadWatchlist(),a.a(2);case 2:return a.n=3,(0,p.ug)();case 3:s=a.v,s&&1===s.code&&s.data&&(t.localUserInfo=s.data,t.userId=s.data.id,t.$store.commit("SET_INFO",s.data),t.loadWatchlist()),a.n=5;break;case 4:a.p=4,a.v;case 5:return a.p=5,t.loadingUserInfo=!1,a.f(5);case 6:return a.a(2)}},a,null,[[1,4,5,6]])}))()},loadWatchlist:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(t.userId){a.n=1;break}return a.a(2);case 1:return t.loadingWatchlist=!0,a.p=2,a.n=3,(0,v.Qo)({userid:t.userId});case 3:if(s=a.v,!s||1!==s.code||!s.data){a.n=4;break}return t.watchlist=s.data.map(function(t){return(0,m.A)((0,m.A)({},t),{},{price:0,change:0,changePercent:0})}),a.n=4,t.loadWatchlistPrices();case 4:a.n=6;break;case 5:a.p=5,a.v;case 6:return a.p=6,t.loadingWatchlist=!1,a.f(6);case 7:return a.a(2)}},a,null,[[2,5,6,7]])}))()},loadWatchlistPrices:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e,i,n;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(t.watchlist&&0!==t.watchlist.length){a.n=1;break}return a.a(2);case 1:return a.p=1,s=t.watchlist.map(function(t){return{market:t.market,symbol:t.symbol}}),a.n=2,(0,v.ms)({watchlist:s});case 2:e=a.v,e&&1===e.code&&e.data&&(i={},n={},e.data.forEach(function(t){i["".concat(t.market,"-").concat(t.symbol)]=t,n["".concat(t.market,":").concat(t.symbol)]={price:t.price||0,change:t.changePercent||0}}),t.watchlistPrices=n,t.watchlist=t.watchlist.map(function(t){var a="".concat(t.market,"-").concat(t.symbol),s=i[a];return s?(0,m.A)((0,m.A)({},t),{},{price:s.price||0,change:s.change||0,changePercent:s.changePercent||0}):t})),a.n=4;break;case 3:a.p=3,a.v;case 4:return a.a(2)}},a,null,[[1,3]])}))()},startWatchlistPriceRefresh:function(){var t=this;this.watchlistPriceTimer=setInterval(function(){t.watchlist&&t.watchlist.length>0&&t.loadWatchlistPrices()},3e4),this.watchlist&&this.watchlist.length>0&&this.loadWatchlistPrices()},handleAddStock:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s,e,i,n,r,o,l;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(s="",e="",i="",!t.selectedSymbolForAdd){a.n=1;break}s=t.selectedSymbolForAdd.market,e=t.selectedSymbolForAdd.symbol.toUpperCase(),i=t.selectedSymbolForAdd.name||"",a.n=4;break;case 1:if(!t.symbolSearchKeyword||!t.symbolSearchKeyword.trim()){a.n=3;break}if(t.selectedMarketTab){a.n=2;break}return t.$message.warning(t.$t("dashboard.analysis.modal.addStock.pleaseSelectMarket")),a.a(2);case 2:s=t.selectedMarketTab,e=t.symbolSearchKeyword.trim().toUpperCase(),i="",a.n=4;break;case 3:return t.$message.warning(t.$t("dashboard.analysis.modal.addStock.pleaseSelectOrEnterSymbol")),a.a(2);case 4:return t.addingStock=!0,a.p=5,a.n=6,(0,v.dp)({userid:t.userId,market:s,symbol:e,name:i});case 6:if(n=a.v,!n||1!==n.code){a.n=8;break}return t.$message.success(t.$t("dashboard.analysis.message.addStockSuccess")),t.handleCloseAddStockModal(),a.n=7,t.loadWatchlist();case 7:a.n=9;break;case 8:t.$message.error((null===n||void 0===n?void 0:n.msg)||t.$t("dashboard.analysis.message.addStockFailed"));case 9:a.n=11;break;case 10:a.p=10,l=a.v,o=(null===l||void 0===l||null===(r=l.response)||void 0===r||null===(r=r.data)||void 0===r?void 0:r.msg)||(null===l||void 0===l?void 0:l.message)||t.$t("dashboard.analysis.message.addStockFailed"),t.$message.error(o);case 11:return a.p=11,t.addingStock=!1,a.f(11);case 12:return a.a(2)}},a,null,[[5,10,11,12]])}))()},handleCloseAddStockModal:function(){this.showAddStockModal=!1,this.selectedSymbolForAdd=null,this.symbolSearchKeyword="",this.symbolSearchResults=[],this.hasSearched=!1,this.selectedMarketTab=this.marketTypes.length>0?this.marketTypes[0].value:""},handleMarketTabChange:function(t){this.selectedMarketTab=t,this.symbolSearchKeyword="",this.symbolSearchResults=[],this.selectedSymbolForAdd=null,this.hasSearched=!1,this.loadHotSymbols(t)},handleSymbolSearchInput:function(t){var a=this,s=t.target.value;if(this.symbolSearchKeyword=s,this.searchTimer&&clearTimeout(this.searchTimer),!s||""===s.trim())return this.symbolSearchResults=[],this.hasSearched=!1,void(this.selectedSymbolForAdd=null);this.searchTimer=setTimeout(function(){a.searchSymbolsInModal(s)},500)},handleSearchOrInput:function(t){t&&t.trim()&&(this.selectedMarketTab?this.symbolSearchResults.length>0||(this.hasSearched&&0===this.symbolSearchResults.length?this.handleDirectAdd():this.searchSymbolsInModal(t)):this.$message.warning(this.$t("dashboard.analysis.modal.addStock.pleaseSelectMarket")))},searchSymbolsInModal:function(t){var a=this;return(0,u.A)((0,d.A)().m(function s(){var e;return(0,d.A)().w(function(s){while(1)switch(s.p=s.n){case 0:if(t&&""!==t.trim()){s.n=1;break}return a.symbolSearchResults=[],a.hasSearched=!1,s.a(2);case 1:if(a.selectedMarketTab){s.n=2;break}return a.$message.warning(a.$t("dashboard.analysis.modal.addStock.pleaseSelectMarket")),s.a(2);case 2:return a.searchingSymbols=!0,a.hasSearched=!0,s.p=3,s.n=4,(0,v._3)({market:a.selectedMarketTab,keyword:t.trim(),limit:20});case 4:e=s.v,e&&1===e.code&&e.data&&e.data.length>0?a.symbolSearchResults=e.data:(a.symbolSearchResults=[],a.selectedSymbolForAdd={market:a.selectedMarketTab,symbol:t.trim().toUpperCase(),name:""}),s.n=6;break;case 5:s.p=5,s.v,a.symbolSearchResults=[],a.selectedSymbolForAdd={market:a.selectedMarketTab,symbol:t.trim().toUpperCase(),name:""};case 6:return s.p=6,a.searchingSymbols=!1,s.f(6);case 7:return s.a(2)}},s,null,[[3,5,6,7]])}))()},handleDirectAdd:function(){this.symbolSearchKeyword&&this.symbolSearchKeyword.trim()?this.selectedMarketTab?this.selectedSymbolForAdd={market:this.selectedMarketTab,symbol:this.symbolSearchKeyword.trim().toUpperCase(),name:""}:this.$message.warning(this.$t("dashboard.analysis.modal.addStock.pleaseSelectMarket")):this.$message.warning(this.$t("dashboard.analysis.modal.addStock.pleaseEnterSymbol"))},selectSymbol:function(t){this.selectedSymbolForAdd={market:t.market,symbol:t.symbol,name:t.name||t.symbol}},loadHotSymbols:function(t){var a=this;return(0,u.A)((0,d.A)().m(function s(){var e;return(0,d.A)().w(function(s){while(1)switch(s.p=s.n){case 0:if(t||(t=a.selectedMarketTab||(a.marketTypes.length>0?a.marketTypes[0].value:"")),t){s.n=1;break}return s.a(2);case 1:return a.loadingHotSymbols=!0,s.p=2,s.n=3,(0,v.z6)({market:t,limit:10});case 3:e=s.v,e&&1===e.code&&e.data?a.hotSymbols=e.data:a.hotSymbols=[],s.n=5;break;case 4:s.p=4,s.v,a.hotSymbols=[];case 5:return s.p=5,a.loadingHotSymbols=!1,s.f(5);case 6:return s.a(2)}},s,null,[[2,4,5,6]])}))()},removeFromWatchlist:function(t){var a=arguments,s=this;return(0,u.A)((0,d.A)().m(function e(){var i,r,o;return(0,d.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(s.userId){e.n=1;break}return e.a(2);case 1:return i="object"===(0,n.A)(t)?t.symbol:t,r="object"===(0,n.A)(t)?t.market:a[1],e.p=2,e.n=3,(0,v.mk)({userid:s.userId,symbol:i,market:r});case 3:if(o=e.v,!o||1!==o.code){e.n=5;break}return s.$message.success(s.$t("dashboard.analysis.message.removeStockSuccess")),e.n=4,s.loadWatchlist();case 4:e.n=6;break;case 5:s.$message.error((null===o||void 0===o?void 0:o.msg)||s.$t("dashboard.analysis.message.removeStockFailed"));case 6:e.n=8;break;case 7:e.p=7,e.v,s.$message.error(s.$t("dashboard.analysis.message.removeStockFailed"));case 8:return e.a(2)}},e,null,[[2,7]])}))()},getMarketName:function(t){return this.$t("dashboard.analysis.market.".concat(t))||t},formatNumber:function(t){return"string"===typeof t?t:t.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})},loadMarketTypes:function(){var t=this;return(0,u.A)((0,d.A)().m(function a(){var s;return(0,d.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return a.p=0,a.n=1,(0,v.iO)();case 1:s=a.v,s&&1===s.code&&s.data&&Array.isArray(s.data)?t.marketTypes=s.data.map(function(t){return{value:t.value,i18nKey:t.i18nKey||"dashboard.analysis.market.".concat(t.value)}}):t.marketTypes=[{value:"USStock",i18nKey:"dashboard.analysis.market.USStock"},{value:"Crypto",i18nKey:"dashboard.analysis.market.Crypto"},{value:"Forex",i18nKey:"dashboard.analysis.market.Forex"},{value:"Futures",i18nKey:"dashboard.analysis.market.Futures"}],a.n=3;break;case 2:a.p=2,a.v,t.marketTypes=[{value:"USStock",i18nKey:"dashboard.analysis.market.USStock"},{value:"Crypto",i18nKey:"dashboard.analysis.market.Crypto"},{value:"Forex",i18nKey:"dashboard.analysis.market.Forex"},{value:"Futures",i18nKey:"dashboard.analysis.market.Futures"}];case 3:t.marketTypes.length>0&&!t.selectedMarketTab&&(t.selectedMarketTab=t.marketTypes[0].value);case 4:return a.a(2)}},a,null,[[0,2]])}))()}},watch:{presetSymbol:function(t){t&&t!==this.selectedSymbol&&(this.selectedSymbol=t,this.analysisResult=null,this.analysisError=null,this.analysisErrorTone="error")},autoAnalyzeSignal:function(t){var a=this;t&&(this.presetSymbol&&this.presetSymbol!==this.selectedSymbol&&(this.selectedSymbol=this.presetSymbol),this.$nextTick(function(){a.startFastAnalysis()}))},showAddStockModal:function(t){t?(this.marketTypes.length>0&&!this.selectedMarketTab&&(this.selectedMarketTab=this.marketTypes[0].value),this.selectedMarketTab&&this.loadHotSymbols(this.selectedMarketTab)):(this.selectedSymbolForAdd=null,this.symbolSearchKeyword="",this.symbolSearchResults=[],this.hasSearched=!1,this.searchTimer&&(clearTimeout(this.searchTimer),this.searchTimer=null))}}},N=F,I=(0,x.A)(N,e,i,!1,null,"06c771c0",null),D=I.exports},44146:function(t,a,s){s.d(a,{EF:function(){return l},f$:function(){return r},kF:function(){return o},r9:function(){return c},yI:function(){return n}});var e=s(75769),i="/api/global-market";function n(){return(0,e.Ay)({url:"".concat(i,"/overview"),method:"get"})}function r(){return(0,e.Ay)({url:"".concat(i,"/heatmap"),method:"get"})}function o(){return(0,e.Ay)({url:"".concat(i,"/calendar"),method:"get"})}function l(){return(0,e.Ay)({url:"".concat(i,"/sentiment"),method:"get"})}function c(t){return(0,e.Ay)({url:"".concat(i,"/opportunities"),method:"get",params:t})}},35038:function(t,a,s){s.d(a,{Qo:function(){return n},_3:function(){return d},dp:function(){return r},iO:function(){return c},mk:function(){return o},ms:function(){return l},z6:function(){return u}});var e=s(75769),i={GetWatchlist:"/api/market/watchlist/get",AddWatchlist:"/api/market/watchlist/add",RemoveWatchlist:"/api/market/watchlist/remove",GetWatchlistPrices:"/api/market/watchlist/prices",MultiAnalysis:"/api/analysis/multiAnalysis",CreateAnalysisTask:"/api/analysis/createTask",GetAnalysisTaskStatus:"/api/analysis/getTaskStatus",GetAnalysisHistoryList:"/api/analysis/getHistoryList",DeleteAnalysisTask:"/api/analysis/deleteTask",ReflectAnalysis:"/api/analysis/reflect",ChatMessage:"/api/ai/chat/message",GetChatHistory:"/api/ai/chat/history",SaveChatHistory:"/api/ai/chat/history/save",GetConfig:"/api/market/config",GetMenuFooterConfig:"/api/market/menuFooterConfig",GetMarketTypes:"/api/market/types",SearchSymbols:"/api/market/symbols/search",GetHotSymbols:"/api/market/symbols/hot"};function n(t){return(0,e.Ay)({url:i.GetWatchlist,method:"get",params:t})}function r(t){return(0,e.Ay)({url:i.AddWatchlist,method:"post",data:t})}function o(t){return(0,e.Ay)({url:i.RemoveWatchlist,method:"post",data:t})}function l(t){return(0,e.Ay)({url:i.GetWatchlistPrices,method:"get",params:{watchlist:JSON.stringify(t.watchlist||[])}})}function c(){return(0,e.Ay)({url:i.GetMarketTypes,method:"get"})}function d(t){return(0,e.Ay)({url:i.SearchSymbols,method:"get",params:t})}function u(t){return(0,e.Ay)({url:i.GetHotSymbols,method:"get",params:t})}},24364:function(t,a,s){s.d(a,{$p:function(){return o},Dt:function(){return i},Iw:function(){return v},Ps:function(){return n},Xg:function(){return r},_3:function(){return g},aU:function(){return h},bC:function(){return l},cg:function(){return y},ei:function(){return m},f:function(){return b},iO:function(){return _},qS:function(){return f},qu:function(){return p},sk:function(){return u},w1:function(){return c},yr:function(){return d}});var e=s(75769);function i(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,e.Ay)({url:"/api/portfolio/positions",method:"get",params:t})}function n(t){return(0,e.Ay)({url:"/api/portfolio/positions",method:"post",data:t})}function r(t,a){return(0,e.Ay)({url:"/api/portfolio/positions/".concat(t),method:"put",data:a})}function o(t){return(0,e.Ay)({url:"/api/portfolio/positions/".concat(t),method:"delete"})}function l(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,e.Ay)({url:"/api/portfolio/summary",method:"get",params:t})}function c(){return(0,e.Ay)({url:"/api/portfolio/monitors",method:"get"})}function d(t){return(0,e.Ay)({url:"/api/portfolio/monitors",method:"post",data:t})}function u(t,a){return(0,e.Ay)({url:"/api/portfolio/monitors/".concat(t),method:"put",data:a})}function m(t){return(0,e.Ay)({url:"/api/portfolio/monitors/".concat(t),method:"delete"})}function h(t){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return(0,e.Ay)({url:"/api/portfolio/monitors/".concat(t,"/run"),method:"post",data:a})}function p(){return(0,e.Ay)({url:"/api/portfolio/alerts",method:"get"})}function v(t){return(0,e.Ay)({url:"/api/portfolio/alerts",method:"post",data:t})}function y(t,a){return(0,e.Ay)({url:"/api/portfolio/alerts/".concat(t),method:"put",data:a})}function f(t){return(0,e.Ay)({url:"/api/portfolio/alerts/".concat(t),method:"delete"})}function b(){return(0,e.Ay)({url:"/api/portfolio/groups",method:"get"})}function g(t){return(0,e.Ay)({url:"/api/market/symbols/search",method:"post",data:t})}function _(){return(0,e.Ay)({url:"/api/market/types",method:"get"})}},21560:function(t,a,s){s.d(a,{A:function(){return i}});var e=s(44735);function i(t){if(null!=t){var a=t["function"==typeof Symbol&&Symbol.iterator||"@@iterator"],s=0;if(a)return a.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length))return{next:function(){return t&&s>=t.length&&(t=void 0),{value:t&&t[s++],done:!t}}}}throw new TypeError((0,e.A)(t)+" is not iterable")}}}]); \ No newline at end of file diff --git a/frontend/dist/js/875-legacy.6eba2135.js b/frontend/dist/js/875-legacy.6eba2135.js deleted file mode 100644 index 83e5af3..0000000 --- a/frontend/dist/js/875-legacy.6eba2135.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self["webpackChunkvue_antd_pro"]=self["webpackChunkvue_antd_pro"]||[]).push([[875],{1875:function(e,t,a){a.r(t),a.d(t,{default:function(){return v}});a(52675),a(89463),a(28706),a(50778);var s=function(){var e=this,t=e._self._c;return t("div",{staticClass:"settings-page",class:{"theme-dark":e.isDarkTheme}},[e.showRestartTip?t("a-alert",{staticClass:"restart-alert",attrs:{type:"warning",showIcon:"",closable:""},on:{close:function(t){e.showRestartTip=!1}}},[t("template",{slot:"message"},[t("span",[e._v(e._s(e.$t("settings.restartRequired")))]),t("a-button",{attrs:{size:"small",type:"link"},on:{click:e.copyRestartCommand}},[e._v(" "+e._s(e.$t("settings.copyRestartCmd"))+" ")])],1)],2):e._e(),t("div",{staticClass:"settings-header"},[t("h2",{staticClass:"page-title"},[t("a-icon",{attrs:{type:"setting"}}),t("span",[e._v(e._s(e.$t("settings.title")))])],1),t("p",{staticClass:"page-desc"},[e._v(e._s(e.$t("settings.description")))])]),t("a-spin",{attrs:{spinning:e.loading}},[t("div",{staticClass:"settings-content"},[t("a-collapse",{staticClass:"settings-collapse",attrs:{bordered:!1},model:{value:e.activeKeys,callback:function(t){e.activeKeys=t},expression:"activeKeys"}},e._l(e.sortedSchema,function(a,s){return t("a-collapse-panel",{key:s},[t("template",{slot:"header"},[t("span",{staticClass:"panel-header"},[t("a-icon",{staticClass:"panel-icon-left",attrs:{type:a.icon||e.getGroupIcon(s)}}),t("span",{staticClass:"panel-title"},[e._v(e._s(e.getGroupTitle(s,a.title)))])],1)]),"ai"===s?t("div",{staticClass:"openrouter-balance-card"},[t("a-card",{attrs:{size:"small",bordered:!1}},[t("div",{staticClass:"balance-header"},[t("span",{staticClass:"balance-title"},[t("a-icon",{staticStyle:{"margin-right":"6px"},attrs:{type:"wallet"}}),e._v(" "+e._s(e.$t("settings.openrouterBalance")||"OpenRouter 账户余额")+" ")],1),t("a-button",{attrs:{size:"small",type:"primary",ghost:"",loading:e.balanceLoading},on:{click:e.queryOpenRouterBalance}},[t("a-icon",{attrs:{type:"sync"}}),e._v(" "+e._s(e.$t("settings.queryBalance")||"查询余额")+" ")],1)],1),e.openrouterBalance?t("div",{staticClass:"balance-info"},[t("a-row",{attrs:{gutter:16}},[t("a-col",{attrs:{span:8}},[t("a-statistic",{attrs:{title:e.$t("settings.balanceUsage")||"已使用",value:e.openrouterBalance.usage,prefix:"$",precision:4,"value-style":{color:"#cf1322"}}})],1),t("a-col",{attrs:{span:8}},[t("a-statistic",{attrs:{title:e.$t("settings.balanceRemaining")||"剩余额度",value:null!==e.openrouterBalance.limit_remaining?e.openrouterBalance.limit_remaining:"∞",prefix:null!==e.openrouterBalance.limit_remaining?"$":"",precision:null!==e.openrouterBalance.limit_remaining?4:0,"value-style":{color:null!==e.openrouterBalance.limit_remaining&&e.openrouterBalance.limit_remaining<1?"#cf1322":"#3f8600"}}})],1),t("a-col",{attrs:{span:8}},[t("a-statistic",{attrs:{title:e.$t("settings.balanceLimit")||"总限额",value:null!==e.openrouterBalance.limit?e.openrouterBalance.limit:"∞",prefix:null!==e.openrouterBalance.limit?"$":"",precision:null!==e.openrouterBalance.limit?2:0}})],1)],1),e.openrouterBalance.is_free_tier?t("div",{staticClass:"free-tier-badge"},[t("a-tag",{attrs:{color:"blue"}},[e._v("Free Tier")])],1):e._e()],1):t("div",{staticClass:"balance-empty"},[t("a-icon",{staticStyle:{"margin-right":"6px"},attrs:{type:"info-circle"}}),e._v(" "+e._s(e.$t("settings.balanceNotQueried")||'点击"查询余额"获取账户信息')+" ")],1)])],1):e._e(),t("a-form",{staticClass:"settings-form",attrs:{form:e.form,layout:"vertical"}},[t("a-row",{attrs:{gutter:24}},e._l(a.items,function(a){return t("a-col",{key:a.key,attrs:{xs:24,sm:24,md:12,lg:12}},[t("a-form-item",[t("template",{slot:"label"},[t("span",{staticClass:"form-label-with-tooltip"},[t("span",{staticClass:"label-text"},[e._v(e._s(e.getItemLabel(s,a)))]),a.description?t("a-tooltip",{attrs:{placement:"top"}},[t("template",{slot:"title"},[e._v(" "+e._s(e.getItemDescription(s,a))+" ")]),t("a-icon",{staticClass:"help-icon",attrs:{type:"question-circle"}})],2):e._e(),a.link?t("a",{staticClass:"api-link",attrs:{href:a.link,target:"_blank",rel:"noopener noreferrer"},on:{click:function(e){e.stopPropagation()}}},[t("a-icon",{attrs:{type:"link"}}),e._v(" "+e._s(e.getLinkText(a.link_text))+" ")],1):e._e()],1)]),"text"===a.type?[t("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:[a.key,{initialValue:e.getFieldValue(s,a.key)}],expression:"[item.key, { initialValue: getFieldValue(groupKey, item.key) }]"}],attrs:{placeholder:a.default?"".concat(e.$t("settings.default"),": ").concat(a.default):"",allowClear:""}})]:"password"===a.type?[t("div",{staticClass:"password-field"},[t("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:[a.key,{initialValue:e.getFieldValue(s,a.key)}],expression:"[item.key, { initialValue: getFieldValue(groupKey, item.key) }]"}],attrs:{type:e.passwordVisible[a.key]?"text":"password",placeholder:e.$t("settings.inputApiKey"),allowClear:""}},[t("a-icon",{staticStyle:{cursor:"pointer"},attrs:{slot:"suffix",type:e.passwordVisible[a.key]?"eye":"eye-invisible"},on:{click:function(t){return e.togglePasswordVisible(a.key)}},slot:"suffix"})],1)],1)]:"number"===a.type?[t("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:[a.key,{initialValue:e.getNumberValue(s,a.key,a.default)}],expression:"[item.key, { initialValue: getNumberValue(groupKey, item.key, item.default) }]"}],staticStyle:{width:"100%"},attrs:{placeholder:a.default?"".concat(e.$t("settings.default"),": ").concat(a.default):""}})]:"boolean"===a.type?[t("a-switch",{directives:[{name:"decorator",rawName:"v-decorator",value:[a.key,{valuePropName:"checked",initialValue:e.getBoolValue(s,a.key,a.default)}],expression:"[item.key, { valuePropName: 'checked', initialValue: getBoolValue(groupKey, item.key, item.default) }]"}]})]:"select"===a.type?[t("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:[a.key,{initialValue:e.getFieldValue(s,a.key)||a.default}],expression:"[item.key, { initialValue: getFieldValue(groupKey, item.key) || item.default }]"}],attrs:{placeholder:a.default?"".concat(e.$t("settings.default"),": ").concat(a.default):e.$t("settings.pleaseSelect")}},e._l(e.getSelectOptions(a),function(a){return t("a-select-option",{key:a.value,attrs:{value:a.value}},[e._v(" "+e._s(a.label)+" ")])}),1)]:e._e(),a.default&&"boolean"!==a.type&&"password"!==a.type?t("div",{staticClass:"field-default"},[e._v(" "+e._s(e.$t("settings.default"))+": "+e._s(a.default)+" ")]):e._e()],2)],1)}),1)],1)],2)}),1)],1)]),t("div",{staticClass:"settings-footer"},[t("a-button",{attrs:{disabled:e.saving},on:{click:e.handleReset}},[t("a-icon",{attrs:{type:"undo"}}),e._v(" "+e._s(e.$t("settings.reset"))+" ")],1),t("a-button",{attrs:{type:"primary",loading:e.saving},on:{click:e.handleSave}},[t("a-icon",{attrs:{type:"save"}}),e._v(" "+e._s(e.$t("settings.save"))+" ")],1)],1)],1)},i=[],n=a(57532),r=a(81127),l=a(56252),o=a(44735),c=a(15863),u=(a(2008),a(62062),a(26910),a(5506),a(79432),a(26099),a(47764),a(11392),a(62953),a(53003)),p=a(55434),d={name:"Settings",mixins:[p.t],data:function(){return{loading:!1,saving:!1,schema:{},values:{},activeKeys:["auth","ai","trading"],passwordVisible:{},showRestartTip:!1,balanceLoading:!1,openrouterBalance:null}},computed:{isDarkTheme:function(){return"dark"===this.navTheme||"realdark"===this.navTheme},sortedSchema:function(){var e=Object.entries(this.schema);e.sort(function(e,t){var a=e[1].order||999,s=t[1].order||999;return a-s});for(var t={},a=0,s=e;a0?a("span",{staticClass:"group-status running"},[e._v(" "+e._s(t.runningCount)+" "+e._s(e.$t("trading-assistant.status.running"))+" ")]):e._e(),t.stoppedCount>0?a("span",{staticClass:"group-status stopped"},[e._v(" "+e._s(t.stoppedCount)+" "+e._s(e.$t("trading-assistant.status.stopped"))+" ")]):e._e(),a("a-dropdown",{attrs:{getPopupContainer:e.getDropdownContainer,trigger:["click"]}},[a("a-menu",{attrs:{slot:"overlay"},on:{click:function(a){var i=a.key;return e.handleGroupMenuClick(i,t)}},slot:"overlay"},[a("a-menu-item",{key:"startAll"},[a("a-icon",{attrs:{type:"play-circle"}}),e._v(" "+e._s(e.$t("trading-assistant.startAll"))+" ")],1),a("a-menu-item",{key:"stopAll"},[a("a-icon",{attrs:{type:"pause-circle"}}),e._v(" "+e._s(e.$t("trading-assistant.stopAll"))+" ")],1),a("a-menu-divider"),a("a-menu-item",{key:"deleteAll",staticClass:"danger-item"},[a("a-icon",{attrs:{type:"delete"}}),e._v(" "+e._s(e.$t("trading-assistant.deleteAll"))+" ")],1)],1),a("a-button",{attrs:{type:"link",icon:"more",size:"small"}})],1)],1)]),a("div",{directives:[{name:"show",rawName:"v-show",value:!e.collapsedGroups[t.id],expression:"!collapsedGroups[group.id]"}],staticClass:"strategy-group-content"},e._l(t.strategies,function(t){return a("div",{key:t.id,class:["strategy-list-item",{active:e.selectedStrategy&&e.selectedStrategy.id===t.id}],on:{click:function(a){return e.handleSelectStrategy(t)}}},[a("div",{staticClass:"strategy-item-content"},[a("div",{staticClass:"strategy-item-header"},[a("div",{staticClass:"strategy-name-wrapper"},["strategy"===e.groupByMode?[t.trading_config&&t.trading_config.symbol?a("span",{staticClass:"info-item"},[a("a-icon",{attrs:{type:"dollar"}}),e._v(" "+e._s(t.trading_config.symbol)+" ")],1):e._e()]:[a("span",{staticClass:"info-item strategy-name-text"},[a("a-icon",{attrs:{type:"thunderbolt"}}),e._v(" "+e._s(t.displayInfo?t.displayInfo.strategyName:t.strategy_name)+" ")],1),t.displayInfo&&t.displayInfo.timeframe?a("a-tag",{attrs:{size:"small",color:"cyan"}},[a("a-icon",{staticStyle:{"margin-right":"2px"},attrs:{type:"clock-circle"}}),e._v(" "+e._s(t.displayInfo.timeframe)+" ")],1):e._e(),t.displayInfo&&t.displayInfo.indicatorName&&"-"!==t.displayInfo.indicatorName?a("a-tag",{attrs:{size:"small",color:"purple"}},[a("a-icon",{staticStyle:{"margin-right":"2px"},attrs:{type:"line-chart"}}),e._v(" "+e._s(t.displayInfo.indicatorName)+" ")],1):e._e()],a("span",{staticClass:"status-label",class:[t.status?"status-".concat(t.status):"",{"status-stopped":"stopped"===t.status}]},[e._v(" "+e._s(e.getStatusText(t.status))+" ")])],2)])]),a("div",{staticClass:"strategy-item-actions",on:{click:function(t){t.stopPropagation()}}},[a("a-dropdown",{attrs:{getPopupContainer:e.getDropdownContainer,trigger:["click"]}},[a("a-menu",{attrs:{slot:"overlay"},on:{click:function(a){var i=a.key;return e.handleMenuClick(i,t)}},slot:"overlay"},["stopped"===t.status?a("a-menu-item",{key:"start"},[a("a-icon",{attrs:{type:"play-circle"}}),e._v(" "+e._s(e.$t("trading-assistant.startStrategy"))+" ")],1):e._e(),"running"===t.status?a("a-menu-item",{key:"stop"},[a("a-icon",{attrs:{type:"pause-circle"}}),e._v(" "+e._s(e.$t("trading-assistant.stopStrategy"))+" ")],1):e._e(),a("a-menu-divider"),a("a-menu-item",{key:"edit"},[a("a-icon",{attrs:{type:"edit"}}),e._v(" "+e._s(e.$t("trading-assistant.editStrategy"))+" ")],1),a("a-menu-divider"),a("a-menu-item",{key:"delete",staticClass:"danger-item"},[a("a-icon",{attrs:{type:"delete"}}),e._v(" "+e._s(e.$t("trading-assistant.deleteStrategy"))+" ")],1)],1),a("a-button",{attrs:{type:"link",icon:"more",size:"small"}})],1)],1)])}),0)])}),e._l(e.groupedStrategies.ungrouped,function(t){return a("div",{key:t.id,class:["strategy-list-item",{active:e.selectedStrategy&&e.selectedStrategy.id===t.id}],on:{click:function(a){return e.handleSelectStrategy(t)}}},[a("div",{staticClass:"strategy-item-content"},[a("div",{staticClass:"strategy-item-header"},[a("div",{staticClass:"strategy-name-wrapper"},[t.exchange_config&&t.exchange_config.exchange_id?a("a-tag",{staticClass:"exchange-tag",attrs:{color:e.getExchangeTagColor(t.exchange_config.exchange_id),size:"small"}},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"bank"}}),e._v(" "+e._s(e.getExchangeDisplayName(t.exchange_config.exchange_id))+" ")],1):e._e(),a("span",{staticClass:"strategy-name"},[e._v(e._s(t.strategy_name))]),"PromptBasedStrategy"===t.strategy_type?a("a-tag",{staticClass:"strategy-type-tag",attrs:{color:"purple",size:"small"}},[a("a-icon",{staticStyle:{"margin-right":"2px"},attrs:{type:"robot"}}),e._v(" AI ")],1):e._e()],1)]),a("div",{staticClass:"strategy-item-info"},[t.trading_config&&t.trading_config.symbol?a("span",{staticClass:"info-item"},[a("a-icon",{attrs:{type:"dollar"}}),e._v(" "+e._s(t.trading_config.symbol)+" ")],1):e._e(),a("span",{staticClass:"status-label",class:[t.status?"status-".concat(t.status):"",{"status-stopped":"stopped"===t.status}]},[e._v(" "+e._s(e.getStatusText(t.status))+" ")])])]),a("div",{staticClass:"strategy-item-actions",on:{click:function(t){t.stopPropagation()}}},[a("a-dropdown",{attrs:{getPopupContainer:e.getDropdownContainer,trigger:["click"]}},[a("a-menu",{attrs:{slot:"overlay"},on:{click:function(a){var i=a.key;return e.handleMenuClick(i,t)}},slot:"overlay"},["stopped"===t.status?a("a-menu-item",{key:"start"},[a("a-icon",{attrs:{type:"play-circle"}}),e._v(" "+e._s(e.$t("trading-assistant.startStrategy"))+" ")],1):e._e(),"running"===t.status?a("a-menu-item",{key:"stop"},[a("a-icon",{attrs:{type:"pause-circle"}}),e._v(" "+e._s(e.$t("trading-assistant.stopStrategy"))+" ")],1):e._e(),a("a-menu-divider"),a("a-menu-item",{key:"edit"},[a("a-icon",{attrs:{type:"edit"}}),e._v(" "+e._s(e.$t("trading-assistant.editStrategy"))+" ")],1),a("a-menu-divider"),a("a-menu-item",{key:"delete",staticClass:"danger-item"},[a("a-icon",{attrs:{type:"delete"}}),e._v(" "+e._s(e.$t("trading-assistant.deleteStrategy"))+" ")],1)],1),a("a-button",{attrs:{type:"link",icon:"more",size:"small"}})],1)],1)])})],2):a("a-empty",{attrs:{description:e.$t("trading-assistant.noStrategy")}})],1)],1)],1),a("a-col",{staticClass:"strategy-detail-col",attrs:{xs:24,sm:24,md:14,lg:16,xl:16}},[e.selectedStrategy?a("div",{staticClass:"strategy-detail-panel"},[a("a-card",{staticClass:"strategy-header-card",attrs:{bordered:!1}},[a("div",{staticClass:"strategy-header"},[a("div",{staticClass:"header-left"},[a("div",{staticClass:"strategy-title-row"},[a("h3",{staticClass:"strategy-title"},[e._v(e._s(e.selectedStrategy.strategy_name))]),a("div",{staticClass:"status-badge",class:["status-".concat(e.selectedStrategy.status)]},[a("span",{staticClass:"status-dot"}),e._v(" "+e._s(e.getStatusText(e.selectedStrategy.status))+" ")])]),a("div",{staticClass:"key-stats-grid"},[e.selectedStrategy.initial_capital||e.selectedStrategy.trading_config&&e.selectedStrategy.trading_config.initial_capital?a("div",{staticClass:"stat-card"},[a("div",{staticClass:"stat-icon investment"},[a("a-icon",{attrs:{type:"wallet"}})],1),a("div",{staticClass:"stat-content"},[a("div",{staticClass:"stat-label"},[e._v(e._s(e.$t("trading-assistant.detail.totalInvestment")))]),a("div",{staticClass:"stat-value"},[e._v("$"+e._s(parseFloat(e.selectedStrategy.initial_capital||(null===(t=e.selectedStrategy.trading_config)||void 0===t?void 0:t.initial_capital)||0).toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})))])])]):e._e(),null!==e.currentEquity?a("div",{staticClass:"stat-card"},[a("div",{staticClass:"stat-icon equity"},[a("a-icon",{attrs:{type:"fund"}})],1),a("div",{staticClass:"stat-content"},[a("div",{staticClass:"stat-label"},[e._v(e._s(e.$t("trading-assistant.detail.currentEquity")))]),a("div",{staticClass:"stat-value",class:e.getEquityColorClass},[e._v(e._s(e.formatCurrency(e.currentEquity)))])])]):e._e(),null!==e.totalPnl?a("div",{staticClass:"stat-card pnl-card",class:{profit:e.totalPnl>0,loss:e.totalPnl<0}},[a("div",{staticClass:"stat-icon pnl"},[a("a-icon",{attrs:{type:e.totalPnl>=0?"rise":"fall"}})],1),a("div",{staticClass:"stat-content"},[a("div",{staticClass:"stat-label"},[e._v(e._s(e.$t("trading-assistant.detail.totalPnl")))]),a("div",{staticClass:"stat-value",class:e.getPnlColorClass},[e._v(" "+e._s(e.formatPnl(e.totalPnl))+" "),a("span",{staticClass:"pnl-percent"},[e._v("("+e._s(e.formatPnlPercent(e.totalPnlPercent))+")")])])])]):e._e()]),a("div",{staticClass:"strategy-tags"},[e.selectedStrategy.trading_config?a("div",{staticClass:"tag-item"},[a("a-icon",{attrs:{type:"stock"}}),a("span",[e._v(e._s(e.selectedStrategy.trading_config.symbol))])],1):e._e(),e.selectedStrategy.indicator_config&&e.selectedStrategy.indicator_config.indicator_name?a("div",{staticClass:"tag-item"},[a("a-icon",{attrs:{type:"line-chart"}}),a("span",[e._v(e._s(e.selectedStrategy.indicator_config.indicator_name))])],1):e._e(),e.selectedStrategy.trading_config?a("div",{staticClass:"tag-item"},[a("a-icon",{attrs:{type:"thunderbolt"}}),a("span",[e._v(e._s(e.selectedStrategy.trading_config.leverage||1)+"x")])],1):e._e(),e.selectedStrategy.trading_config&&e.selectedStrategy.trading_config.trade_direction?a("div",{staticClass:"tag-item"},[a("a-icon",{attrs:{type:"swap"}}),a("span",[e._v(e._s(e.getTradeDirectionText(e.selectedStrategy.trading_config.trade_direction)))])],1):e._e(),e.selectedStrategy.trading_config&&e.selectedStrategy.trading_config.timeframe?a("div",{staticClass:"tag-item"},[a("a-icon",{attrs:{type:"clock-circle"}}),a("span",[e._v(e._s(e.selectedStrategy.trading_config.timeframe))])],1):e._e()])]),a("div",{staticClass:"header-right"},["stopped"===e.selectedStrategy.status?a("a-button",{staticClass:"action-btn start-btn",attrs:{type:"primary",size:"large"},on:{click:function(t){return e.handleStartStrategy(e.selectedStrategy.id)}}},[a("a-icon",{attrs:{type:"play-circle"}}),e._v(" "+e._s(e.$t("trading-assistant.startStrategy"))+" ")],1):e._e(),"running"===e.selectedStrategy.status?a("a-button",{staticClass:"action-btn stop-btn",attrs:{type:"danger",size:"large"},on:{click:function(t){return e.handleStopStrategy(e.selectedStrategy.id)}}},[a("a-icon",{attrs:{type:"pause-circle"}}),e._v(" "+e._s(e.$t("trading-assistant.stopStrategy"))+" ")],1):e._e()],1)])]),a("a-card",{staticClass:"strategy-content-card",attrs:{bordered:!1}},[a("a-tabs",{attrs:{defaultActiveKey:"positions"}},[a("a-tab-pane",{key:"positions",attrs:{tab:e.$t("trading-assistant.tabs.positions")}},[a("position-records",{attrs:{"strategy-id":e.selectedStrategy.id,"market-type":e.selectedStrategy.trading_config&&e.selectedStrategy.trading_config.market_type||"swap",leverage:e.selectedStrategy.trading_config&&e.selectedStrategy.trading_config.leverage||1,loading:e.loadingRecords}})],1),a("a-tab-pane",{key:"trades",attrs:{tab:e.$t("trading-assistant.tabs.tradingRecords")}},[a("trading-records",{attrs:{"strategy-id":e.selectedStrategy.id,loading:e.loadingRecords}})],1)],1)],1)],1):a("div",{staticClass:"empty-detail"},[a("a-empty",{attrs:{description:e.$t("trading-assistant.selectStrategy")}})],1)])],1),a("a-modal",{attrs:{visible:e.showFormModal,title:e.editingStrategy?e.$t("trading-assistant.editStrategy"):e.$t("trading-assistant.createStrategy"),width:e.isMobile?"95%":1100,confirmLoading:e.saving,maskClosable:!1,wrapClassName:e.isMobile?"mobile-modal":"",bodyStyle:{maxHeight:"70vh",overflowY:"auto"}},on:{ok:e.handleSubmit,cancel:e.handleCloseModal}},[a("a-spin",{attrs:{spinning:e.loadingIndicators}},[e.editingStrategy?e._e():a("div",{staticClass:"creation-mode-toggle"},[a("a-radio-group",{attrs:{size:"small","button-style":"solid"},model:{value:e.creationMode,callback:function(t){e.creationMode=t},expression:"creationMode"}},[a("a-radio-button",{attrs:{value:"simple"}},[a("a-icon",{attrs:{type:"rocket"}}),e._v(" "+e._s(e.$t("trading-assistant.form.simpleMode"))+" ")],1),a("a-radio-button",{attrs:{value:"advanced"}},[a("a-icon",{attrs:{type:"setting"}}),e._v(" "+e._s(e.$t("trading-assistant.form.advancedMode"))+" ")],1)],1),a("span",{staticClass:"mode-hint"},[e._v(e._s(e.isSimpleMode?e.$t("trading-assistant.form.simpleModeHint"):e.$t("trading-assistant.form.advancedModeHint")))])],1),a("a-steps",{staticClass:"steps-container",attrs:{current:e.displayCurrentStep}},[a("a-step",{attrs:{title:e.isSimpleMode&&!e.editingStrategy?e.$t("trading-assistant.form.simpleStep1"):e.$t("trading-assistant.form.step1")}}),e.isAdvancedMode||e.editingStrategy?a("a-step",{attrs:{title:e.$t("trading-assistant.form.step2Params")}}):e._e(),a("a-step",{attrs:{title:e.isSimpleMode&&!e.editingStrategy?e.$t("trading-assistant.form.simpleStep2"):e.$t("trading-assistant.form.step3Signal")}})],1),a("div",{staticClass:"form-container"},[a("div",{directives:[{name:"show",rawName:"v-show",value:0===e.currentStep,expression:"currentStep === 0"}],staticClass:"step-content"},["indicator"===e.strategyType?a("div",[a("a-form",{attrs:{form:e.form,layout:"vertical"}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.indicator")}},[a("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["indicator_id",{rules:[{required:!0,message:e.$t("trading-assistant.validation.indicatorRequired")}]}],expression:"['indicator_id', { rules: [{ required: true, message: $t('trading-assistant.validation.indicatorRequired') }] }]"}],attrs:{placeholder:e.$t("trading-assistant.placeholders.selectIndicator"),"show-search":"","filter-option":e.filterIndicatorOption,loading:e.loadingIndicators,getPopupContainer:function(t){return t.parentNode}},on:{focus:e.handleIndicatorSelectFocus,change:e.handleIndicatorChange}},e._l(e.availableIndicators,function(t){return a("a-select-option",{key:String(t.id),attrs:{value:String(t.id)}},[a("div",{staticClass:"indicator-option"},[a("span",{staticClass:"indicator-name"},[e._v(e._s(t.name))]),t.type?a("a-tag",{attrs:{size:"small",color:e.getIndicatorTypeColor(t.type)}},[e._v(" "+e._s(e.getIndicatorTypeName(t.type))+" ")]):e._e()],1)])}),1),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.$t("trading-assistant.form.indicatorHint"))+" ")])],1),e.selectedIndicator?a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.indicatorDescription")}},[a("div",{staticClass:"indicator-description"},[e._v(" "+e._s(e.selectedIndicator.description||e.$t("trading-assistant.form.noDescription"))+" ")])]):e._e(),e.indicatorParams.length>0?a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.indicatorParams")}},[a("div",{staticClass:"indicator-params-form"},[a("a-row",{attrs:{gutter:16}},e._l(e.indicatorParams,function(t){return a("a-col",{key:t.name,attrs:{xs:24,sm:12,md:8}},[a("div",{staticClass:"param-item"},[a("label",{staticClass:"param-label"},[e._v(" "+e._s(t.name)+" "),t.description?a("a-tooltip",{attrs:{title:t.description}},[a("a-icon",{staticStyle:{"margin-left":"4px",color:"#999"},attrs:{type:"question-circle"}})],1):e._e()],1),"int"===t.type?a("a-input-number",{staticStyle:{width:"100%"},attrs:{precision:0,size:"small"},model:{value:e.indicatorParamValues[t.name],callback:function(a){e.$set(e.indicatorParamValues,t.name,a)},expression:"indicatorParamValues[param.name]"}}):"float"===t.type?a("a-input-number",{staticStyle:{width:"100%"},attrs:{precision:4,size:"small"},model:{value:e.indicatorParamValues[t.name],callback:function(a){e.$set(e.indicatorParamValues,t.name,a)},expression:"indicatorParamValues[param.name]"}}):"bool"===t.type?a("a-switch",{attrs:{size:"small"},model:{value:e.indicatorParamValues[t.name],callback:function(a){e.$set(e.indicatorParamValues,t.name,a)},expression:"indicatorParamValues[param.name]"}}):a("a-input",{attrs:{size:"small"},model:{value:e.indicatorParamValues[t.name],callback:function(a){e.$set(e.indicatorParamValues,t.name,a)},expression:"indicatorParamValues[param.name]"}})],1)])}),1),a("div",{staticClass:"form-item-hint",staticStyle:{"margin-top":"8px"}},[e._v(" "+e._s(e.$t("trading-assistant.form.indicatorParamsHint"))+" ")])],1)]):e._e(),a("a-divider"),a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.strategyName")}},[a("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["strategy_name",{rules:[{required:!0,message:e.$t("trading-assistant.validation.strategyNameRequired")}]}],expression:"['strategy_name', { rules: [{ required: true, message: $t('trading-assistant.validation.strategyNameRequired') }] }]"}],attrs:{placeholder:e.$t("trading-assistant.placeholders.inputStrategyName")}})],1),e.isSimpleMode&&!e.editingStrategy?a("div",{staticClass:"simple-defaults-summary"},[a("a-alert",{staticStyle:{"margin-bottom":"12px"},attrs:{type:"info","show-icon":""},scopedSlots:e._u([{key:"message",fn:function(){return[a("span",[e._v(e._s(e.$t("trading-assistant.form.simpleDefaultsHint")))])]},proxy:!0},{key:"description",fn:function(){return[a("span",[e._v(" "+e._s(e.$t("trading-assistant.form.klinePeriod"))+": "),a("b",[e._v("15m")]),e._v(" · "+e._s(e.$t("trading-assistant.form.leverage"))+": "),a("b",[e._v("5x")]),e._v(" · "+e._s(e.$t("trading-assistant.form.marketType"))+": "),a("b",[e._v(e._s(e.$t("trading-assistant.form.marketTypeFutures")))]),e._v(" · "+e._s(e.$t("dashboard.indicator.backtest.field.stopLossPct"))+": "),a("b",[e._v("3%")]),e._v(" · "+e._s(e.$t("dashboard.indicator.backtest.field.takeProfitPct"))+": "),a("b",[e._v("6%")])])]},proxy:!0}],null,!1,39555864)}),a("a-button",{staticStyle:{padding:"0","margin-bottom":"12px"},attrs:{type:"link",size:"small"},on:{click:function(t){e.showAdvancedSettings=!e.showAdvancedSettings}}},[a("a-icon",{attrs:{type:e.showAdvancedSettings?"up":"down"}}),e._v(" "+e._s(e.showAdvancedSettings?e.$t("trading-assistant.form.hideAdvancedSettings"):e.$t("trading-assistant.form.showAdvancedSettings"))+" ")],1)],1):e._e(),a("div",{directives:[{name:"show",rawName:"v-show",value:e.isAdvancedMode||e.editingStrategy||e.showAdvancedSettings,expression:"isAdvancedMode || editingStrategy || showAdvancedSettings"}]},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.strategyType")}},[a("a-radio-group",{directives:[{name:"decorator",rawName:"v-decorator",value:["cs_strategy_type",{initialValue:"single"}],expression:"['cs_strategy_type', { initialValue: 'single' }]"}],on:{change:e.handleStrategyTypeChange}},[a("a-radio",{attrs:{value:"single"}},[e._v(e._s(e.$t("trading-assistant.form.strategyTypeSingle")))]),a("a-radio",{attrs:{value:"cross_sectional"}},[e._v(e._s(e.$t("trading-assistant.form.strategyTypeCrossSectional")))])],1),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.$t("trading-assistant.form.strategyTypeHint"))+" ")])],1)],1),"cross_sectional"===e.form.getFieldValue("cs_strategy_type")?[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.symbolList")}},[a("a-select",{attrs:{mode:"multiple",placeholder:e.$t("trading-assistant.placeholders.selectSymbols"),"show-search":"","filter-option":e.filterWatchlistOptionWithAdd,loading:e.loadingWatchlist,getPopupContainer:function(t){return t.parentNode},maxTagCount:5},on:{change:e.handleCrossSectionalSymbolChange},model:{value:e.crossSectionalSymbols,callback:function(t){e.crossSectionalSymbols=t},expression:"crossSectionalSymbols"}},[e._l(e.watchlist,function(t){return a("a-select-option",{key:"".concat(t.market,":").concat(t.symbol),attrs:{value:"".concat(t.market,":").concat(t.symbol)}},[a("div",{staticClass:"symbol-option"},[a("a-tag",{staticStyle:{"margin-right":"8px","margin-bottom":"0"},attrs:{color:e.getMarketColor(t.market)}},[e._v(" "+e._s(t.market)+" ")]),a("span",{staticClass:"symbol-name"},[e._v(e._s(t.symbol))]),t.name?a("span",{staticClass:"symbol-name-extra"},[e._v(e._s(t.name))]):e._e()],1)])}),a("a-select-option",{key:"__add_symbol_option__",staticClass:"add-symbol-option",attrs:{value:"__add_symbol_option__"}},[a("div",{staticStyle:{width:"100%","text-align":"center",padding:"4px 0",color:"#1890ff",cursor:"pointer"}},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"plus"}}),a("span",[e._v(e._s(e.$t("trading-assistant.form.addSymbol")))])],1)])],2),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.$t("trading-assistant.form.symbolListHint"))+" ")])],1),a("a-row",{attrs:{gutter:16}},[a("a-col",{attrs:{xs:24,sm:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.portfolioSize")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["portfolio_size",{initialValue:10,rules:[{required:!0,message:e.$t("trading-assistant.validation.portfolioSizeRequired")}]}],expression:"['portfolio_size', { initialValue: 10, rules: [{ required: true, message: $t('trading-assistant.validation.portfolioSizeRequired') }] }]"}],staticStyle:{width:"100%"},attrs:{min:1,max:100,step:1}}),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.$t("trading-assistant.form.portfolioSizeHint"))+" ")])],1)],1),a("a-col",{attrs:{xs:24,sm:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.longRatio")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["long_ratio",{initialValue:.5,rules:[{required:!0,message:e.$t("trading-assistant.validation.longRatioRequired")}]}],expression:"['long_ratio', { initialValue: 0.5, rules: [{ required: true, message: $t('trading-assistant.validation.longRatioRequired') }] }]"}],staticStyle:{width:"100%"},attrs:{min:0,max:1,step:.1,precision:2}}),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.$t("trading-assistant.form.longRatioHint"))+" ")])],1)],1)],1),a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.rebalanceFrequency")}},[a("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["rebalance_frequency",{initialValue:"daily"}],expression:"['rebalance_frequency', { initialValue: 'daily' }]"}],staticStyle:{width:"100%"}},[a("a-select-option",{attrs:{value:"daily"}},[e._v(e._s(e.$t("trading-assistant.form.rebalanceDaily")))]),a("a-select-option",{attrs:{value:"weekly"}},[e._v(e._s(e.$t("trading-assistant.form.rebalanceWeekly")))]),a("a-select-option",{attrs:{value:"monthly"}},[e._v(e._s(e.$t("trading-assistant.form.rebalanceMonthly")))])],1),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.$t("trading-assistant.form.rebalanceFrequencyHint"))+" ")])],1)]:e._e(),"cross_sectional"!==e.form.getFieldValue("cs_strategy_type")?a("a-form-item",{attrs:{label:e.isEditMode?e.$t("trading-assistant.form.symbol"):e.$t("trading-assistant.form.symbols")}},[e.isEditMode?a("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["symbol",{rules:[{required:!0,message:e.$t("trading-assistant.validation.symbolRequired")}]}],expression:"['symbol', { rules: [{ required: true, message: $t('trading-assistant.validation.symbolRequired') }] }]"}],attrs:{placeholder:e.$t("trading-assistant.placeholders.selectSymbol"),"show-search":"","filter-option":e.filterWatchlistOption,loading:e.loadingWatchlist,getPopupContainer:function(t){return t.parentNode}},on:{change:e.handleWatchlistSymbolChange}},[e._l(e.watchlist,function(t){return a("a-select-option",{key:"".concat(t.market,":").concat(t.symbol),attrs:{value:"".concat(t.market,":").concat(t.symbol)}},[a("div",{staticClass:"symbol-option"},[a("a-tag",{staticStyle:{"margin-right":"8px","margin-bottom":"0"},attrs:{color:e.getMarketColor(t.market)}},[e._v(" "+e._s(t.market)+" ")]),a("span",{staticClass:"symbol-name"},[e._v(e._s(t.symbol))]),t.name?a("span",{staticClass:"symbol-name-extra"},[e._v(e._s(t.name))]):e._e()],1)])}),a("a-select-option",{key:"__add_symbol_option__",staticClass:"add-symbol-option",attrs:{value:"__add_symbol_option__"}},[a("div",{staticStyle:{width:"100%","text-align":"center",padding:"4px 0",color:"#1890ff",cursor:"pointer"}},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"plus"}}),a("span",[e._v(e._s(e.$t("trading-assistant.form.addSymbol")))])],1)])],2):a("a-select",{attrs:{mode:"multiple",placeholder:e.$t("trading-assistant.placeholders.selectSymbols"),"show-search":"","filter-option":e.filterWatchlistOptionWithAdd,loading:e.loadingWatchlist,getPopupContainer:function(t){return t.parentNode},maxTagCount:3},on:{change:e.handleMultiSymbolChangeWithAdd},model:{value:e.selectedSymbols,callback:function(t){e.selectedSymbols=t},expression:"selectedSymbols"}},[e._l(e.watchlist,function(t){return a("a-select-option",{key:"".concat(t.market,":").concat(t.symbol),attrs:{value:"".concat(t.market,":").concat(t.symbol)}},[a("div",{staticClass:"symbol-option"},[a("a-tag",{staticStyle:{"margin-right":"8px","margin-bottom":"0"},attrs:{color:e.getMarketColor(t.market)}},[e._v(" "+e._s(t.market)+" ")]),a("span",{staticClass:"symbol-name"},[e._v(e._s(t.symbol))]),t.name?a("span",{staticClass:"symbol-name-extra"},[e._v(e._s(t.name))]):e._e()],1)])}),a("a-select-option",{key:"__add_symbol_option__",staticClass:"add-symbol-option",attrs:{value:"__add_symbol_option__"}},[a("div",{staticStyle:{width:"100%","text-align":"center",padding:"4px 0",color:"#1890ff",cursor:"pointer"}},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"plus"}}),a("span",[e._v(e._s(e.$t("trading-assistant.form.addSymbol")))])],1)])],2),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.isEditMode?e.$t("trading-assistant.form.symbolHintCrypto"):e.$t("trading-assistant.form.symbolsHint"))+" ")])],1):e._e(),a("div",{directives:[{name:"show",rawName:"v-show",value:e.isAdvancedMode||e.editingStrategy||e.showAdvancedSettings,expression:"isAdvancedMode || editingStrategy || showAdvancedSettings"}]},[a("a-row",{attrs:{gutter:16}},[a("a-col",{attrs:{xs:24,sm:24,md:12,lg:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.initialCapital")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["initial_capital",{rules:[{required:!0,message:e.$t("trading-assistant.validation.initialCapitalRequired")}],initialValue:1e3}],expression:"['initial_capital', { rules: [{ required: true, message: $t('trading-assistant.validation.initialCapitalRequired') }], initialValue: 1000 }]"}],staticStyle:{width:"100%"},attrs:{min:10,step:100,precision:2}})],1)],1),a("a-col",{attrs:{xs:24,sm:24,md:12,lg:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.marketType")}},[a("a-radio-group",{directives:[{name:"decorator",rawName:"v-decorator",value:["market_type",{initialValue:"swap"}],expression:"['market_type', { initialValue: 'swap' }]"}],on:{change:e.handleMarketTypeChange}},[a("a-radio",{attrs:{value:"swap"}},[e._v(e._s(e.$t("trading-assistant.form.marketTypeFutures")))]),a("a-radio",{attrs:{value:"spot"}},[e._v(e._s(e.$t("trading-assistant.form.marketTypeSpot")))])],1),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.$t("trading-assistant.form.marketTypeHint"))+" ")])],1)],1)],1),a("a-row",{attrs:{gutter:16}},[a("a-col",{attrs:{xs:24,sm:24,md:12,lg:12}},[a("a-form-item",{attrs:{label:"".concat(e.$t("trading-assistant.form.leverage")," (x)")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["leverage",{initialValue:5,rules:[{required:!0,message:e.$t("trading-assistant.validation.leverageRequired")}]}],expression:"['leverage', { initialValue: 5, rules: [{ required: true, message: $t('trading-assistant.validation.leverageRequired') }] }]"}],staticStyle:{width:"100%"},attrs:{min:1,max:"spot"===e.form.getFieldValue("market_type")?1:125,step:1,disabled:"spot"===e.form.getFieldValue("market_type")}}),a("div",{staticClass:"form-item-hint"},["spot"===e.form.getFieldValue("market_type")?a("span",[e._v(" "+e._s(e.$t("trading-assistant.form.spotLeverageFixed"))+" ")]):a("span",[e._v(" "+e._s(e.$t("trading-assistant.form.leverageHint"))+" ")])])],1)],1),a("a-col",{attrs:{xs:24,sm:24,md:12,lg:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.tradeDirection")}},[a("a-radio-group",{directives:[{name:"decorator",rawName:"v-decorator",value:["trade_direction",{initialValue:"long"}],expression:"['trade_direction', { initialValue: 'long' }]"}],attrs:{disabled:"spot"===e.form.getFieldValue("market_type")}},[a("a-radio",{attrs:{value:"long"}},[e._v(e._s(e.$t("trading-assistant.form.tradeDirectionLong")))]),a("a-radio",{attrs:{value:"short",disabled:"spot"===e.form.getFieldValue("market_type")}},[e._v(" "+e._s(e.$t("trading-assistant.form.tradeDirectionShort"))+" ")]),a("a-radio",{attrs:{value:"both",disabled:"spot"===e.form.getFieldValue("market_type")}},[e._v(" "+e._s(e.$t("trading-assistant.form.tradeDirectionBoth"))+" ")])],1),"spot"===e.form.getFieldValue("market_type")?a("div",{staticClass:"form-item-hint",staticStyle:{color:"#ff9800"}},[e._v(" "+e._s(e.$t("trading-assistant.form.spotOnlyLongHint"))+" ")]):e._e()],1)],1)],1),a("a-row",{attrs:{gutter:16}},[a("a-col",{attrs:{xs:24,sm:24,md:12,lg:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.klinePeriod")}},[a("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["timeframe",{initialValue:"15m",rules:[{required:!0}]}],expression:"['timeframe', { initialValue: '15m', rules: [{ required: true }] }]"}],attrs:{placeholder:e.$t("trading-assistant.placeholders.selectKlinePeriod"),getPopupContainer:function(t){return t.parentNode}}},[a("a-select-option",{attrs:{value:"1m"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe1m")))]),a("a-select-option",{attrs:{value:"5m"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe5m")))]),a("a-select-option",{attrs:{value:"15m"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe15m")))]),a("a-select-option",{attrs:{value:"30m"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe30m")))]),a("a-select-option",{attrs:{value:"1H"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe1H")))]),a("a-select-option",{attrs:{value:"4H"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe4H")))]),a("a-select-option",{attrs:{value:"1D"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe1D")))])],1)],1)],1),a("a-col",{attrs:{xs:24,sm:24,md:12,lg:12}})],1)],1)],2)],1):e._e()]),a("div",{directives:[{name:"show",rawName:"v-show",value:1===e.currentStep||e.isSimpleMode&&0===e.currentStep&&e.showAdvancedSettings,expression:"currentStep === 1 || (isSimpleMode && currentStep === 0 && showAdvancedSettings)"}],staticClass:"step-content"},["indicator"===e.strategyType?a("div",[a("a-form",{attrs:{form:e.form,layout:"vertical"}},[a("a-collapse",{staticStyle:{background:"#fafafa"},attrs:{bordered:!1},model:{value:e.backtestCollapseKeys,callback:function(t){e.backtestCollapseKeys=t},expression:"backtestCollapseKeys"}},[a("a-collapse-panel",{key:"risk",attrs:{header:e.$t("dashboard.indicator.backtest.panel.risk")}},[a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.stopLossPct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["stop_loss_pct",{initialValue:3}],expression:"['stop_loss_pct', { initialValue: 3 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:100,step:.01,precision:4}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.takeProfitPct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["take_profit_pct",{initialValue:6}],expression:"['take_profit_pct', { initialValue: 6 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:1e3,step:.01,precision:4}})],1)],1)],1),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trailingEnabled")}},[a("a-switch",{directives:[{name:"decorator",rawName:"v-decorator",value:["trailing_enabled",{valuePropName:"checked",initialValue:!1}],expression:"['trailing_enabled', { valuePropName: 'checked', initialValue: false }]"}],on:{change:e.onTrailingToggle}})],1)],1),a("a-col",{attrs:{span:12}})],1),e.trailingEnabledUi?[a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trailingStopPct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["trailing_stop_pct",{initialValue:0}],expression:"['trailing_stop_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:100,step:.01,precision:4}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trailingActivationPct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["trailing_activation_pct",{initialValue:0}],expression:"['trailing_activation_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:1e3,step:.01,precision:4}})],1)],1)],1)]:e._e()],2),a("a-collapse-panel",{key:"scale",attrs:{header:e.$t("dashboard.indicator.backtest.panel.scale")}},[a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trendAddEnabled")}},[a("a-switch",{directives:[{name:"decorator",rawName:"v-decorator",value:["trend_add_enabled",{valuePropName:"checked",initialValue:!1}],expression:"['trend_add_enabled', { valuePropName: 'checked', initialValue: false }]"}],on:{change:e.onTrendAddToggle}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.dcaAddEnabled")}},[a("a-switch",{directives:[{name:"decorator",rawName:"v-decorator",value:["dca_add_enabled",{valuePropName:"checked",initialValue:!1}],expression:"['dca_add_enabled', { valuePropName: 'checked', initialValue: false }]"}],on:{change:e.onDcaAddToggle}})],1)],1)],1),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trendAddStepPct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["trend_add_step_pct",{initialValue:0}],expression:"['trend_add_step_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:1e3,step:.01,precision:4},on:{change:e.onScaleParamsChange}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.dcaAddStepPct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["dca_add_step_pct",{initialValue:0}],expression:"['dca_add_step_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:1e3,step:.01,precision:4},on:{change:e.onScaleParamsChange}})],1)],1)],1),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trendAddSizePct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["trend_add_size_pct",{initialValue:0}],expression:"['trend_add_size_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:100,step:.1,precision:4},on:{change:e.onScaleParamsChange}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.dcaAddSizePct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["dca_add_size_pct",{initialValue:0}],expression:"['dca_add_size_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:100,step:.1,precision:4},on:{change:e.onScaleParamsChange}})],1)],1)],1),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trendAddMaxTimes")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["trend_add_max_times",{initialValue:0}],expression:"['trend_add_max_times', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:50,step:1,precision:0},on:{change:e.onScaleParamsChange}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.dcaAddMaxTimes")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["dca_add_max_times",{initialValue:0}],expression:"['dca_add_max_times', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:50,step:1,precision:0},on:{change:e.onScaleParamsChange}})],1)],1)],1)],1),a("a-collapse-panel",{key:"reduce",attrs:{header:e.$t("dashboard.indicator.backtest.panel.reduce")}},[a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trendReduceEnabled")}},[a("a-switch",{directives:[{name:"decorator",rawName:"v-decorator",value:["trend_reduce_enabled",{valuePropName:"checked",initialValue:!1}],expression:"['trend_reduce_enabled', { valuePropName: 'checked', initialValue: false }]"}]})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.adverseReduceEnabled")}},[a("a-switch",{directives:[{name:"decorator",rawName:"v-decorator",value:["adverse_reduce_enabled",{valuePropName:"checked",initialValue:!1}],expression:"['adverse_reduce_enabled', { valuePropName: 'checked', initialValue: false }]"}]})],1)],1)],1),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trendReduceStepPct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["trend_reduce_step_pct",{initialValue:0}],expression:"['trend_reduce_step_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:1e3,step:.01,precision:4}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.adverseReduceStepPct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["adverse_reduce_step_pct",{initialValue:0}],expression:"['adverse_reduce_step_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:1e3,step:.01,precision:4}})],1)],1)],1),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trendReduceSizePct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["trend_reduce_size_pct",{initialValue:0}],expression:"['trend_reduce_size_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:100,step:.1,precision:4}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.adverseReduceSizePct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["adverse_reduce_size_pct",{initialValue:0}],expression:"['adverse_reduce_size_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:100,step:.1,precision:4}})],1)],1)],1),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trendReduceMaxTimes")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["trend_reduce_max_times",{initialValue:0}],expression:"['trend_reduce_max_times', { initialValue: 0 }]"}],staticStyle:{width:"100%"},attrs:{min:0,max:50,step:1,precision:0}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.adverseReduceMaxTimes")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["adverse_reduce_max_times",{initialValue:0}],expression:"['adverse_reduce_max_times', { initialValue: 0 }]"}],staticStyle:{width:"100%"},attrs:{min:0,max:50,step:1,precision:0}})],1)],1)],1)],1),a("a-collapse-panel",{key:"position",attrs:{header:e.$t("dashboard.indicator.backtest.panel.position")}},[a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.entryPct"),help:e.$t("dashboard.indicator.backtest.hint.entryPctMax",{maxPct:Number(e.entryPctMaxUi||0).toFixed(0)})}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["entry_pct",{initialValue:100}],expression:"['entry_pct', { initialValue: 100 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:e.entryPctMaxUi,step:.1,precision:4},on:{change:e.onEntryPctChange}})],1)],1),a("a-col",{attrs:{span:12}})],1)],1)],1),a("div",{staticClass:"ai-filter-box"},[a("div",{staticClass:"ai-filter-header"},[a("div",{staticClass:"ai-filter-title"},[a("a-icon",{attrs:{type:"robot"}}),a("span",[e._v(e._s(e.$t("trading-assistant.form.enableAiFilter")))])],1),a("a-switch",{attrs:{checked:e.aiFilterEnabledUi},on:{change:e.onAiFilterToggle}})],1),a("div",{staticClass:"ai-filter-hint"},[e._v(e._s(e.$t("trading-assistant.form.enableAiFilterHint")))])])],1)],1):e._e()]),a("div",{directives:[{name:"show",rawName:"v-show",value:2===e.currentStep,expression:"currentStep === 2"}],staticClass:"step-content"},[a("a-form",{attrs:{form:e.form,layout:"vertical",autocomplete:"off"}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.executionMode")}},[a("a-radio-group",{directives:[{name:"decorator",rawName:"v-decorator",value:["execution_mode",{initialValue:"signal"}],expression:"['execution_mode', { initialValue: 'signal' }]"}],attrs:{disabled:!e.canUseLiveTrading},on:{change:e.onExecutionModeChange}},[a("a-radio",{attrs:{value:"signal"}},[e._v(e._s(e.$t("trading-assistant.form.executionModeSignal")))]),a("a-radio",{attrs:{value:"live",disabled:!e.canUseLiveTrading}},[e._v(e._s(e.$t("trading-assistant.form.executionModeLive")))])],1),e.canUseLiveTrading?e._e():a("div",{staticClass:"form-item-hint",staticStyle:{color:"#ff9800"}},[e._v(" "+e._s(e.$t("trading-assistant.form.liveTradingNotSupportedHint"))+" ")])],1),"live"===e.executionModeUi&&e.canUseLiveTrading?a("a-form-item",{staticClass:"live-disclaimer-item"},[a("a-alert",{staticStyle:{"margin-bottom":"8px"},attrs:{type:"warning",showIcon:"",message:e.$t("trading-assistant.liveDisclaimer.title"),description:e.$t("trading-assistant.liveDisclaimer.content")}}),a("a-checkbox",{directives:[{name:"decorator",rawName:"v-decorator",value:["live_disclaimer_ack",{valuePropName:"checked",initialValue:!1}],expression:"['live_disclaimer_ack', { valuePropName: 'checked', initialValue: false }]"}],on:{change:e.onLiveDisclaimerAckChange}},[e._v(" "+e._s(e.$t("trading-assistant.liveDisclaimer.agree"))+" ")])],1):e._e(),a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.notifyChannels")}},[a("a-checkbox-group",{directives:[{name:"decorator",rawName:"v-decorator",value:["notify_channels",{initialValue:["browser"]}],expression:"['notify_channels', { initialValue: ['browser'] }]"}],on:{change:e.onNotifyChannelsChange}},[a("a-checkbox",{attrs:{value:"browser"}},[e._v(e._s(e.$t("trading-assistant.notify.browser")))]),a("a-checkbox",{attrs:{value:"email"}},[e._v(e._s(e.$t("trading-assistant.notify.email")))]),a("a-checkbox",{attrs:{value:"telegram"}},[e._v(e._s(e.$t("trading-assistant.notify.telegram")))]),a("a-checkbox",{attrs:{value:"discord"}},[e._v(e._s(e.$t("trading-assistant.notify.discord")))]),a("a-checkbox",{attrs:{value:"webhook"}},[e._v(e._s(e.$t("trading-assistant.notify.webhook")))]),a("a-checkbox",{attrs:{value:"phone"}},[e._v(e._s(e.$t("trading-assistant.notify.phone")))])],1),a("div",{staticClass:"form-item-hint"},[e._v(e._s(e.$t("trading-assistant.form.notifyChannelsHint")))])],1),e.unconfiguredChannels.length>0?a("a-alert",{staticStyle:{"margin-bottom":"16px"},attrs:{type:"warning",showIcon:""},scopedSlots:e._u([{key:"message",fn:function(){return[a("span",[e._v(" "+e._s(e.$t("trading-assistant.form.notificationConfigMissing",{channels:e.unconfiguredChannels.join(", ")}))+" "),a("router-link",{staticStyle:{"margin-left":"8px"},attrs:{to:"/profile"}},[a("a-icon",{attrs:{type:"setting"}}),e._v(" "+e._s(e.$t("trading-assistant.form.goToProfile"))+" ")],1)],1)]},proxy:!0}],null,!1,2930252607)}):e.notifyChannelsUi.length>0&&!e.notifyChannelsUi.includes("browser")||e.notifyChannelsUi.length>1?a("a-alert",{staticStyle:{"margin-bottom":"16px"},attrs:{type:"info",showIcon:""},scopedSlots:e._u([{key:"message",fn:function(){return[a("span",[e._v(" "+e._s(e.$t("trading-assistant.form.notificationFromProfile"))+" "),a("router-link",{staticStyle:{"margin-left":"8px"},attrs:{to:"/profile"}},[a("a-icon",{attrs:{type:"setting"}}),e._v(" "+e._s(e.$t("trading-assistant.form.goToProfile"))+" ")],1)],1)]},proxy:!0}])}):e._e(),"live"===e.executionModeUi&&e.canUseLiveTrading?a("a-divider"):e._e(),"live"===e.executionModeUi&&e.canUseLiveTrading&&!e.liveDisclaimerAckUi?a("a-alert",{staticStyle:{"margin-bottom":"12px"},attrs:{type:"warning",showIcon:"",message:e.$t("trading-assistant.liveDisclaimer.blockTitle"),description:e.$t("trading-assistant.liveDisclaimer.blockDesc")}}):e._e(),"live"===e.executionModeUi&&e.canUseLiveTrading&&e.liveDisclaimerAckUi?a("div",[a("a-alert",{staticStyle:{"margin-bottom":"12px"},attrs:{type:"info","show-icon":"",message:e.$t("trading-assistant.form.liveTradingConfigTitle"),description:e.$t("trading-assistant.form.liveTradingConfigHint")}}),a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.savedCredential")}},[a("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["credential_id",{rules:[{required:!0,message:e.$t("profile.exchange.noCredentialHint")}],getValueFromEvent:function(t){return t||void 0}}],expression:"['credential_id', {\n rules: [{ required: true, message: $t('profile.exchange.noCredentialHint') }],\n getValueFromEvent: (val) => val || undefined\n }]"}],attrs:{placeholder:e.$t("trading-assistant.placeholders.selectSavedCredential"),"allow-clear":"","show-search":"","option-filter-prop":"children",loading:e.loadingExchangeCredentials},on:{change:e.handleCredentialSelectChange}},e._l(e.filteredExchangeCredentials,function(t){return a("a-select-option",{key:t.id,attrs:{value:t.id}},[e._v(" "+e._s(e.formatCredentialLabel(t))+" ")])}),1),a("div",{staticClass:"form-item-hint",staticStyle:{"margin-top":"6px"}},[a("router-link",{attrs:{to:"/profile?tab=exchange"}},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"setting"}}),e._v(e._s(e.$t("profile.exchange.goToManage"))+" ")],1)],1)],1)],1):e._e()],1)],1)])],1),a("template",{slot:"footer"},[a("a-button",{on:{click:e.handleCloseModal}},[e._v(e._s(e.$t("trading-assistant.form.cancel")))]),a("a-button",{directives:[{name:"show",rawName:"v-show",value:e.currentStep>0,expression:"currentStep > 0"}],on:{click:e.handlePrev}},[e._v(" "+e._s(e.$t("trading-assistant.form.prev"))+" ")]),a("a-button",{directives:[{name:"show",rawName:"v-show",value:e.currentStep<2,expression:"currentStep < 2"}],attrs:{type:"primary",loading:e.saving},on:{click:e.handleNext}},[e._v(" "+e._s(e.$t("trading-assistant.form.next"))+" ")]),a("a-button",{directives:[{name:"show",rawName:"v-show",value:2===e.currentStep,expression:"currentStep === 2"}],attrs:{type:"primary",loading:e.saving},on:{click:e.handleSubmit}},[e._v(" "+e._s(e.editingStrategy?e.$t("trading-assistant.form.confirmEdit"):e.$t("trading-assistant.form.confirmCreate"))+" ")])],1)],2),a("a-modal",{attrs:{title:e.$t("trading-assistant.form.addSymbolTitle"),visible:e.showAddSymbolModal,confirmLoading:e.addingSymbol,width:"600px",okText:e.$t("trading-assistant.form.confirmAdd"),cancelText:e.$t("trading-assistant.form.cancel"),maskClosable:!1,keyboard:!1},on:{ok:e.handleConfirmAddSymbol,cancel:e.handleCloseAddSymbolModal}},[a("div",{staticClass:"add-symbol-modal-content"},[a("a-tabs",{staticClass:"market-tabs",on:{change:e.handleAddSymbolMarketChange},model:{value:e.addSymbolMarket,callback:function(t){e.addSymbolMarket=t},expression:"addSymbolMarket"}},e._l(e.addSymbolMarketTypes,function(t){return a("a-tab-pane",{key:t.value,attrs:{tab:e.$t(t.i18nKey||"dashboard.analysis.market.".concat(t.value))}})}),1),a("div",{staticClass:"symbol-search-section"},[a("a-input-search",{attrs:{placeholder:e.$t("dashboard.analysis.modal.addStock.searchOrInputPlaceholder"),loading:e.searchingSymbol,size:"large","allow-clear":""},on:{search:e.handleSearchSymbol,change:e.handleSymbolSearchInputChange},model:{value:e.addSymbolKeyword,callback:function(t){e.addSymbolKeyword=t},expression:"addSymbolKeyword"}},[a("a-button",{attrs:{slot:"enterButton",type:"primary",icon:"search"},slot:"enterButton"},[e._v(" "+e._s(e.$t("dashboard.analysis.modal.addStock.search"))+" ")])],1)],1),e.symbolSearchResults.length>0?a("div",{staticClass:"search-results-section"},[a("div",{staticClass:"section-title"},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"search"}}),e._v(" "+e._s(e.$t("dashboard.analysis.modal.addStock.searchResults"))+" ")],1),a("a-list",{staticClass:"symbol-list",attrs:{"data-source":e.symbolSearchResults,loading:e.searchingSymbol,size:"small"},scopedSlots:e._u([{key:"renderItem",fn:function(t){return a("a-list-item",{staticClass:"symbol-list-item",on:{click:function(a){return e.handleSelectAddSymbol(t)}}},[a("a-list-item-meta",[a("template",{slot:"title"},[a("div",{staticClass:"symbol-item-content"},[a("span",{staticClass:"symbol-code"},[e._v(e._s(t.symbol))]),a("span",{staticClass:"symbol-name"},[e._v(e._s(t.name))]),t.exchange?a("a-tag",{staticStyle:{"margin-left":"8px"},attrs:{size:"small",color:"blue"}},[e._v(" "+e._s(t.exchange)+" ")]):e._e()],1)])],2)],1)}}],null,!1,2801225082)})],1):e._e(),a("div",{staticClass:"hot-symbols-section"},[a("div",{staticClass:"section-title"},[a("a-icon",{staticStyle:{color:"#ff4d4f","margin-right":"4px"},attrs:{type:"fire"}}),e._v(" "+e._s(e.$t("dashboard.analysis.modal.addStock.hotSymbols"))+" ")],1),a("a-spin",{attrs:{spinning:e.loadingHotSymbols}},[e.hotSymbols.length>0?a("a-list",{staticClass:"symbol-list",attrs:{"data-source":e.hotSymbols,size:"small"},scopedSlots:e._u([{key:"renderItem",fn:function(t){return a("a-list-item",{staticClass:"symbol-list-item",on:{click:function(a){return e.handleSelectAddSymbol(t)}}},[a("a-list-item-meta",[a("template",{slot:"title"},[a("div",{staticClass:"symbol-item-content"},[a("span",{staticClass:"symbol-code"},[e._v(e._s(t.symbol))]),a("span",{staticClass:"symbol-name"},[e._v(e._s(t.name))]),t.exchange?a("a-tag",{staticStyle:{"margin-left":"8px"},attrs:{size:"small",color:"orange"}},[e._v(" "+e._s(t.exchange)+" ")]):e._e()],1)])],2)],1)}}],null,!1,3959834868)}):a("a-empty",{attrs:{description:e.$t("dashboard.analysis.modal.addStock.noHotSymbols"),image:!1}})],1)],1),e.selectedAddSymbol?a("div",{staticClass:"selected-symbol-section"},[a("div",{staticClass:"section-title"},[a("a-icon",{staticStyle:{color:"#52c41a","margin-right":"4px"},attrs:{type:"check-circle"}}),e._v(" "+e._s(e.$t("dashboard.analysis.modal.addStock.selectedSymbol"))+" ")],1),a("div",{staticClass:"selected-symbol-info"},[a("a-tag",{staticStyle:{"margin-right":"8px"},attrs:{color:e.getMarketColor(e.addSymbolMarket)}},[e._v(e._s(e.addSymbolMarket))]),a("span",{staticClass:"symbol-code"},[e._v(e._s(e.selectedAddSymbol.symbol))]),e.selectedAddSymbol.name?a("span",{staticClass:"symbol-name"},[e._v(e._s(e.selectedAddSymbol.name))]):e._e()],1)]):e._e()],1)])],1)},s=[],r=a(15863),n=a(44735),o=a(81127),l=a(56252),d=a(2403),c=a(57532),u=a(76338),m=a(36911),g=a(35038),p=a(42430),h=a(84841),_=a(55434),y=a(75769),f=function(){var t=this,e=t._self._c;return e("div",{staticClass:"trading-records"},[0!==t.records.length||t.loading?e("a-table",{attrs:{columns:t.columns,"data-source":t.records,loading:t.loading,pagination:{pageSize:10},size:"small",rowKey:"id",scroll:{x:800}},scopedSlots:t._u([{key:"type",fn:function(a){return[e("a-tag",{attrs:{color:t.getTradeTypeColor(a)}},[t._v(" "+t._s(t.getTradeTypeText(a))+" ")])]}},{key:"price",fn:function(e){return[t._v(" $"+t._s(parseFloat(e).toFixed(4))+" ")]}},{key:"amount",fn:function(e){return[t._v(" "+t._s(parseFloat(e).toFixed(4))+" ")]}},{key:"value",fn:function(e){return[t._v(" $"+t._s(parseFloat(e).toFixed(2))+" ")]}},{key:"profit",fn:function(a,i){return[e("span",{style:{color:a>0?"#52c41a":a<0?"#f5222d":"#666"}},[t._v(" "+t._s(t.formatProfit(a,i))+" ")])]}},{key:"commission",fn:function(e){return[t._v(" "+t._s(t.formatCommission(e))+" ")]}},{key:"time",fn:function(e,a){return[t._v(" "+t._s(t.formatTime(a.created_at||e))+" ")]}}])}):e("div",{staticClass:"empty-state"},[e("a-empty",{attrs:{description:t.$t("trading-assistant.table.noPositions")}})],1)],1)},v=[],b={name:"TradingRecords",props:{strategyId:{type:Number,required:!0},loading:{type:Boolean,default:!1}},computed:{columns:function(){return[{title:this.$t("trading-assistant.table.time"),dataIndex:"created_at",key:"created_at",width:180,scopedSlots:{customRender:"time"}},{title:this.$t("dashboard.indicator.backtest.tradeType"),dataIndex:"type",key:"type",width:140,scopedSlots:{customRender:"type"}},{title:this.$t("trading-assistant.table.price"),dataIndex:"price",key:"price",width:120,scopedSlots:{customRender:"price"}},{title:this.$t("trading-assistant.table.amount"),dataIndex:"amount",key:"amount",width:120,scopedSlots:{customRender:"amount"}},{title:this.$t("trading-assistant.table.value"),dataIndex:"value",key:"value",width:120,scopedSlots:{customRender:"value"}},{title:this.$t("dashboard.indicator.backtest.profit"),dataIndex:"profit",key:"profit",width:120,scopedSlots:{customRender:"profit"}},{title:this.$t("trading-assistant.table.commission"),dataIndex:"commission",key:"commission",width:100,scopedSlots:{customRender:"commission"}}]}},data:function(){return{records:[]}},watch:{strategyId:{handler:function(t){t&&this.loadRecords()},immediate:!0}},methods:{loadRecords:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.strategyId){e.n=1;break}return e.a(2);case 1:return e.p=1,e.n=2,(0,m.tq)(t.strategyId);case 2:a=e.v,1===a.code?t.records=(a.data.trades||[]).map(function(t){return(0,u.A)((0,u.A)({},t),{},{time:t.created_at||t.time})}):t.$message.error(a.msg||t.$t("trading-assistant.messages.loadTradesFailed")),e.n=4;break;case 3:e.p=3,e.v;case 4:return e.a(2)}},e,null,[[1,3]])}))()},formatTime:function(t){if(!t)return"--";try{var e;if("number"===typeof t){var a=t<1e12?1e3*t:t;e=new Date(a)}else{if("string"!==typeof t)return"--";if(/^\d+$/.test(t)){var i=parseInt(t,10),s=i<1e12?1e3*i:i;e=new Date(s)}else e=new Date(t)}if(isNaN(e.getTime()))return"--";var r=this.$i18n.locale||"zh-CN",n={"zh-CN":"zh-CN","zh-TW":"zh-TW","en-US":"en-US"};return e.toLocaleString(n[r]||"zh-CN",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1})}catch(o){return"--"}},getTradeTypeColor:function(t){var e={buy:"green",sell:"red",liquidation:"orange",open_long:"green",add_long:"cyan",close_long:"orange",close_long_stop:"red",close_long_profit:"lime",open_short:"red",add_short:"magenta",close_short:"blue",close_short_stop:"red",close_short_profit:"cyan"};return e[t]||"default"},getTradeTypeText:function(t){var e={buy:this.$t("dashboard.indicator.backtest.buy"),sell:this.$t("dashboard.indicator.backtest.sell"),liquidation:this.$t("dashboard.indicator.backtest.liquidation"),open_long:this.$t("dashboard.indicator.backtest.openLong"),add_long:this.$t("dashboard.indicator.backtest.addLong"),close_long:this.$t("dashboard.indicator.backtest.closeLong"),close_long_stop:this.$t("dashboard.indicator.backtest.closeLongStop"),close_long_profit:this.$t("dashboard.indicator.backtest.closeLongProfit"),open_short:this.$t("dashboard.indicator.backtest.openShort"),add_short:this.$t("dashboard.indicator.backtest.addShort"),close_short:this.$t("dashboard.indicator.backtest.closeShort"),close_short_stop:this.$t("dashboard.indicator.backtest.closeShortStop"),close_short_profit:this.$t("dashboard.indicator.backtest.closeShortProfit")};return e[t]||t},formatMoney:function(t){if(null===t||void 0===t)return"--";var e=t>=0?"+":"-";return"".concat(e,"$").concat(Math.abs(t).toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2}))},formatProfit:function(t,e){if(null===t||void 0===t)return"--";var a=parseFloat(t),i=["open_long","open_short","add_long","add_short"];return 0===a&&e&&i.includes(e.type)?"--":Math.abs(a)<1e-6?e&&i.includes(e.type)?"--":"$0.00":this.formatMoney(a)},formatCommission:function(t){if(null===t||void 0===t)return"--";var e=parseFloat(t);return isNaN(e)||Math.abs(e)<1e-6?"--":"$".concat(e.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:6}))}}},S=b,k=a(845),x=(0,k.A)(S,f,v,!1,null,"a5bdef7e",null),C=x.exports,w=function(){var t=this,e=t._self._c;return e("div",{staticClass:"position-records"},[0!==t.positions.length||t.loading?e("a-table",{attrs:{columns:t.columns,"data-source":t.positions,loading:t.loading,pagination:!1,size:"small",rowKey:"id",scroll:{x:800}},scopedSlots:t._u([{key:"symbol",fn:function(a,i){return[e("strong",[t._v(t._s(i.symbol||a))])]}},{key:"side",fn:function(a,i){return[e("a-tag",{attrs:{color:"long"===(i.side||a)?"green":"red"}},[t._v(" "+t._s("long"===(i.side||a)?t.$t("trading-assistant.table.long"):t.$t("trading-assistant.table.short"))+" ")])]}},{key:"entryPrice",fn:function(a,i){return[t.hasValidPrice(i.entry_price||a)?e("span",[t._v(" $"+t._s(parseFloat(i.entry_price||a).toFixed(4))+" ")]):e("span",[t._v("--")])]}},{key:"currentPrice",fn:function(e,a){return[t._v(" $"+t._s(parseFloat(a.current_price||e||0).toFixed(4))+" ")]}},{key:"size",fn:function(e,a){return[t._v(" "+t._s(parseFloat(a.size||e||0).toFixed(4))+" ")]}},{key:"unrealizedPnl",fn:function(a,i){return[e("span",{class:{profit:parseFloat(i.unrealized_pnl||a||0)>0,loss:parseFloat(i.unrealized_pnl||a||0)<0}},[t._v(" $"+t._s(parseFloat(i.unrealized_pnl||a||0).toFixed(2))+" ")])]}},{key:"pnlPercent",fn:function(a,i){return[e("span",{class:{profit:parseFloat(i.pnl_percent||a||0)>0,loss:parseFloat(i.pnl_percent||a||0)<0}},[t._v(" "+t._s(parseFloat(i.pnl_percent||a||0).toFixed(2))+"% ")])]}}])}):e("div",{staticClass:"empty-state"},[e("a-empty",{attrs:{description:t.$t("trading-assistant.table.noPositions")}})],1)],1)},$=[],A={name:"PositionRecords",props:{strategyId:{type:Number,required:!0},marketType:{type:String,default:"swap"},leverage:{type:[Number,String],default:1},loading:{type:Boolean,default:!1}},data:function(){return{positions:[]}},computed:{columns:function(){return[{title:this.$t("trading-assistant.table.symbol"),dataIndex:"symbol",key:"symbol",width:120,scopedSlots:{customRender:"symbol"}},{title:this.$t("trading-assistant.table.side"),dataIndex:"side",key:"side",width:80,scopedSlots:{customRender:"side"}},{title:this.$t("trading-assistant.table.size"),dataIndex:"size",key:"size",width:120,scopedSlots:{customRender:"size"}},{title:this.$t("trading-assistant.table.entryPrice"),dataIndex:"entry_price",key:"entry_price",width:120,scopedSlots:{customRender:"entryPrice"}},{title:this.$t("trading-assistant.table.currentPrice"),dataIndex:"current_price",key:"current_price",width:120,scopedSlots:{customRender:"currentPrice"}},{title:this.$t("trading-assistant.table.unrealizedPnl"),dataIndex:"unrealized_pnl",key:"unrealized_pnl",width:120,scopedSlots:{customRender:"unrealizedPnl"}},{title:this.$t("trading-assistant.table.pnlPercent"),dataIndex:"pnl_percent",key:"pnl_percent",width:100,scopedSlots:{customRender:"pnlPercent"}}]}},watch:{strategyId:{handler:function(t){t?(this.loadPositions(),this.startPolling()):this.stopPolling()},immediate:!0}},beforeDestroy:function(){this.stopPolling()},methods:{loadPositions:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a,i;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.strategyId){e.n=1;break}return e.a(2);case 1:return e.p=1,e.n=2,(0,m.oK)(t.strategyId);case 2:a=e.v,1===a.code?(i=a.data.positions||[],t.positions=i.map(function(e,a){var i=String(t.marketType||"swap").toLowerCase(),s=parseFloat(t.leverage);(!isFinite(s)||s<=0)&&(s=1),"spot"===i&&(s=1);var r=parseFloat(e.entry_price||e.entryPrice||0),n=parseFloat(e.size||"0")||0,o=parseFloat(e.unrealized_pnl||e.unrealizedPnl||"0")||0,l=parseFloat(e.pnl_percent||e.pnlPercent||"0")||0;r>0&&n>0?l=o/(r*n)*100*s:"spot"!==i&&(l*=s);var d={id:e.id||a,symbol:e.symbol||"",side:e.side||"long",size:n>0?n.toString():"0",entry_price:r>0?r.toString():"0",current_price:e.current_price||e.currentPrice||"0",unrealized_pnl:e.unrealized_pnl||e.unrealizedPnl||"0",pnl_percent:l,updated_at:e.updated_at||e.updatedAt||""};return d})):t.positions=[],e.n=4;break;case 3:e.p=3,e.v,t.positions=[];case 4:return e.a(2)}},e,null,[[1,3]])}))()},hasValidPrice:function(t){var e=parseFloat(t);return Number.isFinite(e)&&e>0},startPolling:function(){var t=this;this.stopPolling(),this.pollingTimer=setInterval(function(){t.loadPositions()},5e3)},stopPolling:function(){this.pollingTimer&&(clearInterval(this.pollingTimer),this.pollingTimer=null)}}},P=A,M=(0,k.A)(P,w,$,!1,null,"2abcf4f1",null),F=M.exports,T=["BTC/USDT","ETH/USDT","BNB/USDT","SOL/USDT","ADA/USDT","XRP/USDT","DOGE/USDT","DOT/USDT","MATIC/USDT","AVAX/USDT","LINK/USDT","UNI/USDT","LTC/USDT","ATOM/USDT","ETC/USDT"],V=[{value:"binance",labelKey:"binance"},{value:"okx",labelKey:"okx"},{value:"bitget",labelKey:"bitget"},{value:"bybit",labelKey:"bybit"},{value:"coinbaseexchange",labelKey:"coinbaseexchange"},{value:"kraken",labelKey:"kraken"},{value:"kucoin",labelKey:"kucoin"},{value:"gate",labelKey:"gate"},{value:"bitfinex",labelKey:"bitfinex"},{value:"deepcoin",labelKey:"deepcoin"}],I=[{value:"ibkr",labelKey:"ibkr",name:"Interactive Brokers"}],N=[{value:"mt5",labelKey:"mt5",name:"MetaTrader 5"}],U={name:"TradingAssistant",mixins:[_.t],components:{TradingRecords:C,PositionRecords:F},computed:{isAdvancedMode:function(){return"advanced"===this.creationMode},isSimpleMode:function(){return"simple"===this.creationMode},displayCurrentStep:function(){return this.isSimpleMode&&!this.editingStrategy?0===this.currentStep?0:1:this.currentStep},isDarkTheme:function(){return"dark"===this.navTheme||"realdark"===this.navTheme},needsPassphrase:function(){return["okx","okex","coinbaseexchange","kucoin","bitget","deepcoin"].includes(this.currentExchangeId)},isIBKRMarket:function(){return"USStock"===this.selectedMarketCategory},isMT5Market:function(){return"Forex"===this.selectedMarketCategory},isBrokerMarket:function(){return this.isIBKRMarket||this.isMT5Market},filteredExchangeCredentials:function(){var t=this;return this.exchangeCredentials&&Array.isArray(this.exchangeCredentials)?this.exchangeCredentials.filter(function(e){return t.isCredentialCompatible(e)}):[]},formattedExchangeOptions:function(){var t=this;return V.map(function(e){var a="";try{if(e.labelKey){var i="trading-assistant.exchangeNames.".concat(e.labelKey),s=t.$t(i);s!==i&&(a=s)}}catch(r){}return a||(a=e.value.charAt(0).toUpperCase()+e.value.slice(1)),(0,u.A)((0,u.A)({},e),{},{displayName:a})})},totalPnl:function(){return null!==this.currentEquity&&this.selectedStrategy&&this.selectedStrategy.initial_capital?this.currentEquity-(this.selectedStrategy.initial_capital||0):null},totalPnlPercent:function(){return null!==this.totalPnl&&this.selectedStrategy&&this.selectedStrategy.initial_capital?0===this.selectedStrategy.initial_capital?0:this.totalPnl/this.selectedStrategy.initial_capital*100:null},getEquityColorClass:function(){return null===this.totalPnl?"":this.totalPnl>=0?"text-success":"text-danger"},getPnlColorClass:function(){return null===this.totalPnl?"":this.totalPnl>=0?"text-success":"text-danger"},isCryptoMarket:function(){var t=this.selectedMarketCategory||"Crypto";return"crypto"===String(t).toLowerCase()},canUseLiveTrading:function(){var t=this.selectedMarketCategory||"Crypto";return"crypto"===String(t).toLowerCase()||("USStock"===t||"Forex"===t)},isLiveTradingAvailable:function(){var t=this.selectedMarketCategory||"Crypto",e=this.currentExchangeId||"";return"crypto"===String(t).toLowerCase()?["binance","okx","bitget","bybit","coinbaseexchange","kraken","kucoin","gate","bitfinex"].includes(e):"USStock"===t?"ibkr"===this.currentBrokerId:"Forex"===t&&"mt5"===this.currentBrokerId},showDemoTradingSwitch:function(){return this.currentExchangeId&&"binance"===this.currentExchangeId.toLowerCase()},brokerOptions:function(){var t=this;return I.map(function(e){var a="";try{var i="trading-assistant.brokerNames.".concat(e.labelKey),s=t.$t(i);s!==i&&(a=s)}catch(r){}return a||(a=e.name||e.value.toUpperCase()),(0,u.A)((0,u.A)({},e),{},{displayName:a})})},forexBrokerOptions:function(){var t=this;return N.map(function(e){var a="";try{var i="trading-assistant.brokerNames.".concat(e.labelKey),s=t.$t(i);s!==i&&(a=s)}catch(r){}return a||(a=e.name||e.value.toUpperCase()),(0,u.A)((0,u.A)({},e),{},{displayName:a})})},cryptoExchangeOptions:function(){var t=this;return V.map(function(e){var a="";try{if(e.labelKey){var i="trading-assistant.exchangeNames.".concat(e.labelKey),s=t.$t(i);s!==i&&(a=s)}}catch(r){}return a||(a=e.value.charAt(0).toUpperCase()+e.value.slice(1)),(0,u.A)((0,u.A)({},e),{},{displayName:a})})},groupedStrategies:function(){return"symbol"===this.groupByMode?this.groupedBySymbol:this.groupedByStrategy},groupedByStrategy:function(){var t,e={},a=[],i=(0,c.A)(this.strategies);try{for(i.s();!(t=i.n()).done;){var s=t.value,r=s.strategy_group_id;r&&r.trim()?(e[r]||(e[r]={id:r,baseName:s.group_base_name||s.strategy_name.split("-")[0],strategies:[],runningCount:0,stoppedCount:0}),e[r].strategies.push(s),"running"===s.status?e[r].runningCount++:e[r].stoppedCount++):a.push(s)}}catch(o){i.e(o)}finally{i.f()}var n=Object.values(e).sort(function(t,e){var a=Math.max.apply(Math,(0,d.A)(t.strategies.map(function(t){return t.created_at||0}))),i=Math.max.apply(Math,(0,d.A)(e.strategies.map(function(t){return t.created_at||0})));return i-a});return{groups:n,ungrouped:a}},groupedBySymbol:function(){var t,e={},a=[],i=(0,c.A)(this.strategies);try{for(i.s();!(t=i.n()).done;){var s=t.value,r=s.trading_config||{},n=r.symbol;if(n&&n.trim()){e[n]||(e[n]={id:"symbol_".concat(n),baseName:n,strategies:[],runningCount:0,stoppedCount:0});var o=(0,u.A)((0,u.A)({},s),{},{displayInfo:{strategyName:s.strategy_name||s.group_base_name||"Unnamed",timeframe:r.timeframe||"-",indicatorName:s.indicator_name||s.indicator_config&&s.indicator_config.name||"-"}});e[n].strategies.push(o),"running"===s.status?e[n].runningCount++:e[n].stoppedCount++}else a.push(s)}}catch(d){i.e(d)}finally{i.f()}var l=Object.values(e).sort(function(t,e){return t.baseName.localeCompare(e.baseName)});return{groups:l,ungrouped:a}},unconfiguredChannels:function(){var t=[];return this.notifyChannelsUi.includes("telegram")&&(this.userNotificationSettings.telegram_bot_token||this.userNotificationSettings.telegram_chat_id||t.push("Telegram")),this.notifyChannelsUi.includes("email")&&(this.userNotificationSettings.email||t.push("Email")),this.notifyChannelsUi.includes("discord")&&(this.userNotificationSettings.discord_webhook||t.push("Discord")),this.notifyChannelsUi.includes("webhook")&&(this.userNotificationSettings.webhook_url||t.push("Webhook")),t}},data:function(){return{loading:!1,loadingRecords:!1,strategies:[],selectedStrategy:null,showFormModal:!1,creationMode:"simple",showAdvancedSettings:!1,strategyType:"indicator",selectedMarketCategory:"Crypto",currentStep:0,saving:!1,loadingIndicators:!1,availableIndicators:[],selectedIndicator:null,indicatorParams:[],indicatorParamValues:{},cryptoSymbols:T,loadingWatchlist:!1,watchlist:[],exchangeOptions:V,currentExchangeId:"",currentBrokerId:"ibkr",connectionTestResult:null,indicatorsLoaded:!1,editingStrategy:null,currentEquity:null,equityPollingTimer:null,backtestCollapseKeys:["risk"],trailingEnabledUi:!1,entryPctMaxUi:100,aiFilterEnabledUi:!1,isEditMode:!1,supportedIPs:[],executionModeUi:"signal",liveDisclaimerAckUi:!1,notifyChannelsUi:["browser"],userNotificationSettings:{default_channels:["browser"],telegram_bot_token:"",telegram_chat_id:"",email:"",phone:"",discord_webhook:"",webhook_url:"",webhook_token:""},loadingExchangeCredentials:!1,exchangeCredentials:[],saveCredentialUi:!1,suppressApiClearOnce:!1,selectedSymbols:[],crossSectionalSymbols:[],collapsedGroups:{},groupByMode:"strategy",showAddSymbolModal:!1,addSymbolMarket:"Crypto",addSymbolMarketTypes:[{value:"Crypto",i18nKey:"dashboard.analysis.market.Crypto"},{value:"USStock",i18nKey:"dashboard.analysis.market.USStock"},{value:"Forex",i18nKey:"dashboard.analysis.market.Forex"},{value:"Futures",i18nKey:"dashboard.analysis.market.Futures"}],addSymbolKeyword:"",searchingSymbol:!1,symbolSearchResults:[],selectedAddSymbol:null,hasSearchedSymbol:!1,addingSymbol:!1,hotSymbols:[],loadingHotSymbols:!1,searchTimer:null}},beforeCreate:function(){this.form=this.$form.createForm(this)},mounted:function(){this.loadStrategies(),this.loadUserNotificationSettings()},beforeDestroy:function(){this.stopEquityPolling()},methods:{loadUserNotificationSettings:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.p=0,e.n=1,(0,h.vF)();case 1:a=e.v,1===a.code&&a.data&&(t.userNotificationSettings={default_channels:a.data.default_channels||["browser"],telegram_bot_token:a.data.telegram_bot_token||"",telegram_chat_id:a.data.telegram_chat_id||"",email:a.data.email||"",phone:a.data.phone||"",discord_webhook:a.data.discord_webhook||"",webhook_url:a.data.webhook_url||"",webhook_token:a.data.webhook_token||""}),e.n=3;break;case 2:e.p=2,e.v;case 3:return e.a(2)}},e,null,[[0,2]])}))()},loadWatchlist:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return t.loadingWatchlist=!0,e.p=1,e.n=2,(0,g.Qo)({userid:1});case 2:a=e.v,a&&1===a.code?t.watchlist=Array.isArray(a.data)?a.data:[]:t.watchlist=[],e.n=4;break;case 3:e.p=3,e.v,t.watchlist=[];case 4:return e.p=4,t.loadingWatchlist=!1,e.f(4);case 5:return e.a(2)}},e,null,[[1,3,4,5]])}))()},handleCloseAddSymbolModal:function(){this.showAddSymbolModal=!1,this.addSymbolKeyword="",this.symbolSearchResults=[],this.selectedAddSymbol=null,this.hasSearchedSymbol=!1},handleAddSymbolMarketChange:function(t){this.addSymbolMarket=t,this.addSymbolKeyword="",this.symbolSearchResults=[],this.selectedAddSymbol=null,this.hasSearchedSymbol=!1,this.loadHotSymbols(t)},handleSymbolSearchInputChange:function(t){var e=this,a=t.target.value;if(this.addSymbolKeyword=a,this.searchTimer&&clearTimeout(this.searchTimer),!a||""===a.trim())return this.symbolSearchResults=[],this.hasSearchedSymbol=!1,void(this.selectedAddSymbol=null);this.searchTimer=setTimeout(function(){e.searchSymbolsInModal(a)},500)},handleSearchSymbol:function(t){var e=this;return(0,l.A)((0,o.A)().m(function a(){return(0,o.A)().w(function(a){while(1)switch(a.n){case 0:if(t&&t.trim()){a.n=1;break}return a.a(2);case 1:if(e.addSymbolMarket){a.n=2;break}return e.$message.warning(e.$t("dashboard.analysis.modal.addStock.pleaseSelectMarket")),a.a(2);case 2:if(!(e.symbolSearchResults.length>0)){a.n=3;break}return a.a(2);case 3:e.hasSearchedSymbol&&0===e.symbolSearchResults.length?e.handleDirectAdd():e.searchSymbolsInModal(t);case 4:return a.a(2)}},a)}))()},searchSymbolsInModal:function(t){var e=this;return(0,l.A)((0,o.A)().m(function a(){var i;return(0,o.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(t&&""!==t.trim()){a.n=1;break}return e.symbolSearchResults=[],e.hasSearchedSymbol=!1,a.a(2);case 1:if(e.addSymbolMarket){a.n=2;break}return a.a(2);case 2:return e.searchingSymbol=!0,e.hasSearchedSymbol=!0,a.p=3,a.n=4,(0,g._3)({market:e.addSymbolMarket,keyword:t.trim()});case 4:i=a.v,i&&1===i.code&&Array.isArray(i.data)?e.symbolSearchResults=i.data:e.symbolSearchResults=[],a.n=6;break;case 5:a.p=5,a.v,e.symbolSearchResults=[];case 6:return a.p=6,e.searchingSymbol=!1,a.f(6);case 7:return a.a(2)}},a,null,[[3,5,6,7]])}))()},handleDirectAdd:function(){this.addSymbolKeyword&&this.addSymbolKeyword.trim()?this.addSymbolMarket?this.selectedAddSymbol={market:this.addSymbolMarket,symbol:this.addSymbolKeyword.trim().toUpperCase(),name:""}:this.$message.warning(this.$t("dashboard.analysis.modal.addStock.pleaseSelectMarket")):this.$message.warning(this.$t("dashboard.analysis.modal.addStock.pleaseEnterSymbol"))},handleSelectAddSymbol:function(t){this.selectedAddSymbol={market:this.addSymbolMarket,symbol:t.symbol,name:t.name||""}},loadHotSymbols:function(t){var e=this;return(0,l.A)((0,o.A)().m(function a(){var i;return(0,o.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(t||(t=e.addSymbolMarket||"Crypto"),t){a.n=1;break}return a.a(2);case 1:return e.loadingHotSymbols=!0,a.p=2,a.n=3,(0,g.z6)({market:t,limit:10});case 3:i=a.v,i&&1===i.code&&i.data?e.hotSymbols=i.data:e.hotSymbols=[],a.n=5;break;case 4:a.p=4,a.v,e.hotSymbols=[];case 5:return a.p=5,e.loadingHotSymbols=!1,a.f(5);case 6:return a.a(2)}},a,null,[[2,4,5,6]])}))()},handleConfirmAddSymbol:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a,i,s,r,n,l,c;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(a="",i="",!t.selectedAddSymbol){e.n=1;break}a=t.selectedAddSymbol.market,i=t.selectedAddSymbol.symbol.toUpperCase(),e.n=4;break;case 1:if(!t.addSymbolKeyword||!t.addSymbolKeyword.trim()){e.n=3;break}if(t.addSymbolMarket){e.n=2;break}return t.$message.warning(t.$t("dashboard.analysis.modal.addStock.pleaseSelectMarket")),e.a(2);case 2:a=t.addSymbolMarket,i=t.addSymbolKeyword.trim().toUpperCase(),e.n=4;break;case 3:return t.$message.warning(t.$t("dashboard.analysis.modal.addStock.pleaseSelectOrEnterSymbol")),e.a(2);case 4:return t.addingSymbol=!0,e.p=5,e.n=6,(0,g.dp)({userid:1,market:a,symbol:i});case 6:if(s=e.v,!s||1!==s.code){e.n=8;break}return t.$message.success(t.$t("dashboard.analysis.message.addStockSuccess")),e.n=7,t.loadWatchlist();case 7:r="".concat(a,":").concat(i),t.isEditMode?(t.form.setFieldsValue({symbol:r}),t.handleWatchlistSymbolChange(r)):(t.selectedSymbols.includes(r)||(t.selectedSymbols=[].concat((0,d.A)(t.selectedSymbols),[r])),t.handleMultiSymbolChange(t.selectedSymbols)),t.handleCloseAddSymbolModal(),e.n=9;break;case 8:t.$message.error((null===s||void 0===s?void 0:s.msg)||t.$t("dashboard.analysis.message.addStockFailed"));case 9:e.n=11;break;case 10:e.p=10,c=e.v,l=(null===c||void 0===c||null===(n=c.response)||void 0===n||null===(n=n.data)||void 0===n?void 0:n.msg)||(null===c||void 0===c?void 0:c.message)||t.$t("dashboard.analysis.message.addStockFailed"),t.$message.error(l);case 11:return e.p=11,t.addingSymbol=!1,e.f(11);case 12:return e.a(2)}},e,null,[[5,10,11,12]])}))()},filterWatchlistOption:function(t,e){var a,i=(null===(a=e.componentOptions)||void 0===a||null===(a=a.propsData)||void 0===a?void 0:a.value)||"";return"__add_symbol_option__"===i||String(i).toLowerCase().includes(String(t||"").toLowerCase())},filterWatchlistOptionWithAdd:function(t,e){var a,i=(null===(a=e.componentOptions)||void 0===a||null===(a=a.propsData)||void 0===a?void 0:a.value)||"";return"__add_symbol_option__"===i||String(i).toLowerCase().includes(String(t||"").toLowerCase())},handleMultiSymbolChangeWithAdd:function(t){if(t&&t.includes("__add_symbol_option__"))return this.selectedSymbols=t.filter(function(t){return"__add_symbol_option__"!==t}),this.showAddSymbolModal=!0,void this.loadHotSymbols(this.addSymbolMarket);this.handleMultiSymbolChange(t)},handleStrategyTypeChange:function(t){var e=t.target.value;"single"===e&&(this.crossSectionalSymbols=[])},handleCrossSectionalSymbolChange:function(t){if(t&&t.includes("__add_symbol_option__"))return this.crossSectionalSymbols=t.filter(function(t){return"__add_symbol_option__"!==t}),this.showAddSymbolModal=!0,void this.loadHotSymbols(this.addSymbolMarket);if(this.crossSectionalSymbols=t||[],t&&t.length>0){var e=t[0];if("string"===typeof e&&e.includes(":")){var a=e.indexOf(":"),i=e.slice(0,a);this.selectedMarketCategory=i||"Crypto"}}},getMarketColor:function(t){var e={USStock:"green",Crypto:"purple",Forex:"gold",Futures:"cyan"};return e[t]||"default"},handleWatchlistSymbolChange:function(t){var e=this;if("__add_symbol_option__"===t)return this.$nextTick(function(){e.form.setFieldsValue({symbol:void 0})}),this.showAddSymbolModal=!0,void this.loadHotSymbols(this.addSymbolMarket);if(t&&"string"===typeof t&&t.includes(":")){var a=t.indexOf(":"),i=t.slice(0,a);if(this.selectedMarketCategory=i||"Crypto","Forex"===this.selectedMarketCategory){this.currentBrokerId="mt5";try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({forex_broker_id:"mt5"})}catch(r){}}else if("USStock"===this.selectedMarketCategory){this.currentBrokerId="ibkr";try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({broker_id:"ibkr"})}catch(r){}}var s=["Crypto","USStock","Forex"].includes(this.selectedMarketCategory);if(!s){this.executionModeUi="signal";try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({execution_mode:"signal"})}catch(r){}}this.currentExchangeId="";try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({exchange_id:void 0})}catch(r){}}},handleMultiSymbolChange:function(t){if(this.selectedSymbols=t||[],t&&t.length>0){var e=t[0];if("string"===typeof e&&e.includes(":")){var a=e.indexOf(":"),i=e.slice(0,a);this.selectedMarketCategory=i||"Crypto"}}if("Forex"===this.selectedMarketCategory){this.currentBrokerId="mt5";try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({forex_broker_id:"mt5"})}catch(r){}}else if("USStock"===this.selectedMarketCategory){this.currentBrokerId="ibkr";try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({broker_id:"ibkr"})}catch(r){}}var s=["Crypto","USStock","Forex"].includes(this.selectedMarketCategory);if(!s){this.executionModeUi="signal";try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({execution_mode:"signal"})}catch(r){}}this.currentExchangeId="";try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({exchange_id:void 0})}catch(r){}},loadExchangeCredentials:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return t.loadingExchangeCredentials=!0,e.p=1,e.n=2,(0,p.IA)({user_id:1});case 2:a=e.v,a&&1===a.code?t.exchangeCredentials=a.data&&a.data.items||[]:(t.exchangeCredentials=[],t.$message.warning((null===a||void 0===a?void 0:a.msg)||t.$t("trading-assistant.messages.loadFailed"))),e.n=4;break;case 3:e.p=3,e.v,t.exchangeCredentials=[],t.$message.warning(t.$t("trading-assistant.exchange.testFailed"));case 4:return e.p=4,t.loadingExchangeCredentials=!1,e.f(4);case 5:return e.a(2)}},e,null,[[1,3,4,5]])}))()},formatCredentialLabel:function(t){if(!t)return"";var e=(t.name||"").trim(),a=t.exchange_id||"",i=t.api_key_hint||"";return e?"".concat(a.toUpperCase()," - ").concat(e," (").concat(i,")"):"".concat(a.toUpperCase()," (").concat(i,")")},isCredentialCompatible:function(t){if(!t||!t.exchange_id)return!0;var e=(t.exchange_id||"").toLowerCase(),a=this.selectedMarketCategory||"Crypto";if("mt5"===e)return"Forex"===a;if("ibkr"===e)return"USStock"===a;var i=["binance","okx","bitget","bybit","coinbaseexchange","kraken","kucoin","gate","bitfinex","deepcoin"];return!i.includes(e)||"Crypto"===a},handleCredentialSelectChange:function(t){var e=this;return(0,l.A)((0,o.A)().m(function a(){var i,s,r;return(0,o.A)().w(function(a){while(1)switch(a.n){case 0:if(t){a.n=1;break}return e.currentExchangeId="",e.connectionTestResult=null,a.a(2);case 1:if(i=e.exchangeCredentials.find(function(e){return String(e.id)===String(t)}),!i){a.n=5;break}if(s=(i.exchange_id||"").toLowerCase(),"mt5"!==s||"Forex"===e.selectedMarketCategory){a.n=2;break}e.$message.error(e.$t("trading-assistant.validation.mt5OnlyForForex"));try{e.form&&e.form.setFieldsValue&&e.form.setFieldsValue({credential_id:void 0})}catch(n){}return e.currentExchangeId="",e.connectionTestResult=null,a.a(2);case 2:if("ibkr"!==s||"USStock"===e.selectedMarketCategory){a.n=3;break}e.$message.error(e.$t("trading-assistant.validation.ibkrOnlyForUSStock"));try{e.form&&e.form.setFieldsValue&&e.form.setFieldsValue({credential_id:void 0})}catch(n){}return e.currentExchangeId="",e.connectionTestResult=null,a.a(2);case 3:if(r=["binance","okx","bitget","bybit","coinbaseexchange","kraken","kucoin","gate","bitfinex"],!r.includes(s)||"Crypto"===e.selectedMarketCategory){a.n=4;break}e.$message.error(e.$t("trading-assistant.validation.cryptoExchangeOnlyForCrypto"));try{e.form&&e.form.setFieldsValue&&e.form.setFieldsValue({credential_id:void 0})}catch(n){}return e.currentExchangeId="",e.connectionTestResult=null,a.a(2);case 4:e.currentExchangeId=i.exchange_id||"";case 5:e.connectionTestResult=null;case 6:return a.a(2)}},a)}))()},onSaveCredentialChange:function(t){var e=!!(t&&t.target&&t.target.checked);this.saveCredentialUi=e;try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({save_credential:e})}catch(a){}},onExecutionModeChange:function(t){var e=t&&t.target?t.target.value:t;this.executionModeUi=e||"signal",this.liveDisclaimerAckUi=!1;try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({live_disclaimer_ack:!1})}catch(a){}if(!this.canUseLiveTrading&&"signal"!==this.executionModeUi){this.executionModeUi="signal";try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({execution_mode:"signal"})}catch(a){}}},onLiveDisclaimerAckChange:function(t){var e=!!(t&&t.target&&t.target.checked);this.liveDisclaimerAckUi=e;try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({live_disclaimer_ack:e})}catch(a){}},onNotifyChannelsChange:function(t){this.notifyChannelsUi=Array.isArray(t)?t:[]},formatCurrency:function(t){return null===t||void 0===t?"-":"$"+t.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})},formatPnl:function(t){if(null===t||void 0===t)return"-";var e=t>=0?"+":"";return e+"$"+Math.abs(t).toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})},formatPnlPercent:function(t){if(null===t||void 0===t)return"-";var e=t>=0?"+":"";return e+Math.abs(t).toFixed(2)+"%"},loadStrategies:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a,i,s;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return t.loading=!0,e.p=1,e.n=2,(0,m.EM)();case 2:a=e.v,1===a.code?(i=a.data.strategies||[],t.strategies=i,t.selectedStrategy&&(s=t.strategies.find(function(e){return e.id===t.selectedStrategy.id}),t.selectedStrategy=s||null)):t.$message.error(a.msg||t.$t("trading-assistant.messages.loadFailed")),e.n=4;break;case 3:e.p=3,e.v,t.$message.error(t.$t("trading-assistant.messages.loadFailed"));case 4:return e.p=4,t.loading=!1,e.f(4);case 5:return e.a(2)}},e,null,[[1,3,4,5]])}))()},handleCreateStrategy:function(){var t=this;this.isEditMode=!1,this.editingStrategy=null,this.strategyType="indicator",this.currentStep=0,this.currentExchangeId="",this.currentBrokerId="ibkr",this.selectedIndicator=null,this.connectionTestResult=null,this.executionModeUi="signal",this.notifyChannelsUi=["browser"],this.saveCredentialUi=!1,this.backtestCollapseKeys=["risk"],this.trailingEnabledUi=!1,this.entryPctMaxUi=100,this.aiFilterEnabledUi=!1,this.selectedMarketCategory="Crypto",this.selectedSymbols=[],this.showAdvancedSettings=!1,this.form.resetFields(),this.form.setFieldsValue({execution_mode:"signal",notify_channels:["browser"],save_credential:!1,live_disclaimer_ack:!1}),this.liveDisclaimerAckUi=!1,this.showFormModal=!0,this.$nextTick(function(){t.loadWatchlist(),t.loadIndicators(),t.loadExchangeCredentials()})},handleEditStrategy:function(t){var e=this;"running"!==t.status?(this.strategyType="indicator",this.isEditMode=!0,this.editingStrategy=t,this.currentStep=0,this.currentExchangeId="",this.selectedIndicator=null,this.connectionTestResult=null,this.form.resetFields(),this.backtestCollapseKeys=["risk"],this.trailingEnabledUi=!1,this.entryPctMaxUi=100,this.aiFilterEnabledUi=!1,this.showFormModal=!0,this.$nextTick((0,l.A)((0,o.A)().m(function a(){return(0,o.A)().w(function(a){while(1)switch(a.n){case 0:return e.loadWatchlist(),e.loadIndicators(),e.loadExchangeCredentials(),a.n=1,e.loadStrategyDataToForm(t);case 1:return a.a(2)}},a)})))):this.$message.warning(this.$t("trading-assistant.messages.runningWarning"))},loadStrategyDataToForm:function(t){var e=this;return(0,l.A)((0,o.A)().m(function a(){var i,s,r,l,d,c,u,m,g,p,h,_,y,f,v,b,S,k,x,C,w,$,A,P,M,F,T,V,I,N,U,E,z,D,R,K,q,L,B,O,H,W;return(0,o.A)().w(function(a){while(1)switch(a.n){case 0:if(e.indicatorsLoaded){a.n=1;break}return a.n=1,e.loadIndicators();case 1:return a.n=2,e.$nextTick();case 2:return e.selectedMarketCategory=t.market_category||"Crypto",c=t.execution_mode||"signal",e.executionModeUi=c,e.liveDisclaimerAckUi="live"===c,u=t.notification_config&&t.notification_config.channels||["browser"],e.notifyChannelsUi=Array.isArray(u)?u:["browser"],m=!1,g=!1,t.trading_config&&(f=t.trading_config||{},v=f.trailing&&"object"===(0,n.A)(f.trailing)?f.trailing:null,m=void 0!==f.trailing_enabled?!!f.trailing_enabled:!(!v||!v.enabled),b=f.enable_ai_filter,g=!0===b||"true"===b||1===b||"1"===b,S=f.scale&&"object"===(0,n.A)(f.scale)?f.scale:null,k=f.position&&"object"===(0,n.A)(f.position)?f.position:null,x=new Set(["risk"]),(f.trend_add_enabled||f.dca_add_enabled||S&&(null!==(p=S.trendAdd)&&void 0!==p&&p.enabled||null!==(h=S.dcaAdd)&&void 0!==h&&h.enabled))&&x.add("scale"),(f.trend_reduce_enabled||f.adverse_reduce_enabled||S&&(null!==(_=S.trendReduce)&&void 0!==_&&_.enabled||null!==(y=S.adverseReduce)&&void 0!==y&&y.enabled))&&x.add("reduce"),(void 0!==f.entry_pct||k&&void 0!==k.entryPct)&&x.add("position"),e.backtestCollapseKeys=Array.from(x)),e.trailingEnabledUi=m,e.aiFilterEnabledUi=g,a.n=3,e.$nextTick();case 3:return e.form.setFieldsValue({enable_ai_filter:g}),a.n=4,e.$nextTick();case 4:if(e.form.setFieldsValue({execution_mode:e.executionModeUi,live_disclaimer_ack:e.liveDisclaimerAckUi,notify_channels:e.notifyChannelsUi,notify_email:(null===(i=t.notification_config)||void 0===i||null===(i=i.targets)||void 0===i?void 0:i.email)||"",notify_phone:(null===(s=t.notification_config)||void 0===s||null===(s=s.targets)||void 0===s?void 0:s.phone)||"",notify_telegram:(null===(r=t.notification_config)||void 0===r||null===(r=r.targets)||void 0===r?void 0:r.telegram)||"",notify_discord:(null===(l=t.notification_config)||void 0===l||null===(l=l.targets)||void 0===l?void 0:l.discord)||"",notify_webhook:(null===(d=t.notification_config)||void 0===d||null===(d=d.targets)||void 0===d?void 0:d.webhook)||""}),!t.indicator_config||!t.indicator_config.indicator_id){a.n=7;break}if(C=t.indicator_config.indicator_id,w=e.availableIndicators.find(function(t){return String(t.id)===String(C)}),!w){a.n=6;break}return A=String(w.id),e.form.setFieldsValue({indicator_id:A}),a.n=5,e.handleIndicatorChange(A);case 5:P=null===($=t.trading_config)||void 0===$?void 0:$.indicator_params,P&&"object"===(0,n.A)(P)&&Object.keys(P).forEach(function(t){t in e.indicatorParamValues&&e.$set(e.indicatorParamValues,t,P[t])}),a.n=7;break;case 6:e.form.setFieldsValue({indicator_id:String(C)});case 7:if(!t.exchange_config){a.n=11;break}if(M=t.exchange_config.exchange_id||"",F="live"===e.executionModeUi,T=["Crypto","USStock","Forex"].includes(e.selectedMarketCategory),V="USStock"===e.selectedMarketCategory,I="Forex"===e.selectedMarketCategory,!F||!T){a.n=10;break}if(!V){a.n=8;break}e.currentBrokerId=M||"ibkr",e.form.setFieldsValue({broker_id:M||"ibkr",ibkr_host:t.exchange_config.ibkr_host||"127.0.0.1",ibkr_port:t.exchange_config.ibkr_port||7497,ibkr_client_id:t.exchange_config.ibkr_client_id||1,ibkr_account:t.exchange_config.ibkr_account||""}),a.n=10;break;case 8:if(!I){a.n=9;break}e.currentBrokerId=M||"mt5",e.form.setFieldsValue({forex_broker_id:M||"mt5",mt5_server:t.exchange_config.mt5_server||"",mt5_login:t.exchange_config.mt5_login||"",mt5_password:t.exchange_config.mt5_password||"",mt5_terminal_path:t.exchange_config.mt5_terminal_path||""}),a.n=10;break;case 9:if(e.currentExchangeId=M||t.exchange_config.exchange_id||"",N=t.exchange_config.credential_id,!N){a.n=10;break}return e.form.setFieldsValue({credential_id:N}),a.n=10,e.handleCredentialSelectChange(N);case 10:V||I?e.currentBrokerId=M||(I?"mt5":"ibkr"):e.currentExchangeId=M;case 11:if(t.trading_config){if(U=t.trading_config||{},E=U.trailing&&"object"===(0,n.A)(U.trailing)?U.trailing:null,z=U.scale&&"object"===(0,n.A)(U.scale)?U.scale:null,D=U.position&&"object"===(0,n.A)(U.position)?U.position:null,R=U.strategy_type||t.strategy_type||"single","cross_sectional"===R)if(e.form.setFieldsValue({cs_strategy_type:"cross_sectional",portfolio_size:U.portfolio_size||10,long_ratio:U.long_ratio||.5,rebalance_frequency:U.rebalance_frequency||"daily"}),U.symbol_list&&Array.isArray(U.symbol_list))e.crossSectionalSymbols=U.symbol_list;else if(t.symbol_list)try{K="string"===typeof t.symbol_list?JSON.parse(t.symbol_list):t.symbol_list,Array.isArray(K)&&(e.crossSectionalSymbols=K)}catch(o){e.crossSectionalSymbols=[]}else e.crossSectionalSymbols=[];else e.form.setFieldsValue({cs_strategy_type:"single"}),e.crossSectionalSymbols=[];q=z&&z.trendAdd?z.trendAdd:null,L=z&&z.dcaAdd?z.dcaAdd:null,B=z&&z.trendReduce?z.trendReduce:null,O=z&&z.adverseReduce?z.adverseReduce:null,H=U.symbol,W="string"===typeof H&&H.includes(":")?H:"".concat(e.selectedMarketCategory,":").concat(H),e.form.setFieldsValue({strategy_name:t.strategy_name,symbol:W,initial_capital:U.initial_capital,leverage:U.leverage,trade_direction:U.trade_direction||"long",timeframe:U.timeframe||"1H",market_type:"futures"===U.market_type?"swap":U.market_type||"swap",take_profit_pct:U.take_profit_pct||0,stop_loss_pct:U.stop_loss_pct||0,trailing_enabled:m,trailing_stop_pct:void 0!==U.trailing_stop_pct?U.trailing_stop_pct||0:E&&E.pct||0,trailing_activation_pct:void 0!==U.trailing_activation_pct?U.trailing_activation_pct||0:E&&E.activationPct||0,trend_add_enabled:void 0!==U.trend_add_enabled?!!U.trend_add_enabled:!(!q||!q.enabled),trend_add_step_pct:void 0!==U.trend_add_step_pct?U.trend_add_step_pct||0:q&&q.stepPct||0,trend_add_size_pct:void 0!==U.trend_add_size_pct?U.trend_add_size_pct||0:q&&q.sizePct||0,trend_add_max_times:void 0!==U.trend_add_max_times?U.trend_add_max_times||0:q&&q.maxTimes||0,dca_add_enabled:void 0!==U.dca_add_enabled?!!U.dca_add_enabled:!(!L||!L.enabled),dca_add_step_pct:void 0!==U.dca_add_step_pct?U.dca_add_step_pct||0:L&&L.stepPct||0,dca_add_size_pct:void 0!==U.dca_add_size_pct?U.dca_add_size_pct||0:L&&L.sizePct||0,dca_add_max_times:void 0!==U.dca_add_max_times?U.dca_add_max_times||0:L&&L.maxTimes||0,trend_reduce_enabled:void 0!==U.trend_reduce_enabled?!!U.trend_reduce_enabled:!(!B||!B.enabled),trend_reduce_step_pct:void 0!==U.trend_reduce_step_pct?U.trend_reduce_step_pct||0:B&&B.stepPct||0,trend_reduce_size_pct:void 0!==U.trend_reduce_size_pct?U.trend_reduce_size_pct||0:B&&B.sizePct||0,trend_reduce_max_times:void 0!==U.trend_reduce_max_times?U.trend_reduce_max_times||0:B&&B.maxTimes||0,adverse_reduce_enabled:void 0!==U.adverse_reduce_enabled?!!U.adverse_reduce_enabled:!(!O||!O.enabled),adverse_reduce_step_pct:void 0!==U.adverse_reduce_step_pct?U.adverse_reduce_step_pct||0:O&&O.stepPct||0,adverse_reduce_size_pct:void 0!==U.adverse_reduce_size_pct?U.adverse_reduce_size_pct||0:O&&O.sizePct||0,adverse_reduce_max_times:void 0!==U.adverse_reduce_max_times?U.adverse_reduce_max_times||0:O&&O.maxTimes||0,entry_pct:0===U.entry_pct||U.entry_pct?U.entry_pct:D&&D.entryPct?D.entryPct:100,enable_ai_filter:g}),e.$nextTick(function(){e.recalcEntryPctMaxUi(),e.normalizeEntryPct()})}case 12:return a.a(2)}},a)}))()},handleSelectStrategy:function(t){this.selectedStrategy=t,this.currentEquity=null,this.loadStrategyDetails(),this.startEquityPolling()},loadStrategyDetails:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a,i,s,n,l,d,u,g,p,h,_,y,f;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.selectedStrategy){e.n=1;break}return e.a(2,Promise.resolve());case 1:return e.p=1,e.n=2,Promise.all([(0,m.Yx)(t.selectedStrategy.id),(0,m.oK)(t.selectedStrategy.id)]);case 2:if(a=e.v,i=(0,r.A)(a,2),s=i[0],n=i[1],l=null,1===s.code&&s.data&&(Array.isArray(s.data)&&s.data.length>0?(d=s.data[s.data.length-1],l=d.equity):(g=(null===(u=t.selectedStrategy.trading_config)||void 0===u?void 0:u.initial_capital)||t.selectedStrategy.initial_capital,l=g||null)),p=0,1===n.code&&n.data){h=n.data.positions||n.data.items||[],_=(0,c.A)(h);try{for(_.s();!(y=_.n()).done;)f=y.value,p+=parseFloat(f.unrealized_pnl||f.unrealizedPnl||0)}catch(o){_.e(o)}finally{_.f()}}t.currentEquity=null!==l?l+p:null,e.n=4;break;case 3:e.p=3,e.v;case 4:return e.a(2)}},e,null,[[1,3]])}))()},startEquityPolling:function(){var t=this;this.stopEquityPolling(),this.selectedStrategy&&(this.loadStrategyDetails(),this.equityPollingTimer=setInterval(function(){t.loadStrategyDetails()},1e4))},stopEquityPolling:function(){this.equityPollingTimer&&(clearInterval(this.equityPollingTimer),this.equityPollingTimer=null)},handleCloseModal:function(){this.showFormModal=!1,this.editingStrategy=null,this.isEditMode=!1,this.strategyType="indicator",this.currentStep=0,this.currentExchangeId="",this.selectedIndicator=null,this.connectionTestResult=null,this.indicatorsLoaded=!1,this.availableIndicators=[],this.backtestCollapseKeys=["risk"],this.trailingEnabledUi=!1,this.entryPctMaxUi=100,this.aiFilterEnabledUi=!1,this.showAdvancedSettings=!1,this.executionModeUi="signal",this.liveDisclaimerAckUi=!1,this.form.resetFields()},handleRefresh:function(){this.loadStrategies(),this.showFormModal=!1},handleMenuClick:function(t,e){switch(t){case"start":this.handleStartStrategy(e.id);break;case"stop":this.handleStopStrategy(e.id);break;case"edit":this.handleEditStrategy(e);break;case"delete":this.handleDeleteStrategy(e);break}},toggleGroup:function(t){this.$set(this.collapsedGroups,t,!this.collapsedGroups[t])},handleGroupMenuClick:function(t,e){var a=this;return(0,l.A)((0,o.A)().m(function i(){var s,r;return(0,o.A)().w(function(i){while(1)switch(i.n){case 0:s=e.strategies.map(function(t){return t.id}),r=t,i.n="startAll"===r?1:"stopAll"===r?3:"deleteAll"===r?5:7;break;case 1:return i.n=2,a.handleBatchStartStrategies(s,e.baseName);case 2:return i.a(3,7);case 3:return i.n=4,a.handleBatchStopStrategies(s,e.baseName);case 4:return i.a(3,7);case 5:return i.n=6,a.handleBatchDeleteStrategies(s,e.baseName);case 6:return i.a(3,7);case 7:return i.a(2)}},i)}))()},handleBatchStartStrategies:function(t,e){var a=this;return(0,l.A)((0,o.A)().m(function e(){var i,s,r;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.p=0,e.n=1,(0,m.UH)({strategy_ids:t});case 1:i=e.v,1===i.code?(r=(null===(s=i.data)||void 0===s||null===(s=s.success_ids)||void 0===s?void 0:s.length)||t.length,a.$message.success(a.$t("trading-assistant.messages.batchStartSuccess",{count:r})),a.loadStrategies()):a.$message.error(i.msg||a.$t("trading-assistant.messages.batchStartFailed")),e.n=3;break;case 2:e.p=2,e.v,a.$message.error(a.$t("trading-assistant.messages.batchStartFailed"));case 3:return e.a(2)}},e,null,[[0,2]])}))()},handleBatchStopStrategies:function(t,e){var a=this;return(0,l.A)((0,o.A)().m(function e(){var i,s,r;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.p=0,e.n=1,(0,m.GF)({strategy_ids:t});case 1:i=e.v,1===i.code?(r=(null===(s=i.data)||void 0===s||null===(s=s.success_ids)||void 0===s?void 0:s.length)||t.length,a.$message.success(a.$t("trading-assistant.messages.batchStopSuccess",{count:r})),a.loadStrategies()):a.$message.error(i.msg||a.$t("trading-assistant.messages.batchStopFailed")),e.n=3;break;case 2:e.p=2,e.v,a.$message.error(a.$t("trading-assistant.messages.batchStopFailed"));case 3:return e.a(2)}},e,null,[[0,2]])}))()},handleBatchDeleteStrategies:function(t,e){var a=this;return(0,l.A)((0,o.A)().m(function i(){var s;return(0,o.A)().w(function(i){while(1)switch(i.n){case 0:s=a.$t("trading-assistant.messages.batchDeleteConfirm",{count:t.length,name:e}),a.$confirm({title:a.$t("trading-assistant.deleteAll"),content:s,okText:a.$t("trading-assistant.deleteAll"),okType:"danger",cancelText:a.$t("trading-assistant.form.cancel"),onOk:function(){var e=(0,l.A)((0,o.A)().m(function e(){var i,s,r;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.p=0,e.n=1,(0,m.xQ)({strategy_ids:t});case 1:i=e.v,1===i.code?(r=(null===(s=i.data)||void 0===s||null===(s=s.success_ids)||void 0===s?void 0:s.length)||t.length,a.$message.success(a.$t("trading-assistant.messages.batchDeleteSuccess",{count:r})),a.selectedStrategy&&t.includes(a.selectedStrategy.id)&&(a.selectedStrategy=null,a.stopEquityPolling()),a.loadStrategies()):a.$message.error(i.msg||a.$t("trading-assistant.messages.batchDeleteFailed")),e.n=3;break;case 2:e.p=2,e.v,a.$message.error(a.$t("trading-assistant.messages.batchDeleteFailed"));case 3:return e.a(2)}},e,null,[[0,2]])}));function i(){return e.apply(this,arguments)}return i}()});case 1:return i.a(2)}},i)}))()},handleStartStrategy:function(t){var e=this;return(0,l.A)((0,o.A)().m(function a(){var i;return(0,o.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return a.p=0,a.n=1,(0,m.mV)(t);case 1:i=a.v,1===i.code?(e.$message.success(e.$t("trading-assistant.messages.startSuccess")),e.loadStrategies(),e.selectedStrategy&&e.selectedStrategy.id===t&&(e.selectedStrategy.status="running")):e.$message.error(i.msg||e.$t("trading-assistant.messages.startFailed")),a.n=3;break;case 2:a.p=2,a.v,e.$message.error(e.$t("trading-assistant.messages.startFailed"));case 3:return a.a(2)}},a,null,[[0,2]])}))()},handleStopStrategy:function(t){var e=this;return(0,l.A)((0,o.A)().m(function a(){var i;return(0,o.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return a.p=0,a.n=1,(0,m.Ke)(t);case 1:i=a.v,1===i.code?(e.$message.success(e.$t("trading-assistant.messages.stopSuccess")),e.loadStrategies(),e.selectedStrategy&&e.selectedStrategy.id===t&&(e.selectedStrategy.status="stopped")):e.$message.error(i.msg||e.$t("trading-assistant.messages.stopFailed")),a.n=3;break;case 2:a.p=2,a.v,e.$message.error(e.$t("trading-assistant.messages.stopFailed"));case 3:return a.a(2)}},a,null,[[0,2]])}))()},handleDeleteStrategy:function(t){var e=this,a=this.$t("trading-assistant.messages.deleteConfirmWithName",{name:t.strategy_name});this.$confirm({title:this.$t("trading-assistant.deleteStrategy"),content:a,okText:this.$t("trading-assistant.deleteStrategy"),okType:"danger",cancelText:this.$t("trading-assistant.form.cancel"),onOk:function(){var a=(0,l.A)((0,o.A)().m(function a(){var i;return(0,o.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return a.p=0,a.n=1,(0,m.v_)(t.id);case 1:i=a.v,1===i.code?(e.$message.success(e.$t("trading-assistant.messages.deleteSuccess")),e.selectedStrategy&&e.selectedStrategy.id===t.id&&(e.selectedStrategy=null,e.stopEquityPolling()),e.loadStrategies()):e.$message.error(i.msg||e.$t("trading-assistant.messages.deleteFailed")),a.n=3;break;case 2:a.p=2,a.v,e.$message.error(e.$t("trading-assistant.messages.deleteFailed"));case 3:return a.a(2)}},a,null,[[0,2]])}));function i(){return a.apply(this,arguments)}return i}()})},getStatusColor:function(t){var e={running:"green",stopped:"default",error:"red"};return e[t]||"default"},getStatusText:function(t){return this.$t("trading-assistant.status.".concat(t))||t},getStrategyTypeText:function(t){return this.$t("trading-assistant.strategyType.".concat(t))||t},getTradeDirectionText:function(t){if(!t)return"";var e={long:this.$t("trading-assistant.form.tradeDirectionLong")||"做多",short:this.$t("trading-assistant.form.tradeDirectionShort")||"做空",both:this.$t("trading-assistant.form.tradeDirectionBoth")||"双向"};return e[t]||t},handleIndicatorSelectFocus:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){return(0,o.A)().w(function(e){while(1)switch(e.n){case 0:if(t.indicatorsLoaded||t.loadingIndicators){e.n=1;break}return e.n=1,t.loadIndicators();case 1:return e.a(2)}},e)}))()},loadIndicators:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a,i,s,r;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(!t.loadingIndicators){e.n=1;break}return e.a(2,new Promise(function(e){var a=setInterval(function(){t.loadingIndicators||(clearInterval(a),e())},100)}));case 1:if(!t.indicatorsLoaded){e.n=2;break}return e.a(2,Promise.resolve());case 2:return a=t.$store.getters.userInfo||{},i=a.id||1,t.loadingIndicators=!0,e.p=3,e.n=4,(0,y.Ay)({url:"/api/indicator/getIndicators",method:"get",params:{userid:i}});case 4:s=e.v,1===s.code&&s.data?(r=s.data.map(function(t){return{id:t.id,name:t.name,description:t.description,type:t.indicator_type||t.indicatorType||"python",code:t.code,is_buy:t.is_buy,source:1===t.is_buy?"bought":"custom"}}),t.availableIndicators=r,t.indicatorsLoaded=!0):(t.availableIndicators=[],t.$message.warning(s.msg||t.$t("trading-assistant.messages.loadIndicatorsFailed"))),e.n=6;break;case 5:e.p=5,e.v,t.availableIndicators=[],t.$message.warning(t.$t("trading-assistant.messages.loadIndicatorsFailed"));case 6:return e.p=6,t.loadingIndicators=!1,e.f(6);case 7:return e.a(2)}},e,null,[[3,5,6,7]])}))()},handleIndicatorChange:function(t){var e=this;return(0,l.A)((0,o.A)().m(function a(){var i,s,r;return(0,o.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(i=String(t),e.selectedIndicator=e.availableIndicators.find(function(t){return String(t.id)===i}),e.indicatorParams=[],e.indicatorParamValues={},!t){a.n=4;break}return a.p=1,a.n=2,e.$http.get("/api/indicator/getIndicatorParams",{params:{indicator_id:t}});case 2:s=a.v,s&&1===s.code&&Array.isArray(s.data)&&(e.indicatorParams=s.data,r={},s.data.forEach(function(t){r[t.name]=t.default}),e.indicatorParamValues=r),a.n=4;break;case 3:a.p=3,a.v;case 4:return a.a(2)}},a,null,[[1,3]])}))()},handleMarketTypeChange:function(t){var e=t.target.value;"spot"===e&&this.form.setFieldsValue({trade_direction:"long",leverage:1})},recalcEntryPctMaxUi:function(){if(this.form){var t=!!this.form.getFieldValue("trend_add_enabled"),e=!!this.form.getFieldValue("dca_add_enabled"),a=Number(this.form.getFieldValue("trend_add_max_times")||0),i=Number(this.form.getFieldValue("dca_add_max_times")||0),s=Number(this.form.getFieldValue("trend_add_size_pct")||0),r=Number(this.form.getFieldValue("dca_add_size_pct")||0),n=(t?a*s:0)+(e?i*r:0),o=Math.max(0,Math.min(100,100-n));this.entryPctMaxUi=o}else this.entryPctMaxUi=100},normalizeEntryPct:function(){if(this.form){var t=Number(this.form.getFieldValue("entry_pct")||0),e=Number(this.entryPctMaxUi||100);t>e&&this.form.setFieldsValue({entry_pct:e})}},onTrendAddToggle:function(t){var e=this;this.form&&(t&&this.form.setFieldsValue({dca_add_enabled:!1}),this.$nextTick(function(){e.recalcEntryPctMaxUi(),e.normalizeEntryPct()}))},onDcaAddToggle:function(t){var e=this;this.form&&(t&&this.form.setFieldsValue({trend_add_enabled:!1}),this.$nextTick(function(){e.recalcEntryPctMaxUi(),e.normalizeEntryPct()}))},onScaleParamsChange:function(){var t=this;this.$nextTick(function(){t.recalcEntryPctMaxUi(),t.normalizeEntryPct()})},onEntryPctChange:function(){var t=this;this.$nextTick(function(){return t.normalizeEntryPct()})},onTrailingToggle:function(t){this.form&&(this.trailingEnabledUi=!!t,t||this.form.setFieldsValue({trailing_stop_pct:0,trailing_activation_pct:0}))},onAiFilterToggle:function(t){this.aiFilterEnabledUi=!!t;try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({enable_ai_filter:!!t})}catch(e){}},filterIndicatorOption:function(t,e){var a=e.componentOptions.children[0].children[0].text;return a.toLowerCase().indexOf(t.toLowerCase())>=0},filterSymbolOption:function(t,e){return e.componentOptions.children[0].text.toLowerCase().indexOf(t.toLowerCase())>=0},getIndicatorTypeColor:function(t){var e={trend:"blue",momentum:"green",volatility:"orange",volume:"purple",custom:"default"};return e[t]||"default"},getIndicatorTypeName:function(t){return this.$t("trading-assistant.indicatorType.".concat(t))||t},getExchangeName:function(t){if(t.labelKey){var e="trading-assistant.exchangeNames.".concat(t.labelKey),a=this.$t(e);return a===e?t.value.charAt(0).toUpperCase()+t.value.slice(1):a}return t.label||t.value},getExchangeDisplayName:function(t){if(!t)return"";var e=this.exchangeOptions.find(function(e){return e.value===t});return e?this.getExchangeName(e):t.charAt(0).toUpperCase()+t.slice(1)},getExchangeTagColor:function(t){var e={binance:"gold",okx:"blue",coinbaseexchange:"cyan",kraken:"purple",bitfinex:"geekblue",huobi:"orange",gate:"green",mexc:"lime",kucoin:"volcano",bybit:"red",bitget:"magenta",bitmex:"red",deribit:"blue",phemex:"cyan",bitmart:"geekblue",bitstamp:"purple",bittrex:"orange",poloniex:"green",gemini:"lime",cryptocom:"volcano",blockchaincom:"magenta",bitflyer:"red",upbit:"blue",bithumb:"cyan",coinone:"purple",zb:"geekblue",lbank:"orange",bibox:"green",bigone:"lime",bitrue:"volcano",coinex:"magenta",ftx:"red",ftxus:"blue",binanceus:"gold",binancecoinm:"gold",binanceusdm:"gold",ibkr:"green"};return e[t]||"default"},handleApiConfigChange:function(){this.connectionTestResult=null},getModalPopupContainer:function(){return window.document.body},handleBrokerSelectChange:function(t){this.currentBrokerId=t||"ibkr",this.connectionTestResult=null},handleForexBrokerSelectChange:function(t){this.currentBrokerId=t||"mt5",this.connectionTestResult=null},handleExchangeSelectChange:function(t){var e=this;this.currentExchangeId=t||"",this.connectionTestResult=null,this.suppressApiClearOnce?this.suppressApiClearOnce=!1:this.$nextTick(function(){var t={api_key:void 0,secret_key:void 0,passphrase:void 0,enable_demo_trading:!1};setTimeout(function(){e.form.setFieldsValue(t)},100)})},getPlaceholder:function(t){var e={okx:{api_key:"请输入API Key",secret_key:"请输入Secret Key",passphrase:"请输入Passphrase(创建API时设置)"},okex:{api_key:"请输入API Key",secret_key:"请输入Secret Key",passphrase:"请输入Passphrase(创建API时设置)"},binance:{api_key:"请输入API Key",secret_key:"请输入Secret Key"},coinbaseexchange:{api_key:"请输入API Key(或Key Name)",secret_key:"请输入API Secret(或Private Key)",passphrase:"请输入Passphrase(Legacy Pro API需要)"},kucoin:{api_key:"请输入API Key",secret_key:"请输入Secret Key",passphrase:"请输入Passphrase"},gate:{api_key:"请输入API Key",secret_key:"请输入Secret Key"},mexc:{api_key:"请输入Access Key",secret_key:"请输入Secret Key"},kraken:{api_key:"请输入API Key",secret_key:"请输入Secret Key"},bitfinex:{api_key:"请输入API Key",secret_key:"请输入Secret Key"},bybit:{api_key:"请输入API Key",secret_key:"请输入Secret Key"},bitget:{api_key:"请输入API Key",secret_key:"请输入Secret Key",passphrase:"请输入Passphrase(Legacy Pro API需要)"}},a=e[this.currentExchangeId]||{};if(a[t])return a[t];var i={api_key:this.$t("trading-assistant.placeholders.inputApiKey"),secret_key:this.$t("trading-assistant.placeholders.inputSecretKey"),passphrase:this.$t("trading-assistant.placeholders.inputPassphrase")};return i[t]||this.$t("trading-assistant.placeholders.inputApiKey")},handleNext:function(){var t=this;if(0===this.currentStep){var e=["indicator_id","strategy_name"];(this.isAdvancedMode||this.editingStrategy)&&e.push("initial_capital","market_type","leverage","trade_direction","timeframe"),this.isEditMode&&e.push("symbol"),this.form.validateFields(e,function(e,a){if(!e){if(!t.isEditMode){var i=t.form.getFieldValue("cs_strategy_type")||"single";if("cross_sectional"===i){if(!t.crossSectionalSymbols||0===t.crossSectionalSymbols.length)return void t.$message.warning(t.$t("trading-assistant.validation.symbolsRequired"))}else if(!t.selectedSymbols||0===t.selectedSymbols.length)return void t.$message.warning(t.$t("trading-assistant.validation.symbolsRequired"))}try{var s=a&&a.market_type||t.form.getFieldValue("market_type");"spot"===s&&t.form.setFieldsValue({leverage:1,trade_direction:"long"})}catch(r){}t.backtestCollapseKeys=["risk"];try{t.trailingEnabledUi=!!t.form.getFieldValue("trailing_enabled")}catch(r){t.trailingEnabledUi=!1}t.$nextTick(function(){t.recalcEntryPctMaxUi(),t.normalizeEntryPct()}),t.isSimpleMode&&!t.editingStrategy?t.currentStep=2:t.currentStep++}})}else if(1===this.currentStep){try{var a=this.form.getFieldValue("execution_mode")||"signal";this.executionModeUi=a;var i=this.form.getFieldValue("notify_channels")||["browser"];this.notifyChannelsUi=Array.isArray(i)?i:["browser"]}catch(s){}this.currentStep++}},handlePrev:function(){this.currentStep>0&&(this.isSimpleMode&&!this.editingStrategy&&2===this.currentStep?this.currentStep=0:this.currentStep--)},handleSubmit:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){return(0,o.A)().w(function(e){while(1)switch(e.n){case 0:t.form.validateFields(function(){var e=(0,l.A)((0,o.A)().m(function e(a,i){var s,r,n,l,d,c,u,g,p,h,_,y,f,v,b,S,k;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(a){e.n=14;break}if(e.p=1,t.saving=!0,s=t.canUseLiveTrading&&"live"===i.execution_mode,!s||i.live_disclaimer_ack){e.n=2;break}return t.$message.warning(t.$t("trading-assistant.liveDisclaimer.required")),t.saving=!1,e.a(2);case 2:if(!s){e.n=3;break}if(r=i.credential_id,r){e.n=3;break}return t.$message.warning(t.$t("trading-assistant.validation.credentialRequired")),t.saving=!1,e.a(2);case 3:if(n={channels:i.notify_channels||[],targets:{email:t.userNotificationSettings.email||"",phone:t.userNotificationSettings.phone||"",telegram:t.userNotificationSettings.telegram_chat_id||"",telegram_bot_token:t.userNotificationSettings.telegram_bot_token||"",discord:t.userNotificationSettings.discord_webhook||"",webhook:t.userNotificationSettings.webhook_url||"",webhook_token:t.userNotificationSettings.webhook_token||""}},n.channels&&0!==n.channels.length){e.n=4;break}return t.$message.warning(t.$t("trading-assistant.validation.notifyChannelRequired")),t.saving=!1,e.a(2);case 4:if(l=String(i.indicator_id),d=t.availableIndicators.find(function(t){return String(t.id)===l}),d){e.n=5;break}return t.$message.error(t.$t("trading-assistant.validation.indicatorRequired")),t.saving=!1,e.a(2);case 5:if(c=!!t.aiFilterEnabledUi,u="futures"===i.market_type?"swap":i.market_type||"swap",g=i.leverage||1,p=i.trade_direction||"long","spot"===u?(g=1,p="long",t.$message.info(t.$t("trading-assistant.messages.spotLimitations"))):(g<1&&(g=1),g>125&&(g=125)),h={strategy_name:i.strategy_name,market_category:t.selectedMarketCategory||"Crypto",execution_mode:i.execution_mode||"signal",notification_config:n,indicator_config:{indicator_id:d.id,indicator_name:d.name,indicator_code:d.code||""},exchange_config:s?t.isIBKRMarket?{exchange_id:i.broker_id||t.currentBrokerId||"ibkr",ibkr_host:i.ibkr_host||"127.0.0.1",ibkr_port:i.ibkr_port||7497,ibkr_client_id:i.ibkr_client_id||1,ibkr_account:i.ibkr_account||""}:t.isMT5Market?{exchange_id:i.forex_broker_id||t.currentBrokerId||"mt5",mt5_server:i.mt5_server||"",mt5_login:i.mt5_login||"",mt5_password:i.mt5_password||"",mt5_terminal_path:i.mt5_terminal_path||""}:{credential_id:i.credential_id,exchange_id:t.currentExchangeId||void 0}:void 0,trading_config:{initial_capital:i.initial_capital,leverage:g,trade_direction:p,timeframe:i.timeframe,market_type:u,margin_mode:"cross",signal_mode:"confirmed",take_profit_pct:i.take_profit_pct||0,stop_loss_pct:i.stop_loss_pct||0,trailing_enabled:!!i.trailing_enabled,trailing_stop_pct:i.trailing_stop_pct||0,trailing_activation_pct:i.trailing_activation_pct||0,trend_add_enabled:!!i.trend_add_enabled,trend_add_step_pct:i.trend_add_step_pct||0,trend_add_size_pct:i.trend_add_size_pct||0,trend_add_max_times:i.trend_add_max_times||0,dca_add_enabled:!!i.dca_add_enabled,dca_add_step_pct:i.dca_add_step_pct||0,dca_add_size_pct:i.dca_add_size_pct||0,dca_add_max_times:i.dca_add_max_times||0,trend_reduce_enabled:!!i.trend_reduce_enabled,trend_reduce_step_pct:i.trend_reduce_step_pct||0,trend_reduce_size_pct:i.trend_reduce_size_pct||0,trend_reduce_max_times:i.trend_reduce_max_times||0,adverse_reduce_enabled:!!i.adverse_reduce_enabled,adverse_reduce_step_pct:i.adverse_reduce_step_pct||0,adverse_reduce_size_pct:i.adverse_reduce_size_pct||0,adverse_reduce_max_times:i.adverse_reduce_max_times||0,entry_pct:0===i.entry_pct||i.entry_pct?i.entry_pct:100,commission:i.commission||0,slippage:i.slippage||0,enable_ai_filter:c,indicator_params:t.indicatorParamValues,strategy_type:i.cs_strategy_type||"single",symbol_list:"cross_sectional"===i.cs_strategy_type?t.crossSectionalSymbols:void 0,portfolio_size:"cross_sectional"===i.cs_strategy_type?i.portfolio_size||10:void 0,long_ratio:"cross_sectional"===i.cs_strategy_type?i.long_ratio||.5:void 0,rebalance_frequency:"cross_sectional"===i.cs_strategy_type?i.rebalance_frequency||"daily":void 0}},!t.editingStrategy){e.n=7;break}return y=i.symbol,"string"===typeof y&&y.includes(":")&&(f=y.indexOf(":"),h.market_category=y.slice(0,f)||h.market_category,y=y.slice(f+1)),h.trading_config.symbol=y,e.n=6,(0,m.P7)(t.editingStrategy.id,h);case 6:_=e.v,e.n=11;break;case 7:if(h.user_id=1,h.strategy_type="IndicatorStrategy","cross_sectional"!==i.cs_strategy_type){e.n=9;break}return h.strategy_type="IndicatorStrategy",h.trading_config.symbol=null,e.n=8,(0,m.WM)(h);case 8:_=e.v,e.n=11;break;case 9:return h.symbols=t.selectedSymbols,e.n=10,(0,m.Ox)(h);case 10:_=e.v;case 11:1===_.code?(t.isEditMode?t.$message.success(t.$t("trading-assistant.messages.updateSuccess")):(b=i.cs_strategy_type||"single",S="cross_sectional"===b?t.crossSectionalSymbols.length:t.selectedSymbols.length,k=(null===(v=_.data)||void 0===v?void 0:v.total_created)||S,t.$message.success(t.$t("trading-assistant.messages.batchCreateSuccess",{count:k}))),t.handleRefresh()):t.$message.error(_.msg||(t.isEditMode?t.$t("trading-assistant.messages.updateFailed"):t.$t("trading-assistant.messages.createFailed"))),e.n=13;break;case 12:e.p=12,e.v,t.$message.error(t.isEditMode?t.$t("trading-assistant.messages.updateFailed"):t.$t("trading-assistant.messages.createFailed"));case 13:return e.p=13,t.saving=!1,e.f(13);case 14:return e.a(2)}},e,null,[[1,12,13,14]])}));return function(t,a){return e.apply(this,arguments)}}());case 1:return e.a(2)}},e)}))()},getFormValues:function(){var t=this;return new Promise(function(e,a){t.form.validateFields(function(t,i){t?a(t):e(i)})})},getDropdownContainer:function(t){return document.body}}},E=U,z=(0,k.A)(E,i,s,!1,null,"13cac835",null),D=z.exports},42430:function(t,e,a){a.d(e,{IA:function(){return n},PR:function(){return o},kI:function(){return l}});var i=a(76338),s=a(75769),r={list:"/api/credentials/list",get:"/api/credentials/get",create:"/api/credentials/create",delete:"/api/credentials/delete"};function n(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,s.Ay)({url:r.list,method:"get",params:t})}function o(t){return(0,s.Ay)({url:r.create,method:"post",data:t})}function l(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return(0,s.Ay)({url:r.delete,method:"delete",params:(0,i.A)({id:t},e)})}},35038:function(t,e,a){a.d(e,{Qo:function(){return r},_3:function(){return c},dp:function(){return n},iO:function(){return d},mk:function(){return o},ms:function(){return l},z6:function(){return u}});var i=a(75769),s={GetWatchlist:"/api/market/watchlist/get",AddWatchlist:"/api/market/watchlist/add",RemoveWatchlist:"/api/market/watchlist/remove",GetWatchlistPrices:"/api/market/watchlist/prices",MultiAnalysis:"/api/analysis/multiAnalysis",CreateAnalysisTask:"/api/analysis/createTask",GetAnalysisTaskStatus:"/api/analysis/getTaskStatus",GetAnalysisHistoryList:"/api/analysis/getHistoryList",DeleteAnalysisTask:"/api/analysis/deleteTask",ReflectAnalysis:"/api/analysis/reflect",ChatMessage:"/api/ai/chat/message",GetChatHistory:"/api/ai/chat/history",SaveChatHistory:"/api/ai/chat/history/save",GetConfig:"/api/market/config",GetMenuFooterConfig:"/api/market/menuFooterConfig",GetMarketTypes:"/api/market/types",SearchSymbols:"/api/market/symbols/search",GetHotSymbols:"/api/market/symbols/hot"};function r(t){return(0,i.Ay)({url:s.GetWatchlist,method:"get",params:t})}function n(t){return(0,i.Ay)({url:s.AddWatchlist,method:"post",data:t})}function o(t){return(0,i.Ay)({url:s.RemoveWatchlist,method:"post",data:t})}function l(t){return(0,i.Ay)({url:s.GetWatchlistPrices,method:"get",params:{watchlist:JSON.stringify(t.watchlist||[])}})}function d(){return(0,i.Ay)({url:s.GetMarketTypes,method:"get"})}function c(t){return(0,i.Ay)({url:s.SearchSymbols,method:"get",params:t})}function u(t){return(0,i.Ay)({url:s.GetHotSymbols,method:"get",params:t})}},84841:function(t,e,a){a.d(e,{DK:function(){return f},E$:function(){return c},Gl:function(){return g},O0:function(){return d},TK:function(){return n},aU:function(){return s},cw:function(){return l},d$:function(){return b},hG:function(){return o},kg:function(){return r},nY:function(){return y},r7:function(){return u},rx:function(){return h},v9:function(){return p},vF:function(){return m},vi:function(){return v},wq:function(){return _}});var i=a(75769);function s(t){return(0,i.Ay)({url:"/api/users/list",method:"get",params:t})}function r(t){return(0,i.Ay)({url:"/api/users/create",method:"post",data:t})}function n(t,e){return(0,i.Ay)({url:"/api/users/update",method:"put",params:{id:t},data:e})}function o(t){return(0,i.Ay)({url:"/api/users/delete",method:"delete",params:{id:t}})}function l(t){return(0,i.Ay)({url:"/api/users/reset-password",method:"post",data:t})}function d(){return(0,i.Ay)({url:"/api/users/roles",method:"get"})}function c(){return(0,i.Ay)({url:"/api/users/profile",method:"get"})}function u(t){return(0,i.Ay)({url:"/api/users/profile/update",method:"put",data:t})}function m(){return(0,i.Ay)({url:"/api/users/notification-settings",method:"get"})}function g(t){return(0,i.Ay)({url:"/api/users/notification-settings",method:"put",data:t})}function p(t){return(0,i.Ay)({url:"/api/users/my-credits-log",method:"get",params:t})}function h(t){return(0,i.Ay)({url:"/api/users/my-referrals",method:"get",params:t})}function _(t){return(0,i.Ay)({url:"/api/users/set-credits",method:"post",data:t})}function y(t){return(0,i.Ay)({url:"/api/users/set-vip",method:"post",data:t})}function f(t){return(0,i.Ay)({url:"/api/users/system-strategies",method:"get",params:t})}function v(t){return(0,i.Ay)({url:"/api/users/admin-orders",method:"get",params:t})}function b(t){return(0,i.Ay)({url:"/api/users/admin-ai-stats",method:"get",params:t})}}}]); \ No newline at end of file +"use strict";(self["webpackChunkvue_antd_pro"]=self["webpackChunkvue_antd_pro"]||[]).push([[916],{7916:function(t,e,a){a.r(e),a.d(e,{default:function(){return D}});a(74423);var i=function(){var t,e=this,a=e._self._c;return a("div",{staticClass:"trading-assistant",class:{"theme-dark":e.isDarkTheme}},[a("a-row",{staticClass:"strategy-layout",attrs:{gutter:24}},[a("a-col",{staticClass:"strategy-list-col",attrs:{xs:24,sm:24,md:10,lg:8,xl:8}},[a("a-card",{staticClass:"strategy-list-card",attrs:{bordered:!1}},[a("div",{staticClass:"card-title",attrs:{slot:"title"},slot:"title"},[a("span",[e._v(e._s(e.$t("trading-assistant.strategyList")))]),a("a-button",{attrs:{type:"primary",size:"small"},on:{click:e.handleCreateStrategy}},[a("a-icon",{attrs:{type:"plus"}}),e._v(" "+e._s(e.$t("trading-assistant.createStrategy"))+" ")],1)],1),a("div",{staticClass:"group-mode-switch"},[a("span",{staticClass:"group-mode-label"},[e._v(e._s(e.$t("trading-assistant.groupBy"))+":")]),a("a-radio-group",{attrs:{size:"small","button-style":"solid"},model:{value:e.groupByMode,callback:function(t){e.groupByMode=t},expression:"groupByMode"}},[a("a-radio-button",{attrs:{value:"strategy"}},[a("a-icon",{attrs:{type:"folder"}}),e._v(" "+e._s(e.$t("trading-assistant.groupByStrategy"))+" ")],1),a("a-radio-button",{attrs:{value:"symbol"}},[a("a-icon",{attrs:{type:"stock"}}),e._v(" "+e._s(e.$t("trading-assistant.groupBySymbol"))+" ")],1)],1)],1),a("a-spin",{attrs:{spinning:e.loading}},[e.loading||0!==e.strategies.length?a("div",{staticClass:"strategy-grouped-list"},[e._l(e.groupedStrategies.groups,function(t){return a("div",{key:t.id,staticClass:"strategy-group"},[a("div",{staticClass:"strategy-group-header",on:{click:function(a){return e.toggleGroup(t.id)}}},[a("div",{staticClass:"group-header-left"},[a("a-icon",{staticClass:"collapse-icon",attrs:{type:e.collapsedGroups[t.id]?"right":"down"}}),a("a-icon",{staticClass:"group-icon",attrs:{type:"symbol"===e.groupByMode?"stock":"folder"}}),a("span",{staticClass:"group-name"},[e._v(e._s(t.baseName))]),a("a-tag",{attrs:{size:"small",color:"blue"}},[e._v(e._s(t.strategies.length)+" "+e._s("symbol"===e.groupByMode?e.$t("trading-assistant.strategyCount"):e.$t("trading-assistant.symbolCount")))])],1),a("div",{staticClass:"group-header-right",on:{click:function(t){t.stopPropagation()}}},[t.runningCount>0?a("span",{staticClass:"group-status running"},[e._v(" "+e._s(t.runningCount)+" "+e._s(e.$t("trading-assistant.status.running"))+" ")]):e._e(),t.stoppedCount>0?a("span",{staticClass:"group-status stopped"},[e._v(" "+e._s(t.stoppedCount)+" "+e._s(e.$t("trading-assistant.status.stopped"))+" ")]):e._e(),a("a-dropdown",{attrs:{getPopupContainer:e.getDropdownContainer,trigger:["click"]}},[a("a-menu",{attrs:{slot:"overlay"},on:{click:function(a){var i=a.key;return e.handleGroupMenuClick(i,t)}},slot:"overlay"},[a("a-menu-item",{key:"startAll"},[a("a-icon",{attrs:{type:"play-circle"}}),e._v(" "+e._s(e.$t("trading-assistant.startAll"))+" ")],1),a("a-menu-item",{key:"stopAll"},[a("a-icon",{attrs:{type:"pause-circle"}}),e._v(" "+e._s(e.$t("trading-assistant.stopAll"))+" ")],1),a("a-menu-divider"),a("a-menu-item",{key:"deleteAll",staticClass:"danger-item"},[a("a-icon",{attrs:{type:"delete"}}),e._v(" "+e._s(e.$t("trading-assistant.deleteAll"))+" ")],1)],1),a("a-button",{attrs:{type:"link",icon:"more",size:"small"}})],1)],1)]),a("div",{directives:[{name:"show",rawName:"v-show",value:!e.collapsedGroups[t.id],expression:"!collapsedGroups[group.id]"}],staticClass:"strategy-group-content"},e._l(t.strategies,function(t){return a("div",{key:t.id,class:["strategy-list-item",{active:e.selectedStrategy&&e.selectedStrategy.id===t.id}],on:{click:function(a){return e.handleSelectStrategy(t)}}},[a("div",{staticClass:"strategy-item-content"},[a("div",{staticClass:"strategy-item-header"},[a("div",{staticClass:"strategy-name-wrapper"},["strategy"===e.groupByMode?[t.trading_config&&t.trading_config.symbol?a("span",{staticClass:"info-item"},[a("a-icon",{attrs:{type:"dollar"}}),e._v(" "+e._s(t.trading_config.symbol)+" ")],1):e._e()]:[a("span",{staticClass:"info-item strategy-name-text"},[a("a-icon",{attrs:{type:"thunderbolt"}}),e._v(" "+e._s(t.displayInfo?t.displayInfo.strategyName:t.strategy_name)+" ")],1),t.displayInfo&&t.displayInfo.timeframe?a("a-tag",{attrs:{size:"small",color:"cyan"}},[a("a-icon",{staticStyle:{"margin-right":"2px"},attrs:{type:"clock-circle"}}),e._v(" "+e._s(t.displayInfo.timeframe)+" ")],1):e._e(),t.displayInfo&&t.displayInfo.indicatorName&&"-"!==t.displayInfo.indicatorName?a("a-tag",{attrs:{size:"small",color:"purple"}},[a("a-icon",{staticStyle:{"margin-right":"2px"},attrs:{type:"line-chart"}}),e._v(" "+e._s(t.displayInfo.indicatorName)+" ")],1):e._e()],a("span",{staticClass:"status-label",class:[t.status?"status-".concat(t.status):"",{"status-stopped":"stopped"===t.status}]},[e._v(" "+e._s(e.getStatusText(t.status))+" ")])],2)])]),a("div",{staticClass:"strategy-item-actions",on:{click:function(t){t.stopPropagation()}}},[a("a-dropdown",{attrs:{getPopupContainer:e.getDropdownContainer,trigger:["click"]}},[a("a-menu",{attrs:{slot:"overlay"},on:{click:function(a){var i=a.key;return e.handleMenuClick(i,t)}},slot:"overlay"},["stopped"===t.status?a("a-menu-item",{key:"start"},[a("a-icon",{attrs:{type:"play-circle"}}),e._v(" "+e._s(e.$t("trading-assistant.startStrategy"))+" ")],1):e._e(),"running"===t.status?a("a-menu-item",{key:"stop"},[a("a-icon",{attrs:{type:"pause-circle"}}),e._v(" "+e._s(e.$t("trading-assistant.stopStrategy"))+" ")],1):e._e(),a("a-menu-divider"),a("a-menu-item",{key:"edit"},[a("a-icon",{attrs:{type:"edit"}}),e._v(" "+e._s(e.$t("trading-assistant.editStrategy"))+" ")],1),a("a-menu-divider"),a("a-menu-item",{key:"delete",staticClass:"danger-item"},[a("a-icon",{attrs:{type:"delete"}}),e._v(" "+e._s(e.$t("trading-assistant.deleteStrategy"))+" ")],1)],1),a("a-button",{attrs:{type:"link",icon:"more",size:"small"}})],1)],1)])}),0)])}),e._l(e.groupedStrategies.ungrouped,function(t){return a("div",{key:t.id,class:["strategy-list-item",{active:e.selectedStrategy&&e.selectedStrategy.id===t.id}],on:{click:function(a){return e.handleSelectStrategy(t)}}},[a("div",{staticClass:"strategy-item-content"},[a("div",{staticClass:"strategy-item-header"},[a("div",{staticClass:"strategy-name-wrapper"},[t.exchange_config&&t.exchange_config.exchange_id?a("a-tag",{staticClass:"exchange-tag",attrs:{color:e.getExchangeTagColor(t.exchange_config.exchange_id),size:"small"}},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"bank"}}),e._v(" "+e._s(e.getExchangeDisplayName(t.exchange_config.exchange_id))+" ")],1):e._e(),a("span",{staticClass:"strategy-name"},[e._v(e._s(t.strategy_name))]),"PromptBasedStrategy"===t.strategy_type?a("a-tag",{staticClass:"strategy-type-tag",attrs:{color:"purple",size:"small"}},[a("a-icon",{staticStyle:{"margin-right":"2px"},attrs:{type:"robot"}}),e._v(" AI ")],1):e._e()],1)]),a("div",{staticClass:"strategy-item-info"},[t.trading_config&&t.trading_config.symbol?a("span",{staticClass:"info-item"},[a("a-icon",{attrs:{type:"dollar"}}),e._v(" "+e._s(t.trading_config.symbol)+" ")],1):e._e(),a("span",{staticClass:"status-label",class:[t.status?"status-".concat(t.status):"",{"status-stopped":"stopped"===t.status}]},[e._v(" "+e._s(e.getStatusText(t.status))+" ")])])]),a("div",{staticClass:"strategy-item-actions",on:{click:function(t){t.stopPropagation()}}},[a("a-dropdown",{attrs:{getPopupContainer:e.getDropdownContainer,trigger:["click"]}},[a("a-menu",{attrs:{slot:"overlay"},on:{click:function(a){var i=a.key;return e.handleMenuClick(i,t)}},slot:"overlay"},["stopped"===t.status?a("a-menu-item",{key:"start"},[a("a-icon",{attrs:{type:"play-circle"}}),e._v(" "+e._s(e.$t("trading-assistant.startStrategy"))+" ")],1):e._e(),"running"===t.status?a("a-menu-item",{key:"stop"},[a("a-icon",{attrs:{type:"pause-circle"}}),e._v(" "+e._s(e.$t("trading-assistant.stopStrategy"))+" ")],1):e._e(),a("a-menu-divider"),a("a-menu-item",{key:"edit"},[a("a-icon",{attrs:{type:"edit"}}),e._v(" "+e._s(e.$t("trading-assistant.editStrategy"))+" ")],1),a("a-menu-divider"),a("a-menu-item",{key:"delete",staticClass:"danger-item"},[a("a-icon",{attrs:{type:"delete"}}),e._v(" "+e._s(e.$t("trading-assistant.deleteStrategy"))+" ")],1)],1),a("a-button",{attrs:{type:"link",icon:"more",size:"small"}})],1)],1)])})],2):a("a-empty",{attrs:{description:e.$t("trading-assistant.noStrategy")}})],1)],1)],1),a("a-col",{staticClass:"strategy-detail-col",attrs:{xs:24,sm:24,md:14,lg:16,xl:16}},[e.selectedStrategy?a("div",{staticClass:"strategy-detail-panel"},[a("a-card",{staticClass:"strategy-header-card",attrs:{bordered:!1}},[a("div",{staticClass:"strategy-header"},[a("div",{staticClass:"header-left"},[a("div",{staticClass:"strategy-title-row"},[a("h3",{staticClass:"strategy-title"},[e._v(e._s(e.selectedStrategy.strategy_name))]),a("div",{staticClass:"status-badge",class:["status-".concat(e.selectedStrategy.status)]},[a("span",{staticClass:"status-dot"}),e._v(" "+e._s(e.getStatusText(e.selectedStrategy.status))+" ")])]),a("div",{staticClass:"key-stats-grid"},[e.selectedStrategy.initial_capital||e.selectedStrategy.trading_config&&e.selectedStrategy.trading_config.initial_capital?a("div",{staticClass:"stat-card"},[a("div",{staticClass:"stat-icon investment"},[a("a-icon",{attrs:{type:"wallet"}})],1),a("div",{staticClass:"stat-content"},[a("div",{staticClass:"stat-label"},[e._v(e._s(e.$t("trading-assistant.detail.totalInvestment")))]),a("div",{staticClass:"stat-value"},[e._v("$"+e._s(parseFloat(e.selectedStrategy.initial_capital||(null===(t=e.selectedStrategy.trading_config)||void 0===t?void 0:t.initial_capital)||0).toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})))])])]):e._e(),null!==e.currentEquity?a("div",{staticClass:"stat-card"},[a("div",{staticClass:"stat-icon equity"},[a("a-icon",{attrs:{type:"fund"}})],1),a("div",{staticClass:"stat-content"},[a("div",{staticClass:"stat-label"},[e._v(e._s(e.$t("trading-assistant.detail.currentEquity")))]),a("div",{staticClass:"stat-value",class:e.getEquityColorClass},[e._v(e._s(e.formatCurrency(e.currentEquity)))])])]):e._e(),null!==e.totalPnl?a("div",{staticClass:"stat-card pnl-card",class:{profit:e.totalPnl>0,loss:e.totalPnl<0}},[a("div",{staticClass:"stat-icon pnl"},[a("a-icon",{attrs:{type:e.totalPnl>=0?"rise":"fall"}})],1),a("div",{staticClass:"stat-content"},[a("div",{staticClass:"stat-label"},[e._v(e._s(e.$t("trading-assistant.detail.totalPnl")))]),a("div",{staticClass:"stat-value",class:e.getPnlColorClass},[e._v(" "+e._s(e.formatPnl(e.totalPnl))+" "),a("span",{staticClass:"pnl-percent"},[e._v("("+e._s(e.formatPnlPercent(e.totalPnlPercent))+")")])])])]):e._e()]),a("div",{staticClass:"strategy-tags"},[e.selectedStrategy.trading_config?a("div",{staticClass:"tag-item"},[a("a-icon",{attrs:{type:"stock"}}),a("span",[e._v(e._s(e.selectedStrategy.trading_config.symbol))])],1):e._e(),e.selectedStrategy.indicator_config&&e.selectedStrategy.indicator_config.indicator_name?a("div",{staticClass:"tag-item"},[a("a-icon",{attrs:{type:"line-chart"}}),a("span",[e._v(e._s(e.selectedStrategy.indicator_config.indicator_name))])],1):e._e(),e.selectedStrategy.trading_config?a("div",{staticClass:"tag-item"},[a("a-icon",{attrs:{type:"thunderbolt"}}),a("span",[e._v(e._s(e.selectedStrategy.trading_config.leverage||1)+"x")])],1):e._e(),e.selectedStrategy.trading_config&&e.selectedStrategy.trading_config.trade_direction?a("div",{staticClass:"tag-item"},[a("a-icon",{attrs:{type:"swap"}}),a("span",[e._v(e._s(e.getTradeDirectionText(e.selectedStrategy.trading_config.trade_direction)))])],1):e._e(),e.selectedStrategy.trading_config&&e.selectedStrategy.trading_config.timeframe?a("div",{staticClass:"tag-item"},[a("a-icon",{attrs:{type:"clock-circle"}}),a("span",[e._v(e._s(e.selectedStrategy.trading_config.timeframe))])],1):e._e()])]),a("div",{staticClass:"header-right"},["stopped"===e.selectedStrategy.status?a("a-button",{staticClass:"action-btn start-btn",attrs:{type:"primary",size:"large"},on:{click:function(t){return e.handleStartStrategy(e.selectedStrategy.id)}}},[a("a-icon",{attrs:{type:"play-circle"}}),e._v(" "+e._s(e.$t("trading-assistant.startStrategy"))+" ")],1):e._e(),"running"===e.selectedStrategy.status?a("a-button",{staticClass:"action-btn stop-btn",attrs:{type:"danger",size:"large"},on:{click:function(t){return e.handleStopStrategy(e.selectedStrategy.id)}}},[a("a-icon",{attrs:{type:"pause-circle"}}),e._v(" "+e._s(e.$t("trading-assistant.stopStrategy"))+" ")],1):e._e()],1)])]),a("a-card",{staticClass:"strategy-content-card",attrs:{bordered:!1}},[a("a-tabs",{attrs:{defaultActiveKey:"positions"}},[a("a-tab-pane",{key:"positions",attrs:{tab:e.$t("trading-assistant.tabs.positions")}},[a("position-records",{attrs:{"strategy-id":e.selectedStrategy.id,"market-type":e.selectedStrategy.trading_config&&e.selectedStrategy.trading_config.market_type||"swap",leverage:e.selectedStrategy.trading_config&&e.selectedStrategy.trading_config.leverage||1,loading:e.loadingRecords}})],1),a("a-tab-pane",{key:"trades",attrs:{tab:e.$t("trading-assistant.tabs.tradingRecords")}},[a("trading-records",{attrs:{"strategy-id":e.selectedStrategy.id,loading:e.loadingRecords}})],1)],1)],1)],1):a("div",{staticClass:"empty-detail"},[a("a-empty",{attrs:{description:e.$t("trading-assistant.selectStrategy")}})],1)])],1),a("a-modal",{attrs:{visible:e.showFormModal,title:e.editingStrategy?e.$t("trading-assistant.editStrategy"):e.$t("trading-assistant.createStrategy"),width:e.isMobile?"95%":1100,confirmLoading:e.saving,maskClosable:!1,wrapClassName:e.isMobile?"mobile-modal":"",bodyStyle:{maxHeight:"70vh",overflowY:"auto"}},on:{ok:e.handleSubmit,cancel:e.handleCloseModal}},[a("a-spin",{attrs:{spinning:e.loadingIndicators}},[e.editingStrategy?e._e():a("div",{staticClass:"creation-mode-toggle"},[a("a-radio-group",{attrs:{size:"small","button-style":"solid"},model:{value:e.creationMode,callback:function(t){e.creationMode=t},expression:"creationMode"}},[a("a-radio-button",{attrs:{value:"simple"}},[a("a-icon",{attrs:{type:"rocket"}}),e._v(" "+e._s(e.$t("trading-assistant.form.simpleMode"))+" ")],1),a("a-radio-button",{attrs:{value:"advanced"}},[a("a-icon",{attrs:{type:"setting"}}),e._v(" "+e._s(e.$t("trading-assistant.form.advancedMode"))+" ")],1)],1),a("span",{staticClass:"mode-hint"},[e._v(e._s(e.isSimpleMode?e.$t("trading-assistant.form.simpleModeHint"):e.$t("trading-assistant.form.advancedModeHint")))])],1),a("a-steps",{staticClass:"steps-container",attrs:{current:e.displayCurrentStep}},[a("a-step",{attrs:{title:e.isSimpleMode&&!e.editingStrategy?e.$t("trading-assistant.form.simpleStep1"):e.$t("trading-assistant.form.step1")}}),e.isAdvancedMode||e.editingStrategy?a("a-step",{attrs:{title:e.$t("trading-assistant.form.step2Params")}}):e._e(),a("a-step",{attrs:{title:e.isSimpleMode&&!e.editingStrategy?e.$t("trading-assistant.form.simpleStep2"):e.$t("trading-assistant.form.step3Signal")}})],1),a("div",{staticClass:"form-container"},[a("div",{directives:[{name:"show",rawName:"v-show",value:0===e.currentStep,expression:"currentStep === 0"}],staticClass:"step-content"},["indicator"===e.strategyType?a("div",[a("a-form",{attrs:{form:e.form,layout:"vertical"}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.indicator")}},[a("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["indicator_id",{rules:[{required:!0,message:e.$t("trading-assistant.validation.indicatorRequired")}]}],expression:"['indicator_id', { rules: [{ required: true, message: $t('trading-assistant.validation.indicatorRequired') }] }]"}],attrs:{placeholder:e.$t("trading-assistant.placeholders.selectIndicator"),"show-search":"","filter-option":e.filterIndicatorOption,loading:e.loadingIndicators,getPopupContainer:function(t){return t.parentNode}},on:{focus:e.handleIndicatorSelectFocus,change:e.handleIndicatorChange}},e._l(e.availableIndicators,function(t){return a("a-select-option",{key:String(t.id),attrs:{value:String(t.id)}},[a("div",{staticClass:"indicator-option"},[a("span",{staticClass:"indicator-name"},[e._v(e._s(t.name))]),t.type?a("a-tag",{attrs:{size:"small",color:e.getIndicatorTypeColor(t.type)}},[e._v(" "+e._s(e.getIndicatorTypeName(t.type))+" ")]):e._e()],1)])}),1),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.$t("trading-assistant.form.indicatorHint"))+" ")])],1),e.selectedIndicator?a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.indicatorDescription")}},[a("div",{staticClass:"indicator-description"},[e._v(" "+e._s(e.selectedIndicator.description||e.$t("trading-assistant.form.noDescription"))+" ")])]):e._e(),e.indicatorParams.length>0?a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.indicatorParams")}},[a("div",{staticClass:"indicator-params-form"},[a("a-row",{attrs:{gutter:16}},e._l(e.indicatorParams,function(t){return a("a-col",{key:t.name,attrs:{xs:24,sm:12,md:8}},[a("div",{staticClass:"param-item"},[a("label",{staticClass:"param-label"},[e._v(" "+e._s(t.name)+" "),t.description?a("a-tooltip",{attrs:{title:t.description}},[a("a-icon",{staticStyle:{"margin-left":"4px",color:"#999"},attrs:{type:"question-circle"}})],1):e._e()],1),"int"===t.type?a("a-input-number",{staticStyle:{width:"100%"},attrs:{precision:0,size:"small"},model:{value:e.indicatorParamValues[t.name],callback:function(a){e.$set(e.indicatorParamValues,t.name,a)},expression:"indicatorParamValues[param.name]"}}):"float"===t.type?a("a-input-number",{staticStyle:{width:"100%"},attrs:{precision:4,size:"small"},model:{value:e.indicatorParamValues[t.name],callback:function(a){e.$set(e.indicatorParamValues,t.name,a)},expression:"indicatorParamValues[param.name]"}}):"bool"===t.type?a("a-switch",{attrs:{size:"small"},model:{value:e.indicatorParamValues[t.name],callback:function(a){e.$set(e.indicatorParamValues,t.name,a)},expression:"indicatorParamValues[param.name]"}}):a("a-input",{attrs:{size:"small"},model:{value:e.indicatorParamValues[t.name],callback:function(a){e.$set(e.indicatorParamValues,t.name,a)},expression:"indicatorParamValues[param.name]"}})],1)])}),1),a("div",{staticClass:"form-item-hint",staticStyle:{"margin-top":"8px"}},[e._v(" "+e._s(e.$t("trading-assistant.form.indicatorParamsHint"))+" ")])],1)]):e._e(),a("a-divider"),a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.strategyName")}},[a("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["strategy_name",{rules:[{required:!0,message:e.$t("trading-assistant.validation.strategyNameRequired")}]}],expression:"['strategy_name', { rules: [{ required: true, message: $t('trading-assistant.validation.strategyNameRequired') }] }]"}],attrs:{placeholder:e.$t("trading-assistant.placeholders.inputStrategyName")}})],1),e.isSimpleMode&&!e.editingStrategy?a("div",{staticClass:"simple-defaults-summary"},[a("a-alert",{staticStyle:{"margin-bottom":"12px"},attrs:{type:"info","show-icon":""},scopedSlots:e._u([{key:"message",fn:function(){return[a("span",[e._v(e._s(e.$t("trading-assistant.form.simpleDefaultsHint")))])]},proxy:!0},{key:"description",fn:function(){return[a("span",[e._v(" "+e._s(e.$t("trading-assistant.form.klinePeriod"))+": "),a("b",[e._v("15m")]),e._v(" · "+e._s(e.$t("trading-assistant.form.leverage"))+": "),a("b",[e._v("5x")]),e._v(" · "+e._s(e.$t("trading-assistant.form.marketType"))+": "),a("b",[e._v(e._s(e.$t("trading-assistant.form.marketTypeFutures")))]),e._v(" · "+e._s(e.$t("dashboard.indicator.backtest.field.stopLossPct"))+": "),a("b",[e._v("3%")]),e._v(" · "+e._s(e.$t("dashboard.indicator.backtest.field.takeProfitPct"))+": "),a("b",[e._v("6%")])])]},proxy:!0}],null,!1,39555864)}),a("a-button",{staticStyle:{padding:"0","margin-bottom":"12px"},attrs:{type:"link",size:"small"},on:{click:function(t){e.showAdvancedSettings=!e.showAdvancedSettings}}},[a("a-icon",{attrs:{type:e.showAdvancedSettings?"up":"down"}}),e._v(" "+e._s(e.showAdvancedSettings?e.$t("trading-assistant.form.hideAdvancedSettings"):e.$t("trading-assistant.form.showAdvancedSettings"))+" ")],1)],1):e._e(),a("div",{directives:[{name:"show",rawName:"v-show",value:e.isAdvancedMode||e.editingStrategy||e.showAdvancedSettings,expression:"isAdvancedMode || editingStrategy || showAdvancedSettings"}]},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.strategyType")}},[a("a-radio-group",{directives:[{name:"decorator",rawName:"v-decorator",value:["cs_strategy_type",{initialValue:"single"}],expression:"['cs_strategy_type', { initialValue: 'single' }]"}],on:{change:e.handleStrategyTypeChange}},[a("a-radio",{attrs:{value:"single"}},[e._v(e._s(e.$t("trading-assistant.form.strategyTypeSingle")))]),a("a-radio",{attrs:{value:"cross_sectional"}},[e._v(e._s(e.$t("trading-assistant.form.strategyTypeCrossSectional")))])],1),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.$t("trading-assistant.form.strategyTypeHint"))+" ")])],1)],1),"cross_sectional"===e.form.getFieldValue("cs_strategy_type")?[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.symbolList")}},[a("a-select",{attrs:{mode:"multiple",placeholder:e.$t("trading-assistant.placeholders.selectSymbols"),"show-search":"","filter-option":e.filterWatchlistOptionWithAdd,loading:e.loadingWatchlist,getPopupContainer:function(t){return t.parentNode},maxTagCount:5},on:{change:e.handleCrossSectionalSymbolChange},model:{value:e.crossSectionalSymbols,callback:function(t){e.crossSectionalSymbols=t},expression:"crossSectionalSymbols"}},[e._l(e.watchlist,function(t){return a("a-select-option",{key:"".concat(t.market,":").concat(t.symbol),attrs:{value:"".concat(t.market,":").concat(t.symbol)}},[a("div",{staticClass:"symbol-option"},[a("a-tag",{staticStyle:{"margin-right":"8px","margin-bottom":"0"},attrs:{color:e.getMarketColor(t.market)}},[e._v(" "+e._s(t.market)+" ")]),a("span",{staticClass:"symbol-name"},[e._v(e._s(t.symbol))]),t.name?a("span",{staticClass:"symbol-name-extra"},[e._v(e._s(t.name))]):e._e()],1)])}),a("a-select-option",{key:"__add_symbol_option__",staticClass:"add-symbol-option",attrs:{value:"__add_symbol_option__"}},[a("div",{staticStyle:{width:"100%","text-align":"center",padding:"4px 0",color:"#1890ff",cursor:"pointer"}},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"plus"}}),a("span",[e._v(e._s(e.$t("trading-assistant.form.addSymbol")))])],1)])],2),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.$t("trading-assistant.form.symbolListHint"))+" ")])],1),a("a-row",{attrs:{gutter:16}},[a("a-col",{attrs:{xs:24,sm:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.portfolioSize")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["portfolio_size",{initialValue:10,rules:[{required:!0,message:e.$t("trading-assistant.validation.portfolioSizeRequired")}]}],expression:"['portfolio_size', { initialValue: 10, rules: [{ required: true, message: $t('trading-assistant.validation.portfolioSizeRequired') }] }]"}],staticStyle:{width:"100%"},attrs:{min:1,max:100,step:1}}),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.$t("trading-assistant.form.portfolioSizeHint"))+" ")])],1)],1),a("a-col",{attrs:{xs:24,sm:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.longRatio")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["long_ratio",{initialValue:.5,rules:[{required:!0,message:e.$t("trading-assistant.validation.longRatioRequired")}]}],expression:"['long_ratio', { initialValue: 0.5, rules: [{ required: true, message: $t('trading-assistant.validation.longRatioRequired') }] }]"}],staticStyle:{width:"100%"},attrs:{min:0,max:1,step:.1,precision:2}}),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.$t("trading-assistant.form.longRatioHint"))+" ")])],1)],1)],1),a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.rebalanceFrequency")}},[a("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["rebalance_frequency",{initialValue:"daily"}],expression:"['rebalance_frequency', { initialValue: 'daily' }]"}],staticStyle:{width:"100%"}},[a("a-select-option",{attrs:{value:"daily"}},[e._v(e._s(e.$t("trading-assistant.form.rebalanceDaily")))]),a("a-select-option",{attrs:{value:"weekly"}},[e._v(e._s(e.$t("trading-assistant.form.rebalanceWeekly")))]),a("a-select-option",{attrs:{value:"monthly"}},[e._v(e._s(e.$t("trading-assistant.form.rebalanceMonthly")))])],1),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.$t("trading-assistant.form.rebalanceFrequencyHint"))+" ")])],1)]:e._e(),"cross_sectional"!==e.form.getFieldValue("cs_strategy_type")?a("a-form-item",{attrs:{label:e.isEditMode?e.$t("trading-assistant.form.symbol"):e.$t("trading-assistant.form.symbols")}},[e.isEditMode?a("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["symbol",{rules:[{required:!0,message:e.$t("trading-assistant.validation.symbolRequired")}]}],expression:"['symbol', { rules: [{ required: true, message: $t('trading-assistant.validation.symbolRequired') }] }]"}],attrs:{placeholder:e.$t("trading-assistant.placeholders.selectSymbol"),"show-search":"","filter-option":e.filterWatchlistOption,loading:e.loadingWatchlist,getPopupContainer:function(t){return t.parentNode}},on:{change:e.handleWatchlistSymbolChange}},[e._l(e.watchlist,function(t){return a("a-select-option",{key:"".concat(t.market,":").concat(t.symbol),attrs:{value:"".concat(t.market,":").concat(t.symbol)}},[a("div",{staticClass:"symbol-option"},[a("a-tag",{staticStyle:{"margin-right":"8px","margin-bottom":"0"},attrs:{color:e.getMarketColor(t.market)}},[e._v(" "+e._s(t.market)+" ")]),a("span",{staticClass:"symbol-name"},[e._v(e._s(t.symbol))]),t.name?a("span",{staticClass:"symbol-name-extra"},[e._v(e._s(t.name))]):e._e()],1)])}),a("a-select-option",{key:"__add_symbol_option__",staticClass:"add-symbol-option",attrs:{value:"__add_symbol_option__"}},[a("div",{staticStyle:{width:"100%","text-align":"center",padding:"4px 0",color:"#1890ff",cursor:"pointer"}},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"plus"}}),a("span",[e._v(e._s(e.$t("trading-assistant.form.addSymbol")))])],1)])],2):a("a-select",{attrs:{mode:"multiple",placeholder:e.$t("trading-assistant.placeholders.selectSymbols"),"show-search":"","filter-option":e.filterWatchlistOptionWithAdd,loading:e.loadingWatchlist,getPopupContainer:function(t){return t.parentNode},maxTagCount:3},on:{change:e.handleMultiSymbolChangeWithAdd},model:{value:e.selectedSymbols,callback:function(t){e.selectedSymbols=t},expression:"selectedSymbols"}},[e._l(e.watchlist,function(t){return a("a-select-option",{key:"".concat(t.market,":").concat(t.symbol),attrs:{value:"".concat(t.market,":").concat(t.symbol)}},[a("div",{staticClass:"symbol-option"},[a("a-tag",{staticStyle:{"margin-right":"8px","margin-bottom":"0"},attrs:{color:e.getMarketColor(t.market)}},[e._v(" "+e._s(t.market)+" ")]),a("span",{staticClass:"symbol-name"},[e._v(e._s(t.symbol))]),t.name?a("span",{staticClass:"symbol-name-extra"},[e._v(e._s(t.name))]):e._e()],1)])}),a("a-select-option",{key:"__add_symbol_option__",staticClass:"add-symbol-option",attrs:{value:"__add_symbol_option__"}},[a("div",{staticStyle:{width:"100%","text-align":"center",padding:"4px 0",color:"#1890ff",cursor:"pointer"}},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"plus"}}),a("span",[e._v(e._s(e.$t("trading-assistant.form.addSymbol")))])],1)])],2),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.isEditMode?e.$t("trading-assistant.form.symbolHintCrypto"):e.$t("trading-assistant.form.symbolsHint"))+" ")])],1):e._e(),a("div",{directives:[{name:"show",rawName:"v-show",value:e.isAdvancedMode||e.editingStrategy||e.showAdvancedSettings,expression:"isAdvancedMode || editingStrategy || showAdvancedSettings"}]},[a("a-row",{attrs:{gutter:16}},[a("a-col",{attrs:{xs:24,sm:24,md:12,lg:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.initialCapital")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["initial_capital",{rules:[{required:!0,message:e.$t("trading-assistant.validation.initialCapitalRequired")}],initialValue:1e3}],expression:"['initial_capital', { rules: [{ required: true, message: $t('trading-assistant.validation.initialCapitalRequired') }], initialValue: 1000 }]"}],staticStyle:{width:"100%"},attrs:{min:10,step:100,precision:2}})],1)],1),a("a-col",{attrs:{xs:24,sm:24,md:12,lg:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.marketType")}},[a("a-radio-group",{directives:[{name:"decorator",rawName:"v-decorator",value:["market_type",{initialValue:"swap"}],expression:"['market_type', { initialValue: 'swap' }]"}],on:{change:e.handleMarketTypeChange}},[a("a-radio",{attrs:{value:"swap"}},[e._v(e._s(e.$t("trading-assistant.form.marketTypeFutures")))]),a("a-radio",{attrs:{value:"spot"}},[e._v(e._s(e.$t("trading-assistant.form.marketTypeSpot")))])],1),a("div",{staticClass:"form-item-hint"},[e._v(" "+e._s(e.$t("trading-assistant.form.marketTypeHint"))+" ")])],1)],1)],1),a("a-row",{attrs:{gutter:16}},[a("a-col",{attrs:{xs:24,sm:24,md:12,lg:12}},[a("a-form-item",{attrs:{label:"".concat(e.$t("trading-assistant.form.leverage")," (x)")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["leverage",{initialValue:5,rules:[{required:!0,message:e.$t("trading-assistant.validation.leverageRequired")}]}],expression:"['leverage', { initialValue: 5, rules: [{ required: true, message: $t('trading-assistant.validation.leverageRequired') }] }]"}],staticStyle:{width:"100%"},attrs:{min:1,max:"spot"===e.form.getFieldValue("market_type")?1:125,step:1,disabled:"spot"===e.form.getFieldValue("market_type")}}),a("div",{staticClass:"form-item-hint"},["spot"===e.form.getFieldValue("market_type")?a("span",[e._v(" "+e._s(e.$t("trading-assistant.form.spotLeverageFixed"))+" ")]):a("span",[e._v(" "+e._s(e.$t("trading-assistant.form.leverageHint"))+" ")])])],1)],1),a("a-col",{attrs:{xs:24,sm:24,md:12,lg:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.tradeDirection")}},[a("a-radio-group",{directives:[{name:"decorator",rawName:"v-decorator",value:["trade_direction",{initialValue:"long"}],expression:"['trade_direction', { initialValue: 'long' }]"}],attrs:{disabled:"spot"===e.form.getFieldValue("market_type")}},[a("a-radio",{attrs:{value:"long"}},[e._v(e._s(e.$t("trading-assistant.form.tradeDirectionLong")))]),a("a-radio",{attrs:{value:"short",disabled:"spot"===e.form.getFieldValue("market_type")}},[e._v(" "+e._s(e.$t("trading-assistant.form.tradeDirectionShort"))+" ")]),a("a-radio",{attrs:{value:"both",disabled:"spot"===e.form.getFieldValue("market_type")}},[e._v(" "+e._s(e.$t("trading-assistant.form.tradeDirectionBoth"))+" ")])],1),"spot"===e.form.getFieldValue("market_type")?a("div",{staticClass:"form-item-hint",staticStyle:{color:"#ff9800"}},[e._v(" "+e._s(e.$t("trading-assistant.form.spotOnlyLongHint"))+" ")]):e._e()],1)],1)],1),a("a-row",{attrs:{gutter:16}},[a("a-col",{attrs:{xs:24,sm:24,md:12,lg:12}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.klinePeriod")}},[a("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["timeframe",{initialValue:"15m",rules:[{required:!0}]}],expression:"['timeframe', { initialValue: '15m', rules: [{ required: true }] }]"}],attrs:{placeholder:e.$t("trading-assistant.placeholders.selectKlinePeriod"),getPopupContainer:function(t){return t.parentNode}}},[a("a-select-option",{attrs:{value:"1m"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe1m")))]),a("a-select-option",{attrs:{value:"5m"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe5m")))]),a("a-select-option",{attrs:{value:"15m"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe15m")))]),a("a-select-option",{attrs:{value:"30m"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe30m")))]),a("a-select-option",{attrs:{value:"1H"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe1H")))]),a("a-select-option",{attrs:{value:"4H"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe4H")))]),a("a-select-option",{attrs:{value:"1D"}},[e._v(e._s(e.$t("trading-assistant.form.timeframe1D")))])],1)],1)],1),a("a-col",{attrs:{xs:24,sm:24,md:12,lg:12}})],1)],1)],2)],1):e._e()]),a("div",{directives:[{name:"show",rawName:"v-show",value:1===e.currentStep||e.isSimpleMode&&0===e.currentStep&&e.showAdvancedSettings,expression:"currentStep === 1 || (isSimpleMode && currentStep === 0 && showAdvancedSettings)"}],staticClass:"step-content"},["indicator"===e.strategyType?a("div",[a("a-form",{attrs:{form:e.form,layout:"vertical"}},[a("a-collapse",{staticStyle:{background:"#fafafa"},attrs:{bordered:!1},model:{value:e.backtestCollapseKeys,callback:function(t){e.backtestCollapseKeys=t},expression:"backtestCollapseKeys"}},[a("a-collapse-panel",{key:"risk",attrs:{header:e.$t("dashboard.indicator.backtest.panel.risk")}},[a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.stopLossPct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["stop_loss_pct",{initialValue:3}],expression:"['stop_loss_pct', { initialValue: 3 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:100,step:.01,precision:4}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.takeProfitPct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["take_profit_pct",{initialValue:6}],expression:"['take_profit_pct', { initialValue: 6 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:1e3,step:.01,precision:4}})],1)],1)],1),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trailingEnabled")}},[a("a-switch",{directives:[{name:"decorator",rawName:"v-decorator",value:["trailing_enabled",{valuePropName:"checked",initialValue:!1}],expression:"['trailing_enabled', { valuePropName: 'checked', initialValue: false }]"}],on:{change:e.onTrailingToggle}})],1)],1),a("a-col",{attrs:{span:12}})],1),e.trailingEnabledUi?[a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trailingStopPct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["trailing_stop_pct",{initialValue:0}],expression:"['trailing_stop_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:100,step:.01,precision:4}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trailingActivationPct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["trailing_activation_pct",{initialValue:0}],expression:"['trailing_activation_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:1e3,step:.01,precision:4}})],1)],1)],1)]:e._e()],2),a("a-collapse-panel",{key:"scale",attrs:{header:e.$t("dashboard.indicator.backtest.panel.scale")}},[a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trendAddEnabled")}},[a("a-switch",{directives:[{name:"decorator",rawName:"v-decorator",value:["trend_add_enabled",{valuePropName:"checked",initialValue:!1}],expression:"['trend_add_enabled', { valuePropName: 'checked', initialValue: false }]"}],on:{change:e.onTrendAddToggle}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.dcaAddEnabled")}},[a("a-switch",{directives:[{name:"decorator",rawName:"v-decorator",value:["dca_add_enabled",{valuePropName:"checked",initialValue:!1}],expression:"['dca_add_enabled', { valuePropName: 'checked', initialValue: false }]"}],on:{change:e.onDcaAddToggle}})],1)],1)],1),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trendAddStepPct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["trend_add_step_pct",{initialValue:0}],expression:"['trend_add_step_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:1e3,step:.01,precision:4},on:{change:e.onScaleParamsChange}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.dcaAddStepPct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["dca_add_step_pct",{initialValue:0}],expression:"['dca_add_step_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:1e3,step:.01,precision:4},on:{change:e.onScaleParamsChange}})],1)],1)],1),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trendAddSizePct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["trend_add_size_pct",{initialValue:0}],expression:"['trend_add_size_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:100,step:.1,precision:4},on:{change:e.onScaleParamsChange}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.dcaAddSizePct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["dca_add_size_pct",{initialValue:0}],expression:"['dca_add_size_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:100,step:.1,precision:4},on:{change:e.onScaleParamsChange}})],1)],1)],1),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trendAddMaxTimes")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["trend_add_max_times",{initialValue:0}],expression:"['trend_add_max_times', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:50,step:1,precision:0},on:{change:e.onScaleParamsChange}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.dcaAddMaxTimes")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["dca_add_max_times",{initialValue:0}],expression:"['dca_add_max_times', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:50,step:1,precision:0},on:{change:e.onScaleParamsChange}})],1)],1)],1)],1),a("a-collapse-panel",{key:"reduce",attrs:{header:e.$t("dashboard.indicator.backtest.panel.reduce")}},[a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trendReduceEnabled")}},[a("a-switch",{directives:[{name:"decorator",rawName:"v-decorator",value:["trend_reduce_enabled",{valuePropName:"checked",initialValue:!1}],expression:"['trend_reduce_enabled', { valuePropName: 'checked', initialValue: false }]"}]})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.adverseReduceEnabled")}},[a("a-switch",{directives:[{name:"decorator",rawName:"v-decorator",value:["adverse_reduce_enabled",{valuePropName:"checked",initialValue:!1}],expression:"['adverse_reduce_enabled', { valuePropName: 'checked', initialValue: false }]"}]})],1)],1)],1),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trendReduceStepPct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["trend_reduce_step_pct",{initialValue:0}],expression:"['trend_reduce_step_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:1e3,step:.01,precision:4}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.adverseReduceStepPct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["adverse_reduce_step_pct",{initialValue:0}],expression:"['adverse_reduce_step_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:1e3,step:.01,precision:4}})],1)],1)],1),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trendReduceSizePct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["trend_reduce_size_pct",{initialValue:0}],expression:"['trend_reduce_size_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:100,step:.1,precision:4}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.adverseReduceSizePct")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["adverse_reduce_size_pct",{initialValue:0}],expression:"['adverse_reduce_size_pct', { initialValue: 0 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:100,step:.1,precision:4}})],1)],1)],1),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.trendReduceMaxTimes")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["trend_reduce_max_times",{initialValue:0}],expression:"['trend_reduce_max_times', { initialValue: 0 }]"}],staticStyle:{width:"100%"},attrs:{min:0,max:50,step:1,precision:0}})],1)],1),a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.adverseReduceMaxTimes")}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["adverse_reduce_max_times",{initialValue:0}],expression:"['adverse_reduce_max_times', { initialValue: 0 }]"}],staticStyle:{width:"100%"},attrs:{min:0,max:50,step:1,precision:0}})],1)],1)],1)],1),a("a-collapse-panel",{key:"position",attrs:{header:e.$t("dashboard.indicator.backtest.panel.position")}},[a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:12}},[a("a-form-item",{attrs:{label:e.$t("dashboard.indicator.backtest.field.entryPct"),help:e.$t("dashboard.indicator.backtest.hint.entryPctMax",{maxPct:Number(e.entryPctMaxUi||0).toFixed(0)})}},[a("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["entry_pct",{initialValue:100}],expression:"['entry_pct', { initialValue: 100 }]"}],staticStyle:{width:"220px"},attrs:{min:0,max:e.entryPctMaxUi,step:.1,precision:4},on:{change:e.onEntryPctChange}})],1)],1),a("a-col",{attrs:{span:12}})],1)],1)],1),a("div",{staticClass:"ai-filter-box"},[a("div",{staticClass:"ai-filter-header"},[a("div",{staticClass:"ai-filter-title"},[a("a-icon",{attrs:{type:"robot"}}),a("span",[e._v(e._s(e.$t("trading-assistant.form.enableAiFilter")))])],1),a("a-switch",{attrs:{checked:e.aiFilterEnabledUi},on:{change:e.onAiFilterToggle}})],1),a("div",{staticClass:"ai-filter-hint"},[e._v(e._s(e.$t("trading-assistant.form.enableAiFilterHint")))])])],1)],1):e._e()]),a("div",{directives:[{name:"show",rawName:"v-show",value:2===e.currentStep,expression:"currentStep === 2"}],staticClass:"step-content"},[a("a-form",{attrs:{form:e.form,layout:"vertical",autocomplete:"off"}},[a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.executionMode")}},[a("a-radio-group",{directives:[{name:"decorator",rawName:"v-decorator",value:["execution_mode",{initialValue:"signal"}],expression:"['execution_mode', { initialValue: 'signal' }]"}],attrs:{disabled:!e.canUseLiveTrading},on:{change:e.onExecutionModeChange}},[a("a-radio",{attrs:{value:"signal"}},[e._v(e._s(e.$t("trading-assistant.form.executionModeSignal")))]),a("a-radio",{attrs:{value:"live",disabled:!e.canUseLiveTrading}},[e._v(e._s(e.$t("trading-assistant.form.executionModeLive")))])],1),e.canUseLiveTrading?e._e():a("div",{staticClass:"form-item-hint",staticStyle:{color:"#ff9800"}},[e._v(" "+e._s(e.$t("trading-assistant.form.liveTradingNotSupportedHint"))+" ")])],1),"live"===e.executionModeUi&&e.canUseLiveTrading?a("a-form-item",{staticClass:"live-disclaimer-item"},[a("a-alert",{staticStyle:{"margin-bottom":"8px"},attrs:{type:"warning",showIcon:"",message:e.$t("trading-assistant.liveDisclaimer.title"),description:e.$t("trading-assistant.liveDisclaimer.content")}}),a("a-checkbox",{directives:[{name:"decorator",rawName:"v-decorator",value:["live_disclaimer_ack",{valuePropName:"checked",initialValue:!1}],expression:"['live_disclaimer_ack', { valuePropName: 'checked', initialValue: false }]"}],on:{change:e.onLiveDisclaimerAckChange}},[e._v(" "+e._s(e.$t("trading-assistant.liveDisclaimer.agree"))+" ")])],1):e._e(),a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.notifyChannels")}},[a("a-checkbox-group",{directives:[{name:"decorator",rawName:"v-decorator",value:["notify_channels",{initialValue:["browser"]}],expression:"['notify_channels', { initialValue: ['browser'] }]"}],on:{change:e.onNotifyChannelsChange}},[a("a-checkbox",{attrs:{value:"browser"}},[e._v(e._s(e.$t("trading-assistant.notify.browser")))]),a("a-checkbox",{attrs:{value:"email"}},[e._v(e._s(e.$t("trading-assistant.notify.email")))]),a("a-checkbox",{attrs:{value:"telegram"}},[e._v(e._s(e.$t("trading-assistant.notify.telegram")))]),a("a-checkbox",{attrs:{value:"discord"}},[e._v(e._s(e.$t("trading-assistant.notify.discord")))]),a("a-checkbox",{attrs:{value:"webhook"}},[e._v(e._s(e.$t("trading-assistant.notify.webhook")))]),a("a-checkbox",{attrs:{value:"phone"}},[e._v(e._s(e.$t("trading-assistant.notify.phone")))])],1),a("div",{staticClass:"form-item-hint"},[e._v(e._s(e.$t("trading-assistant.form.notifyChannelsHint")))])],1),e.unconfiguredChannels.length>0?a("a-alert",{staticStyle:{"margin-bottom":"16px"},attrs:{type:"warning",showIcon:""},scopedSlots:e._u([{key:"message",fn:function(){return[a("span",[e._v(" "+e._s(e.$t("trading-assistant.form.notificationConfigMissing",{channels:e.unconfiguredChannels.join(", ")}))+" "),a("router-link",{staticStyle:{"margin-left":"8px"},attrs:{to:"/profile"}},[a("a-icon",{attrs:{type:"setting"}}),e._v(" "+e._s(e.$t("trading-assistant.form.goToProfile"))+" ")],1)],1)]},proxy:!0}],null,!1,2930252607)}):e.notifyChannelsUi.length>0&&!e.notifyChannelsUi.includes("browser")||e.notifyChannelsUi.length>1?a("a-alert",{staticStyle:{"margin-bottom":"16px"},attrs:{type:"info",showIcon:""},scopedSlots:e._u([{key:"message",fn:function(){return[a("span",[e._v(" "+e._s(e.$t("trading-assistant.form.notificationFromProfile"))+" "),a("router-link",{staticStyle:{"margin-left":"8px"},attrs:{to:"/profile"}},[a("a-icon",{attrs:{type:"setting"}}),e._v(" "+e._s(e.$t("trading-assistant.form.goToProfile"))+" ")],1)],1)]},proxy:!0}])}):e._e(),"live"===e.executionModeUi&&e.canUseLiveTrading?a("a-divider"):e._e(),"live"===e.executionModeUi&&e.canUseLiveTrading&&!e.liveDisclaimerAckUi?a("a-alert",{staticStyle:{"margin-bottom":"12px"},attrs:{type:"warning",showIcon:"",message:e.$t("trading-assistant.liveDisclaimer.blockTitle"),description:e.$t("trading-assistant.liveDisclaimer.blockDesc")}}):e._e(),"live"===e.executionModeUi&&e.canUseLiveTrading&&e.liveDisclaimerAckUi?a("div",[a("a-alert",{staticStyle:{"margin-bottom":"12px"},attrs:{type:"info","show-icon":"",message:e.$t("trading-assistant.form.liveTradingConfigTitle"),description:e.$t("trading-assistant.form.liveTradingConfigHint")}}),a("a-form-item",{attrs:{label:e.$t("trading-assistant.form.savedCredential")}},[a("a-select",{directives:[{name:"decorator",rawName:"v-decorator",value:["credential_id",{rules:[{required:!0,message:e.$t("profile.exchange.noCredentialHint")}],getValueFromEvent:function(t){return t||void 0}}],expression:"['credential_id', {\n rules: [{ required: true, message: $t('profile.exchange.noCredentialHint') }],\n getValueFromEvent: (val) => val || undefined\n }]"}],attrs:{placeholder:e.$t("trading-assistant.placeholders.selectSavedCredential"),"allow-clear":"","show-search":"","option-filter-prop":"children",loading:e.loadingExchangeCredentials},on:{change:e.handleCredentialSelectChange}},e._l(e.filteredExchangeCredentials,function(t){return a("a-select-option",{key:t.id,attrs:{value:t.id}},[e._v(" "+e._s(e.formatCredentialLabel(t))+" ")])}),1),a("div",{staticClass:"form-item-hint",staticStyle:{"margin-top":"6px"}},[a("router-link",{attrs:{to:"/profile?tab=exchange"}},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"setting"}}),e._v(e._s(e.$t("profile.exchange.goToManage"))+" ")],1)],1)],1)],1):e._e()],1)],1)])],1),a("template",{slot:"footer"},[a("a-button",{on:{click:e.handleCloseModal}},[e._v(e._s(e.$t("trading-assistant.form.cancel")))]),a("a-button",{directives:[{name:"show",rawName:"v-show",value:e.currentStep>0,expression:"currentStep > 0"}],on:{click:e.handlePrev}},[e._v(" "+e._s(e.$t("trading-assistant.form.prev"))+" ")]),a("a-button",{directives:[{name:"show",rawName:"v-show",value:e.currentStep<2,expression:"currentStep < 2"}],attrs:{type:"primary",loading:e.saving},on:{click:e.handleNext}},[e._v(" "+e._s(e.$t("trading-assistant.form.next"))+" ")]),a("a-button",{directives:[{name:"show",rawName:"v-show",value:2===e.currentStep,expression:"currentStep === 2"}],attrs:{type:"primary",loading:e.saving},on:{click:e.handleSubmit}},[e._v(" "+e._s(e.editingStrategy?e.$t("trading-assistant.form.confirmEdit"):e.$t("trading-assistant.form.confirmCreate"))+" ")])],1)],2),a("a-modal",{attrs:{title:e.$t("trading-assistant.form.addSymbolTitle"),visible:e.showAddSymbolModal,confirmLoading:e.addingSymbol,width:"600px",okText:e.$t("trading-assistant.form.confirmAdd"),cancelText:e.$t("trading-assistant.form.cancel"),maskClosable:!1,keyboard:!1},on:{ok:e.handleConfirmAddSymbol,cancel:e.handleCloseAddSymbolModal}},[a("div",{staticClass:"add-symbol-modal-content"},[a("a-tabs",{staticClass:"market-tabs",on:{change:e.handleAddSymbolMarketChange},model:{value:e.addSymbolMarket,callback:function(t){e.addSymbolMarket=t},expression:"addSymbolMarket"}},e._l(e.addSymbolMarketTypes,function(t){return a("a-tab-pane",{key:t.value,attrs:{tab:e.$t(t.i18nKey||"dashboard.analysis.market.".concat(t.value))}})}),1),a("div",{staticClass:"symbol-search-section"},[a("a-input-search",{attrs:{placeholder:e.$t("dashboard.analysis.modal.addStock.searchOrInputPlaceholder"),loading:e.searchingSymbol,size:"large","allow-clear":""},on:{search:e.handleSearchSymbol,change:e.handleSymbolSearchInputChange},model:{value:e.addSymbolKeyword,callback:function(t){e.addSymbolKeyword=t},expression:"addSymbolKeyword"}},[a("a-button",{attrs:{slot:"enterButton",type:"primary",icon:"search"},slot:"enterButton"},[e._v(" "+e._s(e.$t("dashboard.analysis.modal.addStock.search"))+" ")])],1)],1),e.symbolSearchResults.length>0?a("div",{staticClass:"search-results-section"},[a("div",{staticClass:"section-title"},[a("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"search"}}),e._v(" "+e._s(e.$t("dashboard.analysis.modal.addStock.searchResults"))+" ")],1),a("a-list",{staticClass:"symbol-list",attrs:{"data-source":e.symbolSearchResults,loading:e.searchingSymbol,size:"small"},scopedSlots:e._u([{key:"renderItem",fn:function(t){return a("a-list-item",{staticClass:"symbol-list-item",on:{click:function(a){return e.handleSelectAddSymbol(t)}}},[a("a-list-item-meta",[a("template",{slot:"title"},[a("div",{staticClass:"symbol-item-content"},[a("span",{staticClass:"symbol-code"},[e._v(e._s(t.symbol))]),a("span",{staticClass:"symbol-name"},[e._v(e._s(t.name))]),t.exchange?a("a-tag",{staticStyle:{"margin-left":"8px"},attrs:{size:"small",color:"blue"}},[e._v(" "+e._s(t.exchange)+" ")]):e._e()],1)])],2)],1)}}],null,!1,2801225082)})],1):e._e(),a("div",{staticClass:"hot-symbols-section"},[a("div",{staticClass:"section-title"},[a("a-icon",{staticStyle:{color:"#ff4d4f","margin-right":"4px"},attrs:{type:"fire"}}),e._v(" "+e._s(e.$t("dashboard.analysis.modal.addStock.hotSymbols"))+" ")],1),a("a-spin",{attrs:{spinning:e.loadingHotSymbols}},[e.hotSymbols.length>0?a("a-list",{staticClass:"symbol-list",attrs:{"data-source":e.hotSymbols,size:"small"},scopedSlots:e._u([{key:"renderItem",fn:function(t){return a("a-list-item",{staticClass:"symbol-list-item",on:{click:function(a){return e.handleSelectAddSymbol(t)}}},[a("a-list-item-meta",[a("template",{slot:"title"},[a("div",{staticClass:"symbol-item-content"},[a("span",{staticClass:"symbol-code"},[e._v(e._s(t.symbol))]),a("span",{staticClass:"symbol-name"},[e._v(e._s(t.name))]),t.exchange?a("a-tag",{staticStyle:{"margin-left":"8px"},attrs:{size:"small",color:"orange"}},[e._v(" "+e._s(t.exchange)+" ")]):e._e()],1)])],2)],1)}}],null,!1,3959834868)}):a("a-empty",{attrs:{description:e.$t("dashboard.analysis.modal.addStock.noHotSymbols"),image:!1}})],1)],1),e.selectedAddSymbol?a("div",{staticClass:"selected-symbol-section"},[a("div",{staticClass:"section-title"},[a("a-icon",{staticStyle:{color:"#52c41a","margin-right":"4px"},attrs:{type:"check-circle"}}),e._v(" "+e._s(e.$t("dashboard.analysis.modal.addStock.selectedSymbol"))+" ")],1),a("div",{staticClass:"selected-symbol-info"},[a("a-tag",{staticStyle:{"margin-right":"8px"},attrs:{color:e.getMarketColor(e.addSymbolMarket)}},[e._v(e._s(e.addSymbolMarket))]),a("span",{staticClass:"symbol-code"},[e._v(e._s(e.selectedAddSymbol.symbol))]),e.selectedAddSymbol.name?a("span",{staticClass:"symbol-name"},[e._v(e._s(e.selectedAddSymbol.name))]):e._e()],1)]):e._e()],1)])],1)},s=[],r=a(15863),n=a(44735),o=a(81127),l=a(56252),d=a(2403),c=a(57532),u=a(76338),m=a(36911),g=a(35038),p=a(42430),h=a(84841),_=a(55434),y=a(75769),f=function(){var t=this,e=t._self._c;return e("div",{staticClass:"trading-records"},[0!==t.records.length||t.loading?e("a-table",{attrs:{columns:t.columns,"data-source":t.records,loading:t.loading,pagination:{pageSize:10},size:"small",rowKey:"id",scroll:{x:800}},scopedSlots:t._u([{key:"type",fn:function(a){return[e("a-tag",{attrs:{color:t.getTradeTypeColor(a)}},[t._v(" "+t._s(t.getTradeTypeText(a))+" ")])]}},{key:"price",fn:function(e){return[t._v(" $"+t._s(parseFloat(e).toFixed(4))+" ")]}},{key:"amount",fn:function(e){return[t._v(" "+t._s(parseFloat(e).toFixed(4))+" ")]}},{key:"value",fn:function(e){return[t._v(" $"+t._s(parseFloat(e).toFixed(2))+" ")]}},{key:"profit",fn:function(a,i){return[e("span",{style:{color:a>0?"#52c41a":a<0?"#f5222d":"#666"}},[t._v(" "+t._s(t.formatProfit(a,i))+" ")])]}},{key:"commission",fn:function(e){return[t._v(" "+t._s(t.formatCommission(e))+" ")]}},{key:"time",fn:function(e,a){return[t._v(" "+t._s(t.formatTime(a.created_at||e))+" ")]}}])}):e("div",{staticClass:"empty-state"},[e("a-empty",{attrs:{description:t.$t("trading-assistant.table.noPositions")}})],1)],1)},v=[],b={name:"TradingRecords",props:{strategyId:{type:Number,required:!0},loading:{type:Boolean,default:!1}},computed:{columns:function(){return[{title:this.$t("trading-assistant.table.time"),dataIndex:"created_at",key:"created_at",width:180,scopedSlots:{customRender:"time"}},{title:this.$t("dashboard.indicator.backtest.tradeType"),dataIndex:"type",key:"type",width:140,scopedSlots:{customRender:"type"}},{title:this.$t("trading-assistant.table.price"),dataIndex:"price",key:"price",width:120,scopedSlots:{customRender:"price"}},{title:this.$t("trading-assistant.table.amount"),dataIndex:"amount",key:"amount",width:120,scopedSlots:{customRender:"amount"}},{title:this.$t("trading-assistant.table.value"),dataIndex:"value",key:"value",width:120,scopedSlots:{customRender:"value"}},{title:this.$t("dashboard.indicator.backtest.profit"),dataIndex:"profit",key:"profit",width:120,scopedSlots:{customRender:"profit"}},{title:this.$t("trading-assistant.table.commission"),dataIndex:"commission",key:"commission",width:100,scopedSlots:{customRender:"commission"}}]}},data:function(){return{records:[]}},watch:{strategyId:{handler:function(t){t&&this.loadRecords()},immediate:!0}},methods:{loadRecords:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.strategyId){e.n=1;break}return e.a(2);case 1:return e.p=1,e.n=2,(0,m.tq)(t.strategyId);case 2:a=e.v,1===a.code?t.records=(a.data.trades||[]).map(function(t){return(0,u.A)((0,u.A)({},t),{},{time:t.created_at||t.time})}):t.$message.error(a.msg||t.$t("trading-assistant.messages.loadTradesFailed")),e.n=4;break;case 3:e.p=3,e.v;case 4:return e.a(2)}},e,null,[[1,3]])}))()},formatTime:function(t){if(!t)return"--";try{var e;if("number"===typeof t){var a=t<1e12?1e3*t:t;e=new Date(a)}else{if("string"!==typeof t)return"--";if(/^\d+$/.test(t)){var i=parseInt(t,10),s=i<1e12?1e3*i:i;e=new Date(s)}else e=new Date(t)}if(isNaN(e.getTime()))return"--";var r=this.$i18n.locale||"zh-CN",n={"zh-CN":"zh-CN","zh-TW":"zh-TW","en-US":"en-US"};return e.toLocaleString(n[r]||"zh-CN",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1})}catch(o){return"--"}},getTradeTypeColor:function(t){var e={buy:"green",sell:"red",liquidation:"orange",open_long:"green",add_long:"cyan",close_long:"orange",close_long_stop:"red",close_long_profit:"lime",open_short:"red",add_short:"magenta",close_short:"blue",close_short_stop:"red",close_short_profit:"cyan"};return e[t]||"default"},getTradeTypeText:function(t){var e={buy:this.$t("dashboard.indicator.backtest.buy"),sell:this.$t("dashboard.indicator.backtest.sell"),liquidation:this.$t("dashboard.indicator.backtest.liquidation"),open_long:this.$t("dashboard.indicator.backtest.openLong"),add_long:this.$t("dashboard.indicator.backtest.addLong"),close_long:this.$t("dashboard.indicator.backtest.closeLong"),close_long_stop:this.$t("dashboard.indicator.backtest.closeLongStop"),close_long_profit:this.$t("dashboard.indicator.backtest.closeLongProfit"),open_short:this.$t("dashboard.indicator.backtest.openShort"),add_short:this.$t("dashboard.indicator.backtest.addShort"),close_short:this.$t("dashboard.indicator.backtest.closeShort"),close_short_stop:this.$t("dashboard.indicator.backtest.closeShortStop"),close_short_profit:this.$t("dashboard.indicator.backtest.closeShortProfit")};return e[t]||t},formatMoney:function(t){if(null===t||void 0===t)return"--";var e=t>=0?"+":"-";return"".concat(e,"$").concat(Math.abs(t).toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2}))},formatProfit:function(t,e){if(null===t||void 0===t)return"--";var a=parseFloat(t),i=["open_long","open_short","add_long","add_short"];return 0===a&&e&&i.includes(e.type)?"--":Math.abs(a)<1e-6?e&&i.includes(e.type)?"--":"$0.00":this.formatMoney(a)},formatCommission:function(t){if(null===t||void 0===t)return"--";var e=parseFloat(t);return isNaN(e)||Math.abs(e)<1e-6?"--":"$".concat(e.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:6}))}}},S=b,k=a(845),x=(0,k.A)(S,f,v,!1,null,"a5bdef7e",null),C=x.exports,w=function(){var t=this,e=t._self._c;return e("div",{staticClass:"position-records"},[0!==t.positions.length||t.loading?e("a-table",{attrs:{columns:t.columns,"data-source":t.positions,loading:t.loading,pagination:!1,size:"small",rowKey:"id",scroll:{x:800}},scopedSlots:t._u([{key:"symbol",fn:function(a,i){return[e("strong",[t._v(t._s(i.symbol||a))])]}},{key:"side",fn:function(a,i){return[e("a-tag",{attrs:{color:"long"===(i.side||a)?"green":"red"}},[t._v(" "+t._s("long"===(i.side||a)?t.$t("trading-assistant.table.long"):t.$t("trading-assistant.table.short"))+" ")])]}},{key:"entryPrice",fn:function(a,i){return[t.hasValidPrice(i.entry_price||a)?e("span",[t._v(" $"+t._s(parseFloat(i.entry_price||a).toFixed(4))+" ")]):e("span",[t._v("--")])]}},{key:"currentPrice",fn:function(e,a){return[t._v(" $"+t._s(parseFloat(a.current_price||e||0).toFixed(4))+" ")]}},{key:"size",fn:function(e,a){return[t._v(" "+t._s(parseFloat(a.size||e||0).toFixed(4))+" ")]}},{key:"unrealizedPnl",fn:function(a,i){return[e("span",{class:{profit:parseFloat(i.unrealized_pnl||a||0)>0,loss:parseFloat(i.unrealized_pnl||a||0)<0}},[t._v(" $"+t._s(parseFloat(i.unrealized_pnl||a||0).toFixed(2))+" ")])]}},{key:"pnlPercent",fn:function(a,i){return[e("span",{class:{profit:parseFloat(i.pnl_percent||a||0)>0,loss:parseFloat(i.pnl_percent||a||0)<0}},[t._v(" "+t._s(parseFloat(i.pnl_percent||a||0).toFixed(2))+"% ")])]}}])}):e("div",{staticClass:"empty-state"},[e("a-empty",{attrs:{description:t.$t("trading-assistant.table.noPositions")}})],1)],1)},$=[],A={name:"PositionRecords",props:{strategyId:{type:Number,required:!0},marketType:{type:String,default:"swap"},leverage:{type:[Number,String],default:1},loading:{type:Boolean,default:!1}},data:function(){return{positions:[]}},computed:{columns:function(){return[{title:this.$t("trading-assistant.table.symbol"),dataIndex:"symbol",key:"symbol",width:120,scopedSlots:{customRender:"symbol"}},{title:this.$t("trading-assistant.table.side"),dataIndex:"side",key:"side",width:80,scopedSlots:{customRender:"side"}},{title:this.$t("trading-assistant.table.size"),dataIndex:"size",key:"size",width:120,scopedSlots:{customRender:"size"}},{title:this.$t("trading-assistant.table.entryPrice"),dataIndex:"entry_price",key:"entry_price",width:120,scopedSlots:{customRender:"entryPrice"}},{title:this.$t("trading-assistant.table.currentPrice"),dataIndex:"current_price",key:"current_price",width:120,scopedSlots:{customRender:"currentPrice"}},{title:this.$t("trading-assistant.table.unrealizedPnl"),dataIndex:"unrealized_pnl",key:"unrealized_pnl",width:120,scopedSlots:{customRender:"unrealizedPnl"}},{title:this.$t("trading-assistant.table.pnlPercent"),dataIndex:"pnl_percent",key:"pnl_percent",width:100,scopedSlots:{customRender:"pnlPercent"}}]}},watch:{strategyId:{handler:function(t){t?(this.loadPositions(),this.startPolling()):this.stopPolling()},immediate:!0}},beforeDestroy:function(){this.stopPolling()},methods:{loadPositions:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a,i;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.strategyId){e.n=1;break}return e.a(2);case 1:return e.p=1,e.n=2,(0,m.oK)(t.strategyId);case 2:a=e.v,1===a.code?(i=a.data.positions||[],t.positions=i.map(function(e,a){var i=String(t.marketType||"swap").toLowerCase(),s=parseFloat(t.leverage);(!isFinite(s)||s<=0)&&(s=1),"spot"===i&&(s=1);var r=parseFloat(e.entry_price||e.entryPrice||0),n=parseFloat(e.size||"0")||0,o=parseFloat(e.unrealized_pnl||e.unrealizedPnl||"0")||0,l=parseFloat(e.pnl_percent||e.pnlPercent||"0")||0;r>0&&n>0?l=o/(r*n)*100*s:"spot"!==i&&(l*=s);var d={id:e.id||a,symbol:e.symbol||"",side:e.side||"long",size:n>0?n.toString():"0",entry_price:r>0?r.toString():"0",current_price:e.current_price||e.currentPrice||"0",unrealized_pnl:e.unrealized_pnl||e.unrealizedPnl||"0",pnl_percent:l,updated_at:e.updated_at||e.updatedAt||""};return d})):t.positions=[],e.n=4;break;case 3:e.p=3,e.v,t.positions=[];case 4:return e.a(2)}},e,null,[[1,3]])}))()},hasValidPrice:function(t){var e=parseFloat(t);return Number.isFinite(e)&&e>0},startPolling:function(){var t=this;this.stopPolling(),this.pollingTimer=setInterval(function(){t.loadPositions()},5e3)},stopPolling:function(){this.pollingTimer&&(clearInterval(this.pollingTimer),this.pollingTimer=null)}}},P=A,M=(0,k.A)(P,w,$,!1,null,"2abcf4f1",null),F=M.exports,T=["BTC/USDT","ETH/USDT","BNB/USDT","SOL/USDT","ADA/USDT","XRP/USDT","DOGE/USDT","DOT/USDT","MATIC/USDT","AVAX/USDT","LINK/USDT","UNI/USDT","LTC/USDT","ATOM/USDT","ETC/USDT"],V=[{value:"binance",labelKey:"binance"},{value:"okx",labelKey:"okx"},{value:"bitget",labelKey:"bitget"},{value:"bybit",labelKey:"bybit"},{value:"coinbaseexchange",labelKey:"coinbaseexchange"},{value:"kraken",labelKey:"kraken"},{value:"kucoin",labelKey:"kucoin"},{value:"gate",labelKey:"gate"},{value:"bitfinex",labelKey:"bitfinex"},{value:"deepcoin",labelKey:"deepcoin"}],I=[{value:"ibkr",labelKey:"ibkr",name:"Interactive Brokers"}],N=[{value:"mt5",labelKey:"mt5",name:"MetaTrader 5"}],U={name:"TradingAssistant",mixins:[_.t],components:{TradingRecords:C,PositionRecords:F},computed:{isAdvancedMode:function(){return"advanced"===this.creationMode},isSimpleMode:function(){return"simple"===this.creationMode},displayCurrentStep:function(){return this.isSimpleMode&&!this.editingStrategy?0===this.currentStep?0:1:this.currentStep},isDarkTheme:function(){return"dark"===this.navTheme||"realdark"===this.navTheme},needsPassphrase:function(){return["okx","okex","coinbaseexchange","kucoin","bitget","deepcoin"].includes(this.currentExchangeId)},isIBKRMarket:function(){return"USStock"===this.selectedMarketCategory},isMT5Market:function(){return"Forex"===this.selectedMarketCategory},isBrokerMarket:function(){return this.isIBKRMarket||this.isMT5Market},filteredExchangeCredentials:function(){var t=this;return this.exchangeCredentials&&Array.isArray(this.exchangeCredentials)?this.exchangeCredentials.filter(function(e){return t.isCredentialCompatible(e)}):[]},formattedExchangeOptions:function(){var t=this;return V.map(function(e){var a="";try{if(e.labelKey){var i="trading-assistant.exchangeNames.".concat(e.labelKey),s=t.$t(i);s!==i&&(a=s)}}catch(r){}return a||(a=e.value.charAt(0).toUpperCase()+e.value.slice(1)),(0,u.A)((0,u.A)({},e),{},{displayName:a})})},totalPnl:function(){return null!==this.currentEquity&&this.selectedStrategy&&this.selectedStrategy.initial_capital?this.currentEquity-(this.selectedStrategy.initial_capital||0):null},totalPnlPercent:function(){return null!==this.totalPnl&&this.selectedStrategy&&this.selectedStrategy.initial_capital?0===this.selectedStrategy.initial_capital?0:this.totalPnl/this.selectedStrategy.initial_capital*100:null},getEquityColorClass:function(){return null===this.totalPnl?"":this.totalPnl>=0?"text-success":"text-danger"},getPnlColorClass:function(){return null===this.totalPnl?"":this.totalPnl>=0?"text-success":"text-danger"},isCryptoMarket:function(){var t=this.selectedMarketCategory||"Crypto";return"crypto"===String(t).toLowerCase()},canUseLiveTrading:function(){var t=this.selectedMarketCategory||"Crypto";return"crypto"===String(t).toLowerCase()||("USStock"===t||"Forex"===t)},isLiveTradingAvailable:function(){var t=this.selectedMarketCategory||"Crypto",e=this.currentExchangeId||"";return"crypto"===String(t).toLowerCase()?["binance","okx","bitget","bybit","coinbaseexchange","kraken","kucoin","gate","bitfinex"].includes(e):"USStock"===t?"ibkr"===this.currentBrokerId:"Forex"===t&&"mt5"===this.currentBrokerId},showDemoTradingSwitch:function(){return this.currentExchangeId&&"binance"===this.currentExchangeId.toLowerCase()},brokerOptions:function(){var t=this;return I.map(function(e){var a="";try{var i="trading-assistant.brokerNames.".concat(e.labelKey),s=t.$t(i);s!==i&&(a=s)}catch(r){}return a||(a=e.name||e.value.toUpperCase()),(0,u.A)((0,u.A)({},e),{},{displayName:a})})},forexBrokerOptions:function(){var t=this;return N.map(function(e){var a="";try{var i="trading-assistant.brokerNames.".concat(e.labelKey),s=t.$t(i);s!==i&&(a=s)}catch(r){}return a||(a=e.name||e.value.toUpperCase()),(0,u.A)((0,u.A)({},e),{},{displayName:a})})},cryptoExchangeOptions:function(){var t=this;return V.map(function(e){var a="";try{if(e.labelKey){var i="trading-assistant.exchangeNames.".concat(e.labelKey),s=t.$t(i);s!==i&&(a=s)}}catch(r){}return a||(a=e.value.charAt(0).toUpperCase()+e.value.slice(1)),(0,u.A)((0,u.A)({},e),{},{displayName:a})})},groupedStrategies:function(){return"symbol"===this.groupByMode?this.groupedBySymbol:this.groupedByStrategy},groupedByStrategy:function(){var t,e={},a=[],i=(0,c.A)(this.strategies);try{for(i.s();!(t=i.n()).done;){var s=t.value,r=s.strategy_group_id;r&&r.trim()?(e[r]||(e[r]={id:r,baseName:s.group_base_name||s.strategy_name.split("-")[0],strategies:[],runningCount:0,stoppedCount:0}),e[r].strategies.push(s),"running"===s.status?e[r].runningCount++:e[r].stoppedCount++):a.push(s)}}catch(o){i.e(o)}finally{i.f()}var n=Object.values(e).sort(function(t,e){var a=Math.max.apply(Math,(0,d.A)(t.strategies.map(function(t){return t.created_at||0}))),i=Math.max.apply(Math,(0,d.A)(e.strategies.map(function(t){return t.created_at||0})));return i-a});return{groups:n,ungrouped:a}},groupedBySymbol:function(){var t,e={},a=[],i=(0,c.A)(this.strategies);try{for(i.s();!(t=i.n()).done;){var s=t.value,r=s.trading_config||{},n=r.symbol;if(n&&n.trim()){e[n]||(e[n]={id:"symbol_".concat(n),baseName:n,strategies:[],runningCount:0,stoppedCount:0});var o=(0,u.A)((0,u.A)({},s),{},{displayInfo:{strategyName:s.strategy_name||s.group_base_name||"Unnamed",timeframe:r.timeframe||"-",indicatorName:s.indicator_name||s.indicator_config&&s.indicator_config.name||"-"}});e[n].strategies.push(o),"running"===s.status?e[n].runningCount++:e[n].stoppedCount++}else a.push(s)}}catch(d){i.e(d)}finally{i.f()}var l=Object.values(e).sort(function(t,e){return t.baseName.localeCompare(e.baseName)});return{groups:l,ungrouped:a}},unconfiguredChannels:function(){var t=[];return this.notifyChannelsUi.includes("telegram")&&(this.userNotificationSettings.telegram_bot_token||this.userNotificationSettings.telegram_chat_id||t.push("Telegram")),this.notifyChannelsUi.includes("email")&&(this.userNotificationSettings.email||t.push("Email")),this.notifyChannelsUi.includes("discord")&&(this.userNotificationSettings.discord_webhook||t.push("Discord")),this.notifyChannelsUi.includes("webhook")&&(this.userNotificationSettings.webhook_url||t.push("Webhook")),t}},data:function(){return{loading:!1,loadingRecords:!1,strategies:[],selectedStrategy:null,showFormModal:!1,creationMode:"simple",showAdvancedSettings:!1,strategyType:"indicator",selectedMarketCategory:"Crypto",currentStep:0,saving:!1,loadingIndicators:!1,availableIndicators:[],selectedIndicator:null,indicatorParams:[],indicatorParamValues:{},cryptoSymbols:T,loadingWatchlist:!1,watchlist:[],exchangeOptions:V,currentExchangeId:"",currentBrokerId:"ibkr",connectionTestResult:null,indicatorsLoaded:!1,editingStrategy:null,currentEquity:null,equityPollingTimer:null,backtestCollapseKeys:["risk"],trailingEnabledUi:!1,entryPctMaxUi:100,aiFilterEnabledUi:!1,isEditMode:!1,supportedIPs:[],executionModeUi:"signal",liveDisclaimerAckUi:!1,notifyChannelsUi:["browser"],userNotificationSettings:{default_channels:["browser"],telegram_bot_token:"",telegram_chat_id:"",email:"",phone:"",discord_webhook:"",webhook_url:"",webhook_token:""},loadingExchangeCredentials:!1,exchangeCredentials:[],saveCredentialUi:!1,suppressApiClearOnce:!1,selectedSymbols:[],crossSectionalSymbols:[],collapsedGroups:{},groupByMode:"strategy",showAddSymbolModal:!1,addSymbolMarket:"Crypto",addSymbolMarketTypes:[{value:"Crypto",i18nKey:"dashboard.analysis.market.Crypto"},{value:"USStock",i18nKey:"dashboard.analysis.market.USStock"},{value:"Forex",i18nKey:"dashboard.analysis.market.Forex"},{value:"Futures",i18nKey:"dashboard.analysis.market.Futures"}],addSymbolKeyword:"",searchingSymbol:!1,symbolSearchResults:[],selectedAddSymbol:null,hasSearchedSymbol:!1,addingSymbol:!1,hotSymbols:[],loadingHotSymbols:!1,searchTimer:null}},beforeCreate:function(){this.form=this.$form.createForm(this)},mounted:function(){this.loadStrategies(),this.loadUserNotificationSettings()},beforeDestroy:function(){this.stopEquityPolling()},methods:{loadUserNotificationSettings:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.p=0,e.n=1,(0,h.vF)();case 1:a=e.v,1===a.code&&a.data&&(t.userNotificationSettings={default_channels:a.data.default_channels||["browser"],telegram_bot_token:a.data.telegram_bot_token||"",telegram_chat_id:a.data.telegram_chat_id||"",email:a.data.email||"",phone:a.data.phone||"",discord_webhook:a.data.discord_webhook||"",webhook_url:a.data.webhook_url||"",webhook_token:a.data.webhook_token||""}),e.n=3;break;case 2:e.p=2,e.v;case 3:return e.a(2)}},e,null,[[0,2]])}))()},loadWatchlist:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return t.loadingWatchlist=!0,e.p=1,e.n=2,(0,g.Qo)({userid:1});case 2:a=e.v,a&&1===a.code?t.watchlist=Array.isArray(a.data)?a.data:[]:t.watchlist=[],e.n=4;break;case 3:e.p=3,e.v,t.watchlist=[];case 4:return e.p=4,t.loadingWatchlist=!1,e.f(4);case 5:return e.a(2)}},e,null,[[1,3,4,5]])}))()},handleCloseAddSymbolModal:function(){this.showAddSymbolModal=!1,this.addSymbolKeyword="",this.symbolSearchResults=[],this.selectedAddSymbol=null,this.hasSearchedSymbol=!1},handleAddSymbolMarketChange:function(t){this.addSymbolMarket=t,this.addSymbolKeyword="",this.symbolSearchResults=[],this.selectedAddSymbol=null,this.hasSearchedSymbol=!1,this.loadHotSymbols(t)},handleSymbolSearchInputChange:function(t){var e=this,a=t.target.value;if(this.addSymbolKeyword=a,this.searchTimer&&clearTimeout(this.searchTimer),!a||""===a.trim())return this.symbolSearchResults=[],this.hasSearchedSymbol=!1,void(this.selectedAddSymbol=null);this.searchTimer=setTimeout(function(){e.searchSymbolsInModal(a)},500)},handleSearchSymbol:function(t){var e=this;return(0,l.A)((0,o.A)().m(function a(){return(0,o.A)().w(function(a){while(1)switch(a.n){case 0:if(t&&t.trim()){a.n=1;break}return a.a(2);case 1:if(e.addSymbolMarket){a.n=2;break}return e.$message.warning(e.$t("dashboard.analysis.modal.addStock.pleaseSelectMarket")),a.a(2);case 2:if(!(e.symbolSearchResults.length>0)){a.n=3;break}return a.a(2);case 3:e.hasSearchedSymbol&&0===e.symbolSearchResults.length?e.handleDirectAdd():e.searchSymbolsInModal(t);case 4:return a.a(2)}},a)}))()},searchSymbolsInModal:function(t){var e=this;return(0,l.A)((0,o.A)().m(function a(){var i;return(0,o.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(t&&""!==t.trim()){a.n=1;break}return e.symbolSearchResults=[],e.hasSearchedSymbol=!1,a.a(2);case 1:if(e.addSymbolMarket){a.n=2;break}return a.a(2);case 2:return e.searchingSymbol=!0,e.hasSearchedSymbol=!0,a.p=3,a.n=4,(0,g._3)({market:e.addSymbolMarket,keyword:t.trim()});case 4:i=a.v,i&&1===i.code&&Array.isArray(i.data)?e.symbolSearchResults=i.data:e.symbolSearchResults=[],a.n=6;break;case 5:a.p=5,a.v,e.symbolSearchResults=[];case 6:return a.p=6,e.searchingSymbol=!1,a.f(6);case 7:return a.a(2)}},a,null,[[3,5,6,7]])}))()},handleDirectAdd:function(){this.addSymbolKeyword&&this.addSymbolKeyword.trim()?this.addSymbolMarket?this.selectedAddSymbol={market:this.addSymbolMarket,symbol:this.addSymbolKeyword.trim().toUpperCase(),name:""}:this.$message.warning(this.$t("dashboard.analysis.modal.addStock.pleaseSelectMarket")):this.$message.warning(this.$t("dashboard.analysis.modal.addStock.pleaseEnterSymbol"))},handleSelectAddSymbol:function(t){this.selectedAddSymbol={market:this.addSymbolMarket,symbol:t.symbol,name:t.name||""}},loadHotSymbols:function(t){var e=this;return(0,l.A)((0,o.A)().m(function a(){var i;return(0,o.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(t||(t=e.addSymbolMarket||"Crypto"),t){a.n=1;break}return a.a(2);case 1:return e.loadingHotSymbols=!0,a.p=2,a.n=3,(0,g.z6)({market:t,limit:10});case 3:i=a.v,i&&1===i.code&&i.data?e.hotSymbols=i.data:e.hotSymbols=[],a.n=5;break;case 4:a.p=4,a.v,e.hotSymbols=[];case 5:return a.p=5,e.loadingHotSymbols=!1,a.f(5);case 6:return a.a(2)}},a,null,[[2,4,5,6]])}))()},handleConfirmAddSymbol:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a,i,s,r,n,l,c;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(a="",i="",!t.selectedAddSymbol){e.n=1;break}a=t.selectedAddSymbol.market,i=t.selectedAddSymbol.symbol.toUpperCase(),e.n=4;break;case 1:if(!t.addSymbolKeyword||!t.addSymbolKeyword.trim()){e.n=3;break}if(t.addSymbolMarket){e.n=2;break}return t.$message.warning(t.$t("dashboard.analysis.modal.addStock.pleaseSelectMarket")),e.a(2);case 2:a=t.addSymbolMarket,i=t.addSymbolKeyword.trim().toUpperCase(),e.n=4;break;case 3:return t.$message.warning(t.$t("dashboard.analysis.modal.addStock.pleaseSelectOrEnterSymbol")),e.a(2);case 4:return t.addingSymbol=!0,e.p=5,e.n=6,(0,g.dp)({userid:1,market:a,symbol:i});case 6:if(s=e.v,!s||1!==s.code){e.n=8;break}return t.$message.success(t.$t("dashboard.analysis.message.addStockSuccess")),e.n=7,t.loadWatchlist();case 7:r="".concat(a,":").concat(i),t.isEditMode?(t.form.setFieldsValue({symbol:r}),t.handleWatchlistSymbolChange(r)):(t.selectedSymbols.includes(r)||(t.selectedSymbols=[].concat((0,d.A)(t.selectedSymbols),[r])),t.handleMultiSymbolChange(t.selectedSymbols)),t.handleCloseAddSymbolModal(),e.n=9;break;case 8:t.$message.error((null===s||void 0===s?void 0:s.msg)||t.$t("dashboard.analysis.message.addStockFailed"));case 9:e.n=11;break;case 10:e.p=10,c=e.v,l=(null===c||void 0===c||null===(n=c.response)||void 0===n||null===(n=n.data)||void 0===n?void 0:n.msg)||(null===c||void 0===c?void 0:c.message)||t.$t("dashboard.analysis.message.addStockFailed"),t.$message.error(l);case 11:return e.p=11,t.addingSymbol=!1,e.f(11);case 12:return e.a(2)}},e,null,[[5,10,11,12]])}))()},filterWatchlistOption:function(t,e){var a,i=(null===(a=e.componentOptions)||void 0===a||null===(a=a.propsData)||void 0===a?void 0:a.value)||"";return"__add_symbol_option__"===i||String(i).toLowerCase().includes(String(t||"").toLowerCase())},filterWatchlistOptionWithAdd:function(t,e){var a,i=(null===(a=e.componentOptions)||void 0===a||null===(a=a.propsData)||void 0===a?void 0:a.value)||"";return"__add_symbol_option__"===i||String(i).toLowerCase().includes(String(t||"").toLowerCase())},handleMultiSymbolChangeWithAdd:function(t){if(t&&t.includes("__add_symbol_option__"))return this.selectedSymbols=t.filter(function(t){return"__add_symbol_option__"!==t}),this.showAddSymbolModal=!0,void this.loadHotSymbols(this.addSymbolMarket);this.handleMultiSymbolChange(t)},handleStrategyTypeChange:function(t){var e=t.target.value;"single"===e&&(this.crossSectionalSymbols=[])},handleCrossSectionalSymbolChange:function(t){if(t&&t.includes("__add_symbol_option__"))return this.crossSectionalSymbols=t.filter(function(t){return"__add_symbol_option__"!==t}),this.showAddSymbolModal=!0,void this.loadHotSymbols(this.addSymbolMarket);if(this.crossSectionalSymbols=t||[],t&&t.length>0){var e=t[0];if("string"===typeof e&&e.includes(":")){var a=e.indexOf(":"),i=e.slice(0,a);this.selectedMarketCategory=i||"Crypto"}}},getMarketColor:function(t){var e={USStock:"green",Crypto:"purple",Forex:"gold",Futures:"cyan"};return e[t]||"default"},handleWatchlistSymbolChange:function(t){var e=this;if("__add_symbol_option__"===t)return this.$nextTick(function(){e.form.setFieldsValue({symbol:void 0})}),this.showAddSymbolModal=!0,void this.loadHotSymbols(this.addSymbolMarket);if(t&&"string"===typeof t&&t.includes(":")){var a=t.indexOf(":"),i=t.slice(0,a);if(this.selectedMarketCategory=i||"Crypto","Forex"===this.selectedMarketCategory){this.currentBrokerId="mt5";try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({forex_broker_id:"mt5"})}catch(r){}}else if("USStock"===this.selectedMarketCategory){this.currentBrokerId="ibkr";try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({broker_id:"ibkr"})}catch(r){}}var s=["Crypto","USStock","Forex"].includes(this.selectedMarketCategory);if(!s){this.executionModeUi="signal";try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({execution_mode:"signal"})}catch(r){}}this.currentExchangeId="";try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({exchange_id:void 0})}catch(r){}}},handleMultiSymbolChange:function(t){if(this.selectedSymbols=t||[],t&&t.length>0){var e=t[0];if("string"===typeof e&&e.includes(":")){var a=e.indexOf(":"),i=e.slice(0,a);this.selectedMarketCategory=i||"Crypto"}}if("Forex"===this.selectedMarketCategory){this.currentBrokerId="mt5";try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({forex_broker_id:"mt5"})}catch(r){}}else if("USStock"===this.selectedMarketCategory){this.currentBrokerId="ibkr";try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({broker_id:"ibkr"})}catch(r){}}var s=["Crypto","USStock","Forex"].includes(this.selectedMarketCategory);if(!s){this.executionModeUi="signal";try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({execution_mode:"signal"})}catch(r){}}this.currentExchangeId="";try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({exchange_id:void 0})}catch(r){}},loadExchangeCredentials:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return t.loadingExchangeCredentials=!0,e.p=1,e.n=2,(0,p.IA)({user_id:1});case 2:a=e.v,a&&1===a.code?t.exchangeCredentials=a.data&&a.data.items||[]:(t.exchangeCredentials=[],t.$message.warning((null===a||void 0===a?void 0:a.msg)||t.$t("trading-assistant.messages.loadFailed"))),e.n=4;break;case 3:e.p=3,e.v,t.exchangeCredentials=[],t.$message.warning(t.$t("trading-assistant.exchange.testFailed"));case 4:return e.p=4,t.loadingExchangeCredentials=!1,e.f(4);case 5:return e.a(2)}},e,null,[[1,3,4,5]])}))()},formatCredentialLabel:function(t){if(!t)return"";var e=(t.name||"").trim(),a=t.exchange_id||"",i=t.api_key_hint||"";return e?"".concat(a.toUpperCase()," - ").concat(e," (").concat(i,")"):"".concat(a.toUpperCase()," (").concat(i,")")},isCredentialCompatible:function(t){if(!t||!t.exchange_id)return!0;var e=(t.exchange_id||"").toLowerCase(),a=this.selectedMarketCategory||"Crypto";if("mt5"===e)return"Forex"===a;if("ibkr"===e)return"USStock"===a;var i=["binance","okx","bitget","bybit","coinbaseexchange","kraken","kucoin","gate","bitfinex","deepcoin"];return!i.includes(e)||"Crypto"===a},handleCredentialSelectChange:function(t){var e=this;return(0,l.A)((0,o.A)().m(function a(){var i,s,r;return(0,o.A)().w(function(a){while(1)switch(a.n){case 0:if(t){a.n=1;break}return e.currentExchangeId="",e.connectionTestResult=null,a.a(2);case 1:if(i=e.exchangeCredentials.find(function(e){return String(e.id)===String(t)}),!i){a.n=5;break}if(s=(i.exchange_id||"").toLowerCase(),"mt5"!==s||"Forex"===e.selectedMarketCategory){a.n=2;break}e.$message.error(e.$t("trading-assistant.validation.mt5OnlyForForex"));try{e.form&&e.form.setFieldsValue&&e.form.setFieldsValue({credential_id:void 0})}catch(n){}return e.currentExchangeId="",e.connectionTestResult=null,a.a(2);case 2:if("ibkr"!==s||"USStock"===e.selectedMarketCategory){a.n=3;break}e.$message.error(e.$t("trading-assistant.validation.ibkrOnlyForUSStock"));try{e.form&&e.form.setFieldsValue&&e.form.setFieldsValue({credential_id:void 0})}catch(n){}return e.currentExchangeId="",e.connectionTestResult=null,a.a(2);case 3:if(r=["binance","okx","bitget","bybit","coinbaseexchange","kraken","kucoin","gate","bitfinex"],!r.includes(s)||"Crypto"===e.selectedMarketCategory){a.n=4;break}e.$message.error(e.$t("trading-assistant.validation.cryptoExchangeOnlyForCrypto"));try{e.form&&e.form.setFieldsValue&&e.form.setFieldsValue({credential_id:void 0})}catch(n){}return e.currentExchangeId="",e.connectionTestResult=null,a.a(2);case 4:e.currentExchangeId=i.exchange_id||"";case 5:e.connectionTestResult=null;case 6:return a.a(2)}},a)}))()},onSaveCredentialChange:function(t){var e=!!(t&&t.target&&t.target.checked);this.saveCredentialUi=e;try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({save_credential:e})}catch(a){}},onExecutionModeChange:function(t){var e=t&&t.target?t.target.value:t;this.executionModeUi=e||"signal",this.liveDisclaimerAckUi=!1;try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({live_disclaimer_ack:!1})}catch(a){}if(!this.canUseLiveTrading&&"signal"!==this.executionModeUi){this.executionModeUi="signal";try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({execution_mode:"signal"})}catch(a){}}},onLiveDisclaimerAckChange:function(t){var e=!!(t&&t.target&&t.target.checked);this.liveDisclaimerAckUi=e;try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({live_disclaimer_ack:e})}catch(a){}},onNotifyChannelsChange:function(t){this.notifyChannelsUi=Array.isArray(t)?t:[]},formatCurrency:function(t){return null===t||void 0===t?"-":"$"+t.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})},formatPnl:function(t){if(null===t||void 0===t)return"-";var e=t>=0?"+":"";return e+"$"+Math.abs(t).toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})},formatPnlPercent:function(t){if(null===t||void 0===t)return"-";var e=t>=0?"+":"";return e+Math.abs(t).toFixed(2)+"%"},loadStrategies:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a,i,s;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return t.loading=!0,e.p=1,e.n=2,(0,m.EM)();case 2:a=e.v,1===a.code?(i=a.data.strategies||[],t.strategies=i,t.selectedStrategy&&(s=t.strategies.find(function(e){return e.id===t.selectedStrategy.id}),t.selectedStrategy=s||null)):t.$message.error(a.msg||t.$t("trading-assistant.messages.loadFailed")),e.n=4;break;case 3:e.p=3,e.v,t.$message.error(t.$t("trading-assistant.messages.loadFailed"));case 4:return e.p=4,t.loading=!1,e.f(4);case 5:return e.a(2)}},e,null,[[1,3,4,5]])}))()},handleCreateStrategy:function(){var t=this;this.isEditMode=!1,this.editingStrategy=null,this.strategyType="indicator",this.currentStep=0,this.currentExchangeId="",this.currentBrokerId="ibkr",this.selectedIndicator=null,this.connectionTestResult=null,this.executionModeUi="signal",this.notifyChannelsUi=["browser"],this.saveCredentialUi=!1,this.backtestCollapseKeys=["risk"],this.trailingEnabledUi=!1,this.entryPctMaxUi=100,this.aiFilterEnabledUi=!1,this.selectedMarketCategory="Crypto",this.selectedSymbols=[],this.showAdvancedSettings=!1,this.form.resetFields(),this.form.setFieldsValue({execution_mode:"signal",notify_channels:["browser"],save_credential:!1,live_disclaimer_ack:!1}),this.liveDisclaimerAckUi=!1,this.showFormModal=!0,this.$nextTick(function(){t.loadWatchlist(),t.loadIndicators(),t.loadExchangeCredentials()})},handleEditStrategy:function(t){var e=this;"running"!==t.status?(this.strategyType="indicator",this.isEditMode=!0,this.editingStrategy=t,this.currentStep=0,this.currentExchangeId="",this.selectedIndicator=null,this.connectionTestResult=null,this.form.resetFields(),this.backtestCollapseKeys=["risk"],this.trailingEnabledUi=!1,this.entryPctMaxUi=100,this.aiFilterEnabledUi=!1,this.showFormModal=!0,this.$nextTick((0,l.A)((0,o.A)().m(function a(){return(0,o.A)().w(function(a){while(1)switch(a.n){case 0:return e.loadWatchlist(),e.loadIndicators(),e.loadExchangeCredentials(),a.n=1,e.loadStrategyDataToForm(t);case 1:return a.a(2)}},a)})))):this.$message.warning(this.$t("trading-assistant.messages.runningWarning"))},loadStrategyDataToForm:function(t){var e=this;return(0,l.A)((0,o.A)().m(function a(){var i,s,r,l,d,c,u,m,g,p,h,_,y,f,v,b,S,k,x,C,w,$,A,P,M,F,T,V,I,N,U,E,z,D,R,K,q,L,B,O,H,W;return(0,o.A)().w(function(a){while(1)switch(a.n){case 0:if(e.indicatorsLoaded){a.n=1;break}return a.n=1,e.loadIndicators();case 1:return a.n=2,e.$nextTick();case 2:return e.selectedMarketCategory=t.market_category||"Crypto",c=t.execution_mode||"signal",e.executionModeUi=c,e.liveDisclaimerAckUi="live"===c,u=t.notification_config&&t.notification_config.channels||["browser"],e.notifyChannelsUi=Array.isArray(u)?u:["browser"],m=!1,g=!1,t.trading_config&&(f=t.trading_config||{},v=f.trailing&&"object"===(0,n.A)(f.trailing)?f.trailing:null,m=void 0!==f.trailing_enabled?!!f.trailing_enabled:!(!v||!v.enabled),b=f.enable_ai_filter,g=!0===b||"true"===b||1===b||"1"===b,S=f.scale&&"object"===(0,n.A)(f.scale)?f.scale:null,k=f.position&&"object"===(0,n.A)(f.position)?f.position:null,x=new Set(["risk"]),(f.trend_add_enabled||f.dca_add_enabled||S&&(null!==(p=S.trendAdd)&&void 0!==p&&p.enabled||null!==(h=S.dcaAdd)&&void 0!==h&&h.enabled))&&x.add("scale"),(f.trend_reduce_enabled||f.adverse_reduce_enabled||S&&(null!==(_=S.trendReduce)&&void 0!==_&&_.enabled||null!==(y=S.adverseReduce)&&void 0!==y&&y.enabled))&&x.add("reduce"),(void 0!==f.entry_pct||k&&void 0!==k.entryPct)&&x.add("position"),e.backtestCollapseKeys=Array.from(x)),e.trailingEnabledUi=m,e.aiFilterEnabledUi=g,a.n=3,e.$nextTick();case 3:return e.form.setFieldsValue({enable_ai_filter:g}),a.n=4,e.$nextTick();case 4:if(e.form.setFieldsValue({execution_mode:e.executionModeUi,live_disclaimer_ack:e.liveDisclaimerAckUi,notify_channels:e.notifyChannelsUi,notify_email:(null===(i=t.notification_config)||void 0===i||null===(i=i.targets)||void 0===i?void 0:i.email)||"",notify_phone:(null===(s=t.notification_config)||void 0===s||null===(s=s.targets)||void 0===s?void 0:s.phone)||"",notify_telegram:(null===(r=t.notification_config)||void 0===r||null===(r=r.targets)||void 0===r?void 0:r.telegram)||"",notify_discord:(null===(l=t.notification_config)||void 0===l||null===(l=l.targets)||void 0===l?void 0:l.discord)||"",notify_webhook:(null===(d=t.notification_config)||void 0===d||null===(d=d.targets)||void 0===d?void 0:d.webhook)||""}),!t.indicator_config||!t.indicator_config.indicator_id){a.n=7;break}if(C=t.indicator_config.indicator_id,w=e.availableIndicators.find(function(t){return String(t.id)===String(C)}),!w){a.n=6;break}return A=String(w.id),e.form.setFieldsValue({indicator_id:A}),a.n=5,e.handleIndicatorChange(A);case 5:P=null===($=t.trading_config)||void 0===$?void 0:$.indicator_params,P&&"object"===(0,n.A)(P)&&Object.keys(P).forEach(function(t){t in e.indicatorParamValues&&e.$set(e.indicatorParamValues,t,P[t])}),a.n=7;break;case 6:e.form.setFieldsValue({indicator_id:String(C)});case 7:if(!t.exchange_config){a.n=11;break}if(M=t.exchange_config.exchange_id||"",F="live"===e.executionModeUi,T=["Crypto","USStock","Forex"].includes(e.selectedMarketCategory),V="USStock"===e.selectedMarketCategory,I="Forex"===e.selectedMarketCategory,!F||!T){a.n=10;break}if(!V){a.n=8;break}e.currentBrokerId=M||"ibkr",e.form.setFieldsValue({broker_id:M||"ibkr",ibkr_host:t.exchange_config.ibkr_host||"127.0.0.1",ibkr_port:t.exchange_config.ibkr_port||7497,ibkr_client_id:t.exchange_config.ibkr_client_id||1,ibkr_account:t.exchange_config.ibkr_account||""}),a.n=10;break;case 8:if(!I){a.n=9;break}e.currentBrokerId=M||"mt5",e.form.setFieldsValue({forex_broker_id:M||"mt5",mt5_server:t.exchange_config.mt5_server||"",mt5_login:t.exchange_config.mt5_login||"",mt5_password:t.exchange_config.mt5_password||"",mt5_terminal_path:t.exchange_config.mt5_terminal_path||""}),a.n=10;break;case 9:if(e.currentExchangeId=M||t.exchange_config.exchange_id||"",N=t.exchange_config.credential_id,!N){a.n=10;break}return e.form.setFieldsValue({credential_id:N}),a.n=10,e.handleCredentialSelectChange(N);case 10:V||I?e.currentBrokerId=M||(I?"mt5":"ibkr"):e.currentExchangeId=M;case 11:if(t.trading_config){if(U=t.trading_config||{},E=U.trailing&&"object"===(0,n.A)(U.trailing)?U.trailing:null,z=U.scale&&"object"===(0,n.A)(U.scale)?U.scale:null,D=U.position&&"object"===(0,n.A)(U.position)?U.position:null,R=U.strategy_type||t.strategy_type||"single","cross_sectional"===R)if(e.form.setFieldsValue({cs_strategy_type:"cross_sectional",portfolio_size:U.portfolio_size||10,long_ratio:U.long_ratio||.5,rebalance_frequency:U.rebalance_frequency||"daily"}),U.symbol_list&&Array.isArray(U.symbol_list))e.crossSectionalSymbols=U.symbol_list;else if(t.symbol_list)try{K="string"===typeof t.symbol_list?JSON.parse(t.symbol_list):t.symbol_list,Array.isArray(K)&&(e.crossSectionalSymbols=K)}catch(o){e.crossSectionalSymbols=[]}else e.crossSectionalSymbols=[];else e.form.setFieldsValue({cs_strategy_type:"single"}),e.crossSectionalSymbols=[];q=z&&z.trendAdd?z.trendAdd:null,L=z&&z.dcaAdd?z.dcaAdd:null,B=z&&z.trendReduce?z.trendReduce:null,O=z&&z.adverseReduce?z.adverseReduce:null,H=U.symbol,W="string"===typeof H&&H.includes(":")?H:"".concat(e.selectedMarketCategory,":").concat(H),e.form.setFieldsValue({strategy_name:t.strategy_name,symbol:W,initial_capital:U.initial_capital,leverage:U.leverage,trade_direction:U.trade_direction||"long",timeframe:U.timeframe||"1H",market_type:"futures"===U.market_type?"swap":U.market_type||"swap",take_profit_pct:U.take_profit_pct||0,stop_loss_pct:U.stop_loss_pct||0,trailing_enabled:m,trailing_stop_pct:void 0!==U.trailing_stop_pct?U.trailing_stop_pct||0:E&&E.pct||0,trailing_activation_pct:void 0!==U.trailing_activation_pct?U.trailing_activation_pct||0:E&&E.activationPct||0,trend_add_enabled:void 0!==U.trend_add_enabled?!!U.trend_add_enabled:!(!q||!q.enabled),trend_add_step_pct:void 0!==U.trend_add_step_pct?U.trend_add_step_pct||0:q&&q.stepPct||0,trend_add_size_pct:void 0!==U.trend_add_size_pct?U.trend_add_size_pct||0:q&&q.sizePct||0,trend_add_max_times:void 0!==U.trend_add_max_times?U.trend_add_max_times||0:q&&q.maxTimes||0,dca_add_enabled:void 0!==U.dca_add_enabled?!!U.dca_add_enabled:!(!L||!L.enabled),dca_add_step_pct:void 0!==U.dca_add_step_pct?U.dca_add_step_pct||0:L&&L.stepPct||0,dca_add_size_pct:void 0!==U.dca_add_size_pct?U.dca_add_size_pct||0:L&&L.sizePct||0,dca_add_max_times:void 0!==U.dca_add_max_times?U.dca_add_max_times||0:L&&L.maxTimes||0,trend_reduce_enabled:void 0!==U.trend_reduce_enabled?!!U.trend_reduce_enabled:!(!B||!B.enabled),trend_reduce_step_pct:void 0!==U.trend_reduce_step_pct?U.trend_reduce_step_pct||0:B&&B.stepPct||0,trend_reduce_size_pct:void 0!==U.trend_reduce_size_pct?U.trend_reduce_size_pct||0:B&&B.sizePct||0,trend_reduce_max_times:void 0!==U.trend_reduce_max_times?U.trend_reduce_max_times||0:B&&B.maxTimes||0,adverse_reduce_enabled:void 0!==U.adverse_reduce_enabled?!!U.adverse_reduce_enabled:!(!O||!O.enabled),adverse_reduce_step_pct:void 0!==U.adverse_reduce_step_pct?U.adverse_reduce_step_pct||0:O&&O.stepPct||0,adverse_reduce_size_pct:void 0!==U.adverse_reduce_size_pct?U.adverse_reduce_size_pct||0:O&&O.sizePct||0,adverse_reduce_max_times:void 0!==U.adverse_reduce_max_times?U.adverse_reduce_max_times||0:O&&O.maxTimes||0,entry_pct:0===U.entry_pct||U.entry_pct?U.entry_pct:D&&D.entryPct?D.entryPct:100,enable_ai_filter:g}),e.$nextTick(function(){e.recalcEntryPctMaxUi(),e.normalizeEntryPct()})}case 12:return a.a(2)}},a)}))()},handleSelectStrategy:function(t){this.selectedStrategy=t,this.currentEquity=null,this.loadStrategyDetails(),this.startEquityPolling()},loadStrategyDetails:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a,i,s,n,l,d,u,g,p,h,_,y,f;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.selectedStrategy){e.n=1;break}return e.a(2,Promise.resolve());case 1:return e.p=1,e.n=2,Promise.all([(0,m.Yx)(t.selectedStrategy.id),(0,m.oK)(t.selectedStrategy.id)]);case 2:if(a=e.v,i=(0,r.A)(a,2),s=i[0],n=i[1],l=null,1===s.code&&s.data&&(Array.isArray(s.data)&&s.data.length>0?(d=s.data[s.data.length-1],l=d.equity):(g=(null===(u=t.selectedStrategy.trading_config)||void 0===u?void 0:u.initial_capital)||t.selectedStrategy.initial_capital,l=g||null)),p=0,1===n.code&&n.data){h=n.data.positions||n.data.items||[],_=(0,c.A)(h);try{for(_.s();!(y=_.n()).done;)f=y.value,p+=parseFloat(f.unrealized_pnl||f.unrealizedPnl||0)}catch(o){_.e(o)}finally{_.f()}}t.currentEquity=null!==l?l+p:null,e.n=4;break;case 3:e.p=3,e.v;case 4:return e.a(2)}},e,null,[[1,3]])}))()},startEquityPolling:function(){var t=this;this.stopEquityPolling(),this.selectedStrategy&&(this.loadStrategyDetails(),this.equityPollingTimer=setInterval(function(){t.loadStrategyDetails()},1e4))},stopEquityPolling:function(){this.equityPollingTimer&&(clearInterval(this.equityPollingTimer),this.equityPollingTimer=null)},handleCloseModal:function(){this.showFormModal=!1,this.editingStrategy=null,this.isEditMode=!1,this.strategyType="indicator",this.currentStep=0,this.currentExchangeId="",this.selectedIndicator=null,this.connectionTestResult=null,this.indicatorsLoaded=!1,this.availableIndicators=[],this.backtestCollapseKeys=["risk"],this.trailingEnabledUi=!1,this.entryPctMaxUi=100,this.aiFilterEnabledUi=!1,this.showAdvancedSettings=!1,this.executionModeUi="signal",this.liveDisclaimerAckUi=!1,this.form.resetFields()},handleRefresh:function(){this.loadStrategies(),this.showFormModal=!1},handleMenuClick:function(t,e){switch(t){case"start":this.handleStartStrategy(e.id);break;case"stop":this.handleStopStrategy(e.id);break;case"edit":this.handleEditStrategy(e);break;case"delete":this.handleDeleteStrategy(e);break}},toggleGroup:function(t){this.$set(this.collapsedGroups,t,!this.collapsedGroups[t])},handleGroupMenuClick:function(t,e){var a=this;return(0,l.A)((0,o.A)().m(function i(){var s,r;return(0,o.A)().w(function(i){while(1)switch(i.n){case 0:s=e.strategies.map(function(t){return t.id}),r=t,i.n="startAll"===r?1:"stopAll"===r?3:"deleteAll"===r?5:7;break;case 1:return i.n=2,a.handleBatchStartStrategies(s,e.baseName);case 2:return i.a(3,7);case 3:return i.n=4,a.handleBatchStopStrategies(s,e.baseName);case 4:return i.a(3,7);case 5:return i.n=6,a.handleBatchDeleteStrategies(s,e.baseName);case 6:return i.a(3,7);case 7:return i.a(2)}},i)}))()},handleBatchStartStrategies:function(t,e){var a=this;return(0,l.A)((0,o.A)().m(function e(){var i,s,r;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.p=0,e.n=1,(0,m.UH)({strategy_ids:t});case 1:i=e.v,1===i.code?(r=(null===(s=i.data)||void 0===s||null===(s=s.success_ids)||void 0===s?void 0:s.length)||t.length,a.$message.success(a.$t("trading-assistant.messages.batchStartSuccess",{count:r})),a.loadStrategies()):a.$message.error(i.msg||a.$t("trading-assistant.messages.batchStartFailed")),e.n=3;break;case 2:e.p=2,e.v,a.$message.error(a.$t("trading-assistant.messages.batchStartFailed"));case 3:return e.a(2)}},e,null,[[0,2]])}))()},handleBatchStopStrategies:function(t,e){var a=this;return(0,l.A)((0,o.A)().m(function e(){var i,s,r;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.p=0,e.n=1,(0,m.GF)({strategy_ids:t});case 1:i=e.v,1===i.code?(r=(null===(s=i.data)||void 0===s||null===(s=s.success_ids)||void 0===s?void 0:s.length)||t.length,a.$message.success(a.$t("trading-assistant.messages.batchStopSuccess",{count:r})),a.loadStrategies()):a.$message.error(i.msg||a.$t("trading-assistant.messages.batchStopFailed")),e.n=3;break;case 2:e.p=2,e.v,a.$message.error(a.$t("trading-assistant.messages.batchStopFailed"));case 3:return e.a(2)}},e,null,[[0,2]])}))()},handleBatchDeleteStrategies:function(t,e){var a=this;return(0,l.A)((0,o.A)().m(function i(){var s;return(0,o.A)().w(function(i){while(1)switch(i.n){case 0:s=a.$t("trading-assistant.messages.batchDeleteConfirm",{count:t.length,name:e}),a.$confirm({title:a.$t("trading-assistant.deleteAll"),content:s,okText:a.$t("trading-assistant.deleteAll"),okType:"danger",cancelText:a.$t("trading-assistant.form.cancel"),onOk:function(){var e=(0,l.A)((0,o.A)().m(function e(){var i,s,r;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.p=0,e.n=1,(0,m.xQ)({strategy_ids:t});case 1:i=e.v,1===i.code?(r=(null===(s=i.data)||void 0===s||null===(s=s.success_ids)||void 0===s?void 0:s.length)||t.length,a.$message.success(a.$t("trading-assistant.messages.batchDeleteSuccess",{count:r})),a.selectedStrategy&&t.includes(a.selectedStrategy.id)&&(a.selectedStrategy=null,a.stopEquityPolling()),a.loadStrategies()):a.$message.error(i.msg||a.$t("trading-assistant.messages.batchDeleteFailed")),e.n=3;break;case 2:e.p=2,e.v,a.$message.error(a.$t("trading-assistant.messages.batchDeleteFailed"));case 3:return e.a(2)}},e,null,[[0,2]])}));function i(){return e.apply(this,arguments)}return i}()});case 1:return i.a(2)}},i)}))()},handleStartStrategy:function(t){var e=this;return(0,l.A)((0,o.A)().m(function a(){var i;return(0,o.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return a.p=0,a.n=1,(0,m.mV)(t);case 1:i=a.v,1===i.code?(e.$message.success(e.$t("trading-assistant.messages.startSuccess")),e.loadStrategies(),e.selectedStrategy&&e.selectedStrategy.id===t&&(e.selectedStrategy.status="running")):e.$message.error(i.msg||e.$t("trading-assistant.messages.startFailed")),a.n=3;break;case 2:a.p=2,a.v,e.$message.error(e.$t("trading-assistant.messages.startFailed"));case 3:return a.a(2)}},a,null,[[0,2]])}))()},handleStopStrategy:function(t){var e=this;return(0,l.A)((0,o.A)().m(function a(){var i;return(0,o.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return a.p=0,a.n=1,(0,m.Ke)(t);case 1:i=a.v,1===i.code?(e.$message.success(e.$t("trading-assistant.messages.stopSuccess")),e.loadStrategies(),e.selectedStrategy&&e.selectedStrategy.id===t&&(e.selectedStrategy.status="stopped")):e.$message.error(i.msg||e.$t("trading-assistant.messages.stopFailed")),a.n=3;break;case 2:a.p=2,a.v,e.$message.error(e.$t("trading-assistant.messages.stopFailed"));case 3:return a.a(2)}},a,null,[[0,2]])}))()},handleDeleteStrategy:function(t){var e=this,a=this.$t("trading-assistant.messages.deleteConfirmWithName",{name:t.strategy_name});this.$confirm({title:this.$t("trading-assistant.deleteStrategy"),content:a,okText:this.$t("trading-assistant.deleteStrategy"),okType:"danger",cancelText:this.$t("trading-assistant.form.cancel"),onOk:function(){var a=(0,l.A)((0,o.A)().m(function a(){var i;return(0,o.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return a.p=0,a.n=1,(0,m.v_)(t.id);case 1:i=a.v,1===i.code?(e.$message.success(e.$t("trading-assistant.messages.deleteSuccess")),e.selectedStrategy&&e.selectedStrategy.id===t.id&&(e.selectedStrategy=null,e.stopEquityPolling()),e.loadStrategies()):e.$message.error(i.msg||e.$t("trading-assistant.messages.deleteFailed")),a.n=3;break;case 2:a.p=2,a.v,e.$message.error(e.$t("trading-assistant.messages.deleteFailed"));case 3:return a.a(2)}},a,null,[[0,2]])}));function i(){return a.apply(this,arguments)}return i}()})},getStatusColor:function(t){var e={running:"green",stopped:"default",error:"red"};return e[t]||"default"},getStatusText:function(t){return this.$t("trading-assistant.status.".concat(t))||t},getStrategyTypeText:function(t){return this.$t("trading-assistant.strategyType.".concat(t))||t},getTradeDirectionText:function(t){if(!t)return"";var e={long:this.$t("trading-assistant.form.tradeDirectionLong")||"做多",short:this.$t("trading-assistant.form.tradeDirectionShort")||"做空",both:this.$t("trading-assistant.form.tradeDirectionBoth")||"双向"};return e[t]||t},handleIndicatorSelectFocus:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){return(0,o.A)().w(function(e){while(1)switch(e.n){case 0:if(t.indicatorsLoaded||t.loadingIndicators){e.n=1;break}return e.n=1,t.loadIndicators();case 1:return e.a(2)}},e)}))()},loadIndicators:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){var a,i,s,r;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(!t.loadingIndicators){e.n=1;break}return e.a(2,new Promise(function(e){var a=setInterval(function(){t.loadingIndicators||(clearInterval(a),e())},100)}));case 1:if(!t.indicatorsLoaded){e.n=2;break}return e.a(2,Promise.resolve());case 2:return a=t.$store.getters.userInfo||{},i=a.id||1,t.loadingIndicators=!0,e.p=3,e.n=4,(0,y.Ay)({url:"/api/indicator/getIndicators",method:"get",params:{userid:i}});case 4:s=e.v,1===s.code&&s.data?(r=s.data.map(function(t){return{id:t.id,name:t.name,description:t.description,type:t.indicator_type||t.indicatorType||"python",code:t.code,is_buy:t.is_buy,source:1===t.is_buy?"bought":"custom"}}),t.availableIndicators=r,t.indicatorsLoaded=!0):(t.availableIndicators=[],t.$message.warning(s.msg||t.$t("trading-assistant.messages.loadIndicatorsFailed"))),e.n=6;break;case 5:e.p=5,e.v,t.availableIndicators=[],t.$message.warning(t.$t("trading-assistant.messages.loadIndicatorsFailed"));case 6:return e.p=6,t.loadingIndicators=!1,e.f(6);case 7:return e.a(2)}},e,null,[[3,5,6,7]])}))()},handleIndicatorChange:function(t){var e=this;return(0,l.A)((0,o.A)().m(function a(){var i,s,r;return(0,o.A)().w(function(a){while(1)switch(a.p=a.n){case 0:if(i=String(t),e.selectedIndicator=e.availableIndicators.find(function(t){return String(t.id)===i}),e.indicatorParams=[],e.indicatorParamValues={},!t){a.n=4;break}return a.p=1,a.n=2,e.$http.get("/api/indicator/getIndicatorParams",{params:{indicator_id:t}});case 2:s=a.v,s&&1===s.code&&Array.isArray(s.data)&&(e.indicatorParams=s.data,r={},s.data.forEach(function(t){r[t.name]=t.default}),e.indicatorParamValues=r),a.n=4;break;case 3:a.p=3,a.v;case 4:return a.a(2)}},a,null,[[1,3]])}))()},handleMarketTypeChange:function(t){var e=t.target.value;"spot"===e&&this.form.setFieldsValue({trade_direction:"long",leverage:1})},recalcEntryPctMaxUi:function(){if(this.form){var t=!!this.form.getFieldValue("trend_add_enabled"),e=!!this.form.getFieldValue("dca_add_enabled"),a=Number(this.form.getFieldValue("trend_add_max_times")||0),i=Number(this.form.getFieldValue("dca_add_max_times")||0),s=Number(this.form.getFieldValue("trend_add_size_pct")||0),r=Number(this.form.getFieldValue("dca_add_size_pct")||0),n=(t?a*s:0)+(e?i*r:0),o=Math.max(0,Math.min(100,100-n));this.entryPctMaxUi=o}else this.entryPctMaxUi=100},normalizeEntryPct:function(){if(this.form){var t=Number(this.form.getFieldValue("entry_pct")||0),e=Number(this.entryPctMaxUi||100);t>e&&this.form.setFieldsValue({entry_pct:e})}},onTrendAddToggle:function(t){var e=this;this.form&&(t&&this.form.setFieldsValue({dca_add_enabled:!1}),this.$nextTick(function(){e.recalcEntryPctMaxUi(),e.normalizeEntryPct()}))},onDcaAddToggle:function(t){var e=this;this.form&&(t&&this.form.setFieldsValue({trend_add_enabled:!1}),this.$nextTick(function(){e.recalcEntryPctMaxUi(),e.normalizeEntryPct()}))},onScaleParamsChange:function(){var t=this;this.$nextTick(function(){t.recalcEntryPctMaxUi(),t.normalizeEntryPct()})},onEntryPctChange:function(){var t=this;this.$nextTick(function(){return t.normalizeEntryPct()})},onTrailingToggle:function(t){this.form&&(this.trailingEnabledUi=!!t,t||this.form.setFieldsValue({trailing_stop_pct:0,trailing_activation_pct:0}))},onAiFilterToggle:function(t){this.aiFilterEnabledUi=!!t;try{this.form&&this.form.setFieldsValue&&this.form.setFieldsValue({enable_ai_filter:!!t})}catch(e){}},filterIndicatorOption:function(t,e){var a=e.componentOptions.children[0].children[0].text;return a.toLowerCase().indexOf(t.toLowerCase())>=0},filterSymbolOption:function(t,e){return e.componentOptions.children[0].text.toLowerCase().indexOf(t.toLowerCase())>=0},getIndicatorTypeColor:function(t){var e={trend:"blue",momentum:"green",volatility:"orange",volume:"purple",custom:"default"};return e[t]||"default"},getIndicatorTypeName:function(t){return this.$t("trading-assistant.indicatorType.".concat(t))||t},getExchangeName:function(t){if(t.labelKey){var e="trading-assistant.exchangeNames.".concat(t.labelKey),a=this.$t(e);return a===e?t.value.charAt(0).toUpperCase()+t.value.slice(1):a}return t.label||t.value},getExchangeDisplayName:function(t){if(!t)return"";var e=this.exchangeOptions.find(function(e){return e.value===t});return e?this.getExchangeName(e):t.charAt(0).toUpperCase()+t.slice(1)},getExchangeTagColor:function(t){var e={binance:"gold",okx:"blue",coinbaseexchange:"cyan",kraken:"purple",bitfinex:"geekblue",huobi:"orange",gate:"green",mexc:"lime",kucoin:"volcano",bybit:"red",bitget:"magenta",bitmex:"red",deribit:"blue",phemex:"cyan",bitmart:"geekblue",bitstamp:"purple",bittrex:"orange",poloniex:"green",gemini:"lime",cryptocom:"volcano",blockchaincom:"magenta",bitflyer:"red",upbit:"blue",bithumb:"cyan",coinone:"purple",zb:"geekblue",lbank:"orange",bibox:"green",bigone:"lime",bitrue:"volcano",coinex:"magenta",ftx:"red",ftxus:"blue",binanceus:"gold",binancecoinm:"gold",binanceusdm:"gold",ibkr:"green"};return e[t]||"default"},handleApiConfigChange:function(){this.connectionTestResult=null},getModalPopupContainer:function(){return window.document.body},handleBrokerSelectChange:function(t){this.currentBrokerId=t||"ibkr",this.connectionTestResult=null},handleForexBrokerSelectChange:function(t){this.currentBrokerId=t||"mt5",this.connectionTestResult=null},handleExchangeSelectChange:function(t){var e=this;this.currentExchangeId=t||"",this.connectionTestResult=null,this.suppressApiClearOnce?this.suppressApiClearOnce=!1:this.$nextTick(function(){var t={api_key:void 0,secret_key:void 0,passphrase:void 0,enable_demo_trading:!1};setTimeout(function(){e.form.setFieldsValue(t)},100)})},getPlaceholder:function(t){var e={okx:{api_key:"请输入API Key",secret_key:"请输入Secret Key",passphrase:"请输入Passphrase(创建API时设置)"},okex:{api_key:"请输入API Key",secret_key:"请输入Secret Key",passphrase:"请输入Passphrase(创建API时设置)"},binance:{api_key:"请输入API Key",secret_key:"请输入Secret Key"},coinbaseexchange:{api_key:"请输入API Key(或Key Name)",secret_key:"请输入API Secret(或Private Key)",passphrase:"请输入Passphrase(Legacy Pro API需要)"},kucoin:{api_key:"请输入API Key",secret_key:"请输入Secret Key",passphrase:"请输入Passphrase"},gate:{api_key:"请输入API Key",secret_key:"请输入Secret Key"},mexc:{api_key:"请输入Access Key",secret_key:"请输入Secret Key"},kraken:{api_key:"请输入API Key",secret_key:"请输入Secret Key"},bitfinex:{api_key:"请输入API Key",secret_key:"请输入Secret Key"},bybit:{api_key:"请输入API Key",secret_key:"请输入Secret Key"},bitget:{api_key:"请输入API Key",secret_key:"请输入Secret Key",passphrase:"请输入Passphrase(Legacy Pro API需要)"}},a=e[this.currentExchangeId]||{};if(a[t])return a[t];var i={api_key:this.$t("trading-assistant.placeholders.inputApiKey"),secret_key:this.$t("trading-assistant.placeholders.inputSecretKey"),passphrase:this.$t("trading-assistant.placeholders.inputPassphrase")};return i[t]||this.$t("trading-assistant.placeholders.inputApiKey")},handleNext:function(){var t=this;if(0===this.currentStep){var e=["indicator_id","strategy_name"];(this.isAdvancedMode||this.editingStrategy)&&e.push("initial_capital","market_type","leverage","trade_direction","timeframe"),this.isEditMode&&e.push("symbol"),this.form.validateFields(e,function(e,a){if(!e){if(!t.isEditMode){var i=t.form.getFieldValue("cs_strategy_type")||"single";if("cross_sectional"===i){if(!t.crossSectionalSymbols||0===t.crossSectionalSymbols.length)return void t.$message.warning(t.$t("trading-assistant.validation.symbolsRequired"))}else if(!t.selectedSymbols||0===t.selectedSymbols.length)return void t.$message.warning(t.$t("trading-assistant.validation.symbolsRequired"))}try{var s=a&&a.market_type||t.form.getFieldValue("market_type");"spot"===s&&t.form.setFieldsValue({leverage:1,trade_direction:"long"})}catch(r){}t.backtestCollapseKeys=["risk"];try{t.trailingEnabledUi=!!t.form.getFieldValue("trailing_enabled")}catch(r){t.trailingEnabledUi=!1}t.$nextTick(function(){t.recalcEntryPctMaxUi(),t.normalizeEntryPct()}),t.isSimpleMode&&!t.editingStrategy?t.currentStep=2:t.currentStep++}})}else if(1===this.currentStep){try{var a=this.form.getFieldValue("execution_mode")||"signal";this.executionModeUi=a;var i=this.form.getFieldValue("notify_channels")||["browser"];this.notifyChannelsUi=Array.isArray(i)?i:["browser"]}catch(s){}this.currentStep++}},handlePrev:function(){this.currentStep>0&&(this.isSimpleMode&&!this.editingStrategy&&2===this.currentStep?this.currentStep=0:this.currentStep--)},handleSubmit:function(){var t=this;return(0,l.A)((0,o.A)().m(function e(){return(0,o.A)().w(function(e){while(1)switch(e.n){case 0:t.form.validateFields(function(){var e=(0,l.A)((0,o.A)().m(function e(a,i){var s,r,n,l,d,c,u,g,p,h,_,y,f,v,b,S,k;return(0,o.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(a){e.n=14;break}if(e.p=1,t.saving=!0,s=t.canUseLiveTrading&&"live"===i.execution_mode,!s||i.live_disclaimer_ack){e.n=2;break}return t.$message.warning(t.$t("trading-assistant.liveDisclaimer.required")),t.saving=!1,e.a(2);case 2:if(!s){e.n=3;break}if(r=i.credential_id,r){e.n=3;break}return t.$message.warning(t.$t("trading-assistant.validation.credentialRequired")),t.saving=!1,e.a(2);case 3:if(n={channels:i.notify_channels||[],targets:{email:t.userNotificationSettings.email||"",phone:t.userNotificationSettings.phone||"",telegram:t.userNotificationSettings.telegram_chat_id||"",telegram_bot_token:t.userNotificationSettings.telegram_bot_token||"",discord:t.userNotificationSettings.discord_webhook||"",webhook:t.userNotificationSettings.webhook_url||"",webhook_token:t.userNotificationSettings.webhook_token||""}},n.channels&&0!==n.channels.length){e.n=4;break}return t.$message.warning(t.$t("trading-assistant.validation.notifyChannelRequired")),t.saving=!1,e.a(2);case 4:if(l=String(i.indicator_id),d=t.availableIndicators.find(function(t){return String(t.id)===l}),d){e.n=5;break}return t.$message.error(t.$t("trading-assistant.validation.indicatorRequired")),t.saving=!1,e.a(2);case 5:if(c=!!t.aiFilterEnabledUi,u="futures"===i.market_type?"swap":i.market_type||"swap",g=i.leverage||1,p=i.trade_direction||"long","spot"===u?(g=1,p="long",t.$message.info(t.$t("trading-assistant.messages.spotLimitations"))):(g<1&&(g=1),g>125&&(g=125)),h={strategy_name:i.strategy_name,market_category:t.selectedMarketCategory||"Crypto",execution_mode:i.execution_mode||"signal",notification_config:n,indicator_config:{indicator_id:d.id,indicator_name:d.name,indicator_code:d.code||""},exchange_config:s?t.isIBKRMarket?{exchange_id:i.broker_id||t.currentBrokerId||"ibkr",ibkr_host:i.ibkr_host||"127.0.0.1",ibkr_port:i.ibkr_port||7497,ibkr_client_id:i.ibkr_client_id||1,ibkr_account:i.ibkr_account||""}:t.isMT5Market?{exchange_id:i.forex_broker_id||t.currentBrokerId||"mt5",mt5_server:i.mt5_server||"",mt5_login:i.mt5_login||"",mt5_password:i.mt5_password||"",mt5_terminal_path:i.mt5_terminal_path||""}:{credential_id:i.credential_id,exchange_id:t.currentExchangeId||void 0}:void 0,trading_config:{initial_capital:i.initial_capital,leverage:g,trade_direction:p,timeframe:i.timeframe,market_type:u,margin_mode:"cross",signal_mode:"confirmed",take_profit_pct:i.take_profit_pct||0,stop_loss_pct:i.stop_loss_pct||0,trailing_enabled:!!i.trailing_enabled,trailing_stop_pct:i.trailing_stop_pct||0,trailing_activation_pct:i.trailing_activation_pct||0,trend_add_enabled:!!i.trend_add_enabled,trend_add_step_pct:i.trend_add_step_pct||0,trend_add_size_pct:i.trend_add_size_pct||0,trend_add_max_times:i.trend_add_max_times||0,dca_add_enabled:!!i.dca_add_enabled,dca_add_step_pct:i.dca_add_step_pct||0,dca_add_size_pct:i.dca_add_size_pct||0,dca_add_max_times:i.dca_add_max_times||0,trend_reduce_enabled:!!i.trend_reduce_enabled,trend_reduce_step_pct:i.trend_reduce_step_pct||0,trend_reduce_size_pct:i.trend_reduce_size_pct||0,trend_reduce_max_times:i.trend_reduce_max_times||0,adverse_reduce_enabled:!!i.adverse_reduce_enabled,adverse_reduce_step_pct:i.adverse_reduce_step_pct||0,adverse_reduce_size_pct:i.adverse_reduce_size_pct||0,adverse_reduce_max_times:i.adverse_reduce_max_times||0,entry_pct:0===i.entry_pct||i.entry_pct?i.entry_pct:100,commission:i.commission||0,slippage:i.slippage||0,enable_ai_filter:c,indicator_params:t.indicatorParamValues,strategy_type:i.cs_strategy_type||"single",symbol_list:"cross_sectional"===i.cs_strategy_type?t.crossSectionalSymbols:void 0,portfolio_size:"cross_sectional"===i.cs_strategy_type?i.portfolio_size||10:void 0,long_ratio:"cross_sectional"===i.cs_strategy_type?i.long_ratio||.5:void 0,rebalance_frequency:"cross_sectional"===i.cs_strategy_type?i.rebalance_frequency||"daily":void 0}},!t.editingStrategy){e.n=7;break}return y=i.symbol,"string"===typeof y&&y.includes(":")&&(f=y.indexOf(":"),h.market_category=y.slice(0,f)||h.market_category,y=y.slice(f+1)),h.trading_config.symbol=y,e.n=6,(0,m.P7)(t.editingStrategy.id,h);case 6:_=e.v,e.n=11;break;case 7:if(h.user_id=1,h.strategy_type="IndicatorStrategy","cross_sectional"!==i.cs_strategy_type){e.n=9;break}return h.strategy_type="IndicatorStrategy",h.trading_config.symbol=null,e.n=8,(0,m.WM)(h);case 8:_=e.v,e.n=11;break;case 9:return h.symbols=t.selectedSymbols,e.n=10,(0,m.Ox)(h);case 10:_=e.v;case 11:1===_.code?(t.isEditMode?t.$message.success(t.$t("trading-assistant.messages.updateSuccess")):(b=i.cs_strategy_type||"single",S="cross_sectional"===b?t.crossSectionalSymbols.length:t.selectedSymbols.length,k=(null===(v=_.data)||void 0===v?void 0:v.total_created)||S,t.$message.success(t.$t("trading-assistant.messages.batchCreateSuccess",{count:k}))),t.handleRefresh()):t.$message.error(_.msg||(t.isEditMode?t.$t("trading-assistant.messages.updateFailed"):t.$t("trading-assistant.messages.createFailed"))),e.n=13;break;case 12:e.p=12,e.v,t.$message.error(t.isEditMode?t.$t("trading-assistant.messages.updateFailed"):t.$t("trading-assistant.messages.createFailed"));case 13:return e.p=13,t.saving=!1,e.f(13);case 14:return e.a(2)}},e,null,[[1,12,13,14]])}));return function(t,a){return e.apply(this,arguments)}}());case 1:return e.a(2)}},e)}))()},getFormValues:function(){var t=this;return new Promise(function(e,a){t.form.validateFields(function(t,i){t?a(t):e(i)})})},getDropdownContainer:function(t){return document.body}}},E=U,z=(0,k.A)(E,i,s,!1,null,"13cac835",null),D=z.exports},42430:function(t,e,a){a.d(e,{IA:function(){return n},N6:function(){return d},PR:function(){return o},kI:function(){return l}});var i=a(76338),s=a(75769),r={list:"/api/credentials/list",get:"/api/credentials/get",create:"/api/credentials/create",delete:"/api/credentials/delete",egressIp:"/api/credentials/egress-ip"};function n(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,s.Ay)({url:r.list,method:"get",params:t})}function o(t){return(0,s.Ay)({url:r.create,method:"post",data:t})}function l(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return(0,s.Ay)({url:r.delete,method:"delete",params:(0,i.A)({id:t},e)})}function d(){return(0,s.Ay)({url:r.egressIp,method:"get"})}},35038:function(t,e,a){a.d(e,{Qo:function(){return r},_3:function(){return c},dp:function(){return n},iO:function(){return d},mk:function(){return o},ms:function(){return l},z6:function(){return u}});var i=a(75769),s={GetWatchlist:"/api/market/watchlist/get",AddWatchlist:"/api/market/watchlist/add",RemoveWatchlist:"/api/market/watchlist/remove",GetWatchlistPrices:"/api/market/watchlist/prices",MultiAnalysis:"/api/analysis/multiAnalysis",CreateAnalysisTask:"/api/analysis/createTask",GetAnalysisTaskStatus:"/api/analysis/getTaskStatus",GetAnalysisHistoryList:"/api/analysis/getHistoryList",DeleteAnalysisTask:"/api/analysis/deleteTask",ReflectAnalysis:"/api/analysis/reflect",ChatMessage:"/api/ai/chat/message",GetChatHistory:"/api/ai/chat/history",SaveChatHistory:"/api/ai/chat/history/save",GetConfig:"/api/market/config",GetMenuFooterConfig:"/api/market/menuFooterConfig",GetMarketTypes:"/api/market/types",SearchSymbols:"/api/market/symbols/search",GetHotSymbols:"/api/market/symbols/hot"};function r(t){return(0,i.Ay)({url:s.GetWatchlist,method:"get",params:t})}function n(t){return(0,i.Ay)({url:s.AddWatchlist,method:"post",data:t})}function o(t){return(0,i.Ay)({url:s.RemoveWatchlist,method:"post",data:t})}function l(t){return(0,i.Ay)({url:s.GetWatchlistPrices,method:"get",params:{watchlist:JSON.stringify(t.watchlist||[])}})}function d(){return(0,i.Ay)({url:s.GetMarketTypes,method:"get"})}function c(t){return(0,i.Ay)({url:s.SearchSymbols,method:"get",params:t})}function u(t){return(0,i.Ay)({url:s.GetHotSymbols,method:"get",params:t})}},84841:function(t,e,a){a.d(e,{DK:function(){return v},E$:function(){return c},Gl:function(){return g},O0:function(){return d},TK:function(){return n},aU:function(){return s},cw:function(){return l},d$:function(){return S},hG:function(){return o},hl:function(){return p},kg:function(){return r},nY:function(){return f},r7:function(){return u},rx:function(){return _},v9:function(){return h},vF:function(){return m},vi:function(){return b},wq:function(){return y}});var i=a(75769);function s(t){return(0,i.Ay)({url:"/api/users/list",method:"get",params:t})}function r(t){return(0,i.Ay)({url:"/api/users/create",method:"post",data:t})}function n(t,e){return(0,i.Ay)({url:"/api/users/update",method:"put",params:{id:t},data:e})}function o(t){return(0,i.Ay)({url:"/api/users/delete",method:"delete",params:{id:t}})}function l(t){return(0,i.Ay)({url:"/api/users/reset-password",method:"post",data:t})}function d(){return(0,i.Ay)({url:"/api/users/roles",method:"get"})}function c(){return(0,i.Ay)({url:"/api/users/profile",method:"get"})}function u(t){return(0,i.Ay)({url:"/api/users/profile/update",method:"put",data:t})}function m(){return(0,i.Ay)({url:"/api/users/notification-settings",method:"get"})}function g(t){return(0,i.Ay)({url:"/api/users/notification-settings",method:"put",data:t})}function p(){return(0,i.Ay)({url:"/api/users/notification-settings/test",method:"post",data:{}})}function h(t){return(0,i.Ay)({url:"/api/users/my-credits-log",method:"get",params:t})}function _(t){return(0,i.Ay)({url:"/api/users/my-referrals",method:"get",params:t})}function y(t){return(0,i.Ay)({url:"/api/users/set-credits",method:"post",data:t})}function f(t){return(0,i.Ay)({url:"/api/users/set-vip",method:"post",data:t})}function v(t){return(0,i.Ay)({url:"/api/users/system-strategies",method:"get",params:t})}function b(t){return(0,i.Ay)({url:"/api/users/admin-orders",method:"get",params:t})}function S(t){return(0,i.Ay)({url:"/api/users/admin-ai-stats",method:"get",params:t})}}}]); \ No newline at end of file diff --git a/frontend/dist/js/973-legacy.bf52892c.js b/frontend/dist/js/973-legacy.a4d8239f.js similarity index 96% rename from frontend/dist/js/973-legacy.bf52892c.js rename to frontend/dist/js/973-legacy.a4d8239f.js index 6bf6dbd..50aae79 100644 --- a/frontend/dist/js/973-legacy.bf52892c.js +++ b/frontend/dist/js/973-legacy.a4d8239f.js @@ -1 +1 @@ -"use strict";(self["webpackChunkvue_antd_pro"]=self["webpackChunkvue_antd_pro"]||[]).push([[973],{83973:function(e,t,a){a.d(t,{A:function(){return P}});a(62010),a(27495),a(25440);var i=function(){var e=this,t=e._self._c;return t("a-drawer",{staticClass:"quick-trade-drawer",class:{"theme-dark":e.isDark},attrs:{title:null,width:380,visible:e.visible,closable:!1,bodyStyle:{padding:0},maskStyle:{background:"rgba(0,0,0,0.45)"}},on:{close:e.handleClose}},[t("div",{staticClass:"qt-header"},[t("div",{staticClass:"qt-header-left"},[t("a-icon",{staticClass:"qt-icon",attrs:{type:"thunderbolt",theme:"filled"}}),t("span",{staticClass:"qt-header-title"},[e._v(e._s(e.$t("quickTrade.title")))])],1),t("a-icon",{staticClass:"qt-close",attrs:{type:"close"},on:{click:e.handleClose}})],1),t("div",{staticClass:"qt-symbol-bar"},[t("div",{staticClass:"qt-symbol-selector"},[t("a-select",{staticStyle:{width:"100%"},attrs:{"show-search":"",placeholder:e.$t("quickTrade.selectSymbol"),"filter-option":!1,"not-found-content":e.symbolSearching?null:void 0,loading:e.symbolSearching},on:{search:e.handleSymbolSearch,change:e.handleSymbolChange,focus:e.handleSymbolFocus},model:{value:e.currentSymbol,callback:function(t){e.currentSymbol=t},expression:"currentSymbol"}},[t("a-icon",{staticStyle:{color:"#999"},attrs:{slot:"suffixIcon",type:"search"},slot:"suffixIcon"}),e._l(e.symbolSuggestions,function(a){return t("a-select-option",{key:a.value,attrs:{value:a.value}},[t("div",{staticClass:"qt-symbol-option"},[t("span",{staticClass:"qt-symbol-option-name"},[e._v(e._s(a.symbol))]),a.name?t("span",{staticClass:"qt-symbol-option-desc"},[e._v(e._s(a.name))]):e._e()])])})],2)],1),t("div",{staticClass:"qt-price-display",class:e.priceChangeClass},[t("span",{staticClass:"qt-current-price"},[e._v("$"+e._s(e.formatPrice(e.currentPrice)))])])]),t("div",{staticClass:"qt-section"},[t("div",{staticClass:"qt-label"},[e._v(e._s(e.$t("quickTrade.exchange"))+" "),t("span",{staticClass:"qt-crypto-hint"},[e._v(e._s(e.$t("quickTrade.cryptoOnly")))])]),t("a-select",{staticStyle:{width:"100%"},attrs:{placeholder:e.$t("quickTrade.selectExchange"),loading:e.credLoading,notFoundContent:e.$t("quickTrade.noExchange")},on:{change:e.onCredentialChange},model:{value:e.selectedCredentialId,callback:function(t){e.selectedCredentialId=t},expression:"selectedCredentialId"}},e._l(e.credentials,function(a){return t("a-select-option",{key:a.id,attrs:{value:a.id}},[t("span",{staticStyle:{"text-transform":"capitalize"}},[e._v(e._s(a.exchange_id||a.name))]),a.market_type?t("a-tag",{staticStyle:{"margin-left":"6px"},attrs:{size:"small"}},[e._v(e._s(a.market_type))]):e._e()],1)}),1),e.balance.available>0?t("div",{staticClass:"qt-balance"},[t("span",{staticClass:"qt-balance-label"},[e._v(e._s(e.$t("quickTrade.available"))+":")]),t("span",{staticClass:"qt-balance-value"},[e._v("$"+e._s(e.formatPrice(e.balance.available)))])]):e._e()],1),t("div",{staticClass:"qt-section"},[t("div",{staticClass:"qt-direction-toggle"},[t("div",{staticClass:"qt-dir-btn qt-dir-long",class:{active:"buy"===e.side},on:{click:function(t){e.side="buy"}}},[t("a-icon",{attrs:{type:"arrow-up"}}),e._v(" "+e._s(e.$t("quickTrade.long"))+" ")],1),t("div",{staticClass:"qt-dir-btn qt-dir-short",class:{active:"sell"===e.side},on:{click:function(t){e.side="sell"}}},[t("a-icon",{attrs:{type:"arrow-down"}}),e._v(" "+e._s(e.$t("quickTrade.short"))+" ")],1)])]),t("div",{staticClass:"qt-section"},[t("a-radio-group",{staticStyle:{width:"100%"},attrs:{"button-style":"solid",size:"small"},model:{value:e.orderType,callback:function(t){e.orderType=t},expression:"orderType"}},[t("a-radio-button",{staticStyle:{width:"50%","text-align":"center"},attrs:{value:"market"}},[e._v(" "+e._s(e.$t("quickTrade.market"))+" ")]),t("a-radio-button",{staticStyle:{width:"50%","text-align":"center"},attrs:{value:"limit"}},[e._v(" "+e._s(e.$t("quickTrade.limit"))+" ")])],1)],1),"limit"===e.orderType?t("div",{staticClass:"qt-section"},[t("div",{staticClass:"qt-label"},[e._v(e._s(e.$t("quickTrade.limitPrice")))]),t("a-input-number",{staticStyle:{width:"100%"},attrs:{min:0,step:e.priceStep,precision:e.pricePrecision,placeholder:e.$t("quickTrade.enterPrice")},model:{value:e.limitPrice,callback:function(t){e.limitPrice=t},expression:"limitPrice"}})],1):e._e(),t("div",{staticClass:"qt-section"},[t("div",{staticClass:"qt-label"},[e._v(e._s(e.$t("quickTrade.amount"))+" (USDT)")]),t("a-input-number",{staticStyle:{width:"100%"},attrs:{min:1,step:10,precision:2,placeholder:e.$t("quickTrade.enterAmount")},model:{value:e.amount,callback:function(t){e.amount=t},expression:"amount"}}),t("div",{staticClass:"qt-quick-amounts"},e._l(e.quickAmountPcts,function(a){return t("a-button",{key:a,attrs:{size:"small",disabled:e.balance.available<=0},on:{click:function(t){return e.setAmountByPercent(a)}}},[e._v(" "+e._s(a)+"% ")])}),1)],1),"spot"!==e.marketType?t("div",{staticClass:"qt-section"},[t("div",{staticClass:"qt-label"},[e._v(e._s(e.$t("quickTrade.leverage")))]),t("div",{staticClass:"qt-leverage-row"},[t("a-slider",{staticStyle:{flex:"1","margin-right":"12px"},attrs:{min:1,max:125,marks:e.leverageMarks,tipFormatter:function(e){return e+"x"}},model:{value:e.leverage,callback:function(t){e.leverage=t},expression:"leverage"}}),t("a-input-number",{staticStyle:{width:"80px"},attrs:{min:1,max:125,formatter:function(e){return"".concat(e,"x")},parser:function(e){return e.replace("x","")}},model:{value:e.leverage,callback:function(t){e.leverage=t},expression:"leverage"}})],1)]):e._e(),t("a-collapse",{staticStyle:{background:"transparent",margin:"0 16px"},attrs:{bordered:!1}},[t("a-collapse-panel",{key:"tpsl",style:e.collapseStyle,attrs:{header:e.$t("quickTrade.tpsl")}},[t("div",{staticClass:"qt-tpsl-row"},[t("div",{staticClass:"qt-tpsl-item"},[t("span",{staticClass:"qt-label",staticStyle:{color:"#52c41a"}},[e._v(e._s(e.$t("quickTrade.tp")))]),t("a-input-number",{staticStyle:{width:"100%"},attrs:{min:0,step:e.priceStep,precision:e.pricePrecision,placeholder:e.$t("quickTrade.tpPlaceholder")},model:{value:e.tpPrice,callback:function(t){e.tpPrice=t},expression:"tpPrice"}})],1),t("div",{staticClass:"qt-tpsl-item"},[t("span",{staticClass:"qt-label",staticStyle:{color:"#f5222d"}},[e._v(e._s(e.$t("quickTrade.sl")))]),t("a-input-number",{staticStyle:{width:"100%"},attrs:{min:0,step:e.priceStep,precision:e.pricePrecision,placeholder:e.$t("quickTrade.slPlaceholder")},model:{value:e.slPrice,callback:function(t){e.slPrice=t},expression:"slPrice"}})],1)])])],1),t("div",{staticClass:"qt-submit-section"},[t("a-button",{staticClass:"qt-submit-btn",class:["buy"===e.side?"qt-btn-long":"qt-btn-short"],attrs:{type:"buy"===e.side?"primary":"danger",size:"large",block:"",loading:e.submitting,disabled:!e.canSubmit},on:{click:e.handleSubmit}},[t("a-icon",{attrs:{type:"buy"===e.side?"arrow-up":"arrow-down"}}),e._v(" "+e._s("buy"===e.side?e.$t("quickTrade.buyLong"):e.$t("quickTrade.sellShort"))+" "+e._s(e.symbol)+" ")],1)],1),t("div",{staticClass:"qt-position-section"},[t("div",{staticClass:"qt-section-header"},[t("a-icon",{attrs:{type:"wallet"}}),e._v(" "+e._s(e.$t("quickTrade.currentPosition"))+" ")],1),e.currentPosition?t("div",{staticClass:"qt-position-card",class:e.currentPosition.side},[t("div",{staticClass:"qt-pos-row"},[t("span",[e._v(e._s(e.$t("quickTrade.side")))]),t("a-tag",{attrs:{color:"long"===e.currentPosition.side?"#52c41a":"#f5222d",size:"small"}},[e._v(" "+e._s("long"===e.currentPosition.side?e.$t("quickTrade.long"):e.$t("quickTrade.short"))+" ")])],1),t("div",{staticClass:"qt-pos-row"},[t("span",[e._v(e._s(e.$t("quickTrade.posSize")))]),t("span",[e._v(e._s(e.currentPosition.size))])]),t("div",{staticClass:"qt-pos-row"},[t("span",[e._v(e._s(e.$t("quickTrade.entryPrice")))]),t("span",[e._v("$"+e._s(e.formatPrice(e.currentPosition.entry_price)))])]),e.currentPosition.mark_price?t("div",{staticClass:"qt-pos-row"},[t("span",[e._v(e._s(e.$t("quickTrade.markPrice")))]),t("span",[e._v("$"+e._s(e.formatPrice(e.currentPosition.mark_price)))])]):e._e(),e.currentPosition.leverage&&e.currentPosition.leverage>1?t("div",{staticClass:"qt-pos-row"},[t("span",[e._v(e._s(e.$t("quickTrade.leverage")))]),t("span",[e._v(e._s(e.currentPosition.leverage)+"x")])]):e._e(),t("div",{staticClass:"qt-pos-row"},[t("span",[e._v(e._s(e.$t("quickTrade.unrealizedPnl")))]),t("span",{class:e.currentPosition.unrealized_pnl>=0?"qt-green":"qt-red"},[e._v(" $"+e._s(e.formatPrice(e.currentPosition.unrealized_pnl))+" ")])]),t("a-button",{staticStyle:{"margin-top":"8px"},attrs:{type:"danger",size:"small",block:"",ghost:"",loading:e.closingPosition},on:{click:e.handleClosePosition}},[e._v(" "+e._s(e.$t("quickTrade.closePosition"))+" ")])],1):t("div",{staticClass:"qt-position-empty"},[t("a-empty",{staticStyle:{padding:"20px 0"},attrs:{description:e.$t("quickTrade.noPosition"),image:!1}},[t("template",{slot:"description"},[t("span",{staticStyle:{color:"#999","font-size":"12px"}},[e._v(e._s(e.$t("quickTrade.noPositionHint")))])])],2)],1)]),e.recentTrades.length>0?t("div",{staticClass:"qt-history-section"},[t("a-collapse",{attrs:{bordered:!1,activeKey:e.historyCollapsed?[]:["history"]},on:{change:e.handleHistoryCollapse}},[t("a-collapse-panel",{key:"history",style:e.collapseStyle,attrs:{showArrow:!1}},[t("template",{slot:"header"},[t("div",{staticClass:"qt-section-header",staticStyle:{margin:"0",padding:"0"}},[t("a-icon",{attrs:{type:"history"}}),e._v(" "+e._s(e.$t("quickTrade.recentTrades"))+" "),t("span",{staticClass:"qt-history-count"},[e._v("("+e._s(e.recentTrades.length)+")")])],1)]),t("div",{staticClass:"qt-trade-list"},e._l(e.recentTrades,function(a){return t("div",{key:a.id,staticClass:"qt-trade-item"},[t("div",{staticClass:"qt-trade-main"},[t("a-tag",{attrs:{color:"buy"===a.side?"#52c41a":"#f5222d",size:"small"}},[e._v(" "+e._s("buy"===a.side?"LONG":"SHORT")+" ")]),t("span",{staticClass:"qt-trade-symbol"},[e._v(e._s(a.symbol))]),t("span",{staticClass:"qt-trade-amount"},[e._v("$"+e._s(e.formatPrice(a.amount)))])],1),t("div",{staticClass:"qt-trade-meta"},[t("a-tag",{attrs:{color:"filled"===a.status?"#52c41a":"failed"===a.status?"#f5222d":"#faad14",size:"small"}},[e._v(" "+e._s(a.status)+" ")]),t("span",{staticClass:"qt-trade-time"},[e._v(e._s(e.formatTime(a.created_at)))])],1)])}),0)],2)],1)],1):e._e()],1)},r=[],s=a(81127),n=a(56252),c=a(76338),l=(a(28706),a(2008),a(74423),a(62062),a(2892),a(26099),a(21699),a(68156),a(42762),a(95353)),o=a(42430),u=a(75769);function d(e){return(0,u.Ay)({url:"/api/quick-trade/place-order",method:"post",data:e})}function m(e){return(0,u.Ay)({url:"/api/quick-trade/balance",method:"get",params:e})}function p(e){return(0,u.Ay)({url:"/api/quick-trade/position",method:"get",params:e})}function h(e){return(0,u.Ay)({url:"/api/quick-trade/history",method:"get",params:e})}function v(e){return(0,u.Ay)({url:"/api/quick-trade/close-position",method:"post",data:e})}var b=a(35038),y=a(505),f={name:"QuickTradePanel",props:{visible:{type:Boolean,default:!1},symbol:{type:String,default:""},presetSide:{type:String,default:""},presetPrice:{type:Number,default:0},source:{type:String,default:"manual"},marketType:{type:String,default:"swap"}},data:function(){return{credentials:[],selectedCredentialId:void 0,credLoading:!1,balance:{available:0,total:0},side:"buy",orderType:"market",limitPrice:0,amount:100,leverage:5,tpPrice:null,slPrice:null,submitting:!1,closingPosition:!1,currentPrice:0,currentPosition:null,recentTrades:[],historyCollapsed:!1,currentSymbol:"",symbolSuggestions:[],symbolSearching:!1,symbolSearchTimer:null,userId:null,quickAmountPcts:[10,25,50,75,100],leverageMarks:{1:"1x",5:"5x",10:"10x",25:"25x",50:"50x",100:"100x",125:"125x"},pollTimer:null}},computed:(0,c.A)((0,c.A)({},(0,l.aH)({navTheme:function(e){return e.app.theme}})),{},{isDark:function(){return"dark"===this.navTheme||"realdark"===this.navTheme},priceStep:function(){return this.currentPrice>1e4?1:this.currentPrice>100?.1:this.currentPrice>1?.01:1e-4},pricePrecision:function(){return this.currentPrice>1e4?0:this.currentPrice>100?1:this.currentPrice>1?2:4},canSubmit:function(){return this.selectedCredentialId&&this.currentSymbol&&this.amount>0&&!this.submitting},priceChangeClass:function(){return""},collapseStyle:function(){return{background:"transparent",borderRadius:"4px",border:0,overflow:"hidden"}}}),watch:{visible:function(e){e?this.init():this.stopPolling()},symbol:function(e){e&&(this.currentSymbol=e)},currentSymbol:function(e){e&&(this.loadPrice(),this.selectedCredentialId&&this.loadPosition(),this.$emit("update:symbol",e))},selectedCredentialId:function(e){e&&this.currentSymbol&&this.loadPosition()},presetSide:function(e){e&&(this.side=e)},presetPrice:function(e){e>0&&(this.currentPrice=e,this.limitPrice=e)}},methods:{init:function(){var e=this;return(0,n.A)((0,s.A)().m(function t(){return(0,s.A)().w(function(t){while(1)switch(t.n){case 0:return e.currentSymbol=e.symbol||"",e.presetSide&&(e.side=e.presetSide),e.presetPrice>0&&(e.currentPrice=e.presetPrice,e.limitPrice=e.presetPrice),t.n=1,e.loadCredentials();case 1:return t.n=2,e.loadUserInfo();case 2:return t.n=3,e.loadWatchlistSymbols();case 3:if(!e.currentSymbol){t.n=4;break}return t.n=4,e.loadPrice();case 4:if(!e.selectedCredentialId||!e.currentSymbol){t.n=5;break}return t.n=5,e.loadPosition();case 5:e.loadHistory(),e.startPolling();case 6:return t.a(2)}},t)}))()},loadUserInfo:function(){var e=this;return(0,n.A)((0,s.A)().m(function t(){var a,i,r,n;return(0,s.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(t.p=0,i=e.$store,r=(null===i||void 0===i||null===(a=i.getters)||void 0===a?void 0:a.userInfo)||{},!r||!r.id){t.n=1;break}return e.userId=r.id,t.a(2);case 1:return t.n=2,(0,y.ug)();case 2:n=t.v,n&&1===n.code&&n.data&&(e.userId=n.data.id,i&&i.commit("SET_INFO",n.data)),t.n=4;break;case 3:t.p=3,t.v;case 4:return t.a(2)}},t,null,[[0,3]])}))()},loadWatchlistSymbols:function(){var e=this;return(0,n.A)((0,s.A)().m(function t(){var a,i;return(0,s.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(e.userId){t.n=2;break}return t.n=1,e.loadUserInfo();case 1:if(e.userId){t.n=2;break}return t.a(2);case 2:return t.p=2,t.n=3,(0,b.Qo)({userid:e.userId});case 3:a=t.v,a&&1===a.code&&a.data&&(i=(a.data||[]).filter(function(e){return"crypto"===(e.market||"").toLowerCase()}).map(function(e){return{value:e.symbol||"",symbol:e.symbol||"",name:e.name||""}}).filter(function(e){return e.value}),e.symbolSuggestions=i),t.n=5;break;case 4:t.p=4,t.v;case 5:return t.a(2)}},t,null,[[2,4]])}))()},handleSymbolSearch:function(e){var t=this;this.symbolSearchTimer&&clearTimeout(this.symbolSearchTimer),e&&""!==e.trim()?this.symbolSearchTimer=setTimeout((0,n.A)((0,s.A)().m(function a(){var i;return(0,s.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return t.symbolSearching=!0,a.p=1,a.n=2,(0,b._3)({market:"Crypto",keyword:e.trim(),limit:20});case 2:i=a.v,i&&1===i.code&&i.data?t.symbolSuggestions=(i.data.items||i.data||[]).map(function(e){return{value:e.symbol||"",symbol:e.symbol||"",name:e.name||""}}).filter(function(e){return e.value}):t.symbolSuggestions=[],a.n=4;break;case 3:a.p=3,a.v,t.symbolSuggestions=[];case 4:return a.p=4,t.symbolSearching=!1,a.f(4);case 5:return a.a(2)}},a,null,[[1,3,4,5]])})),300):this.loadWatchlistSymbols()},handleSymbolChange:function(e){e&&e!==this.currentSymbol&&(this.currentSymbol=e,this.loadPrice(),this.selectedCredentialId&&this.loadPosition(),this.$emit("update:symbol",e))},loadPrice:function(){var e=this;return(0,n.A)((0,s.A)().m(function t(){var a,i;return(0,s.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(e.currentSymbol){t.n=1;break}return e.currentPrice=0,t.a(2);case 1:return t.p=1,t.n=2,(0,u.Ay)({url:"/api/market/price",method:"get",params:{market:"Crypto",symbol:e.currentSymbol}});case 2:a=t.v,a&&1===a.code&&a.data&&(i=parseFloat(a.data.price||0),i>0&&(e.currentPrice=i,0!==e.limitPrice&&e.limitPrice!==e.presetPrice||(e.limitPrice=i))),t.n=4;break;case 3:t.p=3,t.v;case 4:return t.a(2)}},t,null,[[1,3]])}))()},handleSymbolFocus:function(){0===this.symbolSuggestions.length&&this.loadWatchlistSymbols()},loadCredentials:function(){var e=this;return(0,n.A)((0,s.A)().m(function t(){var a,i,r;return(0,s.A)().w(function(t){while(1)switch(t.p=t.n){case 0:return e.credLoading=!0,t.p=1,t.n=2,(0,o.IA)();case 2:a=t.v,1===a.code&&a.data&&(i=a.data.items||a.data||[],r=["ibkr","mt5"],e.credentials=i.filter(function(e){var t=(e.exchange_id||e.name||"").toLowerCase();return!r.includes(t)}),!e.selectedCredentialId&&e.credentials.length>0&&(e.selectedCredentialId=e.credentials[0].id,e.onCredentialChange(e.selectedCredentialId))),t.n=4;break;case 3:t.p=3,t.v;case 4:return t.p=4,e.credLoading=!1,t.f(4);case 5:return t.a(2)}},t,null,[[1,3,4,5]])}))()},onCredentialChange:function(e){var t=this;return(0,n.A)((0,s.A)().m(function a(){return(0,s.A)().w(function(a){while(1)switch(a.n){case 0:return t.selectedCredentialId=e,a.n=1,t.loadBalance();case 1:return a.n=2,t.loadPosition();case 2:return a.a(2)}},a)}))()},loadBalance:function(){var e=this;return(0,n.A)((0,s.A)().m(function t(){var a;return(0,s.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(e.selectedCredentialId){t.n=1;break}return t.a(2);case 1:return t.p=1,t.n=2,m({credential_id:e.selectedCredentialId,market_type:e.marketType});case 2:a=t.v,1===a.code&&a.data&&(e.balance=a.data),t.n=4;break;case 3:t.p=3,t.v;case 4:return t.a(2)}},t,null,[[1,3]])}))()},loadPosition:function(){var e=this;return(0,n.A)((0,s.A)().m(function t(){var a;return(0,s.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(e.selectedCredentialId&&e.currentSymbol){t.n=1;break}return t.a(2);case 1:return t.p=1,t.n=2,p({credential_id:e.selectedCredentialId,symbol:e.currentSymbol,market_type:e.marketType});case 2:if(a=t.v,!(1===a.code&&a.data&&a.data.positions&&a.data.positions.length>0)){t.n=3;break}return e.currentPosition=a.data.positions[0],t.a(2,!0);case 3:return e.currentPosition=null,t.a(2,!1);case 4:t.n=6;break;case 5:return t.p=5,t.v,e.currentPosition=null,t.a(2,!1);case 6:return t.a(2)}},t,null,[[1,5]])}))()},loadPositionWithRetry:function(){var e=arguments,t=this;return(0,n.A)((0,s.A)().m(function a(){var i,r,n,c;return(0,s.A)().w(function(a){while(1)switch(a.n){case 0:return i=e.length>0&&void 0!==e[0]?e[0]:3,r=e.length>1&&void 0!==e[1]?e[1]:2e3,a.n=1,t.loadPosition();case 1:if(n=a.v,!n){a.n=2;break}return a.a(2);case 2:c=0;case 3:if(!(c0&&(this.amount=Math.floor(this.balance.available*e/100*100)/100)},handleSubmit:function(){var e=this;return(0,n.A)((0,s.A)().m(function t(){var a,i,r;return(0,s.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(e.canSubmit){t.n=1;break}return t.a(2);case 1:return e.submitting=!0,t.p=2,a={credential_id:e.selectedCredentialId,symbol:e.currentSymbol,side:e.side,order_type:e.orderType,amount:e.amount,price:"limit"===e.orderType?e.limitPrice:0,leverage:"spot"!==e.marketType?e.leverage:1,market_type:e.marketType,tp_price:e.tpPrice||0,sl_price:e.slPrice||0,source:e.source},t.n=3,d(a);case 3:if(i=t.v,1!==i.code){t.n=7;break}return e.$emit("order-success",i.data),t.n=4,e.loadBalance();case 4:return t.n=5,e.loadHistory();case 5:return t.n=6,e.loadPositionWithRetry();case 6:t.n=8;break;case 7:e.$message.error(i.msg||e.$t("quickTrade.orderFailed"));case 8:t.n=10;break;case 9:t.p=9,r=t.v,e.$message.error(r.message||e.$t("quickTrade.orderFailed"));case 10:return t.p=10,e.submitting=!1,t.f(10);case 11:return t.a(2)}},t,null,[[2,9,10,11]])}))()},handleClosePosition:function(){var e=this;return(0,n.A)((0,s.A)().m(function t(){var a,i,r;return(0,s.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(e.currentPosition&&e.selectedCredentialId){t.n=1;break}return t.a(2);case 1:return e.closingPosition=!0,t.p=2,a={credential_id:e.selectedCredentialId,symbol:e.currentSymbol,market_type:e.marketType,size:0,source:"manual"},t.n=3,v(a);case 3:if(i=t.v,1!==i.code){t.n=6;break}return e.$message.success(e.$t("quickTrade.positionClosed")),t.n=4,e.loadBalance();case 4:return t.n=5,e.loadHistory();case 5:e.currentPosition=null,setTimeout((0,n.A)((0,s.A)().m(function t(){return(0,s.A)().w(function(t){while(1)switch(t.n){case 0:return t.n=1,e.loadPosition();case 1:return t.a(2)}},t)})),2e3),t.n=7;break;case 6:e.$message.error(i.msg||e.$t("quickTrade.orderFailed"));case 7:t.n=9;break;case 8:t.p=8,r=t.v,e.$message.error(r.message||e.$t("quickTrade.orderFailed"));case 9:return t.p=9,e.closingPosition=!1,t.f(9);case 10:return t.a(2)}},t,null,[[2,8,9,10]])}))()},startPolling:function(){var e=this;this.stopPolling(),this.pollTimer=setInterval(function(){e.currentSymbol&&e.loadPrice(),e.selectedCredentialId&&e.currentSymbol&&(e.loadBalance(),e.loadPosition())},1e4)},stopPolling:function(){this.pollTimer&&(clearInterval(this.pollTimer),this.pollTimer=null)},handleClose:function(){this.$emit("close"),this.$emit("update:visible",!1)},handleHistoryCollapse:function(e){this.historyCollapsed=!e.includes("history")},formatPrice:function(e){var t=parseFloat(e||0);return Math.abs(t)>=1e4?t.toLocaleString("en-US",{minimumFractionDigits:0,maximumFractionDigits:0}):Math.abs(t)>=100?t.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2}):Math.abs(t)>=1?t.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:4}):t.toLocaleString("en-US",{minimumFractionDigits:4,maximumFractionDigits:6})},formatTime:function(e){if(!e)return"";var t=new Date(e),a=function(e){return String(e).padStart(2,"0")};return"".concat(a(t.getMonth()+1),"-").concat(a(t.getDate())," ").concat(a(t.getHours()),":").concat(a(t.getMinutes()))}},beforeDestroy:function(){this.stopPolling()}},g=f,k=a(845),_=(0,k.A)(g,i,r,!1,null,"0d547552",null),P=_.exports},42430:function(e,t,a){a.d(t,{IA:function(){return n},PR:function(){return c},kI:function(){return l}});var i=a(76338),r=a(75769),s={list:"/api/credentials/list",get:"/api/credentials/get",create:"/api/credentials/create",delete:"/api/credentials/delete"};function n(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,r.Ay)({url:s.list,method:"get",params:e})}function c(e){return(0,r.Ay)({url:s.create,method:"post",data:e})}function l(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return(0,r.Ay)({url:s.delete,method:"delete",params:(0,i.A)({id:e},t)})}}}]); \ No newline at end of file +"use strict";(self["webpackChunkvue_antd_pro"]=self["webpackChunkvue_antd_pro"]||[]).push([[973],{83973:function(e,t,a){a.d(t,{A:function(){return P}});a(62010),a(27495),a(25440);var i=function(){var e=this,t=e._self._c;return t("a-drawer",{staticClass:"quick-trade-drawer",class:{"theme-dark":e.isDark},attrs:{title:null,width:380,visible:e.visible,closable:!1,bodyStyle:{padding:0},maskStyle:{background:"rgba(0,0,0,0.45)"}},on:{close:e.handleClose}},[t("div",{staticClass:"qt-header"},[t("div",{staticClass:"qt-header-left"},[t("a-icon",{staticClass:"qt-icon",attrs:{type:"thunderbolt",theme:"filled"}}),t("span",{staticClass:"qt-header-title"},[e._v(e._s(e.$t("quickTrade.title")))])],1),t("a-icon",{staticClass:"qt-close",attrs:{type:"close"},on:{click:e.handleClose}})],1),t("div",{staticClass:"qt-symbol-bar"},[t("div",{staticClass:"qt-symbol-selector"},[t("a-select",{staticStyle:{width:"100%"},attrs:{"show-search":"",placeholder:e.$t("quickTrade.selectSymbol"),"filter-option":!1,"not-found-content":e.symbolSearching?null:void 0,loading:e.symbolSearching},on:{search:e.handleSymbolSearch,change:e.handleSymbolChange,focus:e.handleSymbolFocus},model:{value:e.currentSymbol,callback:function(t){e.currentSymbol=t},expression:"currentSymbol"}},[t("a-icon",{staticStyle:{color:"#999"},attrs:{slot:"suffixIcon",type:"search"},slot:"suffixIcon"}),e._l(e.symbolSuggestions,function(a){return t("a-select-option",{key:a.value,attrs:{value:a.value}},[t("div",{staticClass:"qt-symbol-option"},[t("span",{staticClass:"qt-symbol-option-name"},[e._v(e._s(a.symbol))]),a.name?t("span",{staticClass:"qt-symbol-option-desc"},[e._v(e._s(a.name))]):e._e()])])})],2)],1),t("div",{staticClass:"qt-price-display",class:e.priceChangeClass},[t("span",{staticClass:"qt-current-price"},[e._v("$"+e._s(e.formatPrice(e.currentPrice)))])])]),t("div",{staticClass:"qt-section"},[t("div",{staticClass:"qt-label"},[e._v(e._s(e.$t("quickTrade.exchange"))+" "),t("span",{staticClass:"qt-crypto-hint"},[e._v(e._s(e.$t("quickTrade.cryptoOnly")))])]),t("a-select",{staticStyle:{width:"100%"},attrs:{placeholder:e.$t("quickTrade.selectExchange"),loading:e.credLoading,notFoundContent:e.$t("quickTrade.noExchange")},on:{change:e.onCredentialChange},model:{value:e.selectedCredentialId,callback:function(t){e.selectedCredentialId=t},expression:"selectedCredentialId"}},e._l(e.credentials,function(a){return t("a-select-option",{key:a.id,attrs:{value:a.id}},[t("span",{staticStyle:{"text-transform":"capitalize"}},[e._v(e._s(a.exchange_id||a.name))]),a.market_type?t("a-tag",{staticStyle:{"margin-left":"6px"},attrs:{size:"small"}},[e._v(e._s(a.market_type))]):e._e()],1)}),1),e.balance.available>0?t("div",{staticClass:"qt-balance"},[t("span",{staticClass:"qt-balance-label"},[e._v(e._s(e.$t("quickTrade.available"))+":")]),t("span",{staticClass:"qt-balance-value"},[e._v("$"+e._s(e.formatPrice(e.balance.available)))])]):e._e()],1),t("div",{staticClass:"qt-section"},[t("div",{staticClass:"qt-direction-toggle"},[t("div",{staticClass:"qt-dir-btn qt-dir-long",class:{active:"buy"===e.side},on:{click:function(t){e.side="buy"}}},[t("a-icon",{attrs:{type:"arrow-up"}}),e._v(" "+e._s(e.$t("quickTrade.long"))+" ")],1),t("div",{staticClass:"qt-dir-btn qt-dir-short",class:{active:"sell"===e.side},on:{click:function(t){e.side="sell"}}},[t("a-icon",{attrs:{type:"arrow-down"}}),e._v(" "+e._s(e.$t("quickTrade.short"))+" ")],1)])]),t("div",{staticClass:"qt-section"},[t("a-radio-group",{staticStyle:{width:"100%"},attrs:{"button-style":"solid",size:"small"},model:{value:e.orderType,callback:function(t){e.orderType=t},expression:"orderType"}},[t("a-radio-button",{staticStyle:{width:"50%","text-align":"center"},attrs:{value:"market"}},[e._v(" "+e._s(e.$t("quickTrade.market"))+" ")]),t("a-radio-button",{staticStyle:{width:"50%","text-align":"center"},attrs:{value:"limit"}},[e._v(" "+e._s(e.$t("quickTrade.limit"))+" ")])],1)],1),"limit"===e.orderType?t("div",{staticClass:"qt-section"},[t("div",{staticClass:"qt-label"},[e._v(e._s(e.$t("quickTrade.limitPrice")))]),t("a-input-number",{staticStyle:{width:"100%"},attrs:{min:0,step:e.priceStep,precision:e.pricePrecision,placeholder:e.$t("quickTrade.enterPrice")},model:{value:e.limitPrice,callback:function(t){e.limitPrice=t},expression:"limitPrice"}})],1):e._e(),t("div",{staticClass:"qt-section"},[t("div",{staticClass:"qt-label"},[e._v(e._s(e.$t("quickTrade.amount"))+" (USDT)")]),t("a-input-number",{staticStyle:{width:"100%"},attrs:{min:1,step:10,precision:2,placeholder:e.$t("quickTrade.enterAmount")},model:{value:e.amount,callback:function(t){e.amount=t},expression:"amount"}}),t("div",{staticClass:"qt-quick-amounts"},e._l(e.quickAmountPcts,function(a){return t("a-button",{key:a,attrs:{size:"small",disabled:e.balance.available<=0},on:{click:function(t){return e.setAmountByPercent(a)}}},[e._v(" "+e._s(a)+"% ")])}),1)],1),"spot"!==e.marketType?t("div",{staticClass:"qt-section"},[t("div",{staticClass:"qt-label"},[e._v(e._s(e.$t("quickTrade.leverage")))]),t("div",{staticClass:"qt-leverage-row"},[t("a-slider",{staticStyle:{flex:"1","margin-right":"12px"},attrs:{min:1,max:125,marks:e.leverageMarks,tipFormatter:function(e){return e+"x"}},model:{value:e.leverage,callback:function(t){e.leverage=t},expression:"leverage"}}),t("a-input-number",{staticStyle:{width:"80px"},attrs:{min:1,max:125,formatter:function(e){return"".concat(e,"x")},parser:function(e){return e.replace("x","")}},model:{value:e.leverage,callback:function(t){e.leverage=t},expression:"leverage"}})],1)]):e._e(),t("a-collapse",{staticStyle:{background:"transparent",margin:"0 16px"},attrs:{bordered:!1}},[t("a-collapse-panel",{key:"tpsl",style:e.collapseStyle,attrs:{header:e.$t("quickTrade.tpsl")}},[t("div",{staticClass:"qt-tpsl-row"},[t("div",{staticClass:"qt-tpsl-item"},[t("span",{staticClass:"qt-label",staticStyle:{color:"#52c41a"}},[e._v(e._s(e.$t("quickTrade.tp")))]),t("a-input-number",{staticStyle:{width:"100%"},attrs:{min:0,step:e.priceStep,precision:e.pricePrecision,placeholder:e.$t("quickTrade.tpPlaceholder")},model:{value:e.tpPrice,callback:function(t){e.tpPrice=t},expression:"tpPrice"}})],1),t("div",{staticClass:"qt-tpsl-item"},[t("span",{staticClass:"qt-label",staticStyle:{color:"#f5222d"}},[e._v(e._s(e.$t("quickTrade.sl")))]),t("a-input-number",{staticStyle:{width:"100%"},attrs:{min:0,step:e.priceStep,precision:e.pricePrecision,placeholder:e.$t("quickTrade.slPlaceholder")},model:{value:e.slPrice,callback:function(t){e.slPrice=t},expression:"slPrice"}})],1)])])],1),t("div",{staticClass:"qt-submit-section"},[t("a-button",{staticClass:"qt-submit-btn",class:["buy"===e.side?"qt-btn-long":"qt-btn-short"],attrs:{type:"buy"===e.side?"primary":"danger",size:"large",block:"",loading:e.submitting,disabled:!e.canSubmit},on:{click:e.handleSubmit}},[t("a-icon",{attrs:{type:"buy"===e.side?"arrow-up":"arrow-down"}}),e._v(" "+e._s("buy"===e.side?e.$t("quickTrade.buyLong"):e.$t("quickTrade.sellShort"))+" "+e._s(e.symbol)+" ")],1)],1),t("div",{staticClass:"qt-position-section"},[t("div",{staticClass:"qt-section-header"},[t("a-icon",{attrs:{type:"wallet"}}),e._v(" "+e._s(e.$t("quickTrade.currentPosition"))+" ")],1),e.currentPosition?t("div",{staticClass:"qt-position-card",class:e.currentPosition.side},[t("div",{staticClass:"qt-pos-row"},[t("span",[e._v(e._s(e.$t("quickTrade.side")))]),t("a-tag",{attrs:{color:"long"===e.currentPosition.side?"#52c41a":"#f5222d",size:"small"}},[e._v(" "+e._s("long"===e.currentPosition.side?e.$t("quickTrade.long"):e.$t("quickTrade.short"))+" ")])],1),t("div",{staticClass:"qt-pos-row"},[t("span",[e._v(e._s(e.$t("quickTrade.posSize")))]),t("span",[e._v(e._s(e.currentPosition.size))])]),t("div",{staticClass:"qt-pos-row"},[t("span",[e._v(e._s(e.$t("quickTrade.entryPrice")))]),t("span",[e._v("$"+e._s(e.formatPrice(e.currentPosition.entry_price)))])]),e.currentPosition.mark_price?t("div",{staticClass:"qt-pos-row"},[t("span",[e._v(e._s(e.$t("quickTrade.markPrice")))]),t("span",[e._v("$"+e._s(e.formatPrice(e.currentPosition.mark_price)))])]):e._e(),e.currentPosition.leverage&&e.currentPosition.leverage>1?t("div",{staticClass:"qt-pos-row"},[t("span",[e._v(e._s(e.$t("quickTrade.leverage")))]),t("span",[e._v(e._s(e.currentPosition.leverage)+"x")])]):e._e(),t("div",{staticClass:"qt-pos-row"},[t("span",[e._v(e._s(e.$t("quickTrade.unrealizedPnl")))]),t("span",{class:e.currentPosition.unrealized_pnl>=0?"qt-green":"qt-red"},[e._v(" $"+e._s(e.formatPrice(e.currentPosition.unrealized_pnl))+" ")])]),t("a-button",{staticStyle:{"margin-top":"8px"},attrs:{type:"danger",size:"small",block:"",ghost:"",loading:e.closingPosition},on:{click:e.handleClosePosition}},[e._v(" "+e._s(e.$t("quickTrade.closePosition"))+" ")])],1):t("div",{staticClass:"qt-position-empty"},[t("a-empty",{staticStyle:{padding:"20px 0"},attrs:{description:e.$t("quickTrade.noPosition"),image:!1}},[t("template",{slot:"description"},[t("span",{staticStyle:{color:"#999","font-size":"12px"}},[e._v(e._s(e.$t("quickTrade.noPositionHint")))])])],2)],1)]),e.recentTrades.length>0?t("div",{staticClass:"qt-history-section"},[t("a-collapse",{attrs:{bordered:!1,activeKey:e.historyCollapsed?[]:["history"]},on:{change:e.handleHistoryCollapse}},[t("a-collapse-panel",{key:"history",style:e.collapseStyle,attrs:{showArrow:!1}},[t("template",{slot:"header"},[t("div",{staticClass:"qt-section-header",staticStyle:{margin:"0",padding:"0"}},[t("a-icon",{attrs:{type:"history"}}),e._v(" "+e._s(e.$t("quickTrade.recentTrades"))+" "),t("span",{staticClass:"qt-history-count"},[e._v("("+e._s(e.recentTrades.length)+")")])],1)]),t("div",{staticClass:"qt-trade-list"},e._l(e.recentTrades,function(a){return t("div",{key:a.id,staticClass:"qt-trade-item"},[t("div",{staticClass:"qt-trade-main"},[t("a-tag",{attrs:{color:"buy"===a.side?"#52c41a":"#f5222d",size:"small"}},[e._v(" "+e._s("buy"===a.side?"LONG":"SHORT")+" ")]),t("span",{staticClass:"qt-trade-symbol"},[e._v(e._s(a.symbol))]),t("span",{staticClass:"qt-trade-amount"},[e._v("$"+e._s(e.formatPrice(a.amount)))])],1),t("div",{staticClass:"qt-trade-meta"},[t("a-tag",{attrs:{color:"filled"===a.status?"#52c41a":"failed"===a.status?"#f5222d":"#faad14",size:"small"}},[e._v(" "+e._s(a.status)+" ")]),t("span",{staticClass:"qt-trade-time"},[e._v(e._s(e.formatTime(a.created_at)))])],1)])}),0)],2)],1)],1):e._e()],1)},r=[],s=a(81127),n=a(56252),c=a(76338),l=(a(28706),a(2008),a(74423),a(62062),a(2892),a(26099),a(21699),a(68156),a(42762),a(95353)),o=a(42430),u=a(75769);function d(e){return(0,u.Ay)({url:"/api/quick-trade/place-order",method:"post",data:e})}function m(e){return(0,u.Ay)({url:"/api/quick-trade/balance",method:"get",params:e})}function p(e){return(0,u.Ay)({url:"/api/quick-trade/position",method:"get",params:e})}function h(e){return(0,u.Ay)({url:"/api/quick-trade/history",method:"get",params:e})}function v(e){return(0,u.Ay)({url:"/api/quick-trade/close-position",method:"post",data:e})}var b=a(35038),y=a(505),f={name:"QuickTradePanel",props:{visible:{type:Boolean,default:!1},symbol:{type:String,default:""},presetSide:{type:String,default:""},presetPrice:{type:Number,default:0},source:{type:String,default:"manual"},marketType:{type:String,default:"swap"}},data:function(){return{credentials:[],selectedCredentialId:void 0,credLoading:!1,balance:{available:0,total:0},side:"buy",orderType:"market",limitPrice:0,amount:100,leverage:5,tpPrice:null,slPrice:null,submitting:!1,closingPosition:!1,currentPrice:0,currentPosition:null,recentTrades:[],historyCollapsed:!1,currentSymbol:"",symbolSuggestions:[],symbolSearching:!1,symbolSearchTimer:null,userId:null,quickAmountPcts:[10,25,50,75,100],leverageMarks:{1:"1x",5:"5x",10:"10x",25:"25x",50:"50x",100:"100x",125:"125x"},pollTimer:null}},computed:(0,c.A)((0,c.A)({},(0,l.aH)({navTheme:function(e){return e.app.theme}})),{},{isDark:function(){return"dark"===this.navTheme||"realdark"===this.navTheme},priceStep:function(){return this.currentPrice>1e4?1:this.currentPrice>100?.1:this.currentPrice>1?.01:1e-4},pricePrecision:function(){return this.currentPrice>1e4?0:this.currentPrice>100?1:this.currentPrice>1?2:4},canSubmit:function(){return this.selectedCredentialId&&this.currentSymbol&&this.amount>0&&!this.submitting},priceChangeClass:function(){return""},collapseStyle:function(){return{background:"transparent",borderRadius:"4px",border:0,overflow:"hidden"}}}),watch:{visible:function(e){e?this.init():this.stopPolling()},symbol:function(e){e&&(this.currentSymbol=e)},currentSymbol:function(e){e&&(this.loadPrice(),this.selectedCredentialId&&this.loadPosition(),this.$emit("update:symbol",e))},selectedCredentialId:function(e){e&&this.currentSymbol&&this.loadPosition()},presetSide:function(e){e&&(this.side=e)},presetPrice:function(e){e>0&&(this.currentPrice=e,this.limitPrice=e)}},methods:{init:function(){var e=this;return(0,n.A)((0,s.A)().m(function t(){return(0,s.A)().w(function(t){while(1)switch(t.n){case 0:return e.currentSymbol=e.symbol||"",e.presetSide&&(e.side=e.presetSide),e.presetPrice>0&&(e.currentPrice=e.presetPrice,e.limitPrice=e.presetPrice),t.n=1,e.loadCredentials();case 1:return t.n=2,e.loadUserInfo();case 2:return t.n=3,e.loadWatchlistSymbols();case 3:if(!e.currentSymbol){t.n=4;break}return t.n=4,e.loadPrice();case 4:if(!e.selectedCredentialId||!e.currentSymbol){t.n=5;break}return t.n=5,e.loadPosition();case 5:e.loadHistory(),e.startPolling();case 6:return t.a(2)}},t)}))()},loadUserInfo:function(){var e=this;return(0,n.A)((0,s.A)().m(function t(){var a,i,r,n;return(0,s.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(t.p=0,i=e.$store,r=(null===i||void 0===i||null===(a=i.getters)||void 0===a?void 0:a.userInfo)||{},!r||!r.id){t.n=1;break}return e.userId=r.id,t.a(2);case 1:return t.n=2,(0,y.ug)();case 2:n=t.v,n&&1===n.code&&n.data&&(e.userId=n.data.id,i&&i.commit("SET_INFO",n.data)),t.n=4;break;case 3:t.p=3,t.v;case 4:return t.a(2)}},t,null,[[0,3]])}))()},loadWatchlistSymbols:function(){var e=this;return(0,n.A)((0,s.A)().m(function t(){var a,i;return(0,s.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(e.userId){t.n=2;break}return t.n=1,e.loadUserInfo();case 1:if(e.userId){t.n=2;break}return t.a(2);case 2:return t.p=2,t.n=3,(0,b.Qo)({userid:e.userId});case 3:a=t.v,a&&1===a.code&&a.data&&(i=(a.data||[]).filter(function(e){return"crypto"===(e.market||"").toLowerCase()}).map(function(e){return{value:e.symbol||"",symbol:e.symbol||"",name:e.name||""}}).filter(function(e){return e.value}),e.symbolSuggestions=i),t.n=5;break;case 4:t.p=4,t.v;case 5:return t.a(2)}},t,null,[[2,4]])}))()},handleSymbolSearch:function(e){var t=this;this.symbolSearchTimer&&clearTimeout(this.symbolSearchTimer),e&&""!==e.trim()?this.symbolSearchTimer=setTimeout((0,n.A)((0,s.A)().m(function a(){var i;return(0,s.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return t.symbolSearching=!0,a.p=1,a.n=2,(0,b._3)({market:"Crypto",keyword:e.trim(),limit:20});case 2:i=a.v,i&&1===i.code&&i.data?t.symbolSuggestions=(i.data.items||i.data||[]).map(function(e){return{value:e.symbol||"",symbol:e.symbol||"",name:e.name||""}}).filter(function(e){return e.value}):t.symbolSuggestions=[],a.n=4;break;case 3:a.p=3,a.v,t.symbolSuggestions=[];case 4:return a.p=4,t.symbolSearching=!1,a.f(4);case 5:return a.a(2)}},a,null,[[1,3,4,5]])})),300):this.loadWatchlistSymbols()},handleSymbolChange:function(e){e&&e!==this.currentSymbol&&(this.currentSymbol=e,this.loadPrice(),this.selectedCredentialId&&this.loadPosition(),this.$emit("update:symbol",e))},loadPrice:function(){var e=this;return(0,n.A)((0,s.A)().m(function t(){var a,i;return(0,s.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(e.currentSymbol){t.n=1;break}return e.currentPrice=0,t.a(2);case 1:return t.p=1,t.n=2,(0,u.Ay)({url:"/api/market/price",method:"get",params:{market:"Crypto",symbol:e.currentSymbol}});case 2:a=t.v,a&&1===a.code&&a.data&&(i=parseFloat(a.data.price||0),i>0&&(e.currentPrice=i,0!==e.limitPrice&&e.limitPrice!==e.presetPrice||(e.limitPrice=i))),t.n=4;break;case 3:t.p=3,t.v;case 4:return t.a(2)}},t,null,[[1,3]])}))()},handleSymbolFocus:function(){0===this.symbolSuggestions.length&&this.loadWatchlistSymbols()},loadCredentials:function(){var e=this;return(0,n.A)((0,s.A)().m(function t(){var a,i,r;return(0,s.A)().w(function(t){while(1)switch(t.p=t.n){case 0:return e.credLoading=!0,t.p=1,t.n=2,(0,o.IA)();case 2:a=t.v,1===a.code&&a.data&&(i=a.data.items||a.data||[],r=["ibkr","mt5"],e.credentials=i.filter(function(e){var t=(e.exchange_id||e.name||"").toLowerCase();return!r.includes(t)}),!e.selectedCredentialId&&e.credentials.length>0&&(e.selectedCredentialId=e.credentials[0].id,e.onCredentialChange(e.selectedCredentialId))),t.n=4;break;case 3:t.p=3,t.v;case 4:return t.p=4,e.credLoading=!1,t.f(4);case 5:return t.a(2)}},t,null,[[1,3,4,5]])}))()},onCredentialChange:function(e){var t=this;return(0,n.A)((0,s.A)().m(function a(){return(0,s.A)().w(function(a){while(1)switch(a.n){case 0:return t.selectedCredentialId=e,a.n=1,t.loadBalance();case 1:return a.n=2,t.loadPosition();case 2:return a.a(2)}},a)}))()},loadBalance:function(){var e=this;return(0,n.A)((0,s.A)().m(function t(){var a;return(0,s.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(e.selectedCredentialId){t.n=1;break}return t.a(2);case 1:return t.p=1,t.n=2,m({credential_id:e.selectedCredentialId,market_type:e.marketType});case 2:a=t.v,1===a.code&&a.data&&(e.balance=a.data),t.n=4;break;case 3:t.p=3,t.v;case 4:return t.a(2)}},t,null,[[1,3]])}))()},loadPosition:function(){var e=this;return(0,n.A)((0,s.A)().m(function t(){var a;return(0,s.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(e.selectedCredentialId&&e.currentSymbol){t.n=1;break}return t.a(2);case 1:return t.p=1,t.n=2,p({credential_id:e.selectedCredentialId,symbol:e.currentSymbol,market_type:e.marketType});case 2:if(a=t.v,!(1===a.code&&a.data&&a.data.positions&&a.data.positions.length>0)){t.n=3;break}return e.currentPosition=a.data.positions[0],t.a(2,!0);case 3:return e.currentPosition=null,t.a(2,!1);case 4:t.n=6;break;case 5:return t.p=5,t.v,e.currentPosition=null,t.a(2,!1);case 6:return t.a(2)}},t,null,[[1,5]])}))()},loadPositionWithRetry:function(){var e=arguments,t=this;return(0,n.A)((0,s.A)().m(function a(){var i,r,n,c;return(0,s.A)().w(function(a){while(1)switch(a.n){case 0:return i=e.length>0&&void 0!==e[0]?e[0]:3,r=e.length>1&&void 0!==e[1]?e[1]:2e3,a.n=1,t.loadPosition();case 1:if(n=a.v,!n){a.n=2;break}return a.a(2);case 2:c=0;case 3:if(!(c0&&(this.amount=Math.floor(this.balance.available*e/100*100)/100)},handleSubmit:function(){var e=this;return(0,n.A)((0,s.A)().m(function t(){var a,i,r;return(0,s.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(e.canSubmit){t.n=1;break}return t.a(2);case 1:return e.submitting=!0,t.p=2,a={credential_id:e.selectedCredentialId,symbol:e.currentSymbol,side:e.side,order_type:e.orderType,amount:e.amount,price:"limit"===e.orderType?e.limitPrice:0,leverage:"spot"!==e.marketType?e.leverage:1,market_type:e.marketType,tp_price:e.tpPrice||0,sl_price:e.slPrice||0,source:e.source},t.n=3,d(a);case 3:if(i=t.v,1!==i.code){t.n=7;break}return e.$emit("order-success",i.data),t.n=4,e.loadBalance();case 4:return t.n=5,e.loadHistory();case 5:return t.n=6,e.loadPositionWithRetry();case 6:t.n=8;break;case 7:e.$message.error(i.msg||e.$t("quickTrade.orderFailed"));case 8:t.n=10;break;case 9:t.p=9,r=t.v,e.$message.error(r.message||e.$t("quickTrade.orderFailed"));case 10:return t.p=10,e.submitting=!1,t.f(10);case 11:return t.a(2)}},t,null,[[2,9,10,11]])}))()},handleClosePosition:function(){var e=this;return(0,n.A)((0,s.A)().m(function t(){var a,i,r;return(0,s.A)().w(function(t){while(1)switch(t.p=t.n){case 0:if(e.currentPosition&&e.selectedCredentialId){t.n=1;break}return t.a(2);case 1:return e.closingPosition=!0,t.p=2,a={credential_id:e.selectedCredentialId,symbol:e.currentSymbol,market_type:e.marketType,size:0,source:"manual"},t.n=3,v(a);case 3:if(i=t.v,1!==i.code){t.n=6;break}return e.$message.success(e.$t("quickTrade.positionClosed")),t.n=4,e.loadBalance();case 4:return t.n=5,e.loadHistory();case 5:e.currentPosition=null,setTimeout((0,n.A)((0,s.A)().m(function t(){return(0,s.A)().w(function(t){while(1)switch(t.n){case 0:return t.n=1,e.loadPosition();case 1:return t.a(2)}},t)})),2e3),t.n=7;break;case 6:e.$message.error(i.msg||e.$t("quickTrade.orderFailed"));case 7:t.n=9;break;case 8:t.p=8,r=t.v,e.$message.error(r.message||e.$t("quickTrade.orderFailed"));case 9:return t.p=9,e.closingPosition=!1,t.f(9);case 10:return t.a(2)}},t,null,[[2,8,9,10]])}))()},startPolling:function(){var e=this;this.stopPolling(),this.pollTimer=setInterval(function(){e.currentSymbol&&e.loadPrice(),e.selectedCredentialId&&e.currentSymbol&&(e.loadBalance(),e.loadPosition())},1e4)},stopPolling:function(){this.pollTimer&&(clearInterval(this.pollTimer),this.pollTimer=null)},handleClose:function(){this.$emit("close"),this.$emit("update:visible",!1)},handleHistoryCollapse:function(e){this.historyCollapsed=!e.includes("history")},formatPrice:function(e){var t=parseFloat(e||0);return Math.abs(t)>=1e4?t.toLocaleString("en-US",{minimumFractionDigits:0,maximumFractionDigits:0}):Math.abs(t)>=100?t.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2}):Math.abs(t)>=1?t.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:4}):t.toLocaleString("en-US",{minimumFractionDigits:4,maximumFractionDigits:6})},formatTime:function(e){if(!e)return"";var t=new Date(e),a=function(e){return String(e).padStart(2,"0")};return"".concat(a(t.getMonth()+1),"-").concat(a(t.getDate())," ").concat(a(t.getHours()),":").concat(a(t.getMinutes()))}},beforeDestroy:function(){this.stopPolling()}},g=f,k=a(845),_=(0,k.A)(g,i,r,!1,null,"0d547552",null),P=_.exports},42430:function(e,t,a){a.d(t,{IA:function(){return n},N6:function(){return o},PR:function(){return c},kI:function(){return l}});var i=a(76338),r=a(75769),s={list:"/api/credentials/list",get:"/api/credentials/get",create:"/api/credentials/create",delete:"/api/credentials/delete",egressIp:"/api/credentials/egress-ip"};function n(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,r.Ay)({url:s.list,method:"get",params:e})}function c(e){return(0,r.Ay)({url:s.create,method:"post",data:e})}function l(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return(0,r.Ay)({url:s.delete,method:"delete",params:(0,i.A)({id:e},t)})}function o(){return(0,r.Ay)({url:s.egressIp,method:"get"})}}}]); \ No newline at end of file diff --git a/frontend/dist/js/app-legacy.fca528f4.js b/frontend/dist/js/app-legacy.6beb7055.js similarity index 51% rename from frontend/dist/js/app-legacy.fca528f4.js rename to frontend/dist/js/app-legacy.6beb7055.js index c9deadd..d359975 100644 --- a/frontend/dist/js/app-legacy.fca528f4.js +++ b/frontend/dist/js/app-legacy.6beb7055.js @@ -1 +1 @@ -(function(){var e={35358:function(e,t,a){var i={"./af":25177,"./af.js":25177,"./ar":61509,"./ar-dz":41488,"./ar-dz.js":41488,"./ar-kw":58676,"./ar-kw.js":58676,"./ar-ly":42353,"./ar-ly.js":42353,"./ar-ma":24496,"./ar-ma.js":24496,"./ar-ps":6947,"./ar-ps.js":6947,"./ar-sa":82682,"./ar-sa.js":82682,"./ar-tn":89756,"./ar-tn.js":89756,"./ar.js":61509,"./az":95533,"./az.js":95533,"./be":28959,"./be.js":28959,"./bg":47777,"./bg.js":47777,"./bm":54903,"./bm.js":54903,"./bn":61290,"./bn-bd":17357,"./bn-bd.js":17357,"./bn.js":61290,"./bo":31545,"./bo.js":31545,"./br":11470,"./br.js":11470,"./bs":44429,"./bs.js":44429,"./ca":7306,"./ca.js":7306,"./cs":56464,"./cs.js":56464,"./cv":73635,"./cv.js":73635,"./cy":64226,"./cy.js":64226,"./da":93601,"./da.js":93601,"./de":77853,"./de-at":26111,"./de-at.js":26111,"./de-ch":54697,"./de-ch.js":54697,"./de.js":77853,"./dv":60708,"./dv.js":60708,"./el":54691,"./el.js":54691,"./en-au":53872,"./en-au.js":53872,"./en-ca":28298,"./en-ca.js":28298,"./en-gb":56195,"./en-gb.js":56195,"./en-ie":66584,"./en-ie.js":66584,"./en-il":65543,"./en-il.js":65543,"./en-in":9033,"./en-in.js":9033,"./en-nz":79402,"./en-nz.js":79402,"./en-sg":43004,"./en-sg.js":43004,"./eo":32934,"./eo.js":32934,"./es":97650,"./es-do":20838,"./es-do.js":20838,"./es-mx":17730,"./es-mx.js":17730,"./es-us":56575,"./es-us.js":56575,"./es.js":97650,"./et":3035,"./et.js":3035,"./eu":3508,"./eu.js":3508,"./fa":119,"./fa.js":119,"./fi":90527,"./fi.js":90527,"./fil":95995,"./fil.js":95995,"./fo":52477,"./fo.js":52477,"./fr":85498,"./fr-ca":26435,"./fr-ca.js":26435,"./fr-ch":37892,"./fr-ch.js":37892,"./fr.js":85498,"./fy":37071,"./fy.js":37071,"./ga":41734,"./ga.js":41734,"./gd":70217,"./gd.js":70217,"./gl":77329,"./gl.js":77329,"./gom-deva":32124,"./gom-deva.js":32124,"./gom-latn":93383,"./gom-latn.js":93383,"./gu":95050,"./gu.js":95050,"./he":11713,"./he.js":11713,"./hi":43861,"./hi.js":43861,"./hr":26308,"./hr.js":26308,"./hu":90609,"./hu.js":90609,"./hy-am":17160,"./hy-am.js":17160,"./id":74063,"./id.js":74063,"./is":89374,"./is.js":89374,"./it":88383,"./it-ch":21827,"./it-ch.js":21827,"./it.js":88383,"./ja":23827,"./ja.js":23827,"./jv":89722,"./jv.js":89722,"./ka":41794,"./ka.js":41794,"./kk":27088,"./kk.js":27088,"./km":96870,"./km.js":96870,"./kn":84451,"./kn.js":84451,"./ko":63164,"./ko.js":63164,"./ku":98174,"./ku-kmr":6181,"./ku-kmr.js":6181,"./ku.js":98174,"./ky":78474,"./ky.js":78474,"./lb":79680,"./lb.js":79680,"./lo":15867,"./lo.js":15867,"./lt":45766,"./lt.js":45766,"./lv":69532,"./lv.js":69532,"./me":58076,"./me.js":58076,"./mi":41848,"./mi.js":41848,"./mk":30306,"./mk.js":30306,"./ml":73739,"./ml.js":73739,"./mn":99053,"./mn.js":99053,"./mr":86169,"./mr.js":86169,"./ms":73386,"./ms-my":92297,"./ms-my.js":92297,"./ms.js":73386,"./mt":77075,"./mt.js":77075,"./my":72264,"./my.js":72264,"./nb":22274,"./nb.js":22274,"./ne":8235,"./ne.js":8235,"./nl":92572,"./nl-be":43784,"./nl-be.js":43784,"./nl.js":92572,"./nn":54566,"./nn.js":54566,"./oc-lnc":69330,"./oc-lnc.js":69330,"./pa-in":29849,"./pa-in.js":29849,"./pl":94418,"./pl.js":94418,"./pt":79834,"./pt-br":48303,"./pt-br.js":48303,"./pt.js":79834,"./ro":24457,"./ro.js":24457,"./ru":82271,"./ru.js":82271,"./sd":1221,"./sd.js":1221,"./se":33478,"./se.js":33478,"./si":17538,"./si.js":17538,"./sk":5784,"./sk.js":5784,"./sl":46637,"./sl.js":46637,"./sq":86794,"./sq.js":86794,"./sr":45719,"./sr-cyrl":3322,"./sr-cyrl.js":3322,"./sr.js":45719,"./ss":56e3,"./ss.js":56e3,"./sv":41011,"./sv.js":41011,"./sw":40748,"./sw.js":40748,"./ta":11025,"./ta.js":11025,"./te":11885,"./te.js":11885,"./tet":28861,"./tet.js":28861,"./tg":86571,"./tg.js":86571,"./th":55802,"./th.js":55802,"./tk":59527,"./tk.js":59527,"./tl-ph":29231,"./tl-ph.js":29231,"./tlh":31052,"./tlh.js":31052,"./tr":85096,"./tr.js":85096,"./tzl":79846,"./tzl.js":79846,"./tzm":81765,"./tzm-latn":97711,"./tzm-latn.js":97711,"./tzm.js":81765,"./ug-cn":48414,"./ug-cn.js":48414,"./uk":16618,"./uk.js":16618,"./ur":57777,"./ur.js":57777,"./uz":57609,"./uz-latn":72475,"./uz-latn.js":72475,"./uz.js":57609,"./vi":21135,"./vi.js":21135,"./x-pseudo":64051,"./x-pseudo.js":64051,"./yo":82218,"./yo.js":82218,"./zh-cn":52648,"./zh-cn.js":52648,"./zh-hk":1632,"./zh-hk.js":1632,"./zh-mo":31541,"./zh-mo.js":31541,"./zh-tw":50304,"./zh-tw.js":50304};function s(e){var t=n(e);return a(t)}function n(e){if(!a.o(i,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return i[e]}s.keys=function(){return Object.keys(i)},s.resolve=n,e.exports=s,s.id=35358},505:function(e,t,a){"use strict";a.d(t,{iD:function(){return n},ri:function(){return l},ug:function(){return r}});var i=a(75769),s={Login:"/api/auth/login",Logout:"/api/auth/logout",UserInfo:"/api/auth/info",UserMenu:"/user/nav"};function n(e){return(0,i.Ay)({url:s.Login,method:"post",data:e})}function o(){return(0,i.Ay)({url:s.UserInfo,method:"get",headers:{"Content-Type":"application/json;charset=UTF-8"}})}function r(){return o()}function l(){return(0,i.Ay)({url:s.Logout,method:"post",headers:{"Content-Type":"application/json;charset=UTF-8"}})}},36911:function(e,t,a){"use strict";a.d(t,{EM:function(){return n},GF:function(){return g},KP:function(){return A},Ke:function(){return d},Ox:function(){return r},P7:function(){return l},UH:function(){return m},WM:function(){return o},Yx:function(){return b},kv:function(){return h},mV:function(){return c},oK:function(){return y},tq:function(){return f},ul:function(){return v},v_:function(){return u},xQ:function(){return p}});var i=a(75769),s={strategies:"/api/strategies",strategyDetail:"/api/strategies/detail",createStrategy:"/api/strategies/create",batchCreateStrategies:"/api/strategies/batch-create",updateStrategy:"/api/strategies/update",stopStrategy:"/api/strategies/stop",startStrategy:"/api/strategies/start",deleteStrategy:"/api/strategies/delete",batchStartStrategies:"/api/strategies/batch-start",batchStopStrategies:"/api/strategies/batch-stop",batchDeleteStrategies:"/api/strategies/batch-delete",testConnection:"/api/strategies/test-connection",trades:"/api/strategies/trades",positions:"/api/strategies/positions",equityCurve:"/api/strategies/equityCurve",notifications:"/api/strategies/notifications",unreadNotificationCount:"/api/strategies/notifications/unread-count"};function n(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,i.Ay)({url:s.strategies,method:"get",params:e})}function o(e){return(0,i.Ay)({url:s.createStrategy,method:"post",data:e})}function r(e){return(0,i.Ay)({url:s.batchCreateStrategies,method:"post",data:e})}function l(e,t){return(0,i.Ay)({url:s.updateStrategy,method:"put",params:{id:e},data:t})}function d(e){return(0,i.Ay)({url:s.stopStrategy,method:"post",params:{id:e}})}function c(e){return(0,i.Ay)({url:s.startStrategy,method:"post",params:{id:e}})}function u(e){return(0,i.Ay)({url:s.deleteStrategy,method:"delete",params:{id:e}})}function m(e){return(0,i.Ay)({url:s.batchStartStrategies,method:"post",data:e})}function g(e){return(0,i.Ay)({url:s.batchStopStrategies,method:"post",data:e})}function p(e){return(0,i.Ay)({url:s.batchDeleteStrategies,method:"delete",data:e})}function h(e){return(0,i.Ay)({url:s.testConnection,method:"post",data:{exchange_config:e}})}function f(e){return(0,i.Ay)({url:s.trades,method:"get",params:{id:e}})}function y(e){return(0,i.Ay)({url:s.positions,method:"get",params:{id:e}})}function b(e){return(0,i.Ay)({url:s.equityCurve,method:"get",params:{id:e}})}function A(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,i.Ay)({url:s.notifications,method:"get",params:e})}function v(){return(0,i.Ay)({url:s.unreadNotificationCount,method:"get"})}},45958:function(e,t,a){"use strict";var i=a(76338),s=a(1512),n=a(3508),o=a.n(n),r={antLocale:s.A,momentName:"eu",momentLocale:o()},l={"common.confirm":"Confirm","common.cancel":"Cancel","common.save":"Save","common.delete":"Delete","common.edit":"Edit","common.add":"Add","common.close":"Close","common.done":"Done","common.ok":"OK","common.loading":"Loading...","common.noData":"No data",submit:"Submit",save:"Save","submit.ok":"Submit successfully","save.ok":"Saved successfully","menu.welcome":"Welcome","menu.home":"Home","menu.dashboard":"Dashboard","menu.dashboard.analysis":"AI Analysis","menu.dashboard.aiAssetAnalysis":"AI Asset Analysis","menu.dashboard.aiQuant":"AI Quant","menu.dashboard.indicator":"Indicator Analysis","menu.dashboard.community":"Indicator Market","menu.dashboard.tradingAssistant":"Trading Assistant","menu.dashboard.portfolio":"Portfolio","menu.dashboard.globalMarket":"Global Market","menu.dashboard.polymarket":"Prediction Markets","menu.settings":"Settings","menu.dashboard.aiTradingAssistant":"AI Trading Assistant","menu.dashboard.signalRobot":"Signal Robot","menu.dashboard.monitor":"Monitor","menu.dashboard.workplace":"Workplace","aiAssetAnalysis.title":"AI Asset Analysis","aiAssetAnalysis.subtitle":"Unify portfolio monitoring, instant analysis, and scheduled tasks into one smooth workflow.","aiAssetAnalysis.actions.quickAnalysis":"Start Analysis Now","aiAssetAnalysis.actions.monitorTasks":"Manage Monitor Tasks","aiAssetAnalysis.actions.openStandalone":"Open Standalone Page","aiAssetAnalysis.quickBar.title":"Quick Analyze","aiAssetAnalysis.quickBar.placeholder":"Select a symbol from asset pool","aiAssetAnalysis.quickBar.useInQuick":"Use in Instant Analysis","aiAssetAnalysis.quickBar.runNow":"Analyze Now","aiAssetAnalysis.history.title":"Recent Analysis","aiAssetAnalysis.history.empty":"No analysis history yet","aiAssetAnalysis.actions.enterQuick":"Go to Instant Analysis","aiAssetAnalysis.actions.enterMonitor":"Go to Asset Pool & Tasks","aiAssetAnalysis.flow.poolTitle":"Build Asset Pool","aiAssetAnalysis.flow.poolDesc":"Add positions and watch targets first to build one unified analysis pool.","aiAssetAnalysis.flow.poolAction":"Manage Asset Pool","aiAssetAnalysis.flow.quickTitle":"Instant Analysis","aiAssetAnalysis.flow.quickDesc":"Run AI analysis for any symbol in one click and get suggestions quickly.","aiAssetAnalysis.flow.quickAction":"Run Analysis","aiAssetAnalysis.flow.autoTitle":"Scheduled Monitoring","aiAssetAnalysis.flow.autoDesc":"Set recurring AI analysis tasks and deliver reports through notification channels.","aiAssetAnalysis.flow.autoAction":"Configure Tasks","aiAssetAnalysis.tabs.quick":"Instant Analysis","aiAssetAnalysis.tabs.monitor":"Asset Pool & Scheduled Tasks","aiAssetAnalysis.position.quickAdd":"Quick Position","aiAssetAnalysis.position.needFirst":"Please add a position first before creating a scheduled AI task","aiAssetAnalysis.monitor.quickTask":"Create AI Scheduled Task","aiAssetAnalysis.monitor.interval":"Run Interval (minutes)","aiAssetAnalysis.monitor.tip":"A scheduled AI monitor will be created for current positions of this symbol.","aiAssetAnalysis.monitor.created":"AI scheduled task created","aiAssetAnalysis.monitor.running":"Running","aiAssetAnalysis.monitor.paused":"Paused","aiAssetAnalysis.monitor.toggle":"Toggle Task","aiAssetAnalysis.monitor.nextRun":"Next Run","aiAssetAnalysis.monitor.enabled":"Task enabled","aiAssetAnalysis.monitor.disabled":"Task paused","aiAssetAnalysis.tasks.manage":"Task Manager","aiAssetAnalysis.tasks.empty":"No scheduled tasks yet","aiAssetAnalysis.tasks.pause":"Pause","aiAssetAnalysis.tasks.resume":"Resume","aiAssetAnalysis.tasks.edit":"Edit Task","aiAssetAnalysis.tasks.delete":"Delete","aiAssetAnalysis.tasks.deleteConfirm":"Are you sure you want to delete this task? This action cannot be undone.","aiAssetAnalysis.tasks.deleted":"Task deleted","aiAssetAnalysis.tasks.paused":"Task paused","aiAssetAnalysis.tasks.resumed":"Task resumed","aiAssetAnalysis.tasks.name":"Task Name","aiAssetAnalysis.watchlist.summary":"Portfolio Summary","aiAssetAnalysis.watchlist.totalAssets":"Assets","aiAssetAnalysis.watchlist.totalPnl":"Total P&L","aiAssetAnalysis.watchlist.positionCount":"Positions","aiAssetAnalysis.watchlist.taskCount":"Tasks","aiAssetAnalysis.batch.selectAll":"Select All","aiAssetAnalysis.batch.deselectAll":"Deselect All","aiAssetAnalysis.batch.schedule":"Batch Schedule","aiAssetAnalysis.batch.scheduleTitle":"Create Batch Scheduled Analysis","aiAssetAnalysis.batch.scheduleDesc":"Will create scheduled AI analysis tasks for {count} selected symbols. Reports will be auto-generated and pushed on schedule.","aiAssetAnalysis.batch.intervalLabel":"Analysis Interval","aiAssetAnalysis.batch.interval1h":"Every 1 hour","aiAssetAnalysis.batch.interval4h":"Every 4 hours","aiAssetAnalysis.batch.interval12h":"Every 12 hours","aiAssetAnalysis.batch.interval24h":"Every 24 hours","aiAssetAnalysis.batch.notifyLabel":"Notification Channels (push after analysis)","aiAssetAnalysis.batch.scheduleTip":"Tasks start automatically once created. You can pause/resume them anytime from the watchlist.","aiAssetAnalysis.batch.done":"Batch scheduled tasks created","aiAssetAnalysis.placeholder.title":"AI Analysis Engine","aiAssetAnalysis.placeholder.subtitle":"Multi-source data driven · Institutional-grade insights · Real-time market pulse","aiAssetAnalysis.placeholder.feature1":"Multi-horizon Outlook","aiAssetAnalysis.placeholder.feature1Desc":"Blends 4 timeframe AI consensus","aiAssetAnalysis.placeholder.feature2":"Pro Indicator Matrix","aiAssetAnalysis.placeholder.feature2Desc":"Institutional-grade quant metrics","aiAssetAnalysis.placeholder.feature3":"Watchlist Synergy","aiAssetAnalysis.placeholder.feature3Desc":"1-click position & smart monitoring","aiAssetAnalysis.placeholder.quickStart":"Pick a symbol from the watchlist on the right, or quick-start below","fastAnalysis.multiPeriodTitle":"Multi-horizon Forecast","fastAnalysis.technicalIndicatorsTitle":"Pro Indicator Matrix","aiAssetAnalysis.tabLead.quick":"Best for ad-hoc decisions: select a symbol and analyze immediately.","aiAssetAnalysis.tabLead.monitor":"Best for continuous tracking: maintain positions and set monitor ranges/frequency.","aiAssetAnalysis.stats.totalAnalyses":"Total Analyses","aiAssetAnalysis.stats.accuracy":"Accuracy","aiAssetAnalysis.stats.avgReturn":"Avg Return","aiAssetAnalysis.stats.satisfaction":"Satisfaction","aiAssetAnalysis.stats.decisions":"Decision Dist.","aiAssetAnalysis.opportunities.title":"AI Opportunity Radar","aiAssetAnalysis.opportunities.empty":"No opportunities found","aiAssetAnalysis.opportunities.analyze":"Analyze","aiAssetAnalysis.opportunities.updateHint":"Updates hourly","aiAssetAnalysis.opportunities.signal.overbought":"Overbought","aiAssetAnalysis.opportunities.signal.oversold":"Oversold","aiAssetAnalysis.opportunities.signal.bullish_momentum":"Bullish","aiAssetAnalysis.opportunities.signal.bearish_momentum":"Bearish","aiAssetAnalysis.opportunities.market.Crypto":"🪙 Crypto","aiAssetAnalysis.opportunities.market.USStock":"📈 US Stock","aiAssetAnalysis.opportunities.market.Forex":"💱 Forex","aiAssetAnalysis.opportunities.market.PredictionMarket":"🎯 Prediction Market","aiAssetAnalysis.opportunities.reason.crypto.overbought":"24h +{change}%, 7d +{change7d}%, overbought risk","aiAssetAnalysis.opportunities.reason.crypto.bullish_momentum":"24h +{change}%, strong bullish momentum","aiAssetAnalysis.opportunities.reason.crypto.oversold":"24h -{change}%, possible oversold bounce","aiAssetAnalysis.opportunities.reason.crypto.bearish_momentum":"24h -{change}%, clear bearish trend","aiAssetAnalysis.opportunities.reason.usstock.overbought":"Day +{change}%, large gain, watch for pullback","aiAssetAnalysis.opportunities.reason.usstock.bullish_momentum":"Day +{change}%, strong bullish momentum","aiAssetAnalysis.opportunities.reason.usstock.oversold":"Day -{change}%, possible oversold bounce","aiAssetAnalysis.opportunities.reason.usstock.bearish_momentum":"Day -{change}%, clear bearish trend","aiAssetAnalysis.opportunities.reason.forex.overbought":"Day +{change}%, volatile, watch for reversal","aiAssetAnalysis.opportunities.reason.forex.bullish_momentum":"Day +{change}%, bullish momentum","aiAssetAnalysis.opportunities.reason.forex.oversold":"Day -{change}%, volatile, possible bounce","aiAssetAnalysis.opportunities.reason.forex.bearish_momentum":"Day -{change}%, clear bearish trend","aiAssetAnalysis.checkup.title":"Portfolio Checkup","aiAssetAnalysis.checkup.btn":"Checkup","aiAssetAnalysis.checkup.desc":"Run AI analysis on all positions in your portfolio to quickly understand the current status and get recommendations for each asset.","aiAssetAnalysis.checkup.start":"Start Checkup","aiAssetAnalysis.checkup.progress":"Analyzing {current}/{total}...","aiAssetAnalysis.checkup.noPositions":"No positions in your portfolio. Please add assets first.","aiAssetAnalysis.checkup.complete":"Checkup Complete","aiAssetAnalysis.checkup.failed":"Failed","aiAssetAnalysis.checkup.rerun":"Run Again","aiAssetAnalysis.search.hint":"Search","aiAssetAnalysis.search.placeholder":"Search any symbol... (Ctrl+K)","aiAssetAnalysis.search.noResults":"No results found. Try a different keyword.","menu.form":"Form","menu.form.basic-form":"Basic Form","menu.form.step-form":"Step Form","menu.form.step-form.info":"Step Form(write transfer information)","menu.form.step-form.confirm":"Step Form(confirm transfer information)","menu.form.step-form.result":"Step Form(finished)","menu.form.advanced-form":"Advanced Form","menu.list":"List","menu.list.table-list":"Search Table","menu.list.basic-list":"Basic List","menu.list.card-list":"Card List","menu.list.search-list":"Search List","menu.list.search-list.articles":"Search List(articles)","menu.list.search-list.projects":"Search List(projects)","menu.list.search-list.applications":"Search List(applications)","menu.profile":"Profile","menu.profile.basic":"Basic Profile","menu.profile.advanced":"Advanced Profile","menu.result":"Result","menu.result.success":"Success","menu.result.fail":"Fail","menu.exception":"Exception","menu.exception.not-permission":"403","menu.exception.not-find":"404","menu.exception.server-error":"500","menu.exception.trigger":"Trigger","menu.account":"Account","menu.account.center":"Account Center","menu.account.settings":"Account Settings","menu.account.trigger":"Trigger Error","menu.account.logout":"Logout","menu.wallet":"My Wallet","menu.docs":"Documentation","menu.docs.detail":"Doc Detail","menu.header.refreshPage":"Refresh Page","menu.invite.friends":"Invite Friends","app.setting.pagestyle":"Page Style Setting","app.setting.pagestyle.light":"Light Menu Style","app.setting.pagestyle.dark":"Dark Menu Style","app.setting.pagestyle.realdark":"RealDark style","app.setting.themecolor":"Theme Color","app.setting.navigationmode":"Navigation Mode","app.setting.sidemenu.nav":"Sidebar Navigation","app.setting.topmenu.nav":"Top Navigation","app.setting.content-width":"Content Width","app.setting.content-width.tooltip":"This setting is only effective for [Top Navigation]","app.setting.content-width.fixed":"Fixed","app.setting.content-width.fluid":"Fluid","app.setting.fixedheader":"Fixed Header","app.setting.fixedheader.tooltip":"Configurable when Header is fixed","app.setting.autoHideHeader":"Hide Header on Scroll","app.setting.fixedsidebar":"Fixed Sidebar Menu","app.setting.sidemenu":"Side Menu Layout","app.setting.topmenu":"Top Menu Layout","app.setting.othersettings":"Other Settings","app.setting.weakmode":"Weak Mode","app.setting.multitab":"Multi-Tab Mode","app.setting.copy":"Copy Setting","app.setting.loading":"Loading theme","app.setting.copyinfo":"copy success,please replace defaultSettings in src/config/defaultSettings.js","app.setting.copy.success":"Copy Success","app.setting.copy.fail":"Copy Failed","app.setting.theme.switching":"Switching theme...","app.setting.production.hint":"Setting panel shows in development environment only, please manually modify","app.setting.themecolor.daybreak":"Daybreak Blue (Default)","app.setting.themecolor.dust":"Dust Red","app.setting.themecolor.volcano":"Volcano","app.setting.themecolor.sunset":"Sunset Orange","app.setting.themecolor.cyan":"Cyan","app.setting.themecolor.green":"Polar Green","app.setting.themecolor.geekblue":"Geek Blue","app.setting.themecolor.purple":"Golden Purple","app.setting.tooltip":"Page Settings","notice.title":"Notifications","notice.empty":"No notifications","notice.markAllRead":"Mark all as read","notice.clear":"Clear all","notice.close":"Close","notice.justNow":"Just now","notice.minutesAgo":"minutes ago","notice.hoursAgo":"hours ago","notice.daysAgo":"days ago","notice.detailInfo":"Details","notice.aiDecision":"AI Decision","notice.confidence":"Confidence","notice.reasoning":"Reasoning","notice.symbol":"Symbol","notice.currentPrice":"Current Price","notice.triggerPrice":"Trigger Price","notice.action":"Action","notice.quantity":"Quantity","notice.viewPortfolio":"View Portfolio","notice.type.aiMonitor":"AI Monitor","notice.type.priceAlert":"Price Alert","notice.type.signal":"Trade Signal","notice.type.buy":"Buy Signal","notice.type.sell":"Sell Signal","notice.type.hold":"Hold Suggestion","notice.type.trade":"Trade Execution","notice.type.notification":"Notification","user.login.userName":"userName","user.login.password":"password","user.login.username.placeholder":"Account: admin","user.login.password.placeholder":"password: admin or ant.design","user.login.message-invalid-credentials":"Login failed, please check your email and verification code","user.login.message-invalid-verification-code":"Invalid verification code","user.login.tab-login-credentials":"Credentials","user.login.tab-login-email":"Email","user.login.tab-login-mobile":"Mobile number","user.login.captcha.placeholder":"Please enter captcha","user.login.mobile.placeholder":"Mobile number","user.login.mobile.verification-code.placeholder":"Verification code","user.login.email.placeholder":"Please enter your email address","user.login.email.verification-code.placeholder":"Please enter verification code","user.login.email.sending":"Sending verification code...","user.login.email.send-success-title":"Notice","user.login.email.send-success":"Verification code sent successfully, please check your email","user.login.sms.send-success":"Verification code sent successfully, please check your SMS","user.login.remember-me":"Remember me","user.login.forgot-password":"Forgot your password?","user.login.sign-in-with":"Sign in with","user.login.signup":"Sign up","user.login.login":"Login","user.register.register":"Register","user.register.email.placeholder":"Email","user.register.password.placeholder":"Password ","user.register.password.popover-message":"Please enter at least 6 characters. Please do not use passwords that are easy to guess. ","user.register.confirm-password.placeholder":"Confirm password","user.register.get-verification-code":"Get code","user.register.sign-in":"Already have an account?","user.register-result.msg":"Account:registered at {email}","user.register-result.activation-email":"The activation email has been sent to your email address and is valid for 24 hours. Please log in to the email in time and click on the link in the email to activate the account.","user.register-result.back-home":"Back to home","user.register-result.view-mailbox":"View mailbox","user.email.required":"Please enter your email!","user.email.wrong-format":"The email address is in the wrong format!","user.userName.required":"Please enter account name or email address","user.password.required":"Please enter your password!","user.password.twice.msg":"The passwords entered twice do not match!","user.password.strength.msg":"The password is not strong enough","user.password.strength.strong":"Strength: strong","user.password.strength.medium":"Strength: medium","user.password.strength.low":"Strength: low","user.password.strength.short":"Strength: too short","user.confirm-password.required":"Please confirm your password!","user.phone-number.required":"Please enter your phone number!","user.phone-number.wrong-format":"Please enter a valid phone number","user.verification-code.required":"Please enter the verification code!","user.captcha.required":"Please enter captcha!","user.login.infos":"QuantDinger is an AI multi-agent stock analysis tool that does not have securities investment consulting qualifications. All analysis results, scores, and reference opinions on the platform are automatically generated by AI based on historical data, and are only for learning, research, and technical exchanges, and do not constitute any investment advice or decision-making basis. Stock investment involves market risk, liquidity risk, policy risk and other risks, which may lead to losses of principal. Users should make independent decisions based on their risk tolerance capacity, and bear the consequences of any investment behavior and its results using this tool. Market risk, investment needs to be cautious.","user.login.tab-login-web3":"Web3 Login","user.login.web3.tip":"Sign in with your wallet via signature","user.login.web3.connect":"Connect wallet and login","user.login.web3.no-wallet":"No wallet detected","user.login.web3.no-address":"Wallet address not found","user.login.web3.nonce-failed":"Failed to get nonce","user.login.web3.verify-failed":"Signature verification failed","user.login.web3.success":"Login success","user.login.web3.failed":"Wallet login failed","nav.no_wallet":"No wallet detected","nav.copy":"Copy","nav.copy_success":"Copied","user.login.oauth.google":"Sign in with Google","user.login.oauth.github":"Sign in with GitHub","user.login.oauth.loading":"Redirecting to authorization page...","user.login.oauth.failed":"OAuth login failed","user.login.oauth.get-url-failed":"Failed to get authorization URL","user.login.subtitle":"driven quantitative insights for global markets","user.login.legal.title":"Legal Disclaimer","user.login.legal.view":"View Legal Disclaimer","user.login.legal.collapse":"Hide Legal Disclaimer","user.login.legal.agree":"I have read and agree to the Legal Disclaimer","user.login.legal.required":"Please read and check the Legal Disclaimer first","user.login.legal.content":"QuantDinger is an AI multi-agent stock analysis tool and does not provide investment advice. All analysis results, scores, and references are generated by AI based on historical data and are for learning, research, and technical exchange only. They do not constitute investment advice or a basis for decision-making. Stock investments involve market, liquidity, and policy risks, which may lead to loss of principal. Users should make independent decisions based on their risk tolerance and bear the consequences of any investment behavior and results using this tool.","user.login.privacy.title":"Privacy Policy","user.login.privacy.view":"View Privacy Policy","user.login.privacy.collapse":"Hide Privacy Policy","user.login.privacy.content":"We value your privacy and data protection. (1) Scope of collection: We only collect information necessary to provide the service (e.g., email, mobile number, country code, Web3 wallet address) and limited logs/device data. (2) Purpose of use: Account login and security verification, feature provisioning, troubleshooting, and compliance requirements. (3) Storage & security: Data is encrypted and access-controlled to prevent unauthorized access, disclosure, or loss. (4) Sharing & third parties: We do not share personal data with third parties except as required by law or to deliver the service; where third-party services are involved (e.g., wallets, SMS providers), processing is limited to the minimum scope required. (5) Cookies/local storage: Used for session and login state (e.g., tokens, PHPSESSID). You may clear or restrict them in your browser. (6) Your rights: You may exercise rights of access, correction, deletion, and consent withdrawal as permitted by law. (7) Changes & notices: We will provide prominent notice for updates. Continued use indicates that you have read and agreed to the updated terms. If you do not agree, please stop using the service and contact us.","user.login.username":"Username","user.login.usernameRequired":"Please enter username","user.login.passwordRequired":"Please enter password","user.login.tab":"Login","user.login.submit":"Login","user.login.register":"Create Account","user.login.forgotPassword":"Forgot Password?","user.login.orLoginWith":"Or login with","user.login.methodPassword":"Password","user.login.methodCode":"Email Code","user.login.email":"Email","user.login.emailRequired":"Please enter email","user.login.emailInvalid":"Invalid email format","user.login.verificationCode":"Verification Code","user.login.codeRequired":"Please enter verification code","user.login.sendCode":"Send","user.login.codeSent":"Verification code sent","user.login.codeLoginHint":"New users will be auto-registered","user.login.welcomeNew":"Welcome!","user.login.accountCreated":"Your account has been created","user.oauth.processing":"Processing login...","user.oauth.error.missing_params":"Missing required parameters","user.oauth.error.invalid_state":"Invalid state parameter","user.oauth.error.user_creation_failed":"Failed to create user","user.oauth.error.server_error":"Server error","user.register.tab":"Register","user.register.title":"Create Account","user.register.email":"Email","user.register.emailRequired":"Please enter email","user.register.emailInvalid":"Invalid email format","user.register.verificationCode":"Verification Code","user.register.codeRequired":"Please enter verification code","user.register.sendCode":"Send Code","user.register.codeSent":"Verification code sent","user.register.username":"Username","user.register.usernameRequired":"Please enter username","user.register.usernameLength":"Username must be 3-30 characters","user.register.usernamePattern":"Start with letter, letters/numbers/underscore only","user.register.password":"Password","user.register.passwordRequired":"Please enter password","user.register.confirmPassword":"Confirm Password","user.register.confirmPasswordRequired":"Please confirm password","user.register.passwordMismatch":"Passwords do not match","user.register.submit":"Create Account","user.register.haveAccount":"Already have an account?","user.register.login":"Login","user.register.success":"Registration successful","user.register.pleaseLogin":"Please login with your new account","user.register.pwdMinLength":"At least 8 characters","user.register.pwdUppercase":"At least one uppercase letter","user.register.pwdLowercase":"At least one lowercase letter","user.register.pwdNumber":"At least one number","user.resetPassword.title":"Reset Password","user.resetPassword.email":"Email","user.resetPassword.emailRequired":"Please enter email","user.resetPassword.emailInvalid":"Invalid email format","user.resetPassword.verificationCode":"Verification Code","user.resetPassword.codeRequired":"Please enter verification code","user.resetPassword.sendCode":"Send Code","user.resetPassword.codeSent":"Verification code sent","user.resetPassword.next":"Next","user.resetPassword.backToLogin":"Back to Login","user.resetPassword.resettingFor":"Resetting password for","user.resetPassword.newPassword":"New Password","user.resetPassword.passwordRequired":"Please enter new password","user.resetPassword.confirmPassword":"Confirm New Password","user.resetPassword.confirmPasswordRequired":"Please confirm password","user.resetPassword.submit":"Reset Password","user.resetPassword.back":"Back","user.resetPassword.successTitle":"Password Reset Successful","user.resetPassword.successSubtitle":"You can now login with your new password","user.resetPassword.goToLogin":"Go to Login","user.security.retry":"Retry","profile.passwordHintNew":"For security, email verification is required to change password. Password must be at least 8 characters with uppercase, lowercase, and number.","profile.verificationCode":"Verification Code","profile.codeRequired":"Please enter verification code","profile.codePlaceholder":"Enter verification code","profile.sendCode":"Send Code","profile.codeSent":"Verification code sent","profile.codeWillSendTo":"Code will be sent to","profile.noEmailWarning":"Please set your email first in Basic Info tab","account.basicInfo":"Basic Information","account.id":"User ID","account.username":"Username","account.nickname":"Nickname","account.email":"Email","account.mobile":"Mobile","account.web3address":"Wallet Address","account.pid":"Referrer ID","account.level":"Level","account.money":"Balance","account.qdtBalance":"QDT Balance","account.score":"Score","account.createtime":"Registration Time","account.inviteLink":"Invite Link","account.recharge":"Recharge","account.rechargeTip":"Please scan the QR code below with WeChat or Alipay to recharge","account.qrCodePlaceholder":"QR Code Placeholder (Mock)","account.rechargeAmount":"Recharge Amount","account.enterAmount":"Please enter recharge amount","account.rechargeHint":"Minimum recharge amount: 1 QDT","account.confirmRecharge":"Confirm Recharge","account.enterValidAmount":"Please enter a valid recharge amount","account.rechargeSuccess":"Recharge successful! Recharged {amount} QDT","account.settings.menuMap.basic":"Basic Settings","account.settings.menuMap.security":"Security Settings","account.settings.menuMap.notification":"New Message Notification","account.settings.menuMap.moneyLog":"Transaction History","account.moneyLog.empty":"No transaction history","account.moneyLog.total":"Total {total} records","account.moneyLog.type.purchase":"Purchase Indicator","account.moneyLog.type.recharge":"Recharge","account.moneyLog.type.refund":"Refund","account.moneyLog.type.reward":"Reward","account.moneyLog.type.income":"Indicator Income","account.moneyLog.type.commission":"Platform Fee","wallet.balance":"QDT Balance","wallet.recharge":"Recharge","wallet.withdraw":"Withdraw","wallet.filter":"Filter","wallet.reset":"Reset","wallet.totalRecharge":"Total Recharge","wallet.totalWithdraw":"Total Withdraw","wallet.totalIncome":"Total Income","wallet.records":"Trading Records & Transaction History","wallet.tradingRecords":"Trading Records","wallet.moneyLog":"Transaction History","wallet.rechargeTip":"Please scan the QR code below with WeChat or Alipay to recharge","wallet.qrCodePlaceholder":"QR Code Placeholder (Simulated)","wallet.rechargeAmount":"Recharge Amount","wallet.enterAmount":"Please enter recharge amount","wallet.rechargeHint":"Minimum recharge amount: 1 QDT","wallet.confirmRecharge":"Confirm Recharge","wallet.enterValidAmount":"Please enter a valid recharge amount","wallet.rechargeSuccess":"Recharge successful! Recharged {amount} QDT","wallet.rechargeFailed":"Recharge failed","wallet.withdrawTip":"Please enter withdrawal amount and address","wallet.withdrawAmount":"Withdrawal Amount","wallet.enterWithdrawAmount":"Please enter withdrawal amount","wallet.withdrawHint":"Minimum withdrawal amount: 1 QDT","wallet.withdrawAddress":"Withdrawal Address (Optional)","wallet.enterWithdrawAddress":"Please enter withdrawal address","wallet.confirmWithdraw":"Confirm Withdrawal","wallet.enterValidWithdrawAmount":"Please enter a valid withdrawal amount","wallet.insufficientBalance":"Insufficient balance","wallet.withdrawSuccess":"Withdrawal successful! Withdrew {amount} QDT","wallet.withdrawFailed":"Withdrawal failed","wallet.noTradingRecords":"No trading records","wallet.noMoneyLog":"No transaction history","wallet.loadTradingRecordsFailed":"Failed to load trading records","wallet.loadMoneyLogFailed":"Failed to load transaction history","wallet.moneyLogTotal":"Total {total} records","wallet.moneyLogTypeTitle":"Type","wallet.moneyLogType.all":"All types","wallet.table.time":"Time","wallet.table.type":"Type","wallet.table.price":"Price","wallet.table.amount":"Amount","wallet.table.money":"Amount","wallet.table.balance":"Balance","wallet.table.memo":"Memo","wallet.table.value":"Value","wallet.table.profit":"P/L","wallet.table.commission":"Commission","wallet.table.total":"Total {total} records","wallet.tradeType.buy":"Buy","wallet.tradeType.sell":"Sell","wallet.tradeType.liquidation":"Liquidation","wallet.tradeType.openLong":"Open Long","wallet.tradeType.addLong":"Add Long","wallet.tradeType.closeLong":"Close Long","wallet.tradeType.closeLongStop":"Stop Loss Close Long","wallet.tradeType.closeLongProfit":"Take Profit Close Long","wallet.tradeType.openShort":"Open Short","wallet.tradeType.addShort":"Add Short","wallet.tradeType.closeShort":"Close Short","wallet.tradeType.closeShortStop":"Stop Loss Close Short","wallet.tradeType.closeShortProfit":"Take Profit Close Short","wallet.moneyLogType.purchase":"Purchase Indicator","wallet.moneyLogType.recharge":"Recharge","wallet.moneyLogType.withdraw":"Withdraw","wallet.moneyLogType.refund":"Refund","wallet.moneyLogType.reward":"Reward","wallet.moneyLogType.income":"Income","wallet.moneyLogType.commission":"Commission","wallet.web3Address.required":"Please fill in Web3 wallet address first","wallet.web3Address.requiredDescription":"You need to bind your Web3 wallet address before recharging to receive deposits","wallet.web3Address.placeholder":"Please enter your Web3 wallet address (starts with 0x)","wallet.web3Address.save":"Save Wallet Address","wallet.web3Address.saveSuccess":"Wallet address saved successfully","wallet.web3Address.saveFailed":"Failed to save wallet address","wallet.web3Address.invalidFormat":"Please enter a valid Web3 wallet address (Ethereum format: 42 characters starting with 0x, or TRC20 format: 34 characters starting with T)","wallet.selectCoin":"Select Coin","wallet.selectChain":"Select Chain","wallet.chain.eth":"ETH(ERC20)","wallet.chain.trc20":"TRC20","wallet.chain.bsc":"BSC","wallet.targetQdtAmount":"Target QDT Amount (Optional)","wallet.targetQdtAmount.placeholder":"Enter the QDT amount you want to exchange, current QDT price: {price} USDT","wallet.targetQdtAmount.requiredUsdt":"Required USDT: {amount}","wallet.rechargeAddress":"Recharge Address","wallet.copyAddress":"Copy","wallet.copySuccess":"Copied successfully!","wallet.copyFailed":"Copy failed, please copy manually","wallet.rechargeAddressHint":"Please ensure you use {chain} chain to recharge {coin} to this address","wallet.qdtPrice.loading":"Loading...","wallet.rechargeTip.new":"Please select coin and chain, then scan the QR code below to recharge","wallet.exchangeRate":"1 QDT ≈ {rate} USDT","wallet.withdrawableAmount":"Withdrawable Amount","wallet.totalBalance":"Total Balance","wallet.insufficientWithdrawable":"Insufficient withdrawable amount, current withdrawable: {amount} QDT","wallet.withdrawAddressRequired":"Please enter withdrawal address","wallet.withdrawAddressHint":"Please ensure the address is correct, withdrawal cannot be revoked","wallet.withdrawSubmitSuccess":"Withdrawal application submitted successfully, please wait for review","menu.footer.contactUs":"Contact Us","menu.footer.getSupport":"Get Support","menu.footer.socialAccounts":"Social Accounts","menu.footer.userAgreement":"User Agreement","menu.footer.privacyPolicy":"Privacy Policy","menu.footer.support":"Support","menu.footer.featureRequest":"Feature request","menu.footer.email":"Email","menu.footer.liveChat":"24/7 live chat","dashboard.analysis.title":"Multi-Dimensional Analysis","dashboard.analysis.subtitle":"AI-Powered Comprehensive Financial Analysis Platform","dashboard.analysis.selectSymbol":"Select or enter symbol code","dashboard.analysis.selectModel":"Select Model","dashboard.analysis.startAnalysis":"Start Analysis","dashboard.analysis.history":"History","dashboard.analysis.tab.overview":"Overview","dashboard.analysis.tab.fundamental":"Fundamental","dashboard.analysis.tab.technical":"Technical","dashboard.analysis.tab.news":"News","dashboard.analysis.tab.sentiment":"Sentiment","dashboard.analysis.tab.risk":"Risk","dashboard.analysis.tab.debate":"Debate","dashboard.analysis.tab.decision":"Final Decision","dashboard.analysis.empty.selectSymbol":"Select Symbol to Start Analysis","dashboard.analysis.empty.selectSymbolDesc":"Select from watchlist or enter symbol code to get multi-dimensional AI analysis report","dashboard.analysis.empty.startAnalysis":'Click "Start Analysis" button to perform multi-dimensional analysis',"dashboard.analysis.empty.startAnalysisDesc":"We will provide comprehensive analysis from multiple dimensions including fundamental, technical, news, sentiment and risk","dashboard.analysis.empty.noData":"No {type} analysis data available, please perform comprehensive analysis first","dashboard.analysis.empty.noWatchlist":"No watchlist items","dashboard.analysis.empty.noHistory":"No history records","dashboard.analysis.empty.watchlistHint":"No watchlist, please","dashboard.analysis.empty.noDebateData":"No debate data available","dashboard.analysis.empty.noDecisionData":"No decision data available","dashboard.analysis.empty.selectAgent":"Please select an Agent to view analysis results","dashboard.analysis.loading.analyzing":"Analyzing, please wait...","dashboard.analysis.loading.fundamental":"Analyzing fundamental data...","dashboard.analysis.loading.technical":"Analyzing technical indicators...","dashboard.analysis.loading.news":"Analyzing news data...","dashboard.analysis.loading.sentiment":"Analyzing market sentiment...","dashboard.analysis.loading.risk":"Assessing risks...","dashboard.analysis.loading.debate":"Debating...","dashboard.analysis.loading.decision":"Generating final decision...","dashboard.analysis.score.overall":"Overall Score","dashboard.analysis.score.recommendation":"Recommendation","dashboard.analysis.score.confidence":"Confidence","dashboard.analysis.dimension.fundamental":"Fundamental","dashboard.analysis.dimension.technical":"Technical","dashboard.analysis.dimension.news":"News","dashboard.analysis.dimension.sentiment":"Sentiment","dashboard.analysis.dimension.risk":"Risk","dashboard.analysis.card.dimensionScores":"Dimension Scores","dashboard.analysis.card.overviewReport":"Overview Report","dashboard.analysis.card.financialMetrics":"Financial Metrics","dashboard.analysis.card.fundamentalReport":"Fundamental Analysis Report","dashboard.analysis.card.technicalIndicators":"Technical Indicators","dashboard.analysis.card.technicalReport":"Technical Analysis Report","dashboard.analysis.card.newsList":"Related News","dashboard.analysis.card.newsReport":"News Analysis Report","dashboard.analysis.card.sentimentIndicators":"Sentiment Indicators","dashboard.analysis.card.sentimentReport":"Sentiment Analysis Report","dashboard.analysis.card.riskMetrics":"Risk Metrics","dashboard.analysis.card.riskReport":"Risk Assessment Report","dashboard.analysis.card.bullView":"Bullish View (Bull)","dashboard.analysis.card.bearView":"Bearish View (Bear)","dashboard.analysis.card.researchConclusion":"Researcher Conclusion","dashboard.analysis.card.traderPlan":"Trader Plan","dashboard.analysis.card.riskDebate":"Risk Committee Debate","dashboard.analysis.card.finalDecision":"Final Decision","dashboard.analysis.card.tradePlanDetail":"Trading Plan Details","dashboard.analysis.tradingPlan.entry_price":"Entry Price","dashboard.analysis.tradingPlan.position_size":"Position Size","dashboard.analysis.tradingPlan.stop_loss":"Stop Loss","dashboard.analysis.tradingPlan.take_profit":"Take Profit","dashboard.analysis.label.confidence":"Confidence","dashboard.analysis.label.keyPoints":"Key Points","dashboard.analysis.label.riskWarning":"Risk Warning","dashboard.analysis.risk.risky":"Aggressive View (Risky)","dashboard.analysis.risk.neutral":"Neutral View (Neutral)","dashboard.analysis.risk.safe":"Conservative View (Safe)","dashboard.analysis.risk.conclusion":"Conclusion","dashboard.analysis.feature.fundamental":"Fundamental Analysis","dashboard.analysis.feature.technical":"Technical Analysis","dashboard.analysis.feature.news":"News Analysis","dashboard.analysis.feature.sentiment":"Sentiment Analysis","dashboard.analysis.feature.risk":"Risk Assessment","dashboard.analysis.watchlist.title":"My Watchlist","dashboard.analysis.watchlist.add":"Add","dashboard.analysis.watchlist.addStock":"Add Stock","dashboard.analysis.modal.addStock.title":"Add to Watchlist","dashboard.analysis.modal.addStock.confirm":"Confirm","dashboard.analysis.modal.addStock.cancel":"Cancel","dashboard.analysis.modal.addStock.market":"Market Type","dashboard.analysis.modal.addStock.marketPlaceholder":"Please select market","dashboard.analysis.modal.addStock.marketRequired":"Please select market type","dashboard.analysis.modal.addStock.symbol":"Symbol","dashboard.analysis.modal.addStock.symbolPlaceholder":"e.g.: AAPL, TSLA, GOOGL, 000001, BTC","dashboard.analysis.modal.addStock.symbolRequired":"Please enter symbol code","dashboard.analysis.modal.addStock.searchPlaceholder":"Search symbol code or name","dashboard.analysis.modal.addStock.searchOrInputPlaceholder":"Search or enter symbol code (e.g.: AAPL, BTC/USDT, EUR/USD)","dashboard.analysis.modal.addStock.searchOrInputHint":"Search in database or enter code directly (name will be fetched automatically)","dashboard.analysis.modal.addStock.search":"Search","dashboard.analysis.modal.addStock.searchResults":"Search Results","dashboard.analysis.modal.addStock.hotSymbols":"Hot Symbols","dashboard.analysis.modal.addStock.noHotSymbols":"No hot symbols available","dashboard.analysis.modal.addStock.selectedSymbol":"Selected Symbol","dashboard.analysis.modal.addStock.pleaseSelectSymbol":"Please select a symbol first","dashboard.analysis.modal.addStock.pleaseSelectOrEnterSymbol":"Please select a symbol or enter symbol code","dashboard.analysis.modal.addStock.pleaseEnterSymbol":"Please enter symbol code","dashboard.analysis.modal.addStock.pleaseSelectMarket":"Please select market type first","dashboard.analysis.modal.addStock.searchFailed":"Search failed, please try again later","dashboard.analysis.modal.addStock.noSearchResults":"No matching symbols found","dashboard.analysis.modal.addStock.willAutoFetchName":"Name will be fetched automatically","dashboard.analysis.modal.addStock.addDirectly":"Add Directly","dashboard.analysis.modal.addStock.nameWillBeFetched":"Name will be fetched automatically when adding","dashboard.analysis.market.USStock":"US Stock","dashboard.analysis.market.Crypto":"Cryptocurrency","dashboard.analysis.market.Forex":"Forex","dashboard.analysis.market.Futures":"Futures","dashboard.analysis.modal.history.title":"Analysis History","dashboard.analysis.modal.history.viewResult":"View Result","dashboard.analysis.modal.history.completeTime":"Complete Time","dashboard.analysis.modal.history.error":"Error","dashboard.analysis.status.pending":"Pending","dashboard.analysis.status.processing":"Processing","dashboard.analysis.status.completed":"Completed","dashboard.analysis.status.failed":"Failed","dashboard.analysis.message.selectSymbol":"Please select a symbol first","dashboard.analysis.message.taskCreated":"Analysis task created, executing in background...","dashboard.analysis.message.analysisComplete":"Analysis Complete","dashboard.analysis.message.analysisCompleteCache":"Analysis Complete (Using Cache)","dashboard.analysis.message.analysisFailed":"Analysis failed, please try again later","dashboard.analysis.message.addStockSuccess":"Added successfully","dashboard.analysis.message.addStockFailed":"Failed to add","dashboard.analysis.message.removeStockSuccess":"Removed successfully","dashboard.analysis.message.removeStockFailed":"Failed to remove","dashboard.analysis.message.resumingAnalysis":"Resuming analysis task...","dashboard.analysis.message.deleteSuccess":"Deleted successfully","dashboard.analysis.message.deleteFailed":"Failed to delete","dashboard.analysis.modal.history.delete":"Delete","dashboard.analysis.modal.history.deleteConfirm":"Are you sure you want to delete this analysis record?","dashboard.analysis.test":"Gongzhuan No.{no} shop","dashboard.analysis.introduce":"Introduce","dashboard.analysis.total-sales":"Total Sales","dashboard.analysis.day-sales":"Daily Sales","dashboard.analysis.visits":"Visits","dashboard.analysis.visits-trend":"Visits Trend","dashboard.analysis.visits-ranking":"Visits Ranking","dashboard.analysis.day-visits":"Daily Visits","dashboard.analysis.week":"WoW Change","dashboard.analysis.day":"DoD Change","dashboard.analysis.payments":"Payments","dashboard.analysis.conversion-rate":"Conversion Rate","dashboard.analysis.operational-effect":"Operational Effect","dashboard.analysis.sales-trend":"Stores Sales Trend","dashboard.analysis.sales-ranking":"Sales Ranking","dashboard.analysis.all-year":"All Year","dashboard.analysis.all-month":"All Month","dashboard.analysis.all-week":"All Week","dashboard.analysis.all-day":"All day","dashboard.analysis.search-users":"Search Users","dashboard.analysis.per-capita-search":"Per Capita Search","dashboard.analysis.online-top-search":"Online Top Search","dashboard.analysis.the-proportion-of-sales":"The Proportion Of Sales","dashboard.analysis.dropdown-option-one":"Operation one","dashboard.analysis.dropdown-option-two":"Operation two","dashboard.analysis.channel.all":"ALL","dashboard.analysis.channel.online":"Online","dashboard.analysis.channel.stores":"Stores","dashboard.analysis.sales":"Sales","dashboard.analysis.traffic":"Traffic","dashboard.analysis.table.rank":"Rank","dashboard.analysis.table.search-keyword":"Keyword","dashboard.analysis.table.users":"Users","dashboard.analysis.table.weekly-range":"Weekly Range","dashboard.indicator.selectSymbol":"Select or enter symbol code","dashboard.indicator.emptyWatchlistHint":"No watchlist, please add first","dashboard.indicator.hint.selectSymbol":"Please select a symbol to start analysis","dashboard.indicator.hint.selectSymbolDesc":"Select or enter stock code in the search box above to view K-line chart and technical indicators","dashboard.indicator.retry":"Retry","dashboard.indicator.panel.title":"Technical Indicators","dashboard.indicator.panel.realtimeOn":"Turn off real-time update","dashboard.indicator.panel.realtimeOff":"Turn on real-time update","dashboard.indicator.panel.themeLight":"Switch to dark theme","dashboard.indicator.panel.themeDark":"Switch to light theme","dashboard.indicator.section.enabled":"Enabled","dashboard.indicator.section.added":"My Added Indicators","dashboard.indicator.section.custom":"My Created Indicators","dashboard.indicator.section.bought":"Purchased Indicators","dashboard.indicator.section.myCreated":"My Created Indicators","dashboard.indicator.section.purchased":"Purchased Indicators","dashboard.indicator.empty":"No indicators, please add or create indicators first","dashboard.indicator.emptyPurchased":"No purchased indicators, check out the market","dashboard.indicator.buy":"Buy Indicators","dashboard.indicator.action.start":"Start","dashboard.indicator.action.stop":"Stop","dashboard.indicator.action.edit":"Edit","dashboard.indicator.action.delete":"Delete","dashboard.indicator.action.backtest":"Backtest","dashboard.indicator.action.publish":"Publish to Community","dashboard.indicator.action.unpublish":"Published (Click to Manage)","dashboard.indicator.status.normal":"Active","dashboard.indicator.status.normalPermanent":"Active (Permanent)","dashboard.indicator.status.expired":"Expired","dashboard.indicator.expiry.permanent":"Permanent","dashboard.indicator.expiry.noExpiry":"No expiration","dashboard.indicator.expiry.expired":"Expired: {date}","dashboard.indicator.expiry.expiresOn":"Expires: {date}","dashboard.indicator.delete.confirmTitle":"Confirm Deletion","dashboard.indicator.delete.confirmContent":'Are you sure you want to delete indicator "{name}"? This action cannot be undone.',"dashboard.indicator.delete.confirmOk":"Delete","dashboard.indicator.delete.confirmCancel":"Cancel","dashboard.indicator.delete.success":"Deleted successfully","dashboard.indicator.delete.failed":"Failed to delete","dashboard.indicator.save.success":"Saved successfully","dashboard.indicator.save.failed":"Failed to save","dashboard.indicator.publish.title":"Publish to Community","dashboard.indicator.publish.editTitle":"Manage Publication","dashboard.indicator.publish.hint":'After publishing, other users can view and purchase your indicator in the "Indicator Community"',"dashboard.indicator.publish.pricingType":"Pricing Type","dashboard.indicator.publish.free":"Free","dashboard.indicator.publish.paid":"Paid","dashboard.indicator.publish.price":"Price","dashboard.indicator.publish.description":"Description","dashboard.indicator.publish.descriptionPlaceholder":"Enter a detailed description to help others understand your indicator...","dashboard.indicator.publish.confirm":"Publish","dashboard.indicator.publish.update":"Update","dashboard.indicator.publish.unpublish":"Unpublish","dashboard.indicator.publish.success":"Published successfully","dashboard.indicator.publish.failed":"Failed to publish","dashboard.indicator.publish.unpublishSuccess":"Unpublished successfully","dashboard.indicator.publish.unpublishFailed":"Failed to unpublish","dashboard.indicator.error.loadWatchlistFailed":"Failed to load watchlist","dashboard.indicator.error.chartNotReady":"Chart component not initialized, please select a symbol and wait for the chart to load","dashboard.indicator.error.chartMethodNotReady":"Chart component method not ready, please try again later","dashboard.indicator.error.chartExecuteNotReady":"Chart component execute method not ready, please try again later","dashboard.indicator.error.parseFailed":"Failed to parse Python code","dashboard.indicator.error.parseFailedCheck":"Failed to parse Python code, please check the code format","dashboard.indicator.error.addIndicatorFailed":"Failed to add indicator","dashboard.indicator.error.runIndicatorFailed":"Failed to run indicator","dashboard.indicator.error.pleaseLogin":"Please login first","dashboard.indicator.error.loadDataFailed":"Failed to load data","dashboard.indicator.error.loadDataFailedDesc":"Please check network connection","dashboard.indicator.error.tiingoSubscription":"Forex 1-minute data requires Tiingo paid subscription. Please use other timeframes or upgrade your subscription.","dashboard.indicator.error.pythonEngineFailed":"Python engine failed to load, indicator functionality may be unavailable","dashboard.indicator.error.chartInitFailed":"Chart initialization failed","dashboard.indicator.warning.enterCode":"Please enter indicator code first","dashboard.indicator.warning.chartNotInitialized":"Chart not initialized, cannot use drawing tools","dashboard.indicator.warning.pyodideLoadFailed":"Python Engine Load Failed","dashboard.indicator.warning.pyodideLoadFailedDesc":"Your current region or network environment cannot use this feature","dashboard.indicator.success.runIndicator":"Indicator ran successfully","dashboard.indicator.success.clearDrawings":"All drawings cleared","dashboard.indicator.sma":"SMA (Moving Average Group)","dashboard.indicator.ema":"EMA (Exponential Moving Average Group)","dashboard.indicator.rsi":"RSI (Relative Strength Index)","dashboard.indicator.macd":"MACD","dashboard.indicator.bb":"Bollinger Bands","dashboard.indicator.atr":"ATR (Average True Range)","dashboard.indicator.cci":"CCI (Commodity Channel Index)","dashboard.indicator.williams":"Williams %R","dashboard.indicator.mfi":"MFI (Money Flow Index)","dashboard.indicator.adx":"ADX (Average Directional Index)","dashboard.indicator.obv":"OBV (On Balance Volume)","dashboard.indicator.adosc":"ADOSC (Accumulation/Distribution Oscillator)","dashboard.indicator.ad":"AD (Accumulation/Distribution Line)","dashboard.indicator.kdj":"KDJ (Stochastic Indicator)","dashboard.indicator.signal.buy":"BUY","dashboard.indicator.signal.sell":"SELL","dashboard.indicator.signal.supertrendBuy":"SuperTrend Buy","dashboard.indicator.signal.supertrendSell":"SuperTrend Sell","dashboard.indicator.chart.kline":"K-Line","dashboard.indicator.chart.volume":"Volume","dashboard.indicator.chart.uptrend":"Up Trend","dashboard.indicator.chart.downtrend":"Down Trend","dashboard.indicator.tooltip.time":"Time","dashboard.indicator.tooltip.open":"O","dashboard.indicator.tooltip.close":"C","dashboard.indicator.tooltip.high":"H","dashboard.indicator.tooltip.low":"L","dashboard.indicator.tooltip.volume":"Volume","dashboard.indicator.drawing.line":"Line","dashboard.indicator.drawing.horizontalLine":"Horizontal Line","dashboard.indicator.drawing.verticalLine":"Vertical Line","dashboard.indicator.drawing.ray":"Ray","dashboard.indicator.drawing.straightLine":"Straight Line","dashboard.indicator.drawing.parallelLine":"Parallel Line","dashboard.indicator.drawing.priceLine":"Price Line","dashboard.indicator.drawing.priceChannel":"Price Channel","dashboard.indicator.drawing.fibonacciLine":"Fibonacci Line","dashboard.indicator.drawing.measure":"Measure","dashboard.indicator.drawing.clearAll":"Clear All Drawings","dashboard.indicator.market.USStock":"US Stock","dashboard.indicator.market.Crypto":"Cryptocurrency","dashboard.indicator.market.Forex":"Forex","dashboard.indicator.market.Futures":"Futures","dashboard.indicator.create":"Create Indicator","dashboard.indicator.editor.title":"Create/Edit Indicator","dashboard.indicator.editor.name":"Indicator Name","dashboard.indicator.editor.nameRequired":"Please enter indicator name","dashboard.indicator.editor.namePlaceholder":"Enter indicator name","dashboard.indicator.editor.description":"Description","dashboard.indicator.editor.descriptionPlaceholder":"Enter description (optional)","dashboard.indicator.editor.code":"Python Code","dashboard.indicator.editor.codeRequired":"Please enter indicator code","dashboard.indicator.editor.codePlaceholder":"Enter Python code","dashboard.indicator.editor.run":"Run","dashboard.indicator.editor.runHint":"Click Run button to preview indicator on K-line chart","dashboard.indicator.editor.guide":"Development Guide","dashboard.indicator.editor.guideTitle":"Python Indicator Development Guide","dashboard.indicator.editor.save":"Save","dashboard.indicator.editor.cancel":"Cancel","dashboard.indicator.editor.unnamed":"Unnamed Indicator","dashboard.indicator.editor.publishToCommunity":"Publish to Community","dashboard.indicator.editor.publishToCommunityHint":"After publishing, other users can view and use your indicator in the community","dashboard.indicator.editor.indicatorType":"Indicator Type","dashboard.indicator.editor.indicatorTypeRequired":"Please select indicator type","dashboard.indicator.editor.indicatorTypePlaceholder":"Please select indicator type","dashboard.indicator.editor.previewImage":"Preview Image","dashboard.indicator.editor.uploadImage":"Upload Image","dashboard.indicator.editor.previewImageHint":"Recommended size: 800x400, max 2MB","dashboard.indicator.editor.pricing":"Pricing (QDT)","dashboard.indicator.editor.pricingType.free":"Free","dashboard.indicator.editor.pricingType.permanent":"Permanent","dashboard.indicator.editor.pricingType.monthly":"Monthly","dashboard.indicator.editor.price":"Price","dashboard.indicator.editor.priceRequired":"Please enter price","dashboard.indicator.editor.pricePlaceholder":"Please enter price","dashboard.indicator.editor.pricingHint":"Free indicators (price 0) will still receive platform rewards based on usage and ratings (QDT)","dashboard.indicator.editor.aiGenerate":"AI Generate","dashboard.indicator.editor.aiPromptPlaceholder":"Describe your signal logic (buy/sell only) and plots. Position sizing, risk, scaling, fees/slippage are configured in backtest.","dashboard.indicator.boundary.message":"Note: The indicator script only computes plots + buy/sell signals. Position sizing, risk, scaling, fees/slippage belong to execution config.","dashboard.indicator.boundary.indicatorRule":"Keep the script to buy/sell only (and set df['buy']/df['sell']). Do NOT implement position management, TP/SL, scaling in the script.","dashboard.indicator.boundary.backtestRule":"Rule: If a bar has a main signal (buy/sell → open/close/reverse), scaling in/out is skipped on the same bar.","dashboard.indicator.editor.aiGenerateBtn":"AI Generate Code","dashboard.indicator.editor.aiPromptRequired":"Please enter your idea","dashboard.indicator.editor.aiGenerateSuccess":"Code generated successfully","dashboard.indicator.editor.aiGenerateError":"Code generation failed, please try again later","dashboard.indicator.editor.verifyCode":"Verify Code","dashboard.indicator.editor.verifyCodeSuccess":"Verification Passed","dashboard.indicator.editor.verifyCodeFailed":"Verification Failed","dashboard.indicator.editor.verifyCodeEmpty":"Code cannot be empty","dashboard.indicator.guide.title":"Python Indicator & Strategy Development Guide","dashboard.indicator.guide.intro":"This platform supports writing custom technical indicators and trading signals using Python. The system includes built-in pandas and numpy data analysis libraries. You can use standard DataFrame operations to process K-line data and draw charts or mark buy/sell signals.","dashboard.indicator.guide.section1.title":"1. Runtime Environment & Predefined Variables","dashboard.indicator.guide.section1.env":"Your code runs in a browser-based Python environment (Pyodide).","dashboard.indicator.guide.section1.libs":"Pre-installed Libraries","dashboard.indicator.guide.section1.libsDesc":"The following libraries are imported by default, no need to import again:","dashboard.indicator.guide.section1.libsList":"pandas (pd), numpy (np), math, json","dashboard.indicator.guide.section1.data":"Input Data: df","dashboard.indicator.guide.section1.dataDesc":"The system automatically converts current K-line data into a Pandas DataFrame object, variable name is df.","dashboard.indicator.guide.section1.dataColumns":"df contains the following columns (all float type):","dashboard.indicator.guide.section1.dataColumnsList":"time (timestamp, seconds), open, high, low, close, volume","dashboard.indicator.guide.section1.dataNote":"Data index is arranged from old to new (0 is the earliest data, last row is the latest data).","dashboard.indicator.guide.section1.dataIndex":"Important: df index is timestamp (DatetimeIndex), please preserve the index, avoid using .values which loses the index.","dashboard.indicator.guide.section2.title":"2. Parameter Definition","dashboard.indicator.guide.section2.desc":"You can define variables as parameters at the beginning of your code. The system will try to parse statements like variable = value as adjustable parameters.","dashboard.indicator.guide.section2.example":"Parameter Example","dashboard.indicator.guide.section2.exampleCode":"span = 20 or multiplier = 2.0","dashboard.indicator.guide.section3.title":"3. Backtest Signal Setup (Important!)","dashboard.indicator.guide.section3.desc":"If you want your indicator to support backtesting, you must set the following two columns in your code:","dashboard.indicator.guide.section3.backtestRequired":"Required for Backtesting:","dashboard.indicator.guide.section3.backtestBuySignal":"df['buy_signal'] - Boolean Series, True indicates buy signal","dashboard.indicator.guide.section3.backtestSellSignal":"df['sell_signal'] - Boolean Series, True indicates sell signal","dashboard.indicator.guide.section3.backtestExample":"Example:","dashboard.indicator.guide.section3.backtestExampleCode":"df['buy_signal'] = condition_buy
df['sell_signal'] = condition_sell","dashboard.indicator.guide.section3.backtestNote":"Note: Even if you only set output.signals for chart display, you must set these two columns to enable backtesting.","dashboard.indicator.guide.section4.title":"4. Output Requirements: output","dashboard.indicator.guide.section4.desc":"At the end of code execution, you must define a dictionary named output to tell the chart how to display results.","dashboard.indicator.guide.section4.fields":"The output dictionary contains the following fields:","dashboard.indicator.guide.section4.plots":"plots - For drawing lines (e.g., moving averages, RSI)","dashboard.indicator.guide.section4.signals":"signals - For marking buy/sell signals (e.g., arrows, labels)","dashboard.indicator.guide.section4.name":"name - Indicator name (optional)","dashboard.indicator.guide.section4.calculatedVars":"calculatedVars - Calculated variables (optional, for displaying additional information)","dashboard.indicator.guide.section5.title":"5. Plot Configuration (Plots)","dashboard.indicator.guide.section5.desc":"Each object in the plots list represents a line.","dashboard.indicator.guide.section5.table.field":"Field","dashboard.indicator.guide.section5.table.type":"Type","dashboard.indicator.guide.section5.table.required":"Required","dashboard.indicator.guide.section5.table.requiredYes":"Yes","dashboard.indicator.guide.section5.table.requiredNo":"No","dashboard.indicator.guide.section5.table.desc":"Description","dashboard.indicator.guide.section5.table.name":"The name of the indicator line, displayed in the legend","dashboard.indicator.guide.section5.table.data":"Data list, length must match the number of rows in df. Recommended to use series.tolist()","dashboard.indicator.guide.section5.table.color":"Line color (Hex format, e.g. '#ff0000'). If not filled, the system will automatically assign","dashboard.indicator.guide.section5.table.typeDesc":"Chart type, default is 'line'","dashboard.indicator.guide.section5.table.overlay":"Important. True means display on main chart (with K-line), False means display on sub-chart (independent area)","dashboard.indicator.guide.section5.example":"Example: Draw Simple Moving Average (SMA)","dashboard.indicator.guide.section5.exampleCalc":"Calculate SMA","dashboard.indicator.guide.section5.exampleOutput":"Construct Output","dashboard.indicator.guide.section5.exampleOverlay":"Display on main chart","dashboard.indicator.guide.section6.title":"6. Signal Markers (Signals)","dashboard.indicator.guide.section6.desc":"signals are used to mark buy/sell points on specific K-lines through icons or text. Note: This is only for chart display. The backtest system uses df['buy_signal'] and df['sell_signal'].","dashboard.indicator.guide.section6.table.type":"Signal type: 'buy' (buy, marked below K-line) or 'sell' (sell, marked above K-line)","dashboard.indicator.guide.section6.table.data":"Signal data list. Fill price value at signal positions, fill None (or np.nan) at non-signal positions","dashboard.indicator.guide.section6.table.text":'Text displayed on the label (e.g. "B", "S", "Buy", "Sell")',"dashboard.indicator.guide.section6.table.color":"Marker color","dashboard.indicator.guide.section6.hint":"The system automatically handles positioning.","dashboard.indicator.guide.section6.buy":"Markers will be automatically positioned below the Low of the current K-line","dashboard.indicator.guide.section6.sell":"Markers will be automatically positioned above the High of the current K-line","dashboard.indicator.guide.section6.example":"Example: Draw Buy/Sell Signals","dashboard.indicator.guide.section6.exampleInit":"Initialize signal list, fill all with None","dashboard.indicator.guide.section6.exampleLogic":"Simple logic: mark buy when close price is greater than open price","dashboard.indicator.guide.section6.exampleNote":"In actual logic, please use loops or vectorized operations","dashboard.indicator.guide.section6.examplePrice":"Record price","dashboard.indicator.guide.section6.exampleText":"Buy","dashboard.indicator.guide.section7.title":"7. Complete Code Examples","dashboard.indicator.guide.section7.exampleA":"Example A: Dual EMA Strategy (Supports Backtesting)","dashboard.indicator.guide.section7.exampleACode":'# 1. Calculate indicators
df[\'ema_fast\'] = df[\'close\'].ewm(span=5, adjust=False).mean()
df[\'ema_slow\'] = df[\'close\'].ewm(span=13, adjust=False).mean()

# 2. Calculate crossover signals
cross_up = (df[\'ema_fast\'] > df[\'ema_slow\']) & (df[\'ema_fast\'].shift(1) <= df[\'ema_slow\'].shift(1))
cross_down = (df[\'ema_fast\'] < df[\'ema_slow\']) & (df[\'ema_fast\'].shift(1) >= df[\'ema_slow\'].shift(1))

# 3. 【Important】Set NEW backtest signal columns (bool)
df[\'open_long\'] = cross_up
df[\'close_long\'] = cross_down
df[\'open_short\'] = cross_down
df[\'close_short\'] = cross_up

# 4. Generate signal data for chart display
buy_signals = [df[\'low\'].iloc[i] * 0.995 if cross_up.iloc[i] else None for i in range(len(df))]
sell_signals = [df[\'high\'].iloc[i] * 1.005 if cross_down.iloc[i] else None for i in range(len(df))]

# 5. Build output
output = {
"name": "Dual EMA Strategy",
"plots": [
{"name": "EMA 5", "data": df[\'ema_fast\'].tolist(), "color": "#FF6B6B", "overlay": True},
{"name": "EMA 13", "data": df[\'ema_slow\'].tolist(), "color": "#4ECDC4", "overlay": True}
],
"signals": [
{"type": "buy", "text": "BUY", "data": buy_signals, "color": "#00E676"},
{"type": "sell", "text": "SELL", "data": sell_signals, "color": "#FF5252"}
]
}',"dashboard.indicator.guide.section7.exampleB":"Example B: Bollinger Bands - Chart Display Only","dashboard.indicator.guide.section7.exampleBCode":'# Calculate Bollinger Bands (chart display only, no backtesting)
length = 20
mult = 2.0
df[\'sma\'] = df[\'close\'].rolling(length).mean()
df[\'std\'] = df[\'close\'].rolling(length).std()
df[\'upper\'] = df[\'sma\'] + mult * df[\'std\']
df[\'lower\'] = df[\'sma\'] - mult * df[\'std\']

output = {
"name": "Bollinger Bands",
"plots": [
{"name": "Upper", "data": df[\'upper\'].tolist(), "color": "#FF5252", "overlay": True},
{"name": "Middle", "data": df[\'sma\'].tolist(), "color": "#2196F3", "overlay": True},
{"name": "Lower", "data": df[\'lower\'].tolist(), "color": "#00E676", "overlay": True}
]
}',"dashboard.indicator.guide.section7.exampleC":"Example C: RSI Strategy (Supports Backtesting)","dashboard.indicator.guide.section7.exampleCCode":'# Calculate RSI
delta = df[\'close\'].diff()
up = delta.clip(lower=0)
down = -1 * delta.clip(upper=0)
ema_up = up.ewm(com=13, adjust=False).mean()
ema_down = down.ewm(com=13, adjust=False).mean()
rs = ema_up / ema_down
df[\'rsi\'] = 100 - (100 / (1 + rs))

# Generate trading signals
buy_condition = df[\'rsi\'] < 30 # Oversold buy
sell_condition = df[\'rsi\'] > 70 # Overbought sell

# 【Important】Set NEW backtest signal columns (bool)
df[\'open_long\'] = buy_condition
df[\'close_long\'] = sell_condition
df[\'open_short\'] = sell_condition
df[\'close_short\'] = buy_condition

# Generate chart signals
buy_signals = [df[\'low\'].iloc[i] * 0.995 if buy_condition.iloc[i] else None for i in range(len(df))]
sell_signals = [df[\'high\'].iloc[i] * 1.005 if sell_condition.iloc[i] else None for i in range(len(df))]

output = {
"name": "RSI Strategy",
"plots": [
{"name": "RSI", "data": df[\'rsi\'].tolist(), "color": "#9C27B0", "overlay": False},
{"name": "Overbought", "data": [70] * len(df), "color": "#FF5252", "style": "dashed", "overlay": False},
{"name": "Oversold", "data": [30] * len(df), "color": "#00E676", "style": "dashed", "overlay": False}
],
"signals": [
{"type": "buy", "text": "BUY", "data": buy_signals, "color": "#00E676"},
{"type": "sell", "text": "SELL", "data": sell_signals, "color": "#FF5252"}
]
}',"dashboard.indicator.guide.section6.param":"Parameters","dashboard.indicator.guide.section6.calc":"Calculate","dashboard.indicator.guide.section6.output":"Output","dashboard.indicator.guide.section6.generate":"Generate signal data (initialize with None)","dashboard.indicator.guide.section6.subchart":"Display on sub-chart","dashboard.indicator.guide.section8.title":"8. Frequently Asked Questions (FAQ)","dashboard.indicator.guide.section8.q1":"Q: Why can't my indicator be backtested?","dashboard.indicator.guide.section8.a1":"A: The backtest system requires NEW signal columns: df['open_long'], df['close_long'], df['open_short'], df['close_short'] (boolean). Even if you set output.signals for chart display, you must set these columns to enable backtesting.","dashboard.indicator.guide.section8.q2":"Q: Data length mismatch?","dashboard.indicator.guide.section8.a2":"A: The data list in plots and signals must have exactly the same length as the K-line data. If you use df['xxx'].tolist(), there is usually no problem.","dashboard.indicator.guide.section8.q3":"Q: How to handle NaN (empty values)?","dashboard.indicator.guide.section8.a3":"A: Pandas calculations (such as rolling mean) will produce NaN at the beginning. The system will automatically convert NaN to null for chart rendering. You don't need to manually clean it, but if you need specific logic, you can use df.fillna(0) or other methods.","dashboard.indicator.guide.section8.q4":"Q: Index mismatch causing all signals to be NaN?","dashboard.indicator.guide.section8.a4":"A: Please ensure you preserve the original df index (timestamp). Avoid using .values to create new Series. Use columns directly like df['close'] for operations.","dashboard.indicator.guide.section8.q5":"Q: Can I use third-party network libraries?","dashboard.indicator.guide.section8.a5":"A: No. The runtime environment is a browser sandbox and cannot use libraries like requests to request external APIs, nor can it install additional pip packages. Limited to built-in libraries such as pandas, numpy, math, json.","dashboard.indicator.guide.section8.q6":"Q: How to debug code?","dashboard.indicator.guide.section8.a6":"A: If the chart does not display indicators, it is usually because the Python code has an error. Please check for syntax errors or array index out of bounds. It is recommended to debug the algorithm logic in a local Python environment first, then copy it in.","dashboard.indicator.guide.section8.q7":"Q: Backtest shows 0 signals?","dashboard.indicator.guide.section8.a7":"A: Please check the data type of df['open_long']/df['close_long']/df['open_short']/df['close_short']. They should be boolean (True/False), not numeric. Use condition.fillna(False).astype(bool) to ensure correct type.","dashboard.indicator.paramsConfig.title":"Indicator Parameters","dashboard.indicator.paramsConfig.noParams":"No configurable parameters for this indicator","dashboard.indicator.paramsConfig.hint":"Configure parameters and click OK to run the indicator","dashboard.indicator.backtest.title":"Indicator Backtest","dashboard.indicator.backtest.config":"Backtest Parameters","dashboard.indicator.backtest.startDate":"Start Date","dashboard.indicator.backtest.endDate":"End Date","dashboard.indicator.backtest.selectStartDate":"Select start date","dashboard.indicator.backtest.selectEndDate":"Select end date","dashboard.indicator.backtest.startDateRequired":"Please select start date","dashboard.indicator.backtest.endDateRequired":"Please select end date","dashboard.indicator.backtest.initialCapital":"Initial Capital","dashboard.indicator.backtest.initialCapitalRequired":"Please enter initial capital","dashboard.indicator.backtest.commission":"Commission Rate (%)","dashboard.indicator.backtest.commissionHint":"Charged on notional value (incl. leverage) per trade; both entry & exit are deducted from balance.","dashboard.indicator.backtest.leverage":"Leverage","dashboard.indicator.backtest.timeframe":"Timeframe","dashboard.indicator.backtest.tradeDirection":"Trade Direction","dashboard.indicator.backtest.longOnly":"Long Only","dashboard.indicator.backtest.shortOnly":"Short Only","dashboard.indicator.backtest.both":"Both","dashboard.indicator.backtest.run":"Run Backtest","dashboard.indicator.backtest.rerun":"Run Again","dashboard.indicator.backtest.close":"Close","dashboard.indicator.backtest.running":"Running indicator backtest...","dashboard.indicator.backtest.loadingTip1":"Fetching historical K-line data...","dashboard.indicator.backtest.loadingTip2":"Executing strategy signal calculation...","dashboard.indicator.backtest.loadingTip3":"Simulating trade execution...","dashboard.indicator.backtest.loadingTip4":"Calculating backtest metrics...","dashboard.indicator.backtest.loadingTip5":"Almost done, please wait...","dashboard.indicator.backtest.results":"Backtest Results","dashboard.indicator.backtest.totalReturn":"Total Return","dashboard.indicator.backtest.annualReturn":"Annual Return","dashboard.indicator.backtest.maxDrawdown":"Max Drawdown","dashboard.indicator.backtest.sharpeRatio":"Sharpe Ratio","dashboard.indicator.backtest.winRate":"Win Rate","dashboard.indicator.backtest.profitFactor":"Profit Factor","dashboard.indicator.backtest.totalTrades":"Total Trades","dashboard.indicator.totalReturn":"Total Return","dashboard.indicator.annualReturn":"Annual Return","dashboard.indicator.maxDrawdown":"Max Drawdown","dashboard.indicator.sharpeRatio":"Sharpe Ratio","dashboard.indicator.winRate":"Win Rate","dashboard.indicator.profitFactor":"Profit Factor","dashboard.indicator.totalTrades":"Total Trades","dashboard.indicator.backtest.totalCommission":"Total Commission","dashboard.indicator.backtest.equityCurve":"Equity Curve","dashboard.indicator.backtest.strategy":"Indicator","dashboard.indicator.backtest.benchmark":"Benchmark","dashboard.indicator.backtest.tradeHistory":"Trade History","dashboard.indicator.backtest.tradeTime":"Time","dashboard.indicator.backtest.tradeType":"Type","dashboard.indicator.backtest.buy":"Buy","dashboard.indicator.backtest.sell":"Sell","dashboard.indicator.backtest.liquidation":"Liquidation","dashboard.indicator.backtest.openLong":"Open Long","dashboard.indicator.backtest.closeLong":"Close Long","dashboard.indicator.backtest.closeLongStop":"Close Long (Stop Loss)","dashboard.indicator.backtest.closeLongProfit":"Close Long (Take Profit)","dashboard.indicator.backtest.addLong":"Add Long","dashboard.indicator.backtest.openShort":"Open Short","dashboard.indicator.backtest.closeShort":"Close Short","dashboard.indicator.backtest.closeShortStop":"Close Short (Stop Loss)","dashboard.indicator.backtest.closeShortProfit":"Close Short (Take Profit)","dashboard.indicator.backtest.addShort":"Add Short","dashboard.indicator.backtest.closeLongTrailing":"Close Long (Trailing)","dashboard.indicator.backtest.reduceLong":"Reduce Long","dashboard.indicator.backtest.closeShortTrailing":"Close Short (Trailing)","dashboard.indicator.backtest.reduceShort":"Reduce Short","dashboard.indicator.backtest.price":"Price","dashboard.indicator.backtest.amount":"Amount","dashboard.indicator.backtest.balance":"Balance","dashboard.indicator.backtest.profit":"P&L","dashboard.indicator.backtest.success":"Backtest completed","dashboard.indicator.backtest.failed":"Backtest failed, please try again later","dashboard.indicator.backtest.quickSelect":"Quick Select","dashboard.indicator.backtest.precisionMode":"Backtest Precision Mode","dashboard.indicator.backtest.estimatedCandles":"Est. {count} candles to process","dashboard.indicator.backtest.highPrecisionDesc":"Using 1-minute candles for high-precision backtest, stop-loss/take-profit triggers are more accurate","dashboard.indicator.backtest.mediumPrecisionDesc":"Range exceeds 30 days, using 5-minute candles to balance precision and performance","dashboard.indicator.backtest.standardModeWarning":"Using Standard Backtest Mode","dashboard.indicator.backtest.standardModeDesc":"Current config does not support high-precision backtest, using strategy timeframe","dashboard.indicator.backtest.onlyCryptoSupported":"High-precision backtest only supports cryptocurrency market","dashboard.indicator.backtest.noIndicatorCode":"This indicator has no backtestable code","dashboard.indicator.backtest.noSymbol":"Please select a trading symbol first","dashboard.indicator.backtest.dateRangeExceeded":"Backtest date range exceeded: {timeframe} timeframe allows max {maxRange}","dashboard.indicator.backtest.dateRangeExceededDays":"Backtest range exceeds limit: {timeframe} max {maxRange} ({maxDays} days)","dashboard.indicator.backtest.metaLine":"Symbol: {symbol} | Market: {market} | Timeframe: {timeframe}","dashboard.indicator.backtest.savedRunId":"Backtest saved. Run ID: {id}","dashboard.indicator.backtest.historyTitle":"Backtest History","dashboard.indicator.backtest.historyRefresh":"Refresh","dashboard.indicator.backtest.historyView":"View","dashboard.indicator.backtest.historyNoData":"No backtest history","dashboard.indicator.backtest.historyUseCurrent":"Only current symbol/timeframe","dashboard.indicator.backtest.historyFilterSymbol":"Symbol","dashboard.indicator.backtest.historyFilterTimeframe":"Timeframe","dashboard.indicator.backtest.historyApply":"Apply filters","dashboard.indicator.backtest.historyAIAnalyze":"AI Analyze","dashboard.indicator.backtest.historyAIAnalyzeTitle":"AI Suggestions","dashboard.indicator.backtest.historyNoAIResult":"No AI analysis result","dashboard.indicator.backtest.historyRunId":"Run ID","dashboard.indicator.backtest.historyCreatedAt":"Time","dashboard.indicator.backtest.historyRange":"Range","dashboard.indicator.backtest.historyStatus":"Status","dashboard.indicator.backtest.historyStatusSuccess":"Success","dashboard.indicator.backtest.historyStatusFailed":"Failed","dashboard.indicator.backtest.historyActions":"Actions","dashboard.indicator.backtest.prev":"Previous","dashboard.indicator.backtest.next":"Next","dashboard.indicator.backtest.steps.strategy.title":"Execution Config","dashboard.indicator.backtest.steps.strategy.desc":"Position, risk, scaling","dashboard.indicator.backtest.steps.trading.title":"Backtest Setup","dashboard.indicator.backtest.steps.trading.desc":"Time, capital, fees, leverage, slippage","dashboard.indicator.backtest.steps.results.title":"Results","dashboard.indicator.backtest.steps.results.desc":"Summary & trades","dashboard.indicator.backtest.panel.risk":"Execution: Risk (SL / trailing)","dashboard.indicator.backtest.panel.scale":"Execution: Scale-in (Trend / DCA)","dashboard.indicator.backtest.panel.reduce":"Execution: Scale-out (Trend / Adverse)","dashboard.indicator.backtest.panel.position":"Execution: Entry sizing","dashboard.indicator.backtest.field.stopLossPct":"Stop Loss (%)","dashboard.indicator.backtest.field.takeProfitPct":"Take Profit (%)","dashboard.indicator.backtest.field.trailingEnabled":"Trailing stop / take profit","dashboard.indicator.backtest.field.trailingStopPct":"Trailing drawdown (%)","dashboard.indicator.backtest.field.trailingActivationPct":"Trailing activation (%)","dashboard.indicator.backtest.field.slippage":"Slippage (%)","dashboard.indicator.backtest.field.trendAddEnabled":"Trend-following scale-in","dashboard.indicator.backtest.field.dcaAddEnabled":"Mean-reversion DCA","dashboard.indicator.backtest.field.trendAddStepPct":"Scale-in trigger (%)","dashboard.indicator.backtest.field.dcaAddStepPct":"DCA trigger (%)","dashboard.indicator.backtest.field.trendAddSizePct":"Scale-in size (% of capital)","dashboard.indicator.backtest.field.dcaAddSizePct":"DCA size (% of capital)","dashboard.indicator.backtest.field.trendAddMaxTimes":"Max scale-in times","dashboard.indicator.backtest.field.dcaAddMaxTimes":"Max DCA times","dashboard.indicator.backtest.field.trendReduceEnabled":"Trend reduce","dashboard.indicator.backtest.field.adverseReduceEnabled":"Adverse reduce","dashboard.indicator.backtest.field.trendReduceStepPct":"Trend trigger (%)","dashboard.indicator.backtest.field.adverseReduceStepPct":"Adverse trigger (%)","dashboard.indicator.backtest.field.trendReduceSizePct":"Reduce size (% of position)","dashboard.indicator.backtest.field.adverseReduceSizePct":"Adverse reduce size (% of position)","dashboard.indicator.backtest.field.trendReduceMaxTimes":"Max trend reduce times","dashboard.indicator.backtest.field.adverseReduceMaxTimes":"Max adverse reduce times","dashboard.indicator.backtest.field.entryPct":"Entry size (% of capital)","dashboard.indicator.backtest.field.minOrderPct":"Min order size (% of capital) (optional)","dashboard.indicator.backtest.hint.entryPctMax":"Max entry: {maxPct}% (reserve budget for future scale-ins)","dashboard.docs.title":"Documentation","dashboard.docs.search.placeholder":"Search documents...","dashboard.docs.category.all":"All","dashboard.docs.category.guide":"Guides","dashboard.docs.category.api":"API Reference","dashboard.docs.category.tutorial":"Tutorials","dashboard.docs.category.faq":"FAQ","dashboard.docs.featured.title":"Featured Documents","dashboard.docs.featured.tag":"Featured","dashboard.docs.list.views":"views","dashboard.docs.list.author":"Author","dashboard.docs.list.empty":"No documents","dashboard.docs.list.backToAll":"Back to All Documents","dashboard.docs.list.total":"Total {count} documents","dashboard.docs.detail.back":"Back to List","dashboard.docs.detail.updatedAt":"Updated at","dashboard.docs.detail.related":"Related Documents","dashboard.docs.detail.notFound":"Document Not Found","dashboard.docs.detail.error":"Document does not exist or has been deleted","dashboard.docs.search.result":"Search Results","dashboard.docs.search.keyword":"Keyword","dashboard.totalEquity":"Total Equity","dashboard.totalPnL":"Total P&L","dashboard.aiStrategies":"AI Strategies","dashboard.indicatorStrategies":"Indicator Strategies","dashboard.running":"Running","dashboard.enabled":"Enabled","dashboard.pnlHistory":"P&L History","dashboard.strategyPerformance":"Strategy Performance","dashboard.strategyRanking":"Strategy Ranking","dashboard.winRate":"Win Rate","dashboard.profitFactor":"Profit Factor","dashboard.maxDrawdown":"Max Drawdown","dashboard.totalTrades":"Total Trades","dashboard.runningStrategies":"Running Strategies","dashboard.equityCurve":"Equity Curve","dashboard.strategyAllocation":"Strategy Allocation","dashboard.drawdownCurve":"Drawdown Curve","dashboard.drawdown":"Drawdown","dashboard.hourlyDistribution":"Hourly Distribution","dashboard.dailyPnl":"Daily P&L","dashboard.cumulativePnl":"Cumulative P&L","dashboard.tradeCount":"Trade Count","dashboard.profit":"Profit","dashboard.noData":"No Data","dashboard.noStrategyData":"No strategy data","dashboard.ranking.totalProfit":"Total Profit","dashboard.ranking.roi":"ROI","dashboard.ranking.trades":"Trades","dashboard.unit.trades":"","dashboard.unit.strategies":"","dashboard.label.avgDaily":"Avg Daily","dashboard.label.avgProfit":"Avg Profit","dashboard.label.win":"W","dashboard.label.lose":"L","dashboard.label.trade":"Trades","dashboard.label.indicator":"Indicator","dashboard.label.totalPnl":"Total P&L","dashboard.label.maxDrawdownPoint":"Max DD","dashboard.profitCalendar":"Profit Calendar","dashboard.recentTrades":"Recent Trades","dashboard.currentPositions":"Current Positions","dashboard.table.time":"Time","dashboard.table.strategy":"Strategy","dashboard.table.symbol":"Symbol","dashboard.table.type":"Type","dashboard.table.side":"Side","dashboard.table.size":"Size","dashboard.table.entryPrice":"Entry Price","dashboard.table.price":"Price","dashboard.table.amount":"Amount","dashboard.table.profit":"Profit","dashboard.pendingOrders":"Order Execution Records","dashboard.totalOrders":"Total {total} orders","dashboard.viewError":"View Error","dashboard.filled":"Filled","dashboard.orderTable.time":"Created Time","dashboard.orderTable.strategy":"Strategy","dashboard.orderTable.symbol":"Symbol","dashboard.orderTable.signalType":"Signal Type","dashboard.orderTable.amount":"Amount","dashboard.orderTable.price":"Filled Price","dashboard.orderTable.status":"Status","dashboard.orderTable.timeInfo":"Time","dashboard.orderTable.executedAt":"Executed Time","dashboard.orderTable.exchange":"Exchange","dashboard.orderTable.notify":"Notify","dashboard.orderTable.actions":"Actions","dashboard.orderTable.delete":"Delete","dashboard.orderTable.deleteConfirm":"Delete this record?","dashboard.orderTable.deleteSuccess":"Deleted","dashboard.orderTable.deleteFailed":"Delete failed","dashboard.newOrderNotify":"New Order Alert","dashboard.newOrderDesc":"New order execution record","dashboard.soundEnabled":"Sound notification enabled","dashboard.soundDisabled":"Sound notification disabled","dashboard.clickToMute":"Click to mute","dashboard.clickToUnmute":"Click to unmute","dashboard.signalType.openLong":"Open Long","dashboard.signalType.openShort":"Open Short","dashboard.signalType.closeLong":"Close Long","dashboard.signalType.closeShort":"Close Short","dashboard.signalType.addLong":"Add Long","dashboard.signalType.addShort":"Add Short","dashboard.status.pending":"Pending","dashboard.status.processing":"Processing","dashboard.status.completed":"Completed","dashboard.status.failed":"Failed","dashboard.status.cancelled":"Cancelled","dashboard.table.pnl":"Unrealized P&L","form.basic-form.basic.title":"Basic form","form.basic-form.basic.description":"Form pages are used to collect or verify information to users, and basic forms are common in scenarios where there are fewer data items.","form.basic-form.title.label":"Title","form.basic-form.title.placeholder":"Give the target a name","form.basic-form.title.required":"Please enter a title","form.basic-form.date.label":"Start and end date","form.basic-form.placeholder.start":"Start date","form.basic-form.placeholder.end":"End date","form.basic-form.date.required":"Please select the start and end date","form.basic-form.goal.label":"Goal description","form.basic-form.goal.placeholder":"Please enter your work goals","form.basic-form.goal.required":"Please enter a description of the goal","form.basic-form.standard.label":"Metrics","form.basic-form.standard.placeholder":"Please enter a metric","form.basic-form.standard.required":"Please enter a metric","form.basic-form.client.label":"Client","form.basic-form.label.tooltip":"Target service object","form.basic-form.client.placeholder":"Please describe your customer service, internal customers directly @ Name / job number","form.basic-form.client.required":"Please describe the customers you serve","form.basic-form.invites.label":"Inviting critics","form.basic-form.invites.placeholder":"Please direct @ Name / job number, you can invite up to 5 people","form.basic-form.weight.label":"Weight","form.basic-form.weight.placeholder":"Please enter weight","form.basic-form.public.label":"Target disclosure","form.basic-form.label.help":"Customers and invitees are shared by default","form.basic-form.radio.public":"Public","form.basic-form.radio.partially-public":"Partially public","form.basic-form.radio.private":"Private","form.basic-form.publicUsers.placeholder":"Open to","form.basic-form.option.A":"Colleague A","form.basic-form.option.B":"Colleague B","form.basic-form.option.C":"Colleague C","form.basic-form.email.required":"Please enter your email!","form.basic-form.email.wrong-format":"The email address is in the wrong format!","form.basic-form.userName.required":"Please enter your userName!","form.basic-form.password.required":"Please enter your password!","form.basic-form.password.twice":"The passwords entered twice do not match!","form.basic-form.strength.msg":"Please enter at least 6 characters and don't use passwords that are easy to guess.","form.basic-form.strength.strong":"Strength: strong","form.basic-form.strength.medium":"Strength: medium","form.basic-form.strength.short":"Strength: too short","form.basic-form.confirm-password.required":"Please confirm your password!","form.basic-form.phone-number.required":"Please enter your phone number!","form.basic-form.phone-number.wrong-format":"Malformed phone number!","form.basic-form.verification-code.required":"Please enter the verification code!","form.basic-form.form.get-captcha":"Get Captcha","form.basic-form.captcha.second":"sec","form.basic-form.form.optional":" (optional) ","form.basic-form.form.submit":"Submit","form.basic-form.form.save":"Save","form.basic-form.email.placeholder":"Email","form.basic-form.password.placeholder":"Password","form.basic-form.confirm-password.placeholder":"Confirm password","form.basic-form.phone-number.placeholder":"Phone number","form.basic-form.verification-code.placeholder":"Verification code","result.success.title":"Submission Success","result.success.description":"The submission results page is used to feed back the results of a series of operational tasks. If it is a simple operation, use the Message global prompt feedback. This text area can show a simple supplementary explanation. If there is a similar requirement for displaying “documents”, the following gray area can present more complicated content.","result.success.operate-title":"Project Name","result.success.operate-id":"Project ID","result.success.principal":"Principal","result.success.operate-time":"Effective time","result.success.step1-title":"Create project","result.success.step1-operator":"Qu Lili","result.success.step2-title":"Departmental preliminary review","result.success.step2-operator":"Zhou Maomao","result.success.step2-extra":"Urge","result.success.step3-title":"Financial review","result.success.step4-title":"Finish","result.success.btn-return":"Back List","result.success.btn-project":"View Project","result.success.btn-print":"Print","result.fail.error.title":"Submission Failed","result.fail.error.description":"Please check and modify the following information before resubmitting.","result.fail.error.hint-title":"The content you submitted has the following error:","result.fail.error.hint-text1":"Your account has been frozen","result.fail.error.hint-btn1":"Thaw immediately","result.fail.error.hint-text2":"Your account is not yet eligible to apply","result.fail.error.hint-btn2":"Upgrade immediately","result.fail.error.btn-text":"Return to modify","account.settings.menuMap.custom":"Custom Settings","account.settings.menuMap.binding":"Account Binding","account.settings.basic.avatar":"Avatar","account.settings.basic.change-avatar":"Change avatar","account.settings.basic.email":"Email","account.settings.basic.email-message":"Please input your email!","account.settings.basic.nickname":"Nickname","account.settings.basic.nickname-message":"Please input your Nickname!","account.settings.basic.profile":"Personal profile","account.settings.basic.profile-message":"Please input your personal profile!","account.settings.basic.profile-placeholder":"Brief introduction to yourself","account.settings.basic.country":"Country/Region","account.settings.basic.country-message":"Please input your country!","account.settings.basic.geographic":"Province or city","account.settings.basic.geographic-message":"Please input your geographic info!","account.settings.basic.address":"Street Address","account.settings.basic.address-message":"Please input your address!","account.settings.basic.phone":"Phone Number","account.settings.basic.phone-message":"Please input your phone!","account.settings.basic.update":"Update Information","account.settings.basic.update.success":"Update basic information successfully","account.settings.security.strong":"Strong","account.settings.security.medium":"Medium","account.settings.security.weak":"Weak","account.settings.security.password":"Account Password","account.settings.security.password-description":"Current password strength:","account.settings.security.phone":"Security Phone","account.settings.security.phone-description":"Bound phone:","account.settings.security.question":"Security Question","account.settings.security.question-description":"The security question is not set, and the security policy can effectively protect the account security","account.settings.security.email":"Bound Email","account.settings.security.email-description":"Bound Email:","account.settings.security.mfa":"MFA Device","account.settings.security.mfa-description":"Unbound MFA device, after binding, can be confirmed twice","account.settings.security.modify":"Modify","account.settings.security.set":"Set","account.settings.security.bind":"Bind","account.settings.binding.taobao":"Binding Taobao","account.settings.binding.taobao-description":"Currently unbound Taobao account","account.settings.binding.alipay":"Binding Alipay","account.settings.binding.alipay-description":"Currently unbound Alipay account","account.settings.binding.dingding":"Binding DingTalk","account.settings.binding.dingding-description":"Currently unbound DingTalk account","account.settings.binding.bind":"Bind","account.settings.notification.password":"Account Password","account.settings.notification.password-description":"Messages from other users will be notified in the form of a station letter","account.settings.notification.messages":"System Messages","account.settings.notification.messages-description":"System messages will be notified in the form of a station letter","account.settings.notification.todo":"To-do Notification","account.settings.notification.todo-description":"The to-do list will be notified in the form of a letter from the station","account.settings.settings.open":"Open","account.settings.settings.close":"Close","trading-assistant.title":"Trading Assistant","trading-assistant.strategyList":"Strategy List","trading-assistant.createStrategy":"Create Strategy","trading-assistant.noStrategy":"No strategies","trading-assistant.selectStrategy":"Please select a strategy from the left to view details","trading-assistant.startStrategy":"Start Strategy","trading-assistant.stopStrategy":"Stop Strategy","trading-assistant.editStrategy":"Edit Strategy","trading-assistant.deleteStrategy":"Delete Strategy","trading-assistant.startAll":"Start All","trading-assistant.stopAll":"Stop All","trading-assistant.deleteAll":"Delete All","trading-assistant.symbolCount":"symbols","trading-assistant.strategyCount":"strategies","trading-assistant.groupBy":"Group By","trading-assistant.groupByStrategy":"Strategy","trading-assistant.groupBySymbol":"Symbol","trading-assistant.timeframe":"Timeframe","trading-assistant.indicator":"Indicator","trading-assistant.status.running":"Running","trading-assistant.status.stopped":"Stopped","trading-assistant.status.error":"Error","trading-assistant.strategyType.IndicatorStrategy":"Indicator Strategy","trading-assistant.strategyType.PromptBasedStrategy":"Prompt Strategy","trading-assistant.strategyType.GridStrategy":"Grid Strategy","trading-assistant.tabs.tradingRecords":"Trading Records","trading-assistant.tabs.positions":"Positions","trading-assistant.tabs.equityCurve":"Equity Curve","trading-assistant.form.step1":"Select Indicator","trading-assistant.form.step2":"Exchange Configuration","trading-assistant.form.step3":"Strategy Parameters","trading-assistant.form.step2Params":"Parameters","trading-assistant.form.step3Signal":"Signal Delivery","trading-assistant.form.simpleMode":"Simple","trading-assistant.form.advancedMode":"Advanced","trading-assistant.form.simpleModeHint":"Quick setup with recommended defaults","trading-assistant.form.advancedModeHint":"Customize all parameters for pros","trading-assistant.form.simpleStep1":"Select Indicator & Pair","trading-assistant.form.simpleStep2":"Launch Mode","trading-assistant.form.simpleDefaultsHint":"Defaults (expand to customize)","trading-assistant.form.showAdvancedSettings":"Show Advanced Settings","trading-assistant.form.hideAdvancedSettings":"Hide Advanced Settings","trading-assistant.form.marketCategory":"Market Category","trading-assistant.form.marketCategoryHint":"Select a market first. Only Crypto can enable live trading; other markets are signal-only.","trading-assistant.market.USStock":"US Stock","trading-assistant.market.Crypto":"Crypto","trading-assistant.market.Forex":"Forex","trading-assistant.form.indicator":"Select Indicator","trading-assistant.form.indicatorHint":"You can only select indicators you have purchased or created","trading-assistant.form.qdtCostHints":"Using strategies will consume QDT, please ensure your account has sufficient QDT balance","trading-assistant.form.indicatorDescription":"Indicator Description","trading-assistant.form.noDescription":"No description","trading-assistant.form.indicatorParams":"Indicator Parameters","trading-assistant.form.indicatorParamsHint":"These parameters will be passed to the indicator code. Different strategies can use different parameter values.","trading-assistant.form.exchange":"Select Exchange","trading-assistant.form.apiKey":"API Key","trading-assistant.form.secretKey":"Secret Key","trading-assistant.form.passphrase":"Passphrase","trading-assistant.form.testConnection":"Test Connection","trading-assistant.form.strategyName":"Strategy Name","trading-assistant.form.symbol":"Trading Pair","trading-assistant.form.symbols":"Trading Pairs (Multi-select)","trading-assistant.form.symbolHint":"Symbol format depends on the selected market","trading-assistant.form.symbolsHint":"Select multiple pairs to create strategies for each","trading-assistant.form.strategyType":"Strategy Type","trading-assistant.form.strategyTypeSingle":"Single Symbol Strategy","trading-assistant.form.strategyTypeCrossSectional":"Cross-Sectional Strategy","trading-assistant.form.strategyTypeHint":"Single Symbol: Trade a single symbol; Cross-Sectional: Manage a portfolio of multiple symbols","trading-assistant.form.symbolList":"Symbol List","trading-assistant.form.symbolListHint":"Select multiple symbols, strategy will rank and rebalance based on indicator scores","trading-assistant.form.portfolioSize":"Portfolio Size","trading-assistant.form.portfolioSizeHint":"Number of symbols to hold simultaneously","trading-assistant.form.longRatio":"Long Ratio","trading-assistant.form.longRatioHint":"Proportion of long positions (0-1), e.g. 0.5 means 50% long, 50% short","trading-assistant.form.rebalanceFrequency":"Rebalance Frequency","trading-assistant.form.rebalanceDaily":"Daily","trading-assistant.form.rebalanceWeekly":"Weekly","trading-assistant.form.rebalanceMonthly":"Monthly","trading-assistant.form.rebalanceFrequencyHint":"Frequency of portfolio rebalancing","trading-assistant.form.addSymbol":"Add Symbol","trading-assistant.form.addSymbolTitle":"Add Symbol to Watchlist","trading-assistant.form.searchSymbolPlaceholder":"Search by code, e.g. BTC, AAPL","trading-assistant.form.noSymbolFound":"No matching symbol found","trading-assistant.form.canDirectAdd":"You can directly add the code","trading-assistant.form.searchSymbolHint":"Enter code to search symbols","trading-assistant.form.confirmAdd":"Confirm Add","trading-assistant.form.addSymbolSuccess":"Symbol added successfully","trading-assistant.form.addSymbolFailed":"Failed to add, please try again","trading-assistant.form.pleaseSelectSymbol":"Please select or enter a symbol","trading-assistant.form.symbolHintCrypto":"Crypto: use trading pairs like BTC/USDT","trading-assistant.form.symbolHintGeneral":"Enter the symbol for the selected market (e.g. 600519, AAPL, EURUSD).","trading-assistant.form.initialCapital":"Initial Capital","trading-assistant.form.marketType":"Market Type","trading-assistant.form.marketTypeFutures":"Futures","trading-assistant.form.marketTypeSpot":"Spot","trading-assistant.form.marketTypeHint":"Futures support bidirectional trading and leverage, spot only supports long positions with fixed 1x leverage","trading-assistant.form.leverage":"Leverage","trading-assistant.form.leverageHint":"Futures: 1-125x, Spot: Fixed 1x","trading-assistant.form.spotLeverageFixed":"Spot trading leverage is fixed at 1x","trading-assistant.form.spotOnlyLongHint":"Spot trading only supports long positions","trading-assistant.form.tradeDirection":"Trade Direction","trading-assistant.form.tradeDirectionLong":"Long Only","trading-assistant.form.tradeDirectionShort":"Short Only","trading-assistant.form.tradeDirectionBoth":"Both","trading-assistant.form.timeframe":"Timeframe","trading-assistant.form.klinePeriod":"K-Line Period","trading-assistant.form.timeframe1m":"1 Minute","trading-assistant.form.timeframe5m":"5 Minutes","trading-assistant.form.timeframe15m":"15 Minutes","trading-assistant.form.timeframe30m":"30 Minutes","trading-assistant.form.timeframe1H":"1 Hour","trading-assistant.form.timeframe4H":"4 Hours","trading-assistant.form.timeframe1D":"1 Day","trading-assistant.form.selectStrategyType":"Select Strategy Type","trading-assistant.form.indicatorStrategy":"Indicator Strategy","trading-assistant.form.indicatorStrategyDesc":"Automated trading strategy based on technical indicators","trading-assistant.form.aiStrategy":"AI Strategy","trading-assistant.form.aiStrategyDesc":"Automated trading strategy based on AI intelligent decision-making","trading-assistant.form.enableAiFilter":"Enable AI Intelligent Decision Filter","trading-assistant.form.enableAiFilterHint":"When enabled, indicator signals will be filtered by AI to improve trading quality","trading-assistant.form.aiFilterPrompt":"Custom Prompt","trading-assistant.form.aiFilterPromptHint":"Provide custom instructions for AI filtering, leave blank to use system default","trading-assistant.validation.strategyTypeRequired":"Please select a strategy type","trading-assistant.validation.marketCategoryRequired":"Please select a market category","trading-assistant.form.advancedSettings":"Advanced Settings","trading-assistant.form.orderMode":"Order Mode","trading-assistant.form.orderModeMaker":"Maker (Limit)","trading-assistant.form.orderModeTaker":"Taker (Market)","trading-assistant.form.orderModeHint":"Maker mode uses limit orders with lower fees; Taker mode executes immediately with higher fees","trading-assistant.form.makerWaitSec":"Maker Wait Time (seconds)","trading-assistant.form.makerWaitSecHint":"Time to wait for order fill before canceling and retrying","trading-assistant.form.makerRetries":"Maker Retries","trading-assistant.form.makerRetriesHint":"Maximum number of retries when maker order is not filled","trading-assistant.form.fallbackToMarket":"Fallback to Market on failure","trading-assistant.form.fallbackToMarketHint":"If limit order (open/close) is not filled, downgrade to market order to ensure execution","trading-assistant.form.marginMode":"Margin Mode","trading-assistant.form.marginModeCross":"Cross Margin","trading-assistant.form.marginModeIsolated":"Isolated Margin","trading-assistant.form.stopLossPct":"Stop Loss (%)","trading-assistant.form.stopLossPctHint":"Set stop loss percentage, 0 means disabled","trading-assistant.form.takeProfitPct":"Take Profit (%)","trading-assistant.form.takeProfitPctHint":"Set take profit percentage, 0 means disabled","trading-assistant.form.commission":"Commission (%)","trading-assistant.form.commissionHint":"Trading fee percentage (optional)","trading-assistant.form.slippage":"Slippage (%)","trading-assistant.form.slippageHint":"Estimated slippage percentage (optional)","trading-assistant.form.executionMode":"Execution","trading-assistant.form.executionModeSignal":"Signal only (push notifications)","trading-assistant.form.executionModeLive":"Live trading","trading-assistant.form.liveTradingCryptoOnlyHint":"Live trading is available for Crypto only. Other markets can only push signals.","trading-assistant.form.liveTradingNotSupportedHint":"Live trading is not available for this market","trading-assistant.form.broker":"Broker","trading-assistant.form.localDeploymentRequired":"⚠️ Local Deployment Required","trading-assistant.form.localDeploymentHint":"IBKR and MT5 are external trading interfaces that require local deployment of QuantDinger. Cloud SaaS mode is not supported. Please ensure you have installed and configured the trading software (TWS/IB Gateway or MT5 terminal) on your local machine.","trading-assistant.form.ibkrConnectionTitle":"Interactive Brokers Connection","trading-assistant.form.ibkrConnectionHint":"Make sure TWS or IB Gateway is running with API enabled","trading-assistant.validation.brokerRequired":"Please select a broker","trading-assistant.placeholders.selectBroker":"Select broker","trading-assistant.brokerNames":{ibkr:"Interactive Brokers (IBKR)",mt5:"MetaTrader 5 (MT5)",mt4:"MetaTrader 4 (MT4)",futu:"Futu Securities",tiger:"Tiger Brokers",td:"TD Ameritrade",schwab:"Charles Schwab"},"trading-assistant.form.ibkrHost":"Host","trading-assistant.form.ibkrPort":"Port","trading-assistant.form.ibkrPortHint":"TWS Live:7497, TWS Paper:7496, Gateway Live:4001, Gateway Paper:4002","trading-assistant.form.ibkrClientId":"Client ID","trading-assistant.form.ibkrAccount":"Account","trading-assistant.form.ibkrAccountHint":"Leave empty to auto-select first account. Specify for multi-account users.","trading-assistant.placeholders.ibkrAccount":"Optional, e.g. U1234567","trading-assistant.exchange.ibkrConnectionSuccess":"IBKR connected successfully","trading-assistant.exchange.ibkrConnectionFailed":"IBKR connection failed. Please check if TWS/Gateway is running.","trading-assistant.exchange.checkLocalDeployment":"Please ensure you are running locally. Cloud SaaS does not support external trading interfaces.","trading-assistant.form.forexBroker":"Forex Broker","trading-assistant.form.mt5ConnectionTitle":"MetaTrader 5 Connection","trading-assistant.form.mt5ConnectionHint":"Make sure MT5 terminal is running and logged in (Windows only)","trading-assistant.form.mt5Server":"Server","trading-assistant.form.mt5ServerHint":"Broker server name (e.g., ICMarkets-Demo)","trading-assistant.form.mt5Login":"Account Number","trading-assistant.form.mt5Password":"Password","trading-assistant.form.mt5TerminalPath":"MT5 Terminal Path (Optional)","trading-assistant.form.mt5TerminalPathHint":"If MT5 terminal is not installed in the default location, specify the full path to terminal64.exe (e.g., C:\\Program Files\\MetaTrader 5\\terminal64.exe)","trading-assistant.placeholders.mt5Server":"e.g., ICMarkets-Demo","trading-assistant.placeholders.mt5Login":"e.g., 12345678","trading-assistant.placeholders.mt5Password":"Your MT5 password","trading-assistant.placeholders.mt5TerminalPath":"e.g., C:\\Program Files\\MetaTrader 5\\terminal64.exe","trading-assistant.validation.mt5ServerRequired":"Please enter MT5 server","trading-assistant.validation.mt5LoginRequired":"Please enter MT5 account number","trading-assistant.validation.mt5PasswordRequired":"Please enter MT5 password","trading-assistant.validation.portfolioSizeRequired":"Please enter portfolio size","trading-assistant.validation.longRatioRequired":"Please enter long ratio","trading-assistant.exchange.mt5ConnectionSuccess":"MT5 connected successfully","trading-assistant.exchange.mt5ConnectionFailed":"MT5 connection failed. Please check if terminal is running.","trading-assistant.form.notifyChannels":"Notification Channels","trading-assistant.form.notifyChannelsHint":"Choose how you want to receive buy/sell and risk-management signals.","trading-assistant.notify.browser":"Browser","trading-assistant.notify.email":"Email","trading-assistant.notify.phone":"Phone","trading-assistant.notify.telegram":"Telegram","trading-assistant.notify.discord":"Discord","trading-assistant.notify.webhook":"Webhook","trading-assistant.form.notifyEmail":"Email","trading-assistant.form.notifyPhone":"Phone number","trading-assistant.form.notifyTelegram":"Telegram (chat id / username)","trading-assistant.form.notifyDiscord":"Discord (webhook url)","trading-assistant.form.notifyWebhook":"Webhook URL","trading-assistant.form.liveTradingConfigTitle":"Exchange Credentials","trading-assistant.form.liveTradingConfigHint":"Provide your exchange API credentials. You can test the connection before saving.","trading-assistant.form.savedCredential":"Saved credential","trading-assistant.form.savedCredentialHint":"Select a saved credential to auto-fill API keys (optional).","trading-assistant.form.saveCredential":"Save this credential for future use","trading-assistant.form.credentialName":"Credential name (optional)","trading-assistant.form.signalMode":"Signal Mode","trading-assistant.form.signalModeConfirmed":"Confirmed","trading-assistant.form.signalModeAggressive":"Aggressive","trading-assistant.form.signalModeHint":"Confirmed: only check completed candles; Aggressive: also check forming candles","trading-assistant.form.cancel":"Cancel","trading-assistant.form.prev":"Previous","trading-assistant.form.next":"Next","trading-assistant.form.confirmCreate":"Confirm Create","trading-assistant.form.confirmEdit":"Confirm Edit","trading-assistant.messages.createSuccess":"Strategy created successfully","trading-assistant.messages.createFailed":"Failed to create strategy","trading-assistant.messages.updateSuccess":"Strategy updated successfully","trading-assistant.messages.updateFailed":"Failed to update strategy","trading-assistant.messages.deleteSuccess":"Strategy deleted successfully","trading-assistant.messages.deleteFailed":"Failed to delete strategy","trading-assistant.messages.startSuccess":"Strategy started successfully","trading-assistant.messages.startFailed":"Failed to start strategy","trading-assistant.messages.stopSuccess":"Strategy stopped successfully","trading-assistant.messages.stopFailed":"Failed to stop strategy","trading-assistant.messages.loadFailed":"Failed to load strategy list","trading-assistant.messages.runningWarning":"Strategy is running, please stop it before editing","trading-assistant.messages.deleteConfirmWithName":'Are you sure you want to delete strategy "{name}"? This action cannot be undone.',"trading-assistant.messages.deleteConfirm":"Are you sure you want to delete this strategy? This action cannot be undone.","trading-assistant.messages.loadTradesFailed":"Failed to load trading records","trading-assistant.messages.loadPositionsFailed":"Failed to load position records","trading-assistant.messages.loadEquityFailed":"Failed to load equity curve","trading-assistant.messages.loadIndicatorsFailed":"Failed to load indicator list, please try again later","trading-assistant.messages.spotLimitations":"Spot trading has been automatically set to long only with 1x leverage","trading-assistant.messages.autoFillApiConfig":"Auto-filled API configuration for this exchange from history","trading-assistant.messages.batchCreateSuccess":"Successfully created {count} strategies","trading-assistant.messages.batchStartSuccess":"Successfully started {count} strategies","trading-assistant.messages.batchStartFailed":"Failed to start strategies","trading-assistant.messages.batchStopSuccess":"Successfully stopped {count} strategies","trading-assistant.messages.batchStopFailed":"Failed to stop strategies","trading-assistant.messages.batchDeleteSuccess":"Successfully deleted {count} strategies","trading-assistant.messages.batchDeleteFailed":"Failed to delete strategies","trading-assistant.messages.batchDeleteConfirm":'Are you sure you want to delete {count} strategies in group "{name}"? This action cannot be undone.',"trading-assistant.placeholders.selectIndicator":"Please select an indicator","trading-assistant.placeholders.selectExchange":"Please select an exchange","trading-assistant.placeholders.selectMarketCategory":"Please select market category","trading-assistant.placeholders.inputApiKey":"Please enter API Key","trading-assistant.placeholders.inputSecretKey":"Please enter Secret Key","trading-assistant.placeholders.inputPassphrase":"Please enter Passphrase","trading-assistant.placeholders.inputStrategyName":"Please enter strategy name","trading-assistant.placeholders.selectSymbol":"Please select trading pair","trading-assistant.placeholders.selectSymbols":"Please select trading pairs (multi-select)","trading-assistant.placeholders.inputSymbol":"Please enter symbol","trading-assistant.placeholders.selectTimeframe":"Please select timeframe","trading-assistant.placeholders.selectKlinePeriod":"Please select K-line period","trading-assistant.placeholders.inputAiFilterPrompt":"Please enter custom prompt (optional)","trading-assistant.placeholders.inputEmail":"Please enter email","trading-assistant.placeholders.inputPhone":"Please enter phone number","trading-assistant.placeholders.inputTelegram":"Please enter Telegram chat id / username","trading-assistant.placeholders.inputDiscord":"Please enter Discord webhook url","trading-assistant.placeholders.inputWebhook":"Please enter webhook url","trading-assistant.placeholders.selectSavedCredential":"Select saved credential","trading-assistant.placeholders.inputCredentialName":"For example: Binance main key","trading-assistant.validation.indicatorRequired":"Please select an indicator","trading-assistant.validation.exchangeRequired":"Please select an exchange","trading-assistant.validation.apiKeyRequired":"Please enter API Key","trading-assistant.validation.secretKeyRequired":"Please enter Secret Key","trading-assistant.validation.passphraseRequired":"Please enter Passphrase","trading-assistant.validation.exchangeConfigIncomplete":"Please fill in complete exchange configuration information","trading-assistant.validation.testConnectionRequired":'Please click "Test Connection" button and ensure the connection is successful',"trading-assistant.validation.testConnectionFailed":"Connection test failed, please check the configuration and test again","trading-assistant.validation.credentialRequired":"Please add and test exchange credentials in Personal Center first","trading-assistant.validation.strategyNameRequired":"Please enter strategy name","trading-assistant.validation.symbolRequired":"Please select trading pair","trading-assistant.validation.symbolsRequired":"Please select at least one trading pair","trading-assistant.validation.initialCapitalRequired":"Please enter initial capital","trading-assistant.validation.leverageRequired":"Please enter leverage","trading-assistant.validation.emailInvalid":"Invalid email address","trading-assistant.validation.notifyChannelRequired":"Please select at least one notification channel","trading-assistant.table.time":"Time","trading-assistant.table.type":"Type","trading-assistant.table.price":"Price","trading-assistant.table.amount":"Amount","trading-assistant.table.value":"Value","trading-assistant.table.commission":"Commission","trading-assistant.table.symbol":"Trading Pair","trading-assistant.table.side":"Side","trading-assistant.table.size":"Position Size","trading-assistant.table.entryPrice":"Entry Price","trading-assistant.table.currentPrice":"Current Price","trading-assistant.table.unrealizedPnl":"Unrealized P&L","trading-assistant.table.pnlPercent":"P&L %","trading-assistant.table.buy":"Buy","trading-assistant.table.sell":"Sell","trading-assistant.table.long":"Long","trading-assistant.table.short":"Short","trading-assistant.table.noPositions":"No positions","trading-assistant.detail.title":"Strategy Details","trading-assistant.detail.strategyName":"Strategy Name","trading-assistant.detail.strategyType":"Strategy Type","trading-assistant.detail.status":"Status","trading-assistant.detail.tradingMode":"Trading Mode","trading-assistant.detail.exchange":"Exchange","trading-assistant.detail.initialCapital":"Initial Capital","trading-assistant.detail.totalInvestment":"Total Investment","trading-assistant.detail.currentEquity":"Current Equity","trading-assistant.detail.totalPnl":"Total P&L","trading-assistant.detail.indicatorName":"Indicator Name","trading-assistant.detail.maxLeverage":"Max Leverage","trading-assistant.detail.decideInterval":"Decision Interval","trading-assistant.detail.symbols":"Trading Symbols","trading-assistant.detail.createdAt":"Created At","trading-assistant.detail.updatedAt":"Updated At","trading-assistant.detail.llmConfig":"AI Model Configuration","trading-assistant.detail.exchangeConfig":"Exchange Configuration","trading-assistant.detail.provider":"Provider","trading-assistant.detail.modelId":"Model ID","trading-assistant.detail.close":"Close","trading-assistant.detail.loadFailed":"Failed to load strategy details","trading-assistant.equity.noData":"No equity data","trading-assistant.equity.equity":"Equity","trading-assistant.exchange.tradingMode":"Trading Mode","trading-assistant.exchange.virtual":"Virtual Trading","trading-assistant.exchange.live":"Live Trading","trading-assistant.exchange.selectExchange":"Select Exchange","trading-assistant.exchange.walletAddress":"Wallet Address","trading-assistant.exchange.walletAddressPlaceholder":"Please enter wallet address (starts with 0x)","trading-assistant.exchange.privateKey":"Private Key","trading-assistant.exchange.privateKeyPlaceholder":"Please enter private key (64 characters)","trading-assistant.exchange.testConnection":"Test Connection","trading-assistant.exchange.connectionSuccess":"Connection successful","trading-assistant.exchange.connectionFailed":"Connection failed","trading-assistant.exchange.testFailed":"Connection test failed","trading-assistant.exchange.fillComplete":"Please fill in complete exchange configuration information","trading-assistant.exchange.ipWhitelistTip":"Please add the following IPs to the whitelist in your exchange API settings:","trading-assistant.strategyTypeOptions.ai":"AI-Driven Strategy","trading-assistant.strategyTypeOptions.indicator":"Indicator Strategy","trading-assistant.strategyTypeOptions.aiDeveloping":"AI-Driven Strategy feature is under development, stay tuned","trading-assistant.strategyTypeOptions.aiDevelopingWarning":"AI-Driven Strategy feature is under development","trading-assistant.indicatorType.trend":"Trend","trading-assistant.indicatorType.momentum":"Momentum","trading-assistant.indicatorType.volatility":"Volatility","trading-assistant.indicatorType.volume":"Volume","trading-assistant.indicatorType.custom":"Custom","trading-assistant.exchangeNames":{okx:"OKX",binance:"Binance",hyperliquid:"Hyperliquid",blockchaincom:"Blockchain.com",coinbaseexchange:"Coinbase",gate:"Gate.io",mexc:"MEXC",kraken:"Kraken",bitfinex:"Bitfinex",bybit:"Bybit",kucoin:"KuCoin",huobi:"Huobi",bitget:"Bitget",bitmex:"BitMEX",deribit:"Deribit",phemex:"Phemex",bitmart:"BitMart",bitstamp:"Bitstamp",bittrex:"Bittrex",poloniex:"Poloniex",gemini:"Gemini",cryptocom:"Crypto.com",bitflyer:"bitFlyer",upbit:"Upbit",bithumb:"Bithumb",coinone:"Coinone",zb:"ZB",lbank:"LBank",bibox:"Bibox",bigone:"BigONE",bitrue:"Bitrue",coinex:"CoinEx",digifinex:"DigiFinex",ftx:"FTX",ftxus:"FTX US",binanceus:"Binance US",binancecoinm:"Binance COIN-M",binanceusdm:"Binance USDⓈ-M",ibkr:"Interactive Brokers (IBKR)",deepcoin:"Deepcoin"},"ai-trading-assistant.title":"AI Trading Assistant","ai-trading-assistant.strategyList":"Strategy List","ai-trading-assistant.createStrategy":"Create Strategy","ai-trading-assistant.noStrategy":"No strategies","ai-trading-assistant.selectStrategy":"Please select a strategy from the left to view details","ai-trading-assistant.startStrategy":"Start Strategy","ai-trading-assistant.stopStrategy":"Stop Strategy","ai-trading-assistant.editStrategy":"Edit Strategy","ai-trading-assistant.deleteStrategy":"Delete Strategy","ai-trading-assistant.status.running":"Running","ai-trading-assistant.status.stopped":"Stopped","ai-trading-assistant.status.error":"Error","ai-trading-assistant.tabs.tradingRecords":"Trading Records","ai-trading-assistant.tabs.positions":"Positions","ai-trading-assistant.tabs.aiDecisions":"AI Decisions","ai-trading-assistant.tabs.equityCurve":"Equity Curve","ai-trading-assistant.form.createTitle":"Create AI Trading Strategy","ai-trading-assistant.form.editTitle":"Edit AI Trading Strategy","ai-trading-assistant.form.strategyName":"Strategy Name","ai-trading-assistant.form.modelId":"AI Model","ai-trading-assistant.form.modelIdHint":"Using system OpenRouter service, no API Key configuration needed","ai-trading-assistant.form.decideInterval":"Decision Interval","ai-trading-assistant.form.decideInterval5m":"5 Minutes","ai-trading-assistant.form.decideInterval10m":"10 Minutes","ai-trading-assistant.form.decideInterval30m":"30 Minutes","ai-trading-assistant.form.decideInterval1h":"1 Hour","ai-trading-assistant.form.decideInterval4h":"4 Hours","ai-trading-assistant.form.decideInterval1d":"1 Day","ai-trading-assistant.form.decideInterval1w":"1 Week","ai-trading-assistant.form.decideIntervalHint":"Time interval for AI decision making","ai-trading-assistant.form.runPeriod":"Run Period","ai-trading-assistant.form.runPeriodHint":"Start and end time for strategy execution","ai-trading-assistant.form.startDate":"Start Date","ai-trading-assistant.form.endDate":"End Date","ai-trading-assistant.form.qdtCostTitle":"QDT Cost Notice","ai-trading-assistant.form.qdtCostHint":"Each AI decision will cost {cost} QDT. Please ensure your account has sufficient QDT balance. During strategy execution, each decision will be charged in real-time.","ai-trading-assistant.form.apiKey":"API Key","ai-trading-assistant.form.exchange":"Select Exchange","ai-trading-assistant.form.secretKey":"Secret Key","ai-trading-assistant.form.passphrase":"Passphrase","ai-trading-assistant.form.testConnection":"Test Connection","ai-trading-assistant.form.symbol":"Trading Pair","ai-trading-assistant.form.symbolHint":"Select the trading pair to trade","ai-trading-assistant.form.initialCapital":"Initial Capital (Margin)","ai-trading-assistant.form.leverage":"Leverage","ai-trading-assistant.form.timeframe":"Timeframe","ai-trading-assistant.form.timeframe1m":"1 Minute","ai-trading-assistant.form.timeframe5m":"5 Minutes","ai-trading-assistant.form.timeframe15m":"15 Minutes","ai-trading-assistant.form.timeframe30m":"30 Minutes","ai-trading-assistant.form.timeframe1H":"1 Hour","ai-trading-assistant.form.timeframe4H":"4 Hours","ai-trading-assistant.form.timeframe1D":"1 Day","ai-trading-assistant.form.marketType":"Market Type","ai-trading-assistant.form.marketTypeFutures":"Futures","ai-trading-assistant.form.marketTypeSpot":"Spot","ai-trading-assistant.form.totalPnl":"Total PnL","ai-trading-assistant.form.customPrompt":"Custom Prompt","ai-trading-assistant.form.customPromptHint":"Optional, used to customize AI trading strategy and decision logic","ai-trading-assistant.form.cancel":"Cancel","ai-trading-assistant.form.prev":"Previous","ai-trading-assistant.form.next":"Next","ai-trading-assistant.form.confirmCreate":"Confirm Create","ai-trading-assistant.form.confirmEdit":"Confirm Edit","ai-trading-assistant.messages.createSuccess":"Strategy created successfully","ai-trading-assistant.messages.createFailed":"Failed to create strategy","ai-trading-assistant.messages.updateSuccess":"Strategy updated successfully","ai-trading-assistant.messages.updateFailed":"Failed to update strategy","ai-trading-assistant.messages.deleteSuccess":"Strategy deleted successfully","ai-trading-assistant.messages.deleteFailed":"Failed to delete strategy","ai-trading-assistant.messages.startSuccess":"Strategy started successfully","ai-trading-assistant.messages.startFailed":"Failed to start strategy","ai-trading-assistant.messages.stopSuccess":"Strategy stopped successfully","ai-trading-assistant.messages.stopFailed":"Failed to stop strategy","ai-trading-assistant.messages.loadFailed":"Failed to load strategy list","ai-trading-assistant.messages.loadDecisionsFailed":"Failed to load AI decision records","ai-trading-assistant.messages.deleteConfirm":"Are you sure you want to delete this strategy? This action cannot be undone.","ai-trading-assistant.placeholders.inputStrategyName":"Please enter strategy name","ai-trading-assistant.placeholders.selectModelId":"Please select AI model","ai-trading-assistant.placeholders.selectDecideInterval":"Please select decision interval","ai-trading-assistant.placeholders.startTime":"Start Time","ai-trading-assistant.placeholders.endTime":"End Time","ai-trading-assistant.placeholders.inputApiKey":"Please enter API Key","ai-trading-assistant.placeholders.selectExchange":"Please select an exchange","ai-trading-assistant.placeholders.inputSecretKey":"Please enter Secret Key","ai-trading-assistant.placeholders.inputPassphrase":"Please enter Passphrase","ai-trading-assistant.placeholders.selectSymbol":"Please select trading pair, e.g.: BTC/USDT","ai-trading-assistant.placeholders.selectTimeframe":"Please select timeframe","ai-trading-assistant.placeholders.inputCustomPrompt":"Please enter custom prompt (optional)","ai-trading-assistant.validation.strategyNameRequired":"Please enter strategy name","ai-trading-assistant.validation.modelIdRequired":"Please select AI model","ai-trading-assistant.validation.runPeriodRequired":"Please select run period","ai-trading-assistant.validation.apiKeyRequired":"Please enter API Key","ai-trading-assistant.validation.exchangeRequired":"Please select an exchange","ai-trading-assistant.validation.secretKeyRequired":"Please enter Secret Key","ai-trading-assistant.validation.symbolRequired":"Please select trading pair","ai-trading-assistant.validation.initialCapitalRequired":"Please enter initial capital","ai-trading-assistant.table.time":"Time","ai-trading-assistant.table.type":"Type","ai-trading-assistant.table.price":"Price","ai-trading-assistant.table.amount":"Amount","ai-trading-assistant.table.value":"Value","ai-trading-assistant.table.symbol":"Trading Pair","ai-trading-assistant.table.side":"Side","ai-trading-assistant.table.size":"Position Size","ai-trading-assistant.table.entryPrice":"Entry Price","ai-trading-assistant.table.currentPrice":"Current Price","ai-trading-assistant.table.unrealizedPnl":"Unrealized P&L","ai-trading-assistant.table.profit":"Profit","ai-trading-assistant.table.openLong":"Open Long","ai-trading-assistant.table.closeLong":"Close Long","ai-trading-assistant.table.openShort":"Open Short","ai-trading-assistant.table.closeShort":"Close Short","ai-trading-assistant.table.addLong":"Add Long","ai-trading-assistant.table.addShort":"Add Short","ai-trading-assistant.table.closeShortProfit":"Close Short (TP)","ai-trading-assistant.table.closeShortStop":"Close Short (SL)","ai-trading-assistant.table.closeLongProfit":"Close Long (TP)","ai-trading-assistant.table.closeLongStop":"Close Long (SL)","ai-trading-assistant.table.buy":"Buy","ai-trading-assistant.table.sell":"Sell","ai-trading-assistant.table.long":"Long","ai-trading-assistant.table.short":"Short","ai-trading-assistant.table.hold":"Hold","ai-trading-assistant.table.reasoning":"Analysis Reasoning","ai-trading-assistant.table.decisions":"Decisions","ai-trading-assistant.table.riskAssessment":"Risk","ai-trading-assistant.table.confidence":"Confidence","ai-trading-assistant.table.totalRecords":"Total {total} records","ai-trading-assistant.table.noPositions":"No positions","ai-trading-assistant.detail.title":"Strategy Details","ai-trading-assistant.equity.noData":"No equity data","ai-trading-assistant.equity.equity":"Equity","ai-trading-assistant.exchange.testFailed":"Connection test failed","ai-trading-assistant.exchange.connectionSuccess":"Connection successful","ai-trading-assistant.exchange.connectionFailed":"Connection failed","ai-trading-assistant.form.advancedSettings":"Advanced Settings","ai-trading-assistant.form.orderMode":"Order Mode","ai-trading-assistant.form.orderModeMaker":"Maker (Limit)","ai-trading-assistant.form.orderModeTaker":"Taker (Market)","ai-trading-assistant.form.orderModeHint":"Maker mode uses limit orders with lower fees; Taker mode executes immediately with higher fees","ai-trading-assistant.form.makerWaitSec":"Maker Wait Time (seconds)","ai-trading-assistant.form.makerWaitSecHint":"Time to wait for order fill before canceling and retrying","ai-trading-assistant.form.makerRetries":"Maker Retries","ai-trading-assistant.form.makerRetriesHint":"Maximum number of retries when maker order is not filled","ai-trading-assistant.form.fallbackToMarket":"Fallback to Market on failure","ai-trading-assistant.form.fallbackToMarketHint":"If limit order (open/close) is not filled, downgrade to market order to ensure execution","ai-trading-assistant.form.marginMode":"Margin Mode","ai-trading-assistant.form.marginModeCross":"Cross Margin","ai-trading-assistant.form.marginModeIsolated":"Isolated Margin","ai-analysis.title":"Quantum Trading Engine","ai-analysis.system.online":"ONLINE","ai-analysis.system.agents":"AGENTS","ai-analysis.system.active":"ACTIVE","ai-analysis.system.stage":"STAGE","ai-analysis.panel.roster":"AGENTS ROSTER","ai-analysis.panel.thinking":"Thinking...","ai-analysis.panel.done":"Done","ai-analysis.panel.standby":"Standby","ai-analysis.input.title":"QUANTUM TRADING ENGINE","ai-analysis.input.placeholder":"SELECT TARGET ASSET (e.g. BTC/USDT)","ai-analysis.input.watchlist":"Watchlist","ai-analysis.input.start":"START ANALYSIS","ai-analysis.input.recent":"RECENT MISSIONS:","ai-analysis.vis.stage":"STAGE","ai-analysis.vis.processing":"PROCESSING","ai-analysis.result.complete":"ANALYSIS COMPLETE","ai-analysis.result.signal":"FINAL SIGNAL","ai-analysis.result.confidence":"CONFIDENCE:","ai-analysis.result.new":"NEW ANALYSIS","ai-analysis.result.full":"VIEW FULL DOSSIER","ai-analysis.logs.title":"SYSTEM LOGS","ai-analysis.modal.title":"CLASSIFIED REPORT","ai-analysis.modal.fundamental":"FUNDAMENTAL ANALYSIS","ai-analysis.modal.technical":"TECHNICAL ANALYSIS","ai-analysis.modal.sentiment":"SENTIMENT ANALYSIS","ai-analysis.modal.risk":"RISK ASSESSMENT","ai-analysis.stage.idle":"IDLE","ai-analysis.stage.1":"PHASE 1: MULTI-DIMENSIONAL ANALYSIS","ai-analysis.stage.2":"PHASE 2: BULL/BEAR DEBATE","ai-analysis.stage.3":"PHASE 3: STRATEGIC PLANNING","ai-analysis.stage.4":"PHASE 4: RISK COMMITTEE REVIEW","ai-analysis.stage.complete":"COMPLETE","ai-analysis.agent.investment_director":"Investment Director","ai-analysis.agent.role.investment_director":"Comprehensive Analysis & Final Conclusion","ai-analysis.agent.market":"Market Analyst","ai-analysis.agent.role.market":"Technical & Market Data","ai-analysis.agent.fundamental":"Fundamental Analyst","ai-analysis.agent.role.fundamental":"Financials & Valuation","ai-analysis.agent.technical":"Technical Analyst","ai-analysis.agent.role.technical":"Technical Indicators & Charts","ai-analysis.agent.news":"News Analyst","ai-analysis.agent.role.news":"Global News Filter","ai-analysis.agent.sentiment":"Sentiment Analyst","ai-analysis.agent.role.sentiment":"Social & Emotional","ai-analysis.agent.risk":"Risk Analyst","ai-analysis.agent.role.risk":"Basic Risk Check","ai-analysis.agent.bull":"Bull Researcher","ai-analysis.agent.role.bull":"Growth Catalyst Hunter","ai-analysis.agent.bear":"Bear Researcher","ai-analysis.agent.role.bear":"Risk & Flaw Hunter","ai-analysis.agent.manager":"Research Manager","ai-analysis.agent.role.manager":"Debate Moderator","ai-analysis.agent.trader":"Trader Agent","ai-analysis.agent.role.trader":"Execution Strategist","ai-analysis.agent.risky":"Risky Analyst","ai-analysis.agent.role.risky":"Aggressive Strategy","ai-analysis.agent.neutral":"Neutral Analyst","ai-analysis.agent.role.neutral":"Balanced Strategy","ai-analysis.agent.safe":"Safe Analyst","ai-analysis.agent.role.safe":"Conservative Strategy","ai-analysis.agent.cro":"Risk Manager (CRO)","ai-analysis.agent.role.cro":"Final Decision Authority","ai-analysis.script.market":"Fetching OHLCV data from major exchanges...","ai-analysis.script.fundamental":"Retrieving quarterly financial reports...","ai-analysis.script.technical":"Analyzing technical indicators and chart patterns...","ai-analysis.script.news":"Scanning global financial news feeds...","ai-analysis.script.sentiment":"Analyzing social media trends...","ai-analysis.script.risk":"Calculating historical volatility...","invite.inviteLink":"Invite Link","invite.copy":"Copy Link","invite.copySuccess":"Copied successfully!","invite.copyFailed":"Copy failed, please copy manually","invite.noInviteLink":"Invite link not generated","invite.totalInvites":"Total Invites","invite.totalReward":"Total Reward","invite.rules":"Invite Rules","invite.rule1":"You will receive a reward for each friend you successfully invite to register","invite.rule2":"When your invited friend completes their first transaction, you will receive an additional reward","invite.rule3":"Invite rewards will be directly credited to your account","invite.inviteList":"Invite List","invite.tasks":"Task Center","invite.inviteeName":"Invitee","invite.inviteTime":"Invite Time","invite.status":"Status","invite.reward":"Reward","invite.active":"Active","invite.inactive":"Inactive","invite.completed":"Completed","invite.claimed":"Claimed","invite.pending":"Pending","invite.goToTask":"Go to Task","invite.claimReward":"Claim Reward","invite.verify":"Verify","invite.verifySuccess":"Verification successful! Task completed","invite.verifyNotCompleted":"Task not completed yet, please complete the task first","invite.verifyFailed":"Verification failed, please try again later","invite.claimSuccess":"Successfully claimed {reward} QDT!","invite.claimFailed":"Claim failed, please try again later","invite.totalRecords":"Total {total} records","invite.task.twitter.title":"Share Tweet on X (Twitter)","invite.task.twitter.desc":"Share our official tweet to your X (Twitter) account","invite.task.youtube.title":"Follow our YouTube Channel","invite.task.youtube.desc":"Subscribe and follow our official YouTube channel","invite.task.telegram.title":"Join Telegram Group","invite.task.telegram.desc":"Join our official Telegram community group","invite.task.discord.title":"Join Discord Server","invite.task.discord.desc":"Join our Discord community server",message:"-","layouts.usermenu.dialog.title":"Message","layouts.usermenu.dialog.content":"Are you sure you would like to logout?","layouts.userLayout.title":"Clarity from Uncertainty","signal-robot.title":"Signal Robot Console","signal-robot.createBot":"Create New Bot","signal-robot.search.nameOrSymbol":"Name/Symbol","signal-robot.search.placeholder":"Search bot name or symbol","signal-robot.search.status":"Status","signal-robot.search.statusAll":"All","signal-robot.search.statusRunning":"Running","signal-robot.search.statusPaused":"Paused","signal-robot.search.query":"Query","signal-robot.search.reset":"Reset","signal-robot.table.botName":"Bot Name","signal-robot.table.symbolTimeframe":"Symbol/Timeframe","signal-robot.table.triggerStrategy":"Trigger Strategy","signal-robot.table.notificationChannels":"Notification Channels","signal-robot.table.status":"Status","signal-robot.table.action":"Action","signal-robot.table.triggerConditions":"{count} trigger conditions","signal-robot.table.monitoring":"Monitoring","signal-robot.table.paused":"Paused","signal-robot.table.edit":"Edit","signal-robot.table.pause":"Pause","signal-robot.table.start":"Start","signal-robot.table.delete":"Delete","signal-robot.table.deleteConfirm":"Are you sure you want to delete this bot?","signal-robot.table.deleteSuccess":"Deleted successfully","signal-robot.table.startSuccess":"Bot started","signal-robot.table.pauseSuccess":"Bot paused","signal-robot.channel.telegram":"Telegram","signal-robot.channel.discord":"Discord","signal-robot.channel.email":"Email","signal-robot.channel.webhook":"Webhook","signal-robot.channel.browser":"Browser Push","signal-robot.modal.createTitle":"Create New Signal Robot","signal-robot.modal.editTitle":"Edit Signal Robot","signal-robot.modal.step.basic":"Basic Settings","signal-robot.modal.step.entry":"Entry Strategy","signal-robot.modal.step.position":"Position Management","signal-robot.modal.step.risk":"Risk Control","signal-robot.modal.step.notify":"Notification Config","signal-robot.modal.prev":"Previous","signal-robot.modal.next":"Next","signal-robot.modal.preview":"Preview Backtest","signal-robot.modal.complete":"Complete & Run","signal-robot.modal.saveSuccess":"Saved successfully","signal-robot.modal.previewDeveloping":"Preview feature is under development...","signal-robot.modal.basicInfoRequired":"Please complete basic information","signal-robot.basic.alert":"Set basic information for the bot","signal-robot.basic.title":"Basic Information","signal-robot.basic.botName":"Bot Name","signal-robot.basic.botNamePlaceholder":"e.g.: BTC SuperTrend Strategy","signal-robot.basic.symbol":"Trading Pair","signal-robot.basic.symbolPlaceholder":"Select from watchlist","signal-robot.basic.noWatchlist":"No watchlist items, please add in market page first","signal-robot.basic.timeframe":"K-Line Period","signal-robot.basic.timeframe15m":"15 Minutes","signal-robot.basic.timeframe30m":"30 Minutes","signal-robot.basic.timeframe1h":"1 Hour","signal-robot.basic.timeframe4h":"4 Hours","signal-robot.basic.timeframe1d":"1 Day","signal-robot.basic.autoNameSuggestion":"{symbol} Signal Robot","signal-robot.entry.alert":"Trigger entry signal when all conditions below are met","signal-robot.entry.condition":"Condition {index}","signal-robot.entry.indicator":"Indicator","signal-robot.entry.indicatorSupertrend":"SuperTrend","signal-robot.entry.indicatorEma":"EMA (Exponential Moving Average)","signal-robot.entry.indicatorRsi":"RSI (Relative Strength Index)","signal-robot.entry.indicatorMacd":"MACD","signal-robot.entry.indicatorBollinger":"Bollinger Bands","signal-robot.entry.atrPeriod":"ATR Period","signal-robot.entry.multiplier":"Multiplier","signal-robot.entry.triggerSignal":"Trigger Signal","signal-robot.entry.signalTrendBullish":"Trend Bullish","signal-robot.entry.signalTrendBearish":"Trend Bearish","signal-robot.entry.signalIsUptrend":"Is Uptrend","signal-robot.entry.signalIsDowntrend":"Is Downtrend","signal-robot.entry.period":"Period","signal-robot.entry.compareCondition":"Compare Condition","signal-robot.entry.priceAbove":"Price > EMA (Price Above)","signal-robot.entry.priceBelow":"Price < EMA (Price Below)","signal-robot.entry.crossUp":"Price Crosses Above EMA (Golden Cross)","signal-robot.entry.crossDown":"Price Crosses Below EMA (Death Cross)","signal-robot.entry.compare":"Compare","signal-robot.entry.greaterThan":"Greater Than","signal-robot.entry.lessThan":"Less Than","signal-robot.entry.crossUpShort":"Cross Up","signal-robot.entry.crossDownShort":"Cross Down","signal-robot.entry.threshold":"Threshold","signal-robot.entry.selectIndicator":"Please select an indicator to configure parameters","signal-robot.entry.addCondition":"Add Condition","signal-robot.position.alert":"Configure initial position size, leverage and pyramiding rules","signal-robot.position.basicTitle":"Basic Position Management","signal-robot.position.initialSize":"Initial Size (Capital %)","signal-robot.position.initialSizeHint":"Recommended 5% - 20%","signal-robot.position.leverage":"Leverage","signal-robot.position.leverageHint":"Please ensure your exchange account supports this leverage","signal-robot.position.maxPyramiding":"Max Pyramiding Times","signal-robot.position.maxPyramidingHint":"0 means no pyramiding","signal-robot.position.pyramidingTitle":"Pyramiding Rules","signal-robot.position.pyramidingEnabled":"Enabled","signal-robot.position.pyramidingDisabled":"Disabled","signal-robot.position.pyramidingCondition":"Pyramiding Trigger Condition","signal-robot.position.priceRisePct":"Price Rises (Long) / Falls (Short)","signal-robot.position.profitPct":"Profit Reaches","signal-robot.position.triggerThreshold":"Trigger Threshold (%)","signal-robot.position.triggerThresholdHint":"e.g. 3%: add position once every 3% rise","signal-robot.position.addSize":"Single Add Size (Capital %)","signal-robot.position.pyramidingDisabledHint":"Pyramiding disabled, only initial position will be executed","signal-robot.risk.alert":"Configure take profit, stop loss and exit rules","signal-robot.risk.stopLossTitle":"Stop Loss","signal-robot.risk.stopLossEnabled":"Enabled","signal-robot.risk.stopLossDisabled":"Disabled","signal-robot.risk.stopLossType":"Stop Loss Type","signal-robot.risk.stopLossFixedPct":"Fixed Percentage","signal-robot.risk.stopLossAtrMultiplier":"ATR Multiplier","signal-robot.risk.stopLossValue":"Value","signal-robot.risk.stopLossFixedHint":"e.g. 2%: stop loss when loss reaches 2%","signal-robot.risk.stopLossAtrHint":"e.g. 2.0: stop loss when price touches ATR*2.0","signal-robot.risk.stopLossDisabledHint":"Stop loss disabled (high risk)","signal-robot.risk.trailingStopTitle":"Trailing Stop","signal-robot.risk.activationProfit":"Activation Profit (%)","signal-robot.risk.activationProfitHint":"Start trailing when profit reaches this level","signal-robot.risk.callbackPct":"Callback (%)","signal-robot.risk.callbackPctHint":"Trigger take profit when price falls from peak by this percentage","signal-robot.risk.trailingStopDisabledHint":"Trailing stop disabled","signal-robot.risk.otherExitTitle":"Other Exit Rules","signal-robot.risk.signalExit":"Allow Signal Exit","signal-robot.risk.signalExitHint":"Close position immediately when reverse signal appears (e.g. close long when short signal appears)","signal-robot.notify.alert":"Configure notification methods when signal is triggered","signal-robot.notify.channelTitle":"Notification Channels","signal-robot.notify.discordWebhook":"Discord Webhook","signal-robot.notify.genericWebhook":"Generic Webhook","signal-robot.notify.webhookUrl":"Webhook URL","signal-robot.notify.webhookUrlPlaceholder":"https://example.com/webhook","signal-robot.notify.discordUrl":"Discord URL","signal-robot.notify.discordUrlPlaceholder":"https://discord.com/api/webhooks/...","signal-robot.operator.greaterThan":"Greater Than","signal-robot.operator.lessThan":"Less Than","signal-robot.operator.equal":"Equal","signal-robot.operator.goldenCross":"Golden Cross","signal-robot.operator.deathCross":"Death Cross","signal-robot.operator.increaseBy":"Increase By","signal-robot.operator.decreaseBy":"Decrease By","signal-robot.indicator.price":"Price","signal-robot.indicator.rsi":"RSI","signal-robot.indicator.kdjK":"KDJ(K)","signal-robot.indicator.kdjJ":"KDJ(J)","signal-robot.indicator.macd":"MACD","signal-robot.indicator.macdHist":"MACD Histogram","signal-robot.indicator.bollingerUp":"Bollinger Upper","signal-robot.indicator.bollingerLow":"Bollinger Lower","signal-robot.indicator.volume":"Volume","signal-robot.indicator.changePct1h":"1H Change %","signal-robot.indicator.changePct24h":"24H Change %","signal-robot.indicator.signalLine":"Signal Line","settings.title":"System Settings","settings.description":"Configure application settings, API keys, and system preferences","settings.save":"Save Settings","settings.reset":"Reset","settings.saveSuccess":"Settings saved successfully","settings.saveFailed":"Failed to save settings","settings.loadFailed":"Failed to load settings","settings.openrouterBalance":"OpenRouter Account Balance","settings.queryBalance":"Query Balance","settings.balanceUsage":"Used","settings.balanceRemaining":"Remaining","settings.balanceLimit":"Total Limit","settings.balanceQuerySuccess":"Balance query successful","settings.balanceQueryFailed":"Failed to query balance","settings.balanceNotQueried":'Click "Query Balance" to get account info',"settings.default":"Default","settings.pleaseSelect":"Please select","settings.inputApiKey":"Enter key","settings.getApi":"Get API","settings.link.getApi":"Get API","settings.link.getApiKey":"Get API Key","settings.link.getToken":"Get Token","settings.link.createBot":"Create Bot","settings.link.viewModels":"View Models","settings.link.freeRegister":"Free Register","settings.link.supportedExchanges":"Supported Exchanges","settings.link.applyApi":"Apply API","settings.link.createSearchEngine":"Create Search Engine","settings.link.getTurnstileKey":"Get Turnstile Key","settings.link.getGoogleCredentials":"Get Google Credentials","settings.link.getGithubCredentials":"Get GitHub Credentials","settings.restartRequired":"Settings saved","settings.copyRestartCmd":"Copy restart command","settings.copySuccess":"Copied","settings.copyFailed":"Copy failed","settings.option.LLM_PROVIDER.openrouter":"OpenRouter (Multi-model gateway)","settings.option.LLM_PROVIDER.openai":"OpenAI Direct","settings.option.LLM_PROVIDER.google":"Google Gemini","settings.option.LLM_PROVIDER.deepseek":"DeepSeek","settings.option.LLM_PROVIDER.grok":"xAI Grok","settings.option.SEARCH_PROVIDER.tavily":"Tavily","settings.option.SEARCH_PROVIDER.google":"Google","settings.option.SEARCH_PROVIDER.bing":"Bing","settings.option.SEARCH_PROVIDER.none":"None","settings.option.ORDER_MODE.maker":"Maker (limit-first)","settings.option.ORDER_MODE.market":"Market (immediate fill)","settings.group.server":"Server Configuration","settings.group.auth":"Security & Authentication","settings.group.ai":"AI / LLM Configuration","settings.group.trading":"Live Trading","settings.group.strategy":"Strategy Execution","settings.group.data_source":"Data Sources","settings.group.notification":"Notifications","settings.group.email":"Email (SMTP)","settings.group.sms":"SMS (Twilio)","settings.group.agent":"AI Agent","settings.group.network":"Network & Proxy","settings.group.search":"Web Search","settings.group.security":"Registration & Security","settings.group.app":"Application","settings.field.SECRET_KEY":"Secret Key","settings.field.ADMIN_USER":"Admin Username","settings.field.ADMIN_PASSWORD":"Admin Password","settings.field.ADMIN_EMAIL":"Admin Email","settings.field.ENABLE_REGISTRATION":"Enable Registration","settings.field.TURNSTILE_SITE_KEY":"Turnstile Site Key","settings.field.TURNSTILE_SECRET_KEY":"Turnstile Secret Key","settings.field.FRONTEND_URL":"Frontend URL","settings.field.GOOGLE_CLIENT_ID":"Google Client ID","settings.field.GOOGLE_CLIENT_SECRET":"Google Client Secret","settings.field.GOOGLE_REDIRECT_URI":"Google Redirect URI","settings.field.GITHUB_CLIENT_ID":"GitHub Client ID","settings.field.GITHUB_CLIENT_SECRET":"GitHub Client Secret","settings.field.GITHUB_REDIRECT_URI":"GitHub Redirect URI","settings.field.SECURITY_IP_MAX_ATTEMPTS":"IP Max Failed Attempts","settings.field.SECURITY_IP_WINDOW_MINUTES":"IP Window (minutes)","settings.field.SECURITY_IP_BLOCK_MINUTES":"IP Block Duration (minutes)","settings.field.SECURITY_ACCOUNT_MAX_ATTEMPTS":"Account Max Failed Attempts","settings.field.SECURITY_ACCOUNT_WINDOW_MINUTES":"Account Window (minutes)","settings.field.SECURITY_ACCOUNT_BLOCK_MINUTES":"Account Block Duration (minutes)","settings.field.VERIFICATION_CODE_EXPIRE_MINUTES":"Verification Code Expiry (minutes)","settings.field.VERIFICATION_CODE_RATE_LIMIT":"Code Rate Limit (seconds)","settings.field.VERIFICATION_CODE_IP_HOURLY_LIMIT":"Code Hourly Limit per IP","settings.field.VERIFICATION_CODE_MAX_ATTEMPTS":"Code Max Attempts","settings.field.VERIFICATION_CODE_LOCK_MINUTES":"Code Lock Minutes","settings.field.PYTHON_API_HOST":"Listen Address","settings.field.PYTHON_API_PORT":"Port","settings.field.PYTHON_API_DEBUG":"Debug Mode","settings.field.ENABLE_PENDING_ORDER_WORKER":"Enable Order Worker","settings.field.PENDING_ORDER_STALE_SEC":"Order Stale Timeout (sec)","settings.field.ORDER_MODE":"Order Mode","settings.field.MAKER_WAIT_SEC":"Limit Order Wait Time (sec)","settings.field.MAKER_OFFSET_BPS":"Limit Order Price Offset (bps)","settings.field.SIGNAL_WEBHOOK_URL":"Webhook URL","settings.field.SIGNAL_WEBHOOK_TOKEN":"Webhook Token","settings.field.SIGNAL_NOTIFY_TIMEOUT_SEC":"Notify Timeout (sec)","settings.field.TELEGRAM_BOT_TOKEN":"Telegram Bot Token","settings.field.SMTP_HOST":"SMTP Host","settings.field.SMTP_PORT":"SMTP Port","settings.field.SMTP_USER":"SMTP Username","settings.field.SMTP_PASSWORD":"SMTP Password","settings.field.SMTP_FROM":"From Address","settings.field.SMTP_USE_TLS":"Use TLS","settings.field.SMTP_USE_SSL":"Use SSL","settings.field.TWILIO_ACCOUNT_SID":"Account SID","settings.field.TWILIO_AUTH_TOKEN":"Auth Token","settings.field.TWILIO_FROM_NUMBER":"From Number","settings.field.DISABLE_RESTORE_RUNNING_STRATEGIES":"Disable Auto Restore","settings.field.STRATEGY_TICK_INTERVAL_SEC":"Tick Interval (sec)","settings.field.PRICE_CACHE_TTL_SEC":"Price Cache TTL (sec)","settings.field.PROXY_URL":"Full Proxy URL","settings.field.RATE_LIMIT":"Rate Limit (per min)","settings.field.ENABLE_CACHE":"Enable Cache","settings.field.ENABLE_REQUEST_LOG":"Enable Request Log","settings.field.ENABLE_AGENT_MEMORY":"Enable Agent Memory","settings.field.AGENT_MEMORY_ENABLE_VECTOR":"Enable Vector Retrieval (Local)","settings.field.AGENT_MEMORY_EMBEDDING_DIM":"Embedding Dimension","settings.field.AGENT_MEMORY_TOP_K":"Top-K Retrieval Count","settings.field.AGENT_MEMORY_CANDIDATE_LIMIT":"Candidate Window Size","settings.field.AGENT_MEMORY_HALF_LIFE_DAYS":"Time Decay Half-life (days)","settings.field.AGENT_MEMORY_W_SIM":"Similarity Weight","settings.field.AGENT_MEMORY_W_RECENCY":"Recency Weight","settings.field.AGENT_MEMORY_W_RETURNS":"Returns Weight","settings.field.ENABLE_REFLECTION_WORKER":"Enable Auto Verification","settings.field.REFLECTION_WORKER_INTERVAL_SEC":"Verification Interval (sec)","settings.field.OPENROUTER_API_KEY":"OpenRouter API Key","settings.field.OPENROUTER_API_URL":"OpenRouter API URL","settings.field.OPENROUTER_MODEL":"Default Model","settings.field.OPENROUTER_TEMPERATURE":"Temperature","settings.field.OPENROUTER_MAX_TOKENS":"Max Tokens","settings.field.OPENROUTER_TIMEOUT":"Timeout (sec)","settings.field.OPENROUTER_CONNECT_TIMEOUT":"Connect Timeout (sec)","settings.field.MARKET_TYPES_JSON":"Market Types JSON","settings.field.TRADING_SUPPORTED_SYMBOLS_JSON":"Supported Symbols JSON","settings.field.DATA_SOURCE_TIMEOUT":"Timeout (sec)","settings.field.DATA_SOURCE_RETRY":"Retry Count","settings.field.DATA_SOURCE_RETRY_BACKOFF":"Retry Backoff (sec)","settings.field.FINNHUB_API_KEY":"Finnhub API Key","settings.field.FINNHUB_TIMEOUT":"Finnhub Timeout (sec)","settings.field.FINNHUB_RATE_LIMIT":"Finnhub Rate Limit","settings.field.CCXT_DEFAULT_EXCHANGE":"CCXT Default Exchange","settings.field.CCXT_TIMEOUT":"CCXT Timeout (ms)","settings.field.CCXT_PROXY":"CCXT Proxy","settings.field.YFINANCE_TIMEOUT":"YFinance Timeout (sec)","settings.field.TIINGO_API_KEY":"Tiingo API Key","settings.field.TIINGO_TIMEOUT":"Tiingo Timeout (sec)","settings.field.SEARCH_PROVIDER":"Search Provider","settings.field.SEARCH_MAX_RESULTS":"Max Results","settings.field.TAVILY_API_KEYS":"Tavily API Keys","settings.field.SERPAPI_KEYS":"SerpAPI Keys","settings.field.SEARCH_GOOGLE_API_KEY":"Google API Key","settings.field.SEARCH_GOOGLE_CX":"Google CX","settings.field.SEARCH_BING_API_KEY":"Bing API Key","settings.field.INTERNAL_API_KEY":"Internal API Key","settings.desc.SEARCH_PROVIDER":"Web search provider for AI research","settings.desc.TAVILY_API_KEYS":"Tavily Search API keys, comma-separated for rotation. Free 1000 requests/month","settings.desc.SERPAPI_KEYS":"SerpAPI keys for Google/Bing search, comma-separated for rotation","settings.desc.ORDER_MODE":"maker: Limit order first (lower fees), market: Market order (instant fill)","settings.desc.MAKER_WAIT_SEC":"Wait time for limit order fill before switching to market order","settings.desc.MAKER_OFFSET_BPS":"Price offset in basis points. Buy: price*(1-offset), Sell: price*(1+offset)","settings.desc.TIINGO_API_KEY":"Tiingo API key for Forex/Metals data (free tier does not support 1-minute data)","settings.desc.TIINGO_TIMEOUT":"Tiingo API request timeout","portfolio.summary.totalValue":"Total Value","portfolio.summary.totalCost":"Total Cost","portfolio.summary.totalPnl":"Total P&L","portfolio.summary.positionCount":"Positions","portfolio.summary.profitLossRatio":"Profit/Loss","portfolio.summary.today":"Today","portfolio.summary.todayPnl":"Today P&L","portfolio.summary.bestPerformer":"Best Performer","portfolio.summary.worstPerformer":"Worst Performer","portfolio.summary.priceSync":"Price Sync","portfolio.summary.syncInterval":"Refresh","portfolio.summary.justNow":"Just now","portfolio.summary.ago":" ago","portfolio.positions.title":"My Positions","portfolio.positions.add":"Add Position","portfolio.positions.addFirst":"Add Your First Position","portfolio.positions.empty":"No positions yet","portfolio.positions.deleteConfirm":"Are you sure to delete this position?","portfolio.positions.currentPrice":"Current","portfolio.positions.entryPrice":"Entry","portfolio.positions.quantity":"Quantity","portfolio.positions.side":"Side","portfolio.positions.long":"Long","portfolio.positions.short":"Short","portfolio.positions.marketValue":"Value","portfolio.positions.pnl":"P&L","portfolio.positions.items":"positions","portfolio.monitors.title":"AI Monitors","portfolio.monitors.add":"Add Monitor","portfolio.monitors.addFirst":"Add AI Monitor","portfolio.monitors.empty":"No monitors yet","portfolio.monitors.deleteConfirm":"Are you sure to delete this monitor?","portfolio.monitors.interval":"Interval","portfolio.monitors.lastRun":"Last Run","portfolio.monitors.nextRun":"Next Run","portfolio.monitors.channels":"Channels","portfolio.monitors.runNow":"Run Now","portfolio.monitors.analysisResult":"AI Analysis Result","portfolio.monitors.runningTitle":"AI Analysis Started","portfolio.monitors.runningDesc":"Analysis is running in background. Results will be pushed via notification. Analyzing multiple positions may take a few minutes.","portfolio.monitors.timeoutTitle":"Request Timeout","portfolio.monitors.timeoutDesc":"Analysis may still be running in background. Please check notifications for results later. If no notification is received, please try again.","portfolio.modal.addPosition":"Add Position","portfolio.modal.editPosition":"Edit Position","portfolio.modal.addMonitor":"Add Monitor","portfolio.modal.editMonitor":"Edit Monitor","portfolio.form.market":"Market","portfolio.form.marketRequired":"Please select a market","portfolio.form.selectMarket":"Select Market","portfolio.form.symbol":"Symbol","portfolio.form.symbolRequired":"Please enter symbol","portfolio.form.searchSymbol":"Search or enter symbol","portfolio.form.useAsSymbol":"Use","portfolio.form.asSymbolCode":"as symbol code","portfolio.form.symbolHint":"Search symbols or enter any code directly","portfolio.form.side":"Side","portfolio.form.quantity":"Quantity","portfolio.form.quantityRequired":"Please enter quantity","portfolio.form.enterQuantity":"Enter quantity","portfolio.form.entryPrice":"Entry Price","portfolio.form.entryPriceRequired":"Please enter entry price","portfolio.form.enterEntryPrice":"Enter entry price","portfolio.form.notes":"Notes","portfolio.form.enterNotes":"Optional: Add notes","portfolio.form.monitorName":"Monitor Name","portfolio.form.monitorNameRequired":"Please enter monitor name","portfolio.form.enterMonitorName":"e.g. Daily Portfolio Analysis","portfolio.form.interval":"Interval","portfolio.form.minutes":"minutes","portfolio.form.hour":"hour","portfolio.form.hours":"hours","portfolio.form.notifyChannels":"Notify Channels","portfolio.form.browser":"Browser","portfolio.form.email":"Email","portfolio.form.telegramChatId":"Telegram Chat ID","portfolio.form.enterTelegramChatId":"Enter Telegram Chat ID","portfolio.form.telegramRequired":"Please enter Telegram Chat ID","portfolio.form.emailAddress":"Email Address","portfolio.form.enterEmail":"Enter email address","portfolio.form.emailRequired":"Please enter email address","portfolio.form.emailInvalid":"Please enter a valid email address","portfolio.form.customPrompt":"Custom Prompt","portfolio.form.customPromptPlaceholder":'Optional: Add focus areas, e.g. "Focus on tech stock risks"',"portfolio.form.monitorScope":"Monitor Scope","portfolio.form.allPositions":"All Positions","portfolio.form.selectedPositions":"Selected Positions","portfolio.form.selectPositions":"Select Positions","portfolio.form.selectAll":"Select All","portfolio.form.deselectAll":"Deselect All","portfolio.form.selectedCount":"{count} of {total} selected","portfolio.form.pleaseSelectPositions":"Please select at least one position to monitor","portfolio.form.notificationFromProfile":"Notifications will be sent to addresses configured in your profile","portfolio.form.goToProfile":"Go to settings","portfolio.message.loadFailed":"Failed to load data","portfolio.message.saveSuccess":"Saved successfully","portfolio.message.saveFailed":"Failed to save","portfolio.message.deleteSuccess":"Deleted successfully","portfolio.message.deleteFailed":"Failed to delete","portfolio.message.updateFailed":"Failed to update","portfolio.message.monitorEnabled":"Monitor enabled","portfolio.message.monitorDisabled":"Monitor paused","portfolio.message.monitorRunSuccess":"Analysis completed","portfolio.message.monitorRunFailed":"Analysis failed","portfolio.message.monitorRunning":"AI analysis started, please wait for notification","portfolio.groups.all":"All Positions","portfolio.groups.ungrouped":"Ungrouped","portfolio.form.group":"Group","portfolio.form.enterGroup":"Enter or select group","portfolio.alerts.title":"Price/PnL Alerts","portfolio.alerts.addAlert":"Add Alert","portfolio.alerts.editAlert":"Edit Alert","portfolio.alerts.alertType":"Alert Type","portfolio.alerts.priceAbove":"Price Above","portfolio.alerts.priceBelow":"Price Below","portfolio.alerts.pnlAbove":"Profit Above (%)","portfolio.alerts.pnlBelow":"Loss Below (%)","portfolio.alerts.threshold":"Threshold","portfolio.alerts.thresholdRequired":"Please enter threshold","portfolio.alerts.enterPrice":"Enter price","portfolio.alerts.enterPercent":"Enter percentage","portfolio.alerts.currentPrice":"Current Price","portfolio.alerts.currentPriceHint":"Current price","portfolio.alerts.repeatInterval":"Repeat Alert","portfolio.alerts.noRepeat":"No repeat (trigger once)","portfolio.alerts.every5min":"Every 5 minutes","portfolio.alerts.every15min":"Every 15 minutes","portfolio.alerts.every30min":"Every 30 minutes","portfolio.alerts.every1hour":"Every 1 hour","portfolio.alerts.every4hours":"Every 4 hours","portfolio.alerts.onceDaily":"Once daily","portfolio.alerts.enabled":"Enable Alert","portfolio.alerts.enabledDesc":"Auto-monitor and trigger notifications","portfolio.alerts.delete":"Delete","portfolio.alerts.deleteConfirm":"Are you sure you want to delete this alert?","portfolio.modal.addAlert":"Add Alert","portfolio.modal.editAlert":"Edit Alert","menu.userManage":"User Management","menu.myProfile":"My Profile","common.actions":"Actions","common.refresh":"Refresh","userManage.title":"User Management","userManage.searchPlaceholder":"Search by username/email/nickname","userManage.description":"Manage system users, roles and permissions","userManage.createUser":"Create User","userManage.editUser":"Edit User","userManage.username":"Username","userManage.password":"Password","userManage.nickname":"Nickname","userManage.email":"Email","userManage.role":"Role","userManage.status":"Status","userManage.lastLogin":"Last Login","userManage.active":"Active","userManage.disabled":"Disabled","userManage.neverLogin":"Never","userManage.usernameRequired":"Please enter username","userManage.usernamePlaceholder":"Enter username","userManage.passwordRequired":"Please enter password","userManage.passwordPlaceholder":"Enter password (min 6 chars)","userManage.passwordMin":"Password must be at least 6 characters","userManage.nicknamePlaceholder":"Enter nickname","userManage.emailPlaceholder":"Enter email","userManage.emailInvalid":"Invalid email format","userManage.rolePlaceholder":"Select role","userManage.statusPlaceholder":"Select status","userManage.resetPassword":"Reset Password","userManage.resetPasswordWarning":"This will reset the user's password","userManage.newPassword":"New Password","userManage.newPasswordPlaceholder":"Enter new password","userManage.confirmDelete":"Are you sure to delete this user?","userManage.roleAdmin":"Admin","userManage.roleManager":"Manager","userManage.roleUser":"User","userManage.roleViewer":"Viewer","profile.title":"My Profile","profile.description":"Manage your account settings and preferences","profile.basicInfo":"Basic Info","profile.changePassword":"Change Password","profile.username":"Username","profile.nickname":"Nickname","profile.email":"Email","profile.lastLogin":"Last Login","profile.nicknamePlaceholder":"Enter your nickname","profile.emailPlaceholder":"Enter your email","profile.emailInvalid":"Invalid email format","profile.emailCannotChange":"Email cannot be changed after registration","profile.passwordHint":"Password must be at least 6 characters","profile.oldPassword":"Current Password","profile.newPassword":"New Password","profile.confirmPassword":"Confirm Password","profile.oldPasswordRequired":"Please enter current password","profile.oldPasswordPlaceholder":"Enter current password","profile.newPasswordRequired":"Please enter new password","profile.newPasswordPlaceholder":"Enter new password","profile.confirmPasswordRequired":"Please confirm password","profile.confirmPasswordPlaceholder":"Confirm new password","profile.passwordMin":"Password must be at least 6 characters","profile.passwordMismatch":"Passwords do not match","profile.credits.title":"My Credits","profile.credits.unit":"Credits","profile.credits.recharge":"Top Up","profile.credits.vipExpires":"VIP expires on","profile.credits.vipExpired":"VIP expired","profile.credits.noVip":"Not a VIP","profile.credits.hint":"AI analysis/backtest/monitoring will consume credits; VIP only makes VIP-free indicators free to use.","profile.creditsLog":"Credits History","profile.creditsLog.time":"Time","profile.creditsLog.action":"Type","profile.creditsLog.amount":"Change","profile.creditsLog.balance":"Balance","profile.creditsLog.remark":"Remark","profile.creditsLog.actionConsume":"Consume","profile.creditsLog.actionRecharge":"Recharge","profile.creditsLog.actionAdjust":"Adjust","profile.creditsLog.actionRefund":"Refund","profile.creditsLog.actionVipGrant":"VIP Grant","profile.creditsLog.actionVipRevoke":"VIP Revoke","profile.creditsLog.actionRegisterBonus":"Register Bonus","profile.creditsLog.actionReferralBonus":"Referral Bonus","profile.creditsLog.actionIndicatorPurchase":"Indicator Purchase","profile.creditsLog.actionIndicatorSale":"Indicator Sale","profile.referral.title":"Invite Friends","profile.referral.listTab":"Referrals","profile.referral.totalInvited":"Invited","profile.referral.bonusPerInvite":"Per Invite","profile.referral.yourLink":"Your Referral Link","profile.referral.copyLink":"Copy Link","profile.referral.linkCopied":"Referral link copied","profile.referral.newUserBonus":"New users get","profile.referral.user":"User","profile.referral.registerTime":"Registered","profile.referral.noReferrals":"No referrals yet","profile.referral.shareNow":"Share Now","profile.notifications.title":"Notification Settings","profile.notifications.hint":"Configure your default notification methods, which will be used automatically when creating asset monitors and alerts","profile.notifications.defaultChannels":"Default Notification Channels","profile.notifications.browser":"In-App Notification","profile.notifications.email":"Email","profile.notifications.phone":"SMS","profile.notifications.telegramBotToken":"Telegram Bot Token","profile.notifications.telegramBotTokenPlaceholder":"Enter your Telegram Bot Token","profile.notifications.telegramBotTokenHint":"Get Token by creating a bot via @BotFather","profile.notifications.telegramChatId":"Telegram Chat ID","profile.notifications.telegramPlaceholder":"Enter your Telegram Chat ID (e.g. 123456789)","profile.notifications.telegramHint":"Send /start to @userinfobot to get your Chat ID","profile.notifications.notifyEmail":"Notification Email","profile.notifications.emailPlaceholder":"Email address to receive notifications","profile.notifications.emailHint":"Uses your account email by default, or set a different one","profile.notifications.phonePlaceholder":"Enter phone number (e.g. +1234567890)","profile.notifications.phoneHint":"Requires admin to configure Twilio service","profile.notifications.discordWebhook":"Discord Webhook","profile.notifications.discordPlaceholder":"https://discord.com/api/webhooks/...","profile.notifications.discordHint":"Create Webhook in Discord server settings","profile.notifications.webhookUrl":"Webhook URL","profile.notifications.webhookPlaceholder":"https://your-server.com/webhook","profile.notifications.webhookHint":"Custom Webhook URL, notifications sent via POST JSON","profile.notifications.webhookToken":"Webhook Token (Optional)","profile.notifications.webhookTokenPlaceholder":"Bearer Token for request authentication","profile.notifications.webhookTokenHint":"Sent as Authorization: Bearer Token to Webhook","profile.notifications.testBtn":"Send Test Notification","profile.notifications.saveSuccess":"Notification settings saved successfully","profile.notifications.selectChannel":"Please select at least one notification channel","profile.notifications.fillTelegramToken":"Please fill in Telegram Bot Token","profile.notifications.fillTelegram":"Please fill in Telegram Chat ID","profile.notifications.fillEmail":"Please fill in notification email","profile.notifications.testSent":"Test notification sent, please check your notification channels","userManage.credits":"Credits","userManage.adjustCredits":"Adjust Credits","userManage.setVip":"Set VIP","userManage.currentCredits":"Current Credits","userManage.newCredits":"New Credits","userManage.enterCredits":"Enter new credits amount","userManage.creditsNonNegative":"Credits cannot be negative","userManage.currentVip":"Current VIP Status","userManage.vipActive":"Active","userManage.vipExpired":"Expired","userManage.vipDays":"VIP Days","userManage.vipExpiresAt":"VIP Expires At","userManage.cancelVip":"Cancel VIP","userManage.days":"days","userManage.customDate":"Custom Date","userManage.selectDate":"Please select a date","userManage.remark":"Remark","userManage.remarkPlaceholder":"Optional remark","userManage.tabUsers":"User Management","systemOverview.tabTitle":"System Overview","systemOverview.totalStrategies":"Total Strategies","systemOverview.runningStrategies":"Running","systemOverview.totalCapital":"Total Capital","systemOverview.totalPnl":"Total PnL","systemOverview.filterAll":"All Status","systemOverview.filterRunning":"Running","systemOverview.filterStopped":"Stopped","systemOverview.searchPlaceholder":"Search strategy/symbol/user","systemOverview.running":"Running","systemOverview.stopped":"Stopped","systemOverview.colUser":"User","systemOverview.colStrategy":"Strategy","systemOverview.colStatus":"Status","systemOverview.colSymbol":"Symbol","systemOverview.colCapital":"Capital","systemOverview.colPnl":"PnL / ROI","systemOverview.colPositions":"Pos","systemOverview.colTrades":"Trades","systemOverview.colIndicator":"Indicator","systemOverview.colExchange":"Exchange","systemOverview.colTimeframe":"TF","systemOverview.colLeverage":"Lev","systemOverview.colCreatedAt":"Created","systemOverview.realized":"Real","systemOverview.unrealized":"Unreal","systemOverview.symbols":"symbols","systemOverview.live":"Live","systemOverview.signal":"Signal Only","settings.group.billing":"Billing & Credits","settings.field.BILLING_ENABLED":"Enable Billing","settings.field.BILLING_COST_AI_ANALYSIS":"AI Analysis Cost","settings.field.BILLING_COST_STRATEGY_RUN":"Strategy Run Cost","settings.field.BILLING_COST_BACKTEST":"Backtest Cost","settings.field.BILLING_COST_PORTFOLIO_MONITOR":"Portfolio Monitor Cost","settings.field.CREDITS_REGISTER_BONUS":"Register Bonus","settings.field.CREDITS_REFERRAL_BONUS":"Referral Bonus","settings.field.RECHARGE_TELEGRAM_URL":"Recharge Telegram URL","settings.field.MEMBERSHIP_MONTHLY_PRICE_USD":"Monthly Membership Price (USD)","settings.field.MEMBERSHIP_MONTHLY_CREDITS":"Monthly Membership Bonus Credits","settings.field.MEMBERSHIP_YEARLY_PRICE_USD":"Yearly Membership Price (USD)","settings.field.MEMBERSHIP_YEARLY_CREDITS":"Yearly Membership Bonus Credits","settings.field.MEMBERSHIP_LIFETIME_PRICE_USD":"Lifetime Membership Price (USD)","settings.field.MEMBERSHIP_LIFETIME_MONTHLY_CREDITS":"Lifetime Monthly Credits","settings.field.USDT_PAY_ENABLED":"Enable USDT Pay","settings.field.USDT_PAY_CHAIN":"USDT Chain","settings.field.USDT_TRC20_XPUB":"TRC20 XPUB (Watch-only)","settings.field.USDT_TRC20_CONTRACT":"USDT TRC20 Contract","settings.field.TRONGRID_BASE_URL":"TronGrid Base URL","settings.field.TRONGRID_API_KEY":"TronGrid API Key","settings.field.USDT_PAY_CONFIRM_SECONDS":"Confirm Delay (sec)","settings.field.USDT_PAY_EXPIRE_MINUTES":"Order Expire (min)","settings.desc.BILLING_ENABLED":"Enable billing system. Users need credits to use certain features when enabled","settings.desc.BILLING_COST_AI_ANALYSIS":"Credits consumed per AI analysis request","settings.desc.BILLING_COST_STRATEGY_RUN":"Credits consumed when starting a strategy","settings.desc.BILLING_COST_BACKTEST":"Credits consumed per backtest run","settings.desc.BILLING_COST_PORTFOLIO_MONITOR":"Credits consumed per portfolio AI monitoring run","settings.desc.CREDITS_REGISTER_BONUS":"Credits awarded to new users on registration","settings.desc.CREDITS_REFERRAL_BONUS":"Credits awarded to referrer when someone signs up with their referral code","settings.desc.VERIFICATION_CODE_MAX_ATTEMPTS":"Maximum attempts to verify a code before lockout","settings.desc.VERIFICATION_CODE_LOCK_MINUTES":"Lockout duration after exceeding max attempts","settings.desc.RECHARGE_TELEGRAM_URL":"Telegram customer service URL for recharge inquiries","settings.desc.MEMBERSHIP_MONTHLY_PRICE_USD":"Monthly membership price in USD (mock payment in current version).","settings.desc.MEMBERSHIP_MONTHLY_CREDITS":"Credits granted immediately after purchasing monthly membership.","settings.desc.MEMBERSHIP_YEARLY_PRICE_USD":"Yearly membership price in USD (mock payment in current version).","settings.desc.MEMBERSHIP_YEARLY_CREDITS":"Credits granted immediately after purchasing yearly membership.","settings.desc.MEMBERSHIP_LIFETIME_PRICE_USD":"Lifetime membership price in USD (mock payment in current version).","settings.desc.MEMBERSHIP_LIFETIME_MONTHLY_CREDITS":"Credits granted every 30 days for lifetime members (first grant happens immediately on purchase).","settings.desc.USDT_PAY_ENABLED":"Enable USDT scan-to-pay flow (per-order unique address + auto reconciliation).","settings.desc.USDT_PAY_CHAIN":"Currently only TRC20 is supported.","settings.desc.USDT_TRC20_XPUB":"Watch-only xpub used to derive per-order deposit addresses. Do NOT paste private key/seed.","settings.desc.USDT_TRC20_CONTRACT":"USDT contract address on TRON (default prefilled).","settings.desc.TRONGRID_BASE_URL":"TronGrid API base URL (default is fine).","settings.desc.TRONGRID_API_KEY":"Optional. For higher TronGrid rate limits and stability.","settings.desc.USDT_PAY_CONFIRM_SECONDS":"After a payment is detected, wait N seconds before marking it confirmed.","settings.desc.USDT_PAY_EXPIRE_MINUTES":"Order expiration time; users need to regenerate an order after it expires.","globalMarket.title":"Global Market Dashboard","globalMarket.fearGreedShort":"F&G","globalMarket.calendar":"Calendar","globalMarket.lastUpdate":"Last Update","globalMarket.refresh":"Refresh","globalMarket.name":"Name","globalMarket.price":"Price","globalMarket.change":"Change","globalMarket.trend":"Trend","globalMarket.pair":"Pair","globalMarket.unit":"Unit","globalMarket.refreshSuccess":"Data refreshed successfully","globalMarket.refreshError":"Failed to refresh data","globalMarket.fetchError":"Failed to fetch data","globalMarket.loading":"Loading...","globalMarket.fearGreedIndex":"Fear & Greed Index","globalMarket.fearGreedTip":"Fear & Greed Index measures market sentiment, 0 = Extreme Fear, 100 = Extreme Greed","globalMarket.volatilityIndex":"Volatility Index","globalMarket.dollarIndex":"Dollar Index","globalMarket.majorIndices":"Major Indices","globalMarket.vixTitle":"VIX Volatility Index","globalMarket.vixTip":"VIX measures expected market volatility, higher values indicate more market fear","globalMarket.extremeFear":"Extreme Fear","globalMarket.fear":"Fear","globalMarket.neutral":"Neutral","globalMarket.greed":"Greed","globalMarket.extremeGreed":"Extreme Greed","globalMarket.marketOverview":"Market Overview","globalMarket.indices":"Indices","globalMarket.forex":"Forex","globalMarket.crypto":"Crypto","globalMarket.commodities":"Commodities","globalMarket.heatmap":"Market Heatmap","globalMarket.cryptoHeatmap":"Crypto","globalMarket.commoditiesHeatmap":"Commodities","globalMarket.sectorHeatmap":"Sectors","globalMarket.forexHeatmap":"Forex","globalMarket.opportunities":"Trading Opportunities","globalMarket.noOpportunities":"No significant opportunities detected","globalMarket.financialNews":"Financial News","globalMarket.noNews":"No news available","globalMarket.economicCalendar":"Economic Calendar","globalMarket.noEvents":"No events scheduled","globalMarket.actual":"Actual","globalMarket.forecast":"Forecast","globalMarket.previous":"Previous","globalMarket.signal.bullish":"Bullish Momentum","globalMarket.signal.bearish":"Bearish Momentum","globalMarket.signal.overbought":"Overbought Warning","globalMarket.signal.oversold":"Oversold Opportunity","globalMarket.worldMap":"Global Markets Map","globalMarket.rising":"Rising","globalMarket.falling":"Falling","globalMarket.bullish":"Bullish","globalMarket.bearish":"Bearish","globalMarket.expectedImpact":"Expected Impact","globalMarket.aboveForecast":"Above Forecast","globalMarket.belowForecast":"Below Forecast","globalMarket.upcomingEvents":"Upcoming Events","globalMarket.releasedEvents":"Released Data","trading-assistant.form.notificationFromProfile":"Notifications will be sent to the address configured in your profile.","trading-assistant.form.notificationConfigMissing":"You have not configured parameters for selected channels ({channels}). Please go to your profile to configure them.","trading-assistant.form.goToProfile":"Go to Profile","community.title":"Indicator Market","community.searchPlaceholder":"Search indicators...","community.all":"All","community.freeOnly":"Free","community.paidOnly":"Paid","community.sortNewest":"Newest","community.sortHot":"Popular","community.sortRating":"Top Rated","community.sortPriceLow":"Price: Low to High","community.sortPriceHigh":"Price: High to Low","community.myPurchases":"My Purchases","community.noIndicators":"No indicators yet","community.createFirst":"Create Your First Indicator","community.total":"Total","community.items":"items","community.free":"Free","community.credits":"Credits","community.myIndicator":"My Indicator","community.purchased":"Purchased","community.noDescription":"No description","community.loadFailed":"Failed to load","community.publishedAt":"Published","community.downloads":"Downloads","community.rating":"Rating","community.views":"Views","community.description":"Description","community.performance":"Live Performance","community.strategyCount":"Strategies","community.tradeCount":"Trades","community.winRate":"Win Rate","community.totalProfit":"Total Profit","community.reviews":"Reviews","community.useNow":"Use Now","community.getFree":"Get Free","community.buyNow":"Buy Now","community.purchaseSuccess":"Purchase successful! Indicator added to your list","community.purchaseFailed":"Purchase failed","community.indicator_not_found":"Indicator not found or unavailable","community.cannot_buy_own":"Cannot buy your own indicator","community.already_purchased":"You have already purchased this indicator","community.insufficient_credits":"Insufficient credits","community.commentSuccess":"Comment submitted","community.commentFailed":"Failed to submit comment","community.commentUpdateSuccess":"Comment updated successfully","community.commentUpdateFailed":"Failed to update comment","community.editComment":"Edit Comment","community.cancelEdit":"Cancel","community.updateComment":"Update Comment","community.alreadyCommented":"You have already reviewed this indicator","community.editMyComment":"Edit Review","community.me":"Me","community.edited":"edited","community.not_purchased":"Please purchase/get the indicator first to leave a review","community.cannot_comment_own":"Cannot review your own indicator","community.already_commented":"You have already reviewed this indicator","community.noComments":"No reviews yet","community.yourRating":"Your Rating","community.commentPlaceholder":"Share your experience...","community.submitComment":"Submit Review","community.pleaseRate":"Please select a rating","community.loadMore":"Load More","community.justNow":"Just now","community.minutesAgo":"minutes ago","community.hoursAgo":"hours ago","community.daysAgo":"days ago","community.noPurchases":"No purchases yet","community.purchasedFrom":"Seller","community.purchaseTime":"Purchase Time","community.admin.reviewTab":"Review","community.admin.pending":"Pending","community.admin.approved":"Approved","community.admin.rejected":"Rejected","community.admin.noItems":"No items","community.admin.noDescription":"No description","community.admin.viewCode":"View Code","community.admin.note":"Note","community.admin.approve":"Approve","community.admin.reject":"Reject","community.admin.unpublish":"Unpublish","community.admin.delete":"Delete","community.admin.deleteConfirm":"Are you sure to delete this indicator? This cannot be undone.","community.admin.unpublishConfirm":"Are you sure to unpublish this indicator?","community.admin.unpublishHint":"This indicator will be hidden from the market","community.admin.confirm":"Confirm","community.admin.cancel":"Cancel","community.admin.approveTitle":"Approve Indicator","community.admin.rejectTitle":"Reject Indicator","community.admin.noteLabel":"Note (optional)","community.admin.notePlaceholder":"Enter review note...","community.admin.loadFailed":"Failed to load","community.admin.reviewSuccess":"Review submitted","community.admin.reviewFailed":"Review failed","community.admin.unpublishSuccess":"Unpublished successfully","community.admin.unpublishFailed":"Failed to unpublish","community.admin.deleteSuccess":"Deleted successfully","community.admin.deleteFailed":"Failed to delete","fastAnalysis.aiAnalysis":"AI Analysis","fastAnalysis.analyzing":"AI is analyzing...","fastAnalysis.pleaseWait":"Please wait, fetching real-time data and generating professional report","fastAnalysis.error":"Analysis Failed","fastAnalysis.retry":"Retry","fastAnalysis.selectSymbol":"Select a symbol to start","fastAnalysis.selectHint":"Choose from your watchlist or add a new symbol","fastAnalysis.confidence":"Confidence","fastAnalysis.currentPrice":"Current Price","fastAnalysis.entryPrice":"Entry Price","fastAnalysis.stopLoss":"Stop Loss","fastAnalysis.takeProfit":"Take Profit","fastAnalysis.stopLossHint":"Based on 2x ATR & support","fastAnalysis.takeProfitHint":"Based on 3x ATR & resistance","fastAnalysis.atrBased":"ATR-based","fastAnalysis.riskReward":"Risk/Reward","fastAnalysis.technical":"Technical","fastAnalysis.fundamental":"Fundamental","fastAnalysis.sentiment":"Sentiment","fastAnalysis.overall":"Overall","fastAnalysis.keyReasons":"Key Reasons","fastAnalysis.risks":"Risks","fastAnalysis.indicators":"Technical Indicators","fastAnalysis.maTrend":"MA Trend","fastAnalysis.support":"Support","fastAnalysis.resistance":"Resistance","fastAnalysis.volatility":"Volatility","fastAnalysis.wasHelpful":"Was this analysis helpful?","fastAnalysis.helpful":"Helpful","fastAnalysis.notHelpful":"Not Helpful","fastAnalysis.feedbackThanks":"Thanks for your feedback!","fastAnalysis.feedbackFailed":"Failed to submit feedback","fastAnalysis.feedbackUnavailable":"Feedback unavailable, please re-analyze","fastAnalysis.analysisTime":"Analysis time","fastAnalysis.startAnalysis":"Analyze","fastAnalysis.history":"History","fastAnalysis.systemTitle":"QUANTDINGER AI","fastAnalysis.systemOnline":"Online","fastAnalysis.version":"Fast","fastAnalysis.preparing":"Preparing...","fastAnalysis.step1":"Fetching real-time data","fastAnalysis.step2":"Calculating indicators","fastAnalysis.step3":"AI deep analysis","fastAnalysis.step4":"Generating report","fastAnalysis.technicalAnalysis":"Technical Analysis","fastAnalysis.fundamentalAnalysis":"Fundamental Analysis","fastAnalysis.sentimentAnalysis":"Market Sentiment","fastAnalysis.signal.bullish":"Bullish","fastAnalysis.signal.bearish":"Bearish","fastAnalysis.signal.neutral":"Neutral","fastAnalysis.signal.overbought":"Overbought","fastAnalysis.signal.oversold":"Oversold","fastAnalysis.signal.strong_bullish":"Strong Bullish","fastAnalysis.signal.strong_bearish":"Strong Bearish","fastAnalysis.trend.uptrend":"Uptrend","fastAnalysis.trend.downtrend":"Downtrend","fastAnalysis.trend.sideways":"Sideways","fastAnalysis.trend.consolidating":"Consolidating","fastAnalysis.trend.golden_cross":"Golden Cross","fastAnalysis.trend.death_cross":"Death Cross","fastAnalysis.trend.strong_uptrend":"Strong Uptrend","fastAnalysis.trend.strong_downtrend":"Strong Downtrend","fastAnalysis.volatilityLevel.high":"High","fastAnalysis.volatilityLevel.medium":"Medium","fastAnalysis.volatilityLevel.low":"Low","fastAnalysis.volatilityLevel.unknown":"Unknown","fastAnalysis.marketOverview":"Market Overview","fastAnalysis.selectTip":"Select a symbol from your watchlist to start AI analysis","fastAnalysis.analysisInProgress":"An analysis is already running for this symbol. Please wait and try again.","fastAnalysis.analysisInProgressTitle":"Analysis in progress","fastAnalysis.insufficientCredits":"Insufficient credits","fastAnalysis.insufficientCreditsDetail":"Insufficient credits: need {required}, you have {current}, short by {shortage}.","fastAnalysis.analysisCompleteWithCredits":"Analysis complete. Remaining credits: {remaining}","fastAnalysis.analysisSubmitted":"Analysis task submitted. You can check progress in History.","fastAnalysis.analysisSubmittedWithCredits":"Task submitted. Remaining credits: {remaining}","fastAnalysis.analysisStillProcessing":"This task is still processing. Please refresh history shortly.","fastAnalysis.consensusTitle":"Multi-timeframe consensus","fastAnalysis.consensusDecision":"Consensus","fastAnalysis.consensusScore":"Composite score","fastAnalysis.consensusAgreement":"Timeframe agreement","fastAnalysis.trendOutlookTitle":"Multi-horizon outlook","fastAnalysis.outlook24h":"~24 hours","fastAnalysis.outlook3d":"~3 days","fastAnalysis.outlook1w":"~1 week","fastAnalysis.outlook1m":"~1 month","fastAnalysis.outlookBull":"Bullish","fastAnalysis.outlookBear":"Bearish","fastAnalysis.outlookNeutral":"Neutral / range","fastAnalysis.stopLossHintShort":"Short stop-loss: above current price (loss if price rises). Values from backend trading_plan.","fastAnalysis.takeProfitHintShort":"Short take-profit: below current price (profit if price falls). Values from backend trading_plan.","fastAnalysis.indicatorsProBadge":"PRO","fastAnalysis.indicatorsProSubtitle":"Aligned with backend `MarketDataCollector._calculate_indicators` (mainstream-style): RSI(14) is Wilder-smoothed. MACD(12,26,9) uses SMA-seeded EMAs on closes; DIF from bar 26 onward; DEA = EMA9 of the DIF series (~34+ bars for a full signal line). MAs are SMAs. Pivot uses previous bar H/L/C. Swing = 20-bar high/low extremes. Bollinger = SMA(20) ± 2×population σ; aggregated levels use BB_upper/BB_lower. ATR(14) is Wilder, chained to the latest bar. See docs/INDICATOR_DEFINITIONS_CN.md for volume ratio and range position.","fastAnalysis.indicatorsProTableTitle":"Quant parameters (institutional-style)","fastAnalysis.macdDif":"MACD DIF","fastAnalysis.macdDea":"MACD DEA (signal)","fastAnalysis.macdHist":"MACD histogram","fastAnalysis.ma5Label":"MA(5)","fastAnalysis.ma10Label":"MA(10)","fastAnalysis.ma20Label":"MA(20)","fastAnalysis.bbUpper":"Bollinger upper","fastAnalysis.bbMiddle":"Bollinger middle","fastAnalysis.bbLower":"Bollinger lower","fastAnalysis.bbWidthPct":"Bollinger width %","fastAnalysis.bbWidth":"Width %","fastAnalysis.bbWidthHint":"squeeze / expand","fastAnalysis.pivotStd":"Classic pivot","fastAnalysis.levelS1":"Support S1","fastAnalysis.levelR1":"Resistance R1","fastAnalysis.levelS2":"Support S2","fastAnalysis.levelR2":"Resistance R2","fastAnalysis.swingHigh20":"20-bar swing high","fastAnalysis.swingLow20":"20-bar swing low","fastAnalysis.atr14Label":"ATR(14) absolute","fastAnalysis.atrTrueRange":"avg true range","fastAnalysis.rangePct20":"20-bar range position","fastAnalysis.rangePct20Hint":"0–100% of range","fastAnalysis.volumeRatio":"Volume ratio","fastAnalysis.volumeRatioHint":"vs 20-bar avg vol","fastAnalysis.rrLongRef":"Risk/reward (long ref.)","fastAnalysis.refClose":"Ref. close (calc.)","aiQuant.title":"AI Quant","aiQuant.strategyList":"Strategies","aiQuant.create":"Create","aiQuant.edit":"Edit","aiQuant.delete":"Delete","aiQuant.start":"Start","aiQuant.stop":"Stop","aiQuant.analyze":"Analyze Now","aiQuant.noStrategy":"No strategies yet, click to create","aiQuant.selectStrategy":"Select a strategy from the left","aiQuant.createFirst":"Create Your First Strategy","aiQuant.createStrategy":"Create Strategy","aiQuant.editStrategy":"Edit Strategy","aiQuant.confirmDelete":"Are you sure you want to delete this strategy?","aiQuant.latestAnalysis":"Latest Analysis","aiQuant.analysisHistory":"Analysis History","aiQuant.decision":"Decision","aiQuant.confidence":"Confidence","aiQuant.currentPrice":"Current Price","aiQuant.entryPrice":"Entry Price","aiQuant.stopLoss":"Stop Loss","aiQuant.takeProfit":"Take Profit","aiQuant.reason":"Reason","aiQuant.analyzedAt":"Analyzed At","aiQuant.tradeSettings":"Trade Settings","aiQuant.minutes":"min","aiQuant.hour":"hour","aiQuant.hours":"hours","aiQuant.stats.totalStrategies":"Total Strategies","aiQuant.stats.runningStrategies":"Running","aiQuant.stats.totalAnalyses":"Analyses","aiQuant.stats.totalPnl":"Total PnL","aiQuant.status.running":"Running","aiQuant.status.stopped":"Stopped","aiQuant.status.paused":"Paused","aiQuant.executionMode.signal":"Signal Only","aiQuant.executionMode.live":"Live Trading","aiQuant.marketType.spot":"Spot","aiQuant.marketType.futures":"Futures","aiQuant.field.strategyName":"Strategy Name","aiQuant.field.market":"Market","aiQuant.field.symbol":"Symbol","aiQuant.field.marketType":"Market Type","aiQuant.field.aiModel":"AI Model","aiQuant.field.interval":"Analysis Interval","aiQuant.field.aiPrompt":"AI Prompt","aiQuant.field.executionMode":"Execution Mode","aiQuant.field.positionSize":"Position Size","aiQuant.field.stopLoss":"Stop Loss %","aiQuant.field.takeProfit":"Take Profit %","aiQuant.field.totalAnalyses":"Total Analyses","aiQuant.field.totalTrades":"Total Trades","aiQuant.field.totalPnl":"Total PnL","aiQuant.placeholder.strategyName":"Enter strategy name","aiQuant.placeholder.market":"Select market","aiQuant.placeholder.symbol":"e.g., BTC/USDT","aiQuant.placeholder.aiModel":"Use system default","aiQuant.placeholder.aiPrompt":"Enter your trading strategy prompt, e.g., Buy when RSI is below 30...","aiQuant.validation.strategyName":"Please enter strategy name","aiQuant.validation.market":"Please select market","aiQuant.validation.symbol":"Please enter symbol","aiQuant.table.decision":"Decision","aiQuant.table.confidence":"Confidence","aiQuant.table.entryPrice":"Entry","aiQuant.table.stopLoss":"Stop Loss","aiQuant.table.takeProfit":"Take Profit","aiQuant.table.time":"Time","aiQuant.msg.createSuccess":"Strategy created successfully","aiQuant.msg.updateSuccess":"Strategy updated successfully","aiQuant.msg.deleteSuccess":"Strategy deleted successfully","aiQuant.msg.startSuccess":"Strategy started","aiQuant.msg.stopSuccess":"Strategy stopped","aiQuant.msg.analyzeSuccess":"Analysis completed","aiQuant.field.initialCapital":"Initial Capital","aiQuant.field.leverage":"Leverage","aiQuant.field.tradeDirection":"Trade Direction","aiQuant.field.trailingStop":"Trailing Stop","aiQuant.field.trailingStopPct":"Trailing Stop %","aiQuant.direction.long":"Long Only","aiQuant.direction.short":"Short Only","aiQuant.direction.both":"Both","aiQuant.riskControl":"Risk Control","aiQuant.aiSettings":"AI Settings","aiQuant.systemDefault":"System Default","aiQuant.placeholder.selectSymbol":"Select from watchlist","aiQuant.hint.symbolFromWatchlist":"Select from your watchlist, market type is auto-detected","aiQuant.hint.spotLeverageFixed":"Spot market leverage is fixed at 1x","aiQuant.hint.stopLossEnforced":"Enforced stop loss, AI cannot modify","aiQuant.hint.takeProfitEnforced":"Enforced take profit, AI cannot modify","aiQuant.hint.aiPromptOnly":"AI only determines direction based on prompt, will not modify your risk settings","aiQuant.aiLimitWarning":"AI Permission Restricted","aiQuant.aiLimitDescription":"AI can ONLY determine trade direction (BUY/SELL/HOLD). Leverage, position size, stop loss/take profit are fully controlled by you and CANNOT be modified by AI.","aiQuant.userStopLoss":"Your Stop Loss","aiQuant.userTakeProfit":"Your Take Profit","aiQuant.userLeverage":"Your Leverage","aiQuant.validation.initialCapital":"Please enter initial capital","aiQuant.table.currentPrice":"Current Price","aiQuant.field.promptTemplate":"Strategy Template","aiQuant.placeholder.selectTemplate":"Select a preset template","aiQuant.template.default":"📊 Comprehensive Analysis (Recommended)","aiQuant.template.trend":"📈 Trend Following","aiQuant.template.swing":"🔄 Swing Trading","aiQuant.template.news":"📰 News Driven","aiQuant.template.custom":"✏️ Custom","aiQuant.hint.dataProvided":"System auto-provides: real-time price, indicators (RSI/MACD/MA), recent news, macro data. AI analyzes these with your prompt to determine direction.","aiQuant.hint.liveWarning":"Live mode will trade with REAL money! Make sure you have configured exchange API and understand the risks!","trading-assistant.liveDisclaimer.title":"Live Trading Disclaimer","trading-assistant.liveDisclaimer.content":"Live trading involves significant risk and may result in partial or total loss of funds. The platform does not guarantee returns or profits. You are responsible for your own decisions and outcomes.","trading-assistant.liveDisclaimer.agree":"I have read and understood the disclaimer and still want to enable live trading","trading-assistant.liveDisclaimer.required":"Please accept the disclaimer before enabling live trading","trading-assistant.liveDisclaimer.blockTitle":"Please accept the disclaimer first","trading-assistant.liveDisclaimer.blockDesc":"You must accept the disclaimer to configure live trading connection and order settings.","menu.billing":"Membership","billing.title":"Membership / Credits","billing.desc":"Choose a plan to activate VIP and receive bonus credits.","billing.snapshot.credits":"Current Credits","billing.snapshot.vip":"VIP Status","billing.snapshot.notVip":"Not VIP","billing.snapshot.expires":"Expires","billing.vipRule.title":"VIP Benefit","billing.vipRule.desc":"VIP has only one special permission: VIP-free indicators can be used without credits deduction. Other paid features/indicators still consume credits.","billing.plan.monthly":"Monthly","billing.plan.yearly":"Yearly","billing.plan.lifetime":"Lifetime","billing.perMonth":"month","billing.perYear":"year","billing.once":"one-time","billing.credits":"Credits","billing.lifetimeMonthly":"Monthly bonus","billing.buyNow":"Buy Now","billing.purchaseSuccess":"Purchase successful","billing.purchaseFailed":"Purchase failed","billing.usdt.title":"USDT Scan to Pay","billing.usdt.hintTitle":"Scan with your wallet and send USDT","billing.usdt.hintDesc":"Make sure the network and amount are correct (TRC20 only for now). Membership will be activated automatically after payment is confirmed.","billing.usdt.chain":"Chain","billing.usdt.amount":"Amount","billing.usdt.address":"Deposit Address","billing.usdt.copyAddress":"Copy Address","billing.usdt.copyAmount":"Copy Amount","billing.usdt.refresh":"Refresh","billing.usdt.expires":"Expires","billing.usdt.paidSuccess":"Payment confirmed. Membership activated.","billing.usdt.status.pending":"Waiting for payment","billing.usdt.status.paid":"Payment detected","billing.usdt.status.confirmed":"Confirmed","billing.usdt.status.expired":"Expired","billing.usdt.status.cancelled":"Cancelled","billing.usdt.status.failed":"Failed","billing.usdt.expiredHint":"Order expired. If you already paid, please contact support with your TxHash and payment screenshot.","billing.usdt.confirmedHint":"Payment confirmed, membership activated! Thank you for your purchase.","community.vipFree":"VIP Free","dashboard.indicator.publish.vipFree":"VIP Free","dashboard.indicator.publish.vipFreeHint":"When enabled: VIP users can use this indicator for free (non-VIP still need to purchase).","quickTrade.title":"Quick Trade","quickTrade.selectSymbol":"Select Trading Pair","quickTrade.exchange":"Exchange","quickTrade.selectExchange":"Select exchange account","quickTrade.cryptoOnly":"Crypto only","quickTrade.noExchange":"No crypto exchange accounts yet. Add one in Profile → Exchange Config.","quickTrade.available":"Available","quickTrade.long":"Long","quickTrade.short":"Short","quickTrade.market":"Market","quickTrade.limit":"Limit","quickTrade.limitPrice":"Limit Price","quickTrade.enterPrice":"Enter price","quickTrade.amount":"Amount","quickTrade.enterAmount":"Enter amount","quickTrade.leverage":"Leverage","quickTrade.tpsl":"TP/SL Price (Optional)","quickTrade.tp":"Take Profit Price","quickTrade.sl":"Stop Loss Price","quickTrade.tpPlaceholder":"Enter TP price","quickTrade.slPlaceholder":"Enter SL price","quickTrade.optional":"Optional","quickTrade.buyLong":"Buy / Long","quickTrade.sellShort":"Sell / Short","quickTrade.currentPosition":"Current Position","quickTrade.side":"Side","quickTrade.posSize":"Size","quickTrade.entryPrice":"Entry Price","quickTrade.markPrice":"Mark Price","quickTrade.unrealizedPnl":"Unrealized PnL","quickTrade.closePosition":"Close Position","quickTrade.noPosition":"No Position","quickTrade.noPositionHint":"No position for current trading pair","quickTrade.recentTrades":"Recent Trades","quickTrade.orderSuccess":"Order placed successfully!","quickTrade.orderFailed":"Order failed","quickTrade.positionClosed":"Position closed!","quickTrade.openPanel":"Quick Trade","quickTrade.tradeNow":"Trade Now","profile.exchange.title":"Exchange Config","profile.exchange.hint":"Manage your exchange API keys and broker connections. They can be used in Trading Assistant and Quick Trade.","profile.exchange.addAccount":"Add Exchange Account","profile.exchange.noAccounts":"No exchange accounts yet. Click the button above to add one.","profile.exchange.colExchange":"Exchange","profile.exchange.colName":"Name","profile.exchange.colHint":"Connection Info","profile.exchange.colCreatedAt":"Created At","profile.exchange.colActions":"Actions","profile.exchange.deleteConfirm":"Are you sure you want to delete this exchange account? This cannot be undone.","profile.exchange.deleteSuccess":"Exchange account deleted","profile.exchange.addTitle":"Add Exchange Account","profile.exchange.selectExchange":"Select Exchange","profile.exchange.accountName":"Account Name (Optional)","profile.exchange.accountNamePlaceholder":"e.g. Main Account, Test Account","profile.exchange.apiKey":"API Key","profile.exchange.secretKey":"Secret Key","profile.exchange.passphrase":"Passphrase","profile.exchange.demoTrading":"Demo Trading","profile.exchange.ibkrHost":"TWS/Gateway Host","profile.exchange.ibkrPort":"TWS/Gateway Port","profile.exchange.ibkrPortHint":"TWS Paper:7497 | TWS Live:7496 | Gateway Paper:4002 | Gateway Live:4001","profile.exchange.ibkrClientId":"Client ID","profile.exchange.ibkrAccount":"Account (Optional)","profile.exchange.mt5Server":"Server","profile.exchange.mt5Login":"Login","profile.exchange.mt5Password":"Password","profile.exchange.mt5TerminalPath":"Terminal Path (Optional)","profile.exchange.mt5TerminalPathHint":"Path to MT5 terminal, e.g. C:\\Program Files\\MetaTrader 5\\terminal64.exe","profile.exchange.testConnection":"Test Connection","profile.exchange.testSuccess":"Connection successful!","profile.exchange.testFailed":"Connection failed","profile.exchange.saveSuccess":"Exchange account added successfully","profile.exchange.saveFailed":"Failed to add account","profile.exchange.typeCrypto":"Crypto Exchange","profile.exchange.typeIBKR":"US Stocks (IBKR)","profile.exchange.typeMT5":"Forex (MetaTrader 5)","profile.exchange.localDeploymentRequired":"Local deployment required","profile.exchange.localDeploymentHint":"This broker requires local deployment of QuantDinger to use.","profile.exchange.goToManage":"Go to Profile → Exchange Config to manage","profile.exchange.noCredentialHint":"Please add an exchange account in Profile first","adminOrders.tabTitle":"Order List","adminOrders.totalOrders":"Total Orders","adminOrders.paidOrders":"Paid","adminOrders.pendingOrders":"Pending","adminOrders.totalRevenue":"Total Revenue","adminOrders.filterAll":"All Status","adminOrders.filterPending":"Pending","adminOrders.filterPaid":"Paid","adminOrders.filterConfirmed":"Confirmed","adminOrders.filterExpired":"Expired","adminOrders.searchPlaceholder":"Search by username/email","adminOrders.colUser":"User","adminOrders.colType":"Type","adminOrders.colPlan":"Plan","adminOrders.colAmount":"Amount","adminOrders.colStatus":"Status","adminOrders.colChain":"Chain","adminOrders.colAddress":"Address","adminOrders.colTxHash":"Tx Hash","adminOrders.colCreatedAt":"Created","adminOrders.lifetime":"Lifetime","adminOrders.yearly":"Yearly","adminOrders.monthly":"Monthly","adminOrders.statusPaid":"Paid","adminOrders.statusConfirmed":"Confirmed","adminOrders.statusPending":"Pending","adminOrders.statusExpired":"Expired","adminOrders.statusCancelled":"Cancelled","adminOrders.statusFailed":"Failed","adminAiStats.tabTitle":"AI Analysis","adminAiStats.totalAnalyses":"Total Analyses","adminAiStats.activeUsers":"Active Users","adminAiStats.uniqueSymbols":"Symbols Analyzed","adminAiStats.accuracy":"Correct / Verified","adminAiStats.userStatsTitle":"Per-User Statistics","adminAiStats.recentTitle":"Recent Analysis Records","adminAiStats.searchPlaceholder":"Search by username","adminAiStats.colUser":"User","adminAiStats.colAnalysisCount":"Analyses","adminAiStats.colSymbols":"Symbols","adminAiStats.colMarkets":"Markets","adminAiStats.colAccuracy":"Correct / Wrong","adminAiStats.colFeedback":"Feedback","adminAiStats.colLastAnalysis":"Last Analysis","adminAiStats.colMarket":"Market","adminAiStats.colSymbol":"Symbol","adminAiStats.colModel":"Model","adminAiStats.colStatus":"Status","adminAiStats.colCreatedAt":"Time","adminAiStats.helpful":"Helpful","adminAiStats.notHelpful":"Not Helpful","polymarket.title":"Prediction Markets","polymarket.subtitle":"AI analysis and trading opportunity recommendations based on Polymarket prediction market data","polymarket.filter.category":"Select Category","polymarket.filter.sortBy":"Sort By","polymarket.sort.volume":"24h Volume","polymarket.sort.aiScore":"AI Opportunity Score","polymarket.sort.highProbability":"High Probability","polymarket.sort.highReturn":"High Return Ratio","polymarket.search.placeholder":"Search prediction markets...","polymarket.category.all":"All","polymarket.category.crypto":"Cryptocurrency","polymarket.category.politics":"Politics","polymarket.category.economics":"Economics","polymarket.category.sports":"Sports","polymarket.category.tech":"Tech","polymarket.category.finance":"Finance","polymarket.category.geopolitics":"Geopolitics","polymarket.category.culture":"Culture","polymarket.category.climate":"Climate","polymarket.category.entertainment":"Entertainment","polymarket.market.currentProbability":"Current Probability","polymarket.ai.predicted":"AI Predicted Probability","polymarket.ai.marketProbability":"Market Probability","polymarket.ai.recommendation":"AI Recommendation","polymarket.ai.confidence":"Confidence","polymarket.ai.opportunityScore":"Opportunity Score","polymarket.ai.reasoning":"Analysis Reasoning","polymarket.ai.keyFactors":"Key Factors","polymarket.recommendation.YES":"YES (Bullish)","polymarket.recommendation.NO":"NO (Bearish)","polymarket.recommendation.HOLD":"HOLD (Neutral)","polymarket.status.active":"Active","polymarket.status.closed":"Closed","polymarket.status.resolved":"Resolved","polymarket.action.viewDetail":"View Details","polymarket.action.viewOnPolymarket":"View on Polymarket","polymarket.detail.title":"Prediction Market Details","polymarket.detail.currentProbability":"Current Probability","polymarket.detail.volume24h":"24h Volume","polymarket.detail.liquidity":"Liquidity","polymarket.detail.aiAnalysis":"AI Analysis Results","polymarket.detail.assetOpportunities":"Related Asset Trading Opportunities","polymarket.opportunity.confidence":"Confidence","polymarket.opportunity.analyze":"Analyze Asset","polymarket.signal.BUY":"BUY","polymarket.signal.SELL":"SELL","polymarket.signal.HOLD":"HOLD","polymarket.error.loadFailed":"Failed to load markets","polymarket.error.searchFailed":"Search failed","polymarket.error.notFound":"Market not found","polymarket.error.loadDetailFailed":"Failed to load details","polymarket.viewOnPolymarket":"View on Polymarket","polymarket.filter.explanation.title":"Filter Explanation","polymarket.filter.explanation.volume":"Sorted by 24h trading volume, showing the most active prediction markets.","polymarket.filter.explanation.aiScore":"Sorted by AI opportunity score, considering AI-market divergence, confidence, and other factors. High-value opportunities are prioritized.","polymarket.filter.explanation.highProbability":"Sorted by AI predicted probability, prioritizing events with high AI probability (AI prediction > market probability + 10%).","polymarket.filter.explanation.highReturn":"Sorted by high return ratio, prioritizing opportunities with large AI-market divergence and high confidence (divergence × confidence). Suitable for finding undervalued predictions.","polymarket.deepAnalysis.prompt":"Currently showing rule-based simple analysis. Click the button below for AI deep analysis to get more accurate predictions and recommendations.","polymarket.deepAnalysis.button":"Deep Analysis","polymarket.deepAnalysis.success":"Deep analysis completed! Credits charged: {credits}, Remaining: {remaining}","polymarket.deepAnalysis.successFree":"Deep analysis completed!","polymarket.deepAnalysis.failed":"Deep analysis failed, please try again later","polymarket.deepAnalysis.insufficientCredits":"Insufficient credits! Required: {required}, Current: {current}, Shortage: {shortage}","polymarket.error.invalidMarketId":"Invalid market ID","polymarket.analysis.title":"Polymarket Prediction Market Analysis","polymarket.analysis.description":"Enter a Polymarket link or market title, and AI will analyze trading opportunities for you","polymarket.analysis.startAnalysis":"Start Analysis","polymarket.analysis.inputHint":"Please enter a Polymarket market link or market title","polymarket.analysis.inputPlaceholder":'e.g., https://polymarket.com/event/xxx or "Bitcoin price above $100k in 2025?"',"polymarket.analysis.inputRequired":"Please enter a Polymarket link or market title","polymarket.analysis.analyzeButton":"Start Analysis","polymarket.analysis.analyzing":"Analyzing, please wait...","polymarket.analysis.success":"Analysis completed!","polymarket.analysis.failed":"Analysis failed, please try again later","polymarket.analysis.insufficientCredits":"Insufficient credits, please recharge first","polymarket.analysis.viewOnPolymarket":"View on Polymarket","polymarket.analysis.aiAnalysis":"AI Analysis Results","polymarket.analysis.marketProbability":"Market Probability","polymarket.analysis.aiPredictedProbability":"AI Predicted Probability","polymarket.analysis.divergence":"Divergence","polymarket.analysis.recommendation":"Recommendation","polymarket.analysis.recommendationYes":"YES (Bullish)","polymarket.analysis.recommendationNo":"NO (Bearish)","polymarket.analysis.recommendationHold":"HOLD (Neutral)","polymarket.analysis.confidenceScore":"Confidence Score","polymarket.analysis.opportunityScore":"Opportunity Score","polymarket.analysis.reasoning":"Analysis Reasoning","polymarket.analysis.keyFactors":"Key Factors","polymarket.analysis.creditsCharged":"Credits charged for this analysis: {credits}","polymarket.analysis.remainingCredits":"Remaining credits: {credits}","polymarket.analysis.newAnalysis":"New Analysis","polymarket.analysis.tabAnalyze":"Analyze","polymarket.analysis.tabHistory":"History","polymarket.analysis.historyMarket":"Market","polymarket.analysis.historyRecommendation":"Recommendation","polymarket.analysis.historyOpportunityScore":"Opportunity Score","polymarket.analysis.historyCreatedAt":"Analysis Time","polymarket.analysis.historyTotal":"Total {total} records","polymarket.analysis.loadHistoryFailed":"Failed to load history","aiAssetAnalysis.tabs.polymarket":"Prediction Markets"};t["default"]=(0,i.A)((0,i.A)({},r),l)},37433:function(e,t,a){"use strict";a(23792),a(3362),a(69085),a(9391),a(74423),a(21699),a(52675),a(89463),a(66412),a(60193),a(92168),a(2259),a(86964),a(83237),a(61833),a(67947),a(31073),a(45700),a(78125),a(20326),a(28706),a(26835),a(33771),a(2008),a(50113),a(48980),a(46449),a(78350),a(23418),a(48598),a(62062),a(31051),a(34782),a(26910),a(87478),a(54554),a(93514),a(30237),a(54743),a(46761),a(11745),a(89572),a(48957),a(62010),a(4731),a(36033),a(93153),a(82326),a(36389),a(64444),a(8085),a(77762),a(65070),a(60605),a(39469),a(72152),a(75376),a(56624),a(11367),a(5914),a(78553),a(98690),a(60479),a(70761),a(2892),a(45374),a(25428),a(32637),a(40150),a(59149),a(64601),a(44435),a(87220),a(25843),a(9868),a(17427),a(87607),a(5506),a(52811),a(53921),a(83851),a(81278),a(1480),a(40875),a(29908),a(94052),a(94003),a(221),a(79432),a(9220),a(7904),a(93967),a(93941),a(10287),a(26099),a(16034),a(39796),a(60825),a(87411),a(21211),a(40888),a(9065),a(86565),a(32812),a(84634),a(71137),a(30985),a(34268),a(34873),a(84864),a(27495),a(69479),a(38781),a(31415),a(23860),a(99449),a(27337),a(47764),a(71761),a(35701),a(68156),a(85906),a(42781),a(25440),a(5746),a(90744),a(11392),a(42762),a(39202),a(43359),a(89907),a(11898),a(35490),a(5745),a(94298),a(60268),a(69546),a(20781),a(50778),a(89195),a(46276),a(48718),a(16308),a(34594),a(29833),a(46594),a(72107),a(95477),a(21489),a(22134),a(3690),a(61740),a(81630),a(72170),a(75044),a(69539),a(31694),a(89955),a(33206),a(48345),a(44496),a(66651),a(12887),a(19369),a(66812),a(8995),a(52568),a(31575),a(36072),a(88747),a(28845),a(29423),a(57301),a(373),a(86614),a(41405),a(33684),a(73772),a(30958),a(23500),a(62953),a(59848),a(122),a(3296),a(27208),a(48408),a(7452);var i=a(85471),s=function(){var e=this,t=e._self._c;return t("a-config-provider",{attrs:{locale:e.locale,direction:e.direction}},[t("div",{attrs:{id:"app"}},[t("router-view")],1)])},n=[],o={navTheme:"light",primaryColor:"#13C2C2",layout:"sidemenu",contentWidth:"Fluid",fixedHeader:!0,fixSiderbar:!0,colorWeak:!1,menu:{locale:!0},title:"QuantDinger",pwa:!1,iconfontUrl:"",production:!0},r=function(e){document.title=e;var t=navigator.userAgent,a=/\bMicroMessenger\/([\d\.]+)/;if(a.test(t)&&/ip(hone|od|ad)/i.test(t)){var i=document.createElement("iframe");i.src="/favicon.ico",i.style.display="none",i.onload=function(){setTimeout(function(){i.remove()},9)},document.body.appendChild(i)}},l=o.title,d=a(76338),c=a(64765),u=a(74053),m=a.n(u),g=a(95093),p=a.n(g),h=a(45958);i.Ay.use(c.A);var f="en-US",y={"en-US":(0,d.A)({},h["default"])},b=new c.A({silentTranslationWarn:!0,locale:f,fallbackLocale:f,messages:y}),A=[f];function v(e){b.locale=e;var t=document.documentElement,a=/^ar/i.test(e);return t&&(t.setAttribute("lang",e),t.setAttribute("dir",a?"rtl":"ltr")),document.body&&(document.body.setAttribute("dir",a?"rtl":"ltr"),document.body.classList.toggle("rtl",a)),e}function k(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:f;return new Promise(function(t){return m().set("lang",e),b.locale!==e?A.includes(e)?t(v(e)):a(2162)("./".concat(e)).then(function(t){var a=t.default;return b.setLocaleMessage(e,a),A.push(e),p().updateLocale(a.momentName,a.momentLocale),v(e)}):t(e)})}function S(e){return b.t("".concat(e))}var w,T,P=b,C={data:function(){return{}},computed:{locale:function(){var e=this.$route.meta.title;return e&&r("".concat(S(e)," - ").concat(l)),this.$i18n.getLocaleMessage(this.$store.getters.lang).antLocale},direction:function(){var e=this.$store.getters.lang;return e&&/^ar/i.test(e)?"rtl":"ltr"},theme:function(){return this.$store.state.app.theme}},watch:{theme:{handler:function(e){"dark"===e||"realdark"===e?(document.body.classList.add("dark"),document.body.classList.remove("light")):(document.body.classList.remove("dark"),document.body.classList.add("light"))},immediate:!0}}},R=C,E=a(845),I=(0,E.A)(R,s,n,!1,null,null,null),M=I.exports,_=a(40173),L=function(){var e=this,t=e._self._c;return t("div",{class:["user-layout-wrapper",e.isMobile&&"mobile"],attrs:{id:"userLayout"}},[t("div",{staticClass:"container"},[e._m(0),t("div",{staticClass:"user-layout-lang"},[t("select-lang",{staticClass:"select-lang-trigger"})],1),t("div",{staticClass:"user-layout-content"},[e._m(1),t("div",{staticClass:"main-content"},[t("router-view")],1),t("div",{staticClass:"footer"},[t("div",{staticClass:"copyright"},[e._v(" Copyright © 2025-2026 Quantdinger.com "),t("div",{staticStyle:{width:"70%","text-align":"center","margin-left":"15%","margin-top":"10px"}},[t("a",{staticStyle:{color:"#1890ff",cursor:"pointer"},on:{click:e.toggleRisk}},[e._v(" "+e._s(e.showRisk?e.$t("user.login.privacy.collapse"):e.$t("user.login.privacy.view"))+" ")]),e.showRisk?t("div",{staticStyle:{"margin-top":"10px","font-size":"12px",color:"rgba(0,0,0,0.65)","line-height":"1.6","text-align":"left"}},[t("div",{staticStyle:{"font-weight":"600","margin-bottom":"6px"}},[e._v(e._s(e.$t("user.login.privacy.title")))]),e._v(" "+e._s(e.$t("user.login.privacy.content"))+" ")]):e._e()])])])])])])},x=[function(){var e=this,t=e._self._c;return t("div",{staticClass:"fx-layer",attrs:{"aria-hidden":"true"}},[t("div",{staticClass:"fx-gradient"}),t("div",{staticClass:"fx-grid"})])},function(){var e=this,t=e._self._c;return t("div",{staticClass:"top"},[t("div",{staticClass:"header"},[t("a",{attrs:{href:"/"}},[t("img",{staticClass:"logo",attrs:{src:a(33153),alt:"logo"}})])])])}],D=a(95353),N={computed:(0,d.A)({},(0,D.aH)({isMobile:function(e){return e.app.isMobile}}))},F=(a(63713),a(77197)),O=(a(78269),a(40255)),B=(a(1747),a(36457)),H={computed:(0,d.A)({},(0,D.aH)({currentLang:function(e){return e.app.lang}})),methods:{setLang:function(e){this.$store.dispatch("setLang",e)}}},U=H,q=["en-US","ja-JP","ko-KR","vi-VN","th-TH","ar-SA","fr-FR","de-DE","zh-TW","zh-CN"],j={"zh-CN":"简体中文","zh-TW":"繁體中文","en-US":"English","ja-JP":"日本語","ko-KR":"한국어","vi-VN":"Tiếng Việt","th-TH":"ไทย","ar-SA":"العربية","fr-FR":"Français","de-DE":"Deutsch"},W={"zh-CN":"🇨🇳","zh-TW":"sg","en-US":"🇺🇸","ja-JP":"🇯🇵","ko-KR":"🇰🇷","vi-VN":"🇻🇳","th-TH":"🇹🇭","ar-SA":"🇸🇦","fr-FR":"🇫🇷","de-DE":"🇩🇪"},$={props:{prefixCls:{type:String,default:"ant-pro-drop-down"}},name:"SelectLang",mixins:[U],render:function(){var e=this,t=arguments[0],a=this.prefixCls,i=function(t){var a=t.key;e.setLang(a)},s=t(B.Ay,{class:["menu","ant-pro-header-menu"],attrs:{selectedKeys:[this.currentLang]},on:{click:i}},[q.map(function(e){return t(B.Ay.Item,{key:e},[t("span",{attrs:{role:"img","aria-label":j[e]}},[W[e]])," ",j[e]])})]);return t(F.Ay,{attrs:{overlay:s,placement:"bottomRight"}},[t("span",{class:a},[t(O.A,{attrs:{type:"global",title:S("navBar.lang")}})])])}},G=$,V={name:"UserLayout",components:{SelectLang:G},mixins:[N],data:function(){return{showRisk:!1}},methods:{toggleRisk:function(){this.showRisk=!this.showRisk}},mounted:function(){document.body.classList.add("userLayout")},beforeDestroy:function(){document.body.classList.remove("userLayout")}},Q=V,z=(0,E.A)(Q,L,x,!1,null,"7ae30672",null),K=z.exports,Y=function(){var e=this,t=e._self._c;return t("div",[t("router-view")],1)},X=[],J={name:"BlankLayout"},Z=J,ee=(0,E.A)(Z,Y,X,!1,null,"7f25f9eb",null),te=(ee.exports,function(){var e=this,t=e._self._c;return t("div",{class:["basic-layout-wrapper",e.settings.theme]},[t("pro-layout",e._b({attrs:{menus:e.menus,collapsed:e.collapsed,mediaQuery:e.query,isMobile:e.isMobile,handleMediaQuery:e.handleMediaQuery,handleCollapse:e.handleCollapse,i18nRender:e.i18nRender},scopedSlots:e._u([{key:"menuHeaderRender",fn:function(){return[t("div",[t("img",{attrs:{src:a(2304)}}),t("h1",[e._v(e._s(e.title))])])]},proxy:!0},{key:"headerContentRender",fn:function(){return[t("div",[t("a-tooltip",{attrs:{title:e.$t("menu.header.refreshPage")}},[t("a-icon",{staticStyle:{"font-size":"18px",cursor:"pointer"},attrs:{type:"reload"},on:{click:e.handleRefresh}})],1)],1)]},proxy:!0},{key:"rightContentRender",fn:function(){return[t("right-content",{attrs:{"top-menu":"topmenu"===e.settings.layout,"is-mobile":e.isMobile,theme:e.settings.theme}})]},proxy:!0},{key:"footerRender",fn:function(){return[t("div",{staticStyle:{display:"none"}})]},proxy:!0}])},"pro-layout",e.settings,!1),[t("a-modal",{attrs:{visible:e.showLegalModal,footer:null,title:e.$t("menu.footer.userAgreement"),width:800},on:{cancel:function(t){e.showLegalModal=!1}}},[t("div",{staticStyle:{"max-height":"60vh",overflow:"auto","white-space":"pre-wrap","line-height":"1.8",padding:"16px"}},[e._v(" "+e._s(e.menuFooterConfig.legal.user_agreement||e.$t("user.login.legal.content"))+" ")]),t("div",{staticStyle:{"margin-top":"12px","text-align":"right"}},[t("a-button",{attrs:{type:"primary"},on:{click:function(t){e.showLegalModal=!1}}},[e._v("OK")])],1)]),t("a-modal",{attrs:{visible:e.showPrivacyModal,footer:null,title:e.$t("menu.footer.privacyPolicy"),width:800},on:{cancel:function(t){e.showPrivacyModal=!1}}},[t("div",{staticStyle:{"max-height":"60vh",overflow:"auto","white-space":"pre-wrap","line-height":"1.8",padding:"16px"}},[e._v(" "+e._s(e.menuFooterConfig.legal.privacy_policy||e.$t("user.login.privacy.content"))+" ")]),t("div",{staticStyle:{"margin-top":"12px","text-align":"right"}},[t("a-button",{attrs:{type:"primary"},on:{click:function(t){e.showPrivacyModal=!1}}},[e._v("OK")])],1)]),t("setting-drawer",{ref:"settingDrawer",attrs:{settings:e.settings},on:{change:e.handleSettingChange}},[t("div",{staticStyle:{margin:"12px 0"}},[e._v(" This is SettingDrawer custom footer content. ")])]),t("router-view",{key:e.refreshKey})],1),t("div",{staticClass:"custom-menu-footer",class:{collapsed:e.collapsed,"drawer-open":e.isMobile&&e.isDrawerOpen,"drawer-animating":e.isMobile&&e.isDrawerAnimating}},[e.collapsed?e._e():t("div",{staticClass:"menu-footer-content"},[t("div",{staticClass:"footer-section"},[t("div",{staticClass:"section-title"},[e._v(e._s(e.$t("menu.footer.contactUs")))]),t("div",{staticClass:"section-links"},[t("a",{attrs:{href:e.menuFooterConfig.contact.support_url,target:"_blank"}},[e._v(e._s(e.$t("menu.footer.support")))]),t("span",{staticClass:"separator"},[e._v("|")]),t("a",{attrs:{href:e.menuFooterConfig.contact.feature_request_url,target:"_blank"}},[e._v(e._s(e.$t("menu.footer.featureRequest")))])])]),t("div",{staticClass:"footer-section"},[t("div",{staticClass:"section-title"},[e._v(e._s(e.$t("menu.footer.getSupport")))]),t("div",{staticClass:"section-links"},[t("a",{attrs:{href:"mailto:"+e.menuFooterConfig.contact.email}},[e._v(e._s(e.$t("menu.footer.email")))]),t("span",{staticClass:"separator"},[e._v("|")]),t("a",{attrs:{href:e.menuFooterConfig.contact.live_chat_url,target:"_blank"}},[e._v(e._s(e.$t("menu.footer.liveChat")))])])]),e.menuFooterConfig.social_accounts&&e.menuFooterConfig.social_accounts.length>0?t("div",{staticClass:"footer-section"},[t("div",{staticClass:"section-title"},[e._v(e._s(e.$t("menu.footer.socialAccounts")))]),t("div",{staticClass:"social-icons"},e._l(e.menuFooterConfig.social_accounts,function(e,a){return t("a",{key:a,staticClass:"social-icon",attrs:{href:e.url,target:"_blank",rel:"noopener noreferrer",title:e.name}},[t("Icon",{staticClass:"social-icon-svg",attrs:{icon:"simple-icons:".concat(e.icon)}})],1)}),0)]):e._e(),t("div",{staticClass:"footer-section"},[t("div",{staticClass:"section-links"},[t("a",{on:{click:function(t){e.showLegalModal=!0}}},[e._v(e._s(e.$t("menu.footer.userAgreement")))]),t("span",{staticClass:"separator"},[e._v("&")]),t("a",{on:{click:function(t){e.showPrivacyModal=!0}}},[e._v(e._s(e.$t("menu.footer.privacyPolicy")))])])]),t("div",{staticClass:"footer-section copyright"},[e._v(" "+e._s(e.menuFooterConfig.copyright)+" ")]),t("div",{staticClass:"footer-section version"},[e._v(" V2.2.3 ")])])])],1)}),ae=[],ie=a(18787),se=a(69511),ne=a.n(se),oe=a(58391),re=a.n(oe),le={getAntdSerials:function(e){var t=new Array(9).fill().map(function(t,a){return ne().varyColor.lighten(e,a/10)}),a=re()(e),i=ne().varyColor.toNum3(e.replace("#","")).join(",");return t.concat(a).concat(i)},changeColor:function(e){if(!ne()||!ne().changer||"function"!==typeof ne().changer.changeColor)return Promise.resolve();var t={newColors:this.getAntdSerials(e),changeUrl:function(e){return"/".concat(e)}};try{return ne().changer.changeColor(t,Promise)}catch(a){return Promise.resolve()}}},de=function(){return[{key:P.t("app.setting.themecolor.dust"),color:"#F5222D"},{key:P.t("app.setting.themecolor.volcano"),color:"#FA541C"},{key:P.t("app.setting.themecolor.sunset"),color:"#FAAD14"},{key:P.t("app.setting.themecolor.cyan"),color:"#13C2C2"},{key:P.t("app.setting.themecolor.green"),color:"#52C41A"},{key:P.t("app.setting.themecolor.daybreak"),color:"#1890FF"},{key:P.t("app.setting.themecolor.geekblue"),color:"#2F54EB"},{key:P.t("app.setting.themecolor.purple"),color:"#722ED1"}]},ce=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],a=t?null:ie.A.loading(P.t("app.setting.theme.switching"),0);le.changeColor(e).finally(function(){a&&setTimeout(function(){a()},10)})},ue=function(e){var t=document.body.querySelector("#app");e?t.classList.add("colorWeak"):t.classList.remove("colorWeak")},me=a(75314),ge=function(){var e=this,t=e._self._c;return t("div",{class:e.wrpCls},[t("avatar-dropdown",{class:e.prefixCls,attrs:{menu:!0,"current-user":e.currentUser}}),t("notice-icon",{class:e.prefixCls}),t("select-lang",{class:e.prefixCls}),t("a-tooltip",{attrs:{title:e.$t("app.setting.tooltip")}},[t("span",{class:e.prefixCls,on:{click:e.handleSettingClick}},[t("a-icon",{staticStyle:{"font-size":"16px"},attrs:{type:"setting"}})],1)])],1)},pe=[],he=a(26297),fe=function(){var e=this,t=e._self._c;return e.currentUser&&e.currentUser.name?t("a-dropdown",{attrs:{placement:"bottomRight"},scopedSlots:e._u([{key:"overlay",fn:function(){return[t("a-menu",{staticClass:"ant-pro-drop-down menu",attrs:{"selected-keys":[]}},[t("a-menu-item",{key:"profile",on:{click:e.handleProfile}},[t("a-icon",{attrs:{type:"user"}}),e._v(" "+e._s(e.$t("menu.profile")||"My Profile")+" ")],1),t("a-menu-divider"),t("a-menu-item",{key:"logout",on:{click:e.handleLogout}},[t("a-icon",{attrs:{type:"logout"}}),e._v(" "+e._s(e.$t("menu.account.logout"))+" ")],1)],1)]},proxy:!0}],null,!1,2847446919)},[t("span",{staticClass:"ant-pro-account-avatar"},[t("a-avatar",{staticClass:"antd-pro-global-header-index-avatar",attrs:{size:"small",src:e.currentUser.avatar}}),t("span",[e._v(e._s(e.currentUser.name))])],1)]):t("span",[t("a-spin",{style:{marginLeft:8,marginRight:8},attrs:{size:"small"}})],1)},ye=[],be=(a(62621),a(43898)),Ae={name:"AvatarDropdown",props:{currentUser:{type:Object,default:function(){return null}},menu:{type:Boolean,default:!0}},methods:{handleProfile:function(){this.$router.push({name:"Profile"})},handleLogout:function(e){var t=this;be.A.confirm({title:this.$t("layouts.usermenu.dialog.title"),content:this.$t("layouts.usermenu.dialog.content"),onOk:function(){return t.$store.dispatch("Logout").then(function(){t.$router.push({name:"login"})})},onCancel:function(){}})}}},ve=Ae,ke=(0,E.A)(ve,fe,ye,!1,null,null,null),Se=ke.exports,we=function(){var e=this,t=e._self._c;return t("div",{staticClass:"notice-icon-wrapper"},[t("a-popover",{attrs:{trigger:"click",placement:"bottomRight",overlayClassName:"header-notice-wrapper",getPopupContainer:function(){return e.$refs.noticeRef.parentElement},autoAdjustOverflow:!0,arrowPointAtCenter:!0,overlayStyle:{width:"380px",top:"50px"}},model:{value:e.visible,callback:function(t){e.visible=t},expression:"visible"}},[t("template",{slot:"content"},[t("div",{staticClass:"notice-header"},[t("span",{staticClass:"notice-title"},[e._v(e._s(e.$t("notice.title")))]),e.notifications.length>0?t("a",{staticClass:"notice-action",on:{click:e.markAllRead}},[e._v(" "+e._s(e.$t("notice.markAllRead"))+" ")]):e._e()]),t("a-spin",{attrs:{spinning:e.loading}},[e.notifications.length>0?t("div",{staticClass:"notice-list"},e._l(e.notifications,function(a){return t("div",{key:a.id,staticClass:"notice-item",class:{unread:!a.is_read},on:{click:function(t){return e.handleNoticeClick(a)}}},[t("div",{staticClass:"notice-item-icon"},[t("a-icon",{style:{color:e.getNoticeColor(a.signal_type)},attrs:{type:e.getNoticeIcon(a.signal_type)}})],1),t("div",{staticClass:"notice-item-content"},[t("div",{staticClass:"notice-item-title"},[e._v(e._s(a.title))]),t("div",{staticClass:"notice-item-desc"},[e._v(e._s(e.truncateMessage(a.message)))]),t("div",{staticClass:"notice-item-time"},[e._v(e._s(e.formatTime(a.created_at)))])])])}),0):t("div",{staticClass:"notice-empty"},[t("a-empty",{attrs:{description:e.$t("notice.empty")}})],1)]),e.notifications.length>0?t("div",{staticClass:"notice-footer"},[t("a",{on:{click:e.clearNotifications}},[e._v(e._s(e.$t("notice.clear")))])]):e._e()],1),t("span",{ref:"noticeRef",staticClass:"header-notice",on:{click:e.fetchNotice}},[t("a-badge",{attrs:{count:e.unreadCount,overflowCount:99}},[t("a-icon",{staticStyle:{"font-size":"16px",padding:"4px"},attrs:{type:"bell"}})],1)],1)],2),t("a-modal",{attrs:{title:e.detailNotice?e.detailNotice.title:"",footer:null,width:e.isHtmlReport?900:600,wrapClassName:e.isHtmlReport?"notice-detail-modal html-report-modal":"notice-detail-modal",centered:""},model:{value:e.detailVisible,callback:function(t){e.detailVisible=t},expression:"detailVisible"}},[e.detailNotice?t("div",{staticClass:"notice-detail"},[t("div",{staticClass:"notice-detail-meta"},[t("div",{staticClass:"notice-detail-type"},[t("a-icon",{style:{color:e.getNoticeColor(e.detailNotice.signal_type)},attrs:{type:e.getNoticeIcon(e.detailNotice.signal_type)}}),t("span",{staticClass:"type-label"},[e._v(e._s(e.getNoticeTypeLabel(e.detailNotice.signal_type)))])],1),t("div",{staticClass:"notice-detail-time"},[t("a-icon",{attrs:{type:"clock-circle"}}),t("span",[e._v(e._s(e.formatFullTime(e.detailNotice.created_at)))])],1)]),t("a-divider"),t("div",{staticClass:"notice-detail-content",class:{"html-report":e.isHtmlReport}},[t("div",{staticClass:"message-body",domProps:{innerHTML:e._s(e.formatMessageHtml(e.detailNotice.message))}})]),!e.isHtmlReport&&e.detailNotice.payload&&Object.keys(e.detailNotice.payload).length>0?[t("a-divider"),t("div",{staticClass:"notice-detail-extra"},[t("div",{staticClass:"extra-title"},[e._v(e._s(e.$t("notice.detailInfo")))]),"ai_monitor"===e.detailNotice.signal_type?[e.detailNotice.payload.final_decision?t("div",{staticClass:"extra-item decision"},[t("span",{staticClass:"label"},[e._v(e._s(e.$t("notice.aiDecision"))+":")]),t("a-tag",{attrs:{color:e.getDecisionColor(e.detailNotice.payload.final_decision)}},[e._v(" "+e._s(e.detailNotice.payload.final_decision)+" ")]),e.detailNotice.payload.confidence?t("span",{staticClass:"confidence"},[e._v(" ("+e._s(e.$t("notice.confidence"))+": "+e._s(e.detailNotice.payload.confidence)+"%) ")]):e._e()],1):e._e(),e.detailNotice.payload.reasoning?t("div",{staticClass:"extra-item"},[t("span",{staticClass:"label"},[e._v(e._s(e.$t("notice.reasoning"))+":")]),t("span",{staticClass:"value"},[e._v(e._s(e.detailNotice.payload.reasoning))])]):e._e()]:e._e(),"price_alert"===e.detailNotice.signal_type?[e.detailNotice.payload.symbol?t("div",{staticClass:"extra-item"},[t("span",{staticClass:"label"},[e._v(e._s(e.$t("notice.symbol"))+":")]),t("span",{staticClass:"value"},[e._v(e._s(e.detailNotice.payload.symbol))])]):e._e(),e.detailNotice.payload.price?t("div",{staticClass:"extra-item"},[t("span",{staticClass:"label"},[e._v(e._s(e.$t("notice.currentPrice"))+":")]),t("span",{staticClass:"value"},[e._v("$"+e._s(e.detailNotice.payload.price))])]):e._e(),e.detailNotice.payload.trigger_price?t("div",{staticClass:"extra-item"},[t("span",{staticClass:"label"},[e._v(e._s(e.$t("notice.triggerPrice"))+":")]),t("span",{staticClass:"value"},[e._v("$"+e._s(e.detailNotice.payload.trigger_price))])]):e._e()]:e._e(),"signal"===e.detailNotice.signal_type||"trade"===e.detailNotice.signal_type?[e.detailNotice.payload.symbol?t("div",{staticClass:"extra-item"},[t("span",{staticClass:"label"},[e._v(e._s(e.$t("notice.symbol"))+":")]),t("span",{staticClass:"value"},[e._v(e._s(e.detailNotice.payload.symbol))])]):e._e(),e.detailNotice.payload.action?t("div",{staticClass:"extra-item"},[t("span",{staticClass:"label"},[e._v(e._s(e.$t("notice.action"))+":")]),t("a-tag",{attrs:{color:"BUY"===e.detailNotice.payload.action?"green":"red"}},[e._v(" "+e._s(e.detailNotice.payload.action)+" ")])],1):e._e(),e.detailNotice.payload.quantity?t("div",{staticClass:"extra-item"},[t("span",{staticClass:"label"},[e._v(e._s(e.$t("notice.quantity"))+":")]),t("span",{staticClass:"value"},[e._v(e._s(e.detailNotice.payload.quantity))])]):e._e()]:e._e()],2)]:e._e(),t("div",{staticClass:"notice-detail-actions"},[e.detailNotice.payload&&e.detailNotice.payload.monitor_id?t("a-button",{attrs:{type:"primary"},on:{click:e.goToPortfolio}},[t("a-icon",{attrs:{type:"fund"}}),e._v(" "+e._s(e.$t("notice.viewPortfolio"))+" ")],1):e._e(),t("a-button",{on:{click:function(t){e.detailVisible=!1}}},[e._v(" "+e._s(e.$t("notice.close"))+" ")])],1)],2):e._e()])],1)},Te=[],Pe=a(2403),Ce=a(81127),Re=a(56252),Ee=a(36911),Ie=a(75769),Me={name:"HeaderNotice",data:function(){return{loading:!1,visible:!1,detailVisible:!1,detailNotice:null,notifications:[],unreadTotal:0,lastFetchId:0,pollingTimer:null}},computed:{unreadCount:function(){return Number(this.unreadTotal||0)},isHtmlReport:function(){return!(!this.detailNotice||!this.detailNotice.message)&&(this.detailNotice.message.includes('
')||this.detailNotice.message.includes("