This commit is contained in:
aaron 2026-04-08 10:15:38 +08:00
parent cbe600215c
commit 9b79a433a4
65 changed files with 363 additions and 390 deletions

View File

@ -1,17 +1,85 @@
"""板块分析 API"""
import logging
from fastapi import APIRouter
from app.config import is_trading_hours
from app.data.tushare_client import tushare_client
from app.data.tencent_client import get_realtime_quotes_batch
from app.engine.recommender import get_latest_sectors
logger = logging.getLogger(__name__)
router = APIRouter(prefix="/api/sectors", tags=["sectors"])
async def _enrich_sectors_realtime(sectors_data: list[dict]) -> list[dict]:
"""盘中时,用腾讯实时行情补充板块涨幅和涨停数"""
if not is_trading_hours():
for s in sectors_data:
s["realtime_pct_change"] = None
s["realtime_limit_up_count"] = None
s["is_realtime"] = False
return sectors_data
# 收集所有板块的成分股代码
sector_members: dict[str, list[str]] = {}
all_codes: list[str] = []
for s in sectors_data:
code = s["sector_code"]
try:
df = tushare_client.get_ths_members(code)
members = df["con_code"].tolist() if not df.empty else []
except Exception:
members = []
sector_members[code] = members
all_codes.extend(members)
if not all_codes:
for s in sectors_data:
s["realtime_pct_change"] = None
s["realtime_limit_up_count"] = None
s["is_realtime"] = True
return sectors_data
# 批量获取实时报价
try:
quotes = await get_realtime_quotes_batch(all_codes)
except Exception:
logger.warning("获取板块实时行情失败,回退到日级数据")
for s in sectors_data:
s["realtime_pct_change"] = None
s["realtime_limit_up_count"] = None
s["is_realtime"] = False
return sectors_data
# 为每个板块计算实时指标
for s in sectors_data:
members = sector_members.get(s["sector_code"], [])
member_quotes = [quotes[c] for c in members if c in quotes]
if member_quotes:
pct_changes = [q.pct_chg for q in member_quotes]
s["realtime_pct_change"] = round(sum(pct_changes) / len(pct_changes), 2)
s["realtime_limit_up_count"] = sum(
1 for q in member_quotes
if q.limit_up and q.price >= q.limit_up * 0.995
)
else:
s["realtime_pct_change"] = None
s["realtime_limit_up_count"] = None
s["is_realtime"] = True
return sectors_data
@router.get("/hot")
async def get_hot_sectors(limit: int = 10):
"""获取热门板块排名(只读缓存,不触发扫描)"""
"""获取热门板块排名(盘中自动补充实时数据"""
sectors = await get_latest_sectors()
return [
sectors_data = [
{
"sector_code": s.sector_code,
"sector_name": s.sector_name,
@ -24,3 +92,6 @@ async def get_hot_sectors(limit: int = 10):
}
for s in sectors[:limit]
]
sectors_data = await _enrich_sectors_realtime(sectors_data)
return sectors_data

Binary file not shown.

View File

@ -1,20 +1,69 @@
{
"pages": {
"/page": [
"static/chunks/webpack.js",
"static/chunks/main-app.js",
"static/chunks/app/page.js"
"/_not-found/page": [
"static/chunks/webpack-76aa9cbbdedb6a49.js",
"static/chunks/fd9d1056-f8a2d551cbb94c85.js",
"static/chunks/117-d0aa9486d6cf1a7a.js",
"static/chunks/main-app-7d7e5d1021afd90c.js",
"static/chunks/app/_not-found/page-9a1795a099256da4.js"
],
"/layout": [
"static/chunks/webpack.js",
"static/chunks/main-app.js",
"static/css/app/layout.css",
"static/chunks/app/layout.js"
"static/chunks/webpack-76aa9cbbdedb6a49.js",
"static/chunks/fd9d1056-f8a2d551cbb94c85.js",
"static/chunks/117-d0aa9486d6cf1a7a.js",
"static/chunks/main-app-7d7e5d1021afd90c.js",
"static/css/e86a9d7e539c28dc.css",
"static/chunks/448-92a7b932cf4502ac.js",
"static/chunks/app/layout-97bdd231e78ddf3f.js"
],
"/chat/page": [
"static/chunks/webpack-76aa9cbbdedb6a49.js",
"static/chunks/fd9d1056-f8a2d551cbb94c85.js",
"static/chunks/117-d0aa9486d6cf1a7a.js",
"static/chunks/main-app-7d7e5d1021afd90c.js",
"static/chunks/app/chat/page-2dd3304322bd4036.js"
],
"/recommendations/page": [
"static/chunks/webpack-76aa9cbbdedb6a49.js",
"static/chunks/fd9d1056-f8a2d551cbb94c85.js",
"static/chunks/117-d0aa9486d6cf1a7a.js",
"static/chunks/main-app-7d7e5d1021afd90c.js",
"static/chunks/app/recommendations/page-ea6294fe452e71ef.js"
],
"/page": [
"static/chunks/webpack-76aa9cbbdedb6a49.js",
"static/chunks/fd9d1056-f8a2d551cbb94c85.js",
"static/chunks/117-d0aa9486d6cf1a7a.js",
"static/chunks/main-app-7d7e5d1021afd90c.js",
"static/chunks/app/page-0a611a415022fe45.js"
],
"/stock/[code]/page": [
"static/chunks/webpack-76aa9cbbdedb6a49.js",
"static/chunks/fd9d1056-f8a2d551cbb94c85.js",
"static/chunks/117-d0aa9486d6cf1a7a.js",
"static/chunks/main-app-7d7e5d1021afd90c.js",
"static/chunks/app/stock/[code]/page-aa4270127391b661.js"
],
"/login/page": [
"static/chunks/webpack.js",
"static/chunks/main-app.js",
"static/chunks/app/login/page.js"
"static/chunks/webpack-76aa9cbbdedb6a49.js",
"static/chunks/fd9d1056-f8a2d551cbb94c85.js",
"static/chunks/117-d0aa9486d6cf1a7a.js",
"static/chunks/main-app-7d7e5d1021afd90c.js",
"static/chunks/app/login/page-778febf452923618.js"
],
"/sectors/page": [
"static/chunks/webpack-76aa9cbbdedb6a49.js",
"static/chunks/fd9d1056-f8a2d551cbb94c85.js",
"static/chunks/117-d0aa9486d6cf1a7a.js",
"static/chunks/main-app-7d7e5d1021afd90c.js",
"static/chunks/app/sectors/page-41a82a8a8f795a23.js"
],
"/users/page": [
"static/chunks/webpack-76aa9cbbdedb6a49.js",
"static/chunks/fd9d1056-f8a2d551cbb94c85.js",
"static/chunks/117-d0aa9486d6cf1a7a.js",
"static/chunks/main-app-7d7e5d1021afd90c.js",
"static/chunks/app/users/page-e66e56f48050576b.js"
]
}
}

View File

@ -1,19 +1,32 @@
{
"polyfillFiles": [
"static/chunks/polyfills.js"
"static/chunks/polyfills-42372ed130431b0a.js"
],
"devFiles": [],
"ampDevFiles": [],
"lowPriorityFiles": [
"static/development/_buildManifest.js",
"static/development/_ssgManifest.js"
"static/_K30GhWJ6_9AsiU6iKw4I/_buildManifest.js",
"static/_K30GhWJ6_9AsiU6iKw4I/_ssgManifest.js"
],
"rootMainFiles": [
"static/chunks/webpack.js",
"static/chunks/main-app.js"
"static/chunks/webpack-76aa9cbbdedb6a49.js",
"static/chunks/fd9d1056-f8a2d551cbb94c85.js",
"static/chunks/117-d0aa9486d6cf1a7a.js",
"static/chunks/main-app-7d7e5d1021afd90c.js"
],
"pages": {
"/_app": []
"/_app": [
"static/chunks/webpack-76aa9cbbdedb6a49.js",
"static/chunks/framework-f66176bb897dc684.js",
"static/chunks/main-9c5f6b283127d940.js",
"static/chunks/pages/_app-72b849fbd24ac258.js"
],
"/_error": [
"static/chunks/webpack-76aa9cbbdedb6a49.js",
"static/chunks/framework-f66176bb897dc684.js",
"static/chunks/main-9c5f6b283127d940.js",
"static/chunks/pages/_error-7ba65e1336b92748.js"
]
},
"ampFirstPages": []
}

File diff suppressed because one or more lines are too long

View File

@ -1 +1,20 @@
{}
{
"components/capital-flow.tsx -> echarts": {
"id": 9614,
"files": [
"static/chunks/614.2cf8795c6fba79f8.js"
]
},
"components/kline-chart.tsx -> echarts": {
"id": 9614,
"files": [
"static/chunks/614.2cf8795c6fba79f8.js"
]
},
"components/score-radar.tsx -> echarts": {
"id": 9614,
"files": [
"static/chunks/614.2cf8795c6fba79f8.js"
]
}
}

View File

@ -1,4 +1,11 @@
{
"/_not-found/page": "app/_not-found/page.js",
"/api/chat/stream/route": "app/api/chat/stream/route.js",
"/chat/page": "app/chat/page.js",
"/recommendations/page": "app/recommendations/page.js",
"/page": "app/page.js",
"/login/page": "app/login/page.js"
"/stock/[code]/page": "app/stock/[code]/page.js",
"/login/page": "app/login/page.js",
"/sectors/page": "app/sectors/page.js",
"/users/page": "app/users/page.js"
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,21 +1 @@
self.__BUILD_MANIFEST = {
"polyfillFiles": [
"static/chunks/polyfills.js"
],
"devFiles": [],
"ampDevFiles": [],
"lowPriorityFiles": [],
"rootMainFiles": [
"static/chunks/webpack.js",
"static/chunks/main-app.js"
],
"pages": {
"/_app": []
},
"ampFirstPages": []
};
self.__BUILD_MANIFEST.lowPriorityFiles = [
"/static/" + process.env.__NEXT_BUILD_ID + "/_buildManifest.js",
,"/static/" + process.env.__NEXT_BUILD_ID + "/_ssgManifest.js",
];
self.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],ampDevFiles:[],lowPriorityFiles:[],rootMainFiles:["static/chunks/webpack-76aa9cbbdedb6a49.js","static/chunks/fd9d1056-f8a2d551cbb94c85.js","static/chunks/117-d0aa9486d6cf1a7a.js","static/chunks/main-app-7d7e5d1021afd90c.js"],pages:{"/_app":["static/chunks/webpack-76aa9cbbdedb6a49.js","static/chunks/framework-f66176bb897dc684.js","static/chunks/main-9c5f6b283127d940.js","static/chunks/pages/_app-72b849fbd24ac258.js"],"/_error":["static/chunks/webpack-76aa9cbbdedb6a49.js","static/chunks/framework-f66176bb897dc684.js","static/chunks/main-9c5f6b283127d940.js","static/chunks/pages/_error-7ba65e1336b92748.js"]},ampFirstPages:[]},self.__BUILD_MANIFEST.lowPriorityFiles=["/static/"+process.env.__NEXT_BUILD_ID+"/_buildManifest.js",,"/static/"+process.env.__NEXT_BUILD_ID+"/_ssgManifest.js"];

View File

@ -1 +1 @@
self.__REACT_LOADABLE_MANIFEST="{}"
self.__REACT_LOADABLE_MANIFEST='{"components/capital-flow.tsx -> echarts":{"id":9614,"files":["static/chunks/614.2cf8795c6fba79f8.js"]},"components/kline-chart.tsx -> echarts":{"id":9614,"files":["static/chunks/614.2cf8795c6fba79f8.js"]},"components/score-radar.tsx -> echarts":{"id":9614,"files":["static/chunks/614.2cf8795c6fba79f8.js"]}}';

View File

@ -1 +1 @@
self.__NEXT_FONT_MANIFEST="{\"pages\":{},\"app\":{},\"appUsingSizeAdjust\":false,\"pagesUsingSizeAdjust\":false}"
self.__NEXT_FONT_MANIFEST='{"pages":{},"app":{},"appUsingSizeAdjust":false,"pagesUsingSizeAdjust":false}';

View File

@ -1 +1 @@
{}
{"/_app":"pages/_app.js","/_error":"pages/_error.js","/_document":"pages/_document.js","/404":"pages/404.html"}

View File

@ -1 +1 @@
self.__RSC_SERVER_MANIFEST="{\n \"node\": {},\n \"edge\": {},\n \"encryptionKey\": \"process.env.NEXT_SERVER_ACTIONS_ENCRYPTION_KEY\"\n}"
self.__RSC_SERVER_MANIFEST="{\"node\":{},\"edge\":{},\"encryptionKey\":\"process.env.NEXT_SERVER_ACTIONS_ENCRYPTION_KEY\"}"

View File

@ -1,5 +1 @@
{
"node": {},
"edge": {},
"encryptionKey": "xH2FR5CzDFFBCk70Hv0Eh2K1KDQVALKl6PyIMycwwIw="
}
{"node":{},"edge":{},"encryptionKey":"0i2smImWurCmhv0CX5NVAgoXCo5ZisN2pLRhtFiEWCU="}

View File

@ -1,215 +1 @@
/*
* ATTENTION: An "eval-source-map" devtool has been used.
* This devtool is neither made for production nor for readable output files.
* It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools.
* If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
* or disable the default devtool with "devtool: false".
* If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
*/
/******/ (() => { // webpackBootstrap
/******/ "use strict";
/******/ var __webpack_modules__ = ({});
/************************************************************************/
/******/ // The module cache
/******/ var __webpack_module_cache__ = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/ // Check if module is in cache
/******/ var cachedModule = __webpack_module_cache__[moduleId];
/******/ if (cachedModule !== undefined) {
/******/ return cachedModule.exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = __webpack_module_cache__[moduleId] = {
/******/ id: moduleId,
/******/ loaded: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ var threw = true;
/******/ try {
/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
/******/ threw = false;
/******/ } finally {
/******/ if(threw) delete __webpack_module_cache__[moduleId];
/******/ }
/******/
/******/ // Flag the module as loaded
/******/ module.loaded = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = __webpack_modules__;
/******/
/************************************************************************/
/******/ /* webpack/runtime/compat get default export */
/******/ (() => {
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = (module) => {
/******/ var getter = module && module.__esModule ?
/******/ () => (module['default']) :
/******/ () => (module);
/******/ __webpack_require__.d(getter, { a: getter });
/******/ return getter;
/******/ };
/******/ })();
/******/
/******/ /* webpack/runtime/create fake namespace object */
/******/ (() => {
/******/ var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);
/******/ var leafPrototypes;
/******/ // create a fake namespace object
/******/ // mode & 1: value is a module id, require it
/******/ // mode & 2: merge all properties of value into the ns
/******/ // mode & 4: return value when already ns object
/******/ // mode & 16: return value when it's Promise-like
/******/ // mode & 8|1: behave like require
/******/ __webpack_require__.t = function(value, mode) {
/******/ if(mode & 1) value = this(value);
/******/ if(mode & 8) return value;
/******/ if(typeof value === 'object' && value) {
/******/ if((mode & 4) && value.__esModule) return value;
/******/ if((mode & 16) && typeof value.then === 'function') return value;
/******/ }
/******/ var ns = Object.create(null);
/******/ __webpack_require__.r(ns);
/******/ var def = {};
/******/ leafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];
/******/ for(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {
/******/ Object.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));
/******/ }
/******/ def['default'] = () => (value);
/******/ __webpack_require__.d(ns, def);
/******/ return ns;
/******/ };
/******/ })();
/******/
/******/ /* webpack/runtime/define property getters */
/******/ (() => {
/******/ // define getter functions for harmony exports
/******/ __webpack_require__.d = (exports, definition) => {
/******/ for(var key in definition) {
/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
/******/ }
/******/ }
/******/ };
/******/ })();
/******/
/******/ /* webpack/runtime/ensure chunk */
/******/ (() => {
/******/ __webpack_require__.f = {};
/******/ // This file contains only the entry chunk.
/******/ // The chunk loading function for additional chunks
/******/ __webpack_require__.e = (chunkId) => {
/******/ return Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {
/******/ __webpack_require__.f[key](chunkId, promises);
/******/ return promises;
/******/ }, []));
/******/ };
/******/ })();
/******/
/******/ /* webpack/runtime/get javascript chunk filename */
/******/ (() => {
/******/ // This function allow to reference async chunks and sibling chunks for the entrypoint
/******/ __webpack_require__.u = (chunkId) => {
/******/ // return url for filenames based on template
/******/ return "" + chunkId + ".js";
/******/ };
/******/ })();
/******/
/******/ /* webpack/runtime/getFullHash */
/******/ (() => {
/******/ __webpack_require__.h = () => ("c6db1e0c354f9aa3")
/******/ })();
/******/
/******/ /* webpack/runtime/hasOwnProperty shorthand */
/******/ (() => {
/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
/******/ })();
/******/
/******/ /* webpack/runtime/make namespace object */
/******/ (() => {
/******/ // define __esModule on exports
/******/ __webpack_require__.r = (exports) => {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/ })();
/******/
/******/ /* webpack/runtime/node module decorator */
/******/ (() => {
/******/ __webpack_require__.nmd = (module) => {
/******/ module.paths = [];
/******/ if (!module.children) module.children = [];
/******/ return module;
/******/ };
/******/ })();
/******/
/******/ /* webpack/runtime/startup entrypoint */
/******/ (() => {
/******/ __webpack_require__.X = (result, chunkIds, fn) => {
/******/ // arguments: chunkIds, moduleId are deprecated
/******/ var moduleId = chunkIds;
/******/ if(!fn) chunkIds = result, fn = () => (__webpack_require__(__webpack_require__.s = moduleId));
/******/ chunkIds.map(__webpack_require__.e, __webpack_require__)
/******/ var r = fn();
/******/ return r === undefined ? result : r;
/******/ }
/******/ })();
/******/
/******/ /* webpack/runtime/require chunk loading */
/******/ (() => {
/******/ // no baseURI
/******/
/******/ // object to store loaded chunks
/******/ // "1" means "loaded", otherwise not loaded yet
/******/ var installedChunks = {
/******/ "webpack-runtime": 1
/******/ };
/******/
/******/ // no on chunks loaded
/******/
/******/ var installChunk = (chunk) => {
/******/ var moreModules = chunk.modules, chunkIds = chunk.ids, runtime = chunk.runtime;
/******/ for(var moduleId in moreModules) {
/******/ if(__webpack_require__.o(moreModules, moduleId)) {
/******/ __webpack_require__.m[moduleId] = moreModules[moduleId];
/******/ }
/******/ }
/******/ if(runtime) runtime(__webpack_require__);
/******/ for(var i = 0; i < chunkIds.length; i++)
/******/ installedChunks[chunkIds[i]] = 1;
/******/
/******/ };
/******/
/******/ // require() chunk loading for javascript
/******/ __webpack_require__.f.require = (chunkId, promises) => {
/******/ // "1" is the signal for "already loaded"
/******/ if(!installedChunks[chunkId]) {
/******/ if("webpack-runtime" != chunkId) {
/******/ installChunk(require("./" + __webpack_require__.u(chunkId)));
/******/ } else installedChunks[chunkId] = 1;
/******/ }
/******/ };
/******/
/******/ module.exports = __webpack_require__;
/******/ __webpack_require__.C = installChunk;
/******/
/******/ // no HMR
/******/
/******/ // no HMR manifest
/******/ })();
/******/
/************************************************************************/
/******/
/******/
/******/ })()
;
(()=>{"use strict";var e={},r={};function t(o){var n=r[o];if(void 0!==n)return n.exports;var a=r[o]={exports:{}},u=!0;try{e[o](a,a.exports,t),u=!1}finally{u&&delete r[o]}return a.exports}t.m=e,t.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return t.d(r,{a:r}),r},(()=>{var e,r=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__;t.t=function(o,n){if(1&n&&(o=this(o)),8&n||"object"==typeof o&&o&&(4&n&&o.__esModule||16&n&&"function"==typeof o.then))return o;var a=Object.create(null);t.r(a);var u={};e=e||[null,r({}),r([]),r(r)];for(var f=2&n&&o;"object"==typeof f&&!~e.indexOf(f);f=r(f))Object.getOwnPropertyNames(f).forEach(e=>u[e]=()=>o[e]);return u.default=()=>o,t.d(a,u),a}})(),t.d=(e,r)=>{for(var o in r)t.o(r,o)&&!t.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:r[o]})},t.f={},t.e=e=>Promise.all(Object.keys(t.f).reduce((r,o)=>(t.f[o](e,r),r),[])),t.u=e=>""+e+".js",t.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),t.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.X=(e,r,o)=>{var n=r;o||(r=e,o=()=>t(t.s=n)),r.map(t.e,t);var a=o();return void 0===a?e:a},(()=>{var e={658:1},r=r=>{var o=r.modules,n=r.ids,a=r.runtime;for(var u in o)t.o(o,u)&&(t.m[u]=o[u]);a&&a(t);for(var f=0;f<n.length;f++)e[n[f]]=1};t.f.require=(o,n)=>{e[o]||(658!=o?r(require("./chunks/"+t.u(o))):e[o]=1)},module.exports=t,t.C=r})()})();

View File

@ -1 +1 @@
7F7Bp3IAXK3gasxxiB5x7
_K30GhWJ6_9AsiU6iKw4I

View File

@ -12,31 +12,10 @@
"static/chunks/fd9d1056-f8a2d551cbb94c85.js",
"static/chunks/117-d0aa9486d6cf1a7a.js",
"static/chunks/main-app-7d7e5d1021afd90c.js",
"static/css/fa5094a6607a8c23.css",
"static/css/e86a9d7e539c28dc.css",
"static/chunks/448-92a7b932cf4502ac.js",
"static/chunks/app/layout-97bdd231e78ddf3f.js"
],
"/page": [
"static/chunks/webpack-76aa9cbbdedb6a49.js",
"static/chunks/fd9d1056-f8a2d551cbb94c85.js",
"static/chunks/117-d0aa9486d6cf1a7a.js",
"static/chunks/main-app-7d7e5d1021afd90c.js",
"static/chunks/app/page-5a303311159f23ad.js"
],
"/login/page": [
"static/chunks/webpack-76aa9cbbdedb6a49.js",
"static/chunks/fd9d1056-f8a2d551cbb94c85.js",
"static/chunks/117-d0aa9486d6cf1a7a.js",
"static/chunks/main-app-7d7e5d1021afd90c.js",
"static/chunks/app/login/page-778febf452923618.js"
],
"/recommendations/page": [
"static/chunks/webpack-76aa9cbbdedb6a49.js",
"static/chunks/fd9d1056-f8a2d551cbb94c85.js",
"static/chunks/117-d0aa9486d6cf1a7a.js",
"static/chunks/main-app-7d7e5d1021afd90c.js",
"static/chunks/app/recommendations/page-ef6715bbb27168f0.js"
],
"/chat/page": [
"static/chunks/webpack-76aa9cbbdedb6a49.js",
"static/chunks/fd9d1056-f8a2d551cbb94c85.js",
@ -44,6 +23,20 @@
"static/chunks/main-app-7d7e5d1021afd90c.js",
"static/chunks/app/chat/page-2dd3304322bd4036.js"
],
"/recommendations/page": [
"static/chunks/webpack-76aa9cbbdedb6a49.js",
"static/chunks/fd9d1056-f8a2d551cbb94c85.js",
"static/chunks/117-d0aa9486d6cf1a7a.js",
"static/chunks/main-app-7d7e5d1021afd90c.js",
"static/chunks/app/recommendations/page-ea6294fe452e71ef.js"
],
"/page": [
"static/chunks/webpack-76aa9cbbdedb6a49.js",
"static/chunks/fd9d1056-f8a2d551cbb94c85.js",
"static/chunks/117-d0aa9486d6cf1a7a.js",
"static/chunks/main-app-7d7e5d1021afd90c.js",
"static/chunks/app/page-0a611a415022fe45.js"
],
"/stock/[code]/page": [
"static/chunks/webpack-76aa9cbbdedb6a49.js",
"static/chunks/fd9d1056-f8a2d551cbb94c85.js",
@ -51,19 +44,26 @@
"static/chunks/main-app-7d7e5d1021afd90c.js",
"static/chunks/app/stock/[code]/page-aa4270127391b661.js"
],
"/users/page": [
"/login/page": [
"static/chunks/webpack-76aa9cbbdedb6a49.js",
"static/chunks/fd9d1056-f8a2d551cbb94c85.js",
"static/chunks/117-d0aa9486d6cf1a7a.js",
"static/chunks/main-app-7d7e5d1021afd90c.js",
"static/chunks/app/users/page-e66e56f48050576b.js"
"static/chunks/app/login/page-778febf452923618.js"
],
"/sectors/page": [
"static/chunks/webpack-76aa9cbbdedb6a49.js",
"static/chunks/fd9d1056-f8a2d551cbb94c85.js",
"static/chunks/117-d0aa9486d6cf1a7a.js",
"static/chunks/main-app-7d7e5d1021afd90c.js",
"static/chunks/app/sectors/page-2f0e16a2b83354cf.js"
"static/chunks/app/sectors/page-41a82a8a8f795a23.js"
],
"/users/page": [
"static/chunks/webpack-76aa9cbbdedb6a49.js",
"static/chunks/fd9d1056-f8a2d551cbb94c85.js",
"static/chunks/117-d0aa9486d6cf1a7a.js",
"static/chunks/main-app-7d7e5d1021afd90c.js",
"static/chunks/app/users/page-e66e56f48050576b.js"
]
}
}

View File

@ -1 +1 @@
{"/_not-found/page":"/_not-found","/api/chat/stream/route":"/api/chat/stream","/page":"/","/login/page":"/login","/recommendations/page":"/recommendations","/chat/page":"/chat","/stock/[code]/page":"/stock/[code]","/users/page":"/users","/sectors/page":"/sectors"}
{"/_not-found/page":"/_not-found","/api/chat/stream/route":"/api/chat/stream","/chat/page":"/chat","/recommendations/page":"/recommendations","/page":"/","/stock/[code]/page":"/stock/[code]","/login/page":"/login","/sectors/page":"/sectors","/users/page":"/users"}

View File

@ -5,8 +5,8 @@
"devFiles": [],
"ampDevFiles": [],
"lowPriorityFiles": [
"static/7F7Bp3IAXK3gasxxiB5x7/_buildManifest.js",
"static/7F7Bp3IAXK3gasxxiB5x7/_ssgManifest.js"
"static/_K30GhWJ6_9AsiU6iKw4I/_buildManifest.js",
"static/_K30GhWJ6_9AsiU6iKw4I/_ssgManifest.js"
],
"rootMainFiles": [
"static/chunks/webpack-76aa9cbbdedb6a49.js",

View File

@ -1 +1 @@
{"version":4,"routes":{"/recommendations":{"experimentalBypassFor":[{"type":"header","key":"Next-Action"},{"type":"header","key":"content-type","value":"multipart/form-data;.*"}],"initialRevalidateSeconds":false,"srcRoute":"/recommendations","dataRoute":"/recommendations.rsc"},"/sectors":{"experimentalBypassFor":[{"type":"header","key":"Next-Action"},{"type":"header","key":"content-type","value":"multipart/form-data;.*"}],"initialRevalidateSeconds":false,"srcRoute":"/sectors","dataRoute":"/sectors.rsc"},"/chat":{"experimentalBypassFor":[{"type":"header","key":"Next-Action"},{"type":"header","key":"content-type","value":"multipart/form-data;.*"}],"initialRevalidateSeconds":false,"srcRoute":"/chat","dataRoute":"/chat.rsc"},"/login":{"experimentalBypassFor":[{"type":"header","key":"Next-Action"},{"type":"header","key":"content-type","value":"multipart/form-data;.*"}],"initialRevalidateSeconds":false,"srcRoute":"/login","dataRoute":"/login.rsc"},"/":{"experimentalBypassFor":[{"type":"header","key":"Next-Action"},{"type":"header","key":"content-type","value":"multipart/form-data;.*"}],"initialRevalidateSeconds":false,"srcRoute":"/","dataRoute":"/index.rsc"},"/users":{"experimentalBypassFor":[{"type":"header","key":"Next-Action"},{"type":"header","key":"content-type","value":"multipart/form-data;.*"}],"initialRevalidateSeconds":false,"srcRoute":"/users","dataRoute":"/users.rsc"}},"dynamicRoutes":{},"notFoundRoutes":[],"preview":{"previewModeId":"232cbc0519f918c50d5ebfad263518c8","previewModeSigningKey":"aeab0da2c8c7d0fe34fde3ec98ed08f345c4680747a96e026c497689c04c3b2c","previewModeEncryptionKey":"8427ba5aff5743cb84520bd4300ad8ab961f43179e418f6e5fc0e4d970c316a8"}}
{"version":4,"routes":{"/chat":{"experimentalBypassFor":[{"type":"header","key":"Next-Action"},{"type":"header","key":"content-type","value":"multipart/form-data;.*"}],"initialRevalidateSeconds":false,"srcRoute":"/chat","dataRoute":"/chat.rsc"},"/recommendations":{"experimentalBypassFor":[{"type":"header","key":"Next-Action"},{"type":"header","key":"content-type","value":"multipart/form-data;.*"}],"initialRevalidateSeconds":false,"srcRoute":"/recommendations","dataRoute":"/recommendations.rsc"},"/users":{"experimentalBypassFor":[{"type":"header","key":"Next-Action"},{"type":"header","key":"content-type","value":"multipart/form-data;.*"}],"initialRevalidateSeconds":false,"srcRoute":"/users","dataRoute":"/users.rsc"},"/sectors":{"experimentalBypassFor":[{"type":"header","key":"Next-Action"},{"type":"header","key":"content-type","value":"multipart/form-data;.*"}],"initialRevalidateSeconds":false,"srcRoute":"/sectors","dataRoute":"/sectors.rsc"},"/":{"experimentalBypassFor":[{"type":"header","key":"Next-Action"},{"type":"header","key":"content-type","value":"multipart/form-data;.*"}],"initialRevalidateSeconds":false,"srcRoute":"/","dataRoute":"/index.rsc"},"/login":{"experimentalBypassFor":[{"type":"header","key":"Next-Action"},{"type":"header","key":"content-type","value":"multipart/form-data;.*"}],"initialRevalidateSeconds":false,"srcRoute":"/login","dataRoute":"/login.rsc"}},"dynamicRoutes":{},"notFoundRoutes":[],"preview":{"previewModeId":"8547b4d6bd07c1a0934710c90bdede15","previewModeSigningKey":"36e0939eb486f730c916a7e3e77af74ddfc3ec384014725fc7402b58ead8676e","previewModeEncryptionKey":"279035d2207a991e6fc2fd441297e3df0ba2804375daea99bf2e7b07b26254b8"}}

View File

@ -1 +1 @@
{"version":1,"config":{"env":{},"webpack":null,"eslint":{"ignoreDuringBuilds":false},"typescript":{"ignoreBuildErrors":false,"tsconfigPath":"tsconfig.json"},"distDir":".next","cleanDistDir":true,"assetPrefix":"","cacheMaxMemorySize":52428800,"configOrigin":"next.config.js","useFileSystemPublicRoutes":true,"generateEtags":true,"pageExtensions":["tsx","ts","jsx","js"],"poweredByHeader":true,"compress":true,"analyticsId":"","images":{"deviceSizes":[640,750,828,1080,1200,1920,2048,3840],"imageSizes":[16,32,48,64,96,128,256,384],"path":"/_next/image","loader":"default","loaderFile":"","domains":[],"disableStaticImages":false,"minimumCacheTTL":60,"formats":["image/webp"],"dangerouslyAllowSVG":false,"contentSecurityPolicy":"script-src 'none'; frame-src 'none'; sandbox;","contentDispositionType":"inline","remotePatterns":[],"unoptimized":false},"devIndicators":{"buildActivity":true,"buildActivityPosition":"bottom-right"},"onDemandEntries":{"maxInactiveAge":60000,"pagesBufferLength":5},"amp":{"canonicalBase":""},"basePath":"","sassOptions":{},"trailingSlash":false,"i18n":null,"productionBrowserSourceMaps":false,"optimizeFonts":true,"excludeDefaultMomentLocales":true,"serverRuntimeConfig":{},"publicRuntimeConfig":{},"reactProductionProfiling":false,"reactStrictMode":null,"httpAgentOptions":{"keepAlive":true},"outputFileTracing":true,"staticPageGenerationTimeout":60,"swcMinify":true,"output":"standalone","modularizeImports":{"@mui/icons-material":{"transform":"@mui/icons-material/{{member}}"},"lodash":{"transform":"lodash/{{member}}"}},"experimental":{"multiZoneDraftMode":false,"prerenderEarlyExit":false,"serverMinification":true,"serverSourceMaps":false,"linkNoTouchStart":false,"caseSensitiveRoutes":false,"clientRouterFilter":true,"clientRouterFilterRedirects":false,"fetchCacheKeyPrefix":"","middlewarePrefetch":"flexible","optimisticClientCache":true,"manualClientBasePath":false,"cpus":9,"memoryBasedWorkersCount":false,"isrFlushToDisk":true,"workerThreads":false,"optimizeCss":false,"nextScriptWorkers":false,"scrollRestoration":false,"externalDir":false,"disableOptimizedLoading":false,"gzipSize":true,"craCompat":false,"esmExternals":true,"fullySpecified":false,"outputFileTracingRoot":"/Users/aaron/source_code/astock-agent/frontend","swcTraceProfiling":false,"forceSwcTransforms":false,"largePageDataBytes":128000,"adjustFontFallbacks":false,"adjustFontFallbacksWithSizeAdjust":false,"typedRoutes":false,"instrumentationHook":false,"bundlePagesExternals":false,"parallelServerCompiles":false,"parallelServerBuildTraces":false,"ppr":false,"missingSuspenseWithCSRBailout":true,"optimizeServerReact":true,"useEarlyImport":false,"staleTimes":{"dynamic":30,"static":300},"optimizePackageImports":["lucide-react","date-fns","lodash-es","ramda","antd","react-bootstrap","ahooks","@ant-design/icons","@headlessui/react","@headlessui-float/react","@heroicons/react/20/solid","@heroicons/react/24/solid","@heroicons/react/24/outline","@visx/visx","@tremor/react","rxjs","@mui/material","@mui/icons-material","recharts","react-use","@material-ui/core","@material-ui/icons","@tabler/icons-react","mui-core","react-icons/ai","react-icons/bi","react-icons/bs","react-icons/cg","react-icons/ci","react-icons/di","react-icons/fa","react-icons/fa6","react-icons/fc","react-icons/fi","react-icons/gi","react-icons/go","react-icons/gr","react-icons/hi","react-icons/hi2","react-icons/im","react-icons/io","react-icons/io5","react-icons/lia","react-icons/lib","react-icons/lu","react-icons/md","react-icons/pi","react-icons/ri","react-icons/rx","react-icons/si","react-icons/sl","react-icons/tb","react-icons/tfi","react-icons/ti","react-icons/vsc","react-icons/wi"],"trustHostHeader":false,"isExperimentalCompile":false},"configFileName":"next.config.js","_originalRewrites":{"beforeFiles":[],"afterFiles":[{"source":"/api/:path*","destination":"http://backend:8000/api/:path*"},{"source":"/ws","destination":"http://backend:8000/ws"}],"fallback":[]}},"appDir":"/Users/aaron/source_code/astock-agent/frontend","relativeAppDir":"","files":[".next/routes-manifest.json",".next/server/pages-manifest.json",".next/build-manifest.json",".next/prerender-manifest.json",".next/server/middleware-manifest.json",".next/server/middleware-build-manifest.js",".next/server/middleware-react-loadable-manifest.js",".next/server/app-paths-manifest.json",".next/app-path-routes-manifest.json",".next/app-build-manifest.json",".next/server/server-reference-manifest.js",".next/server/server-reference-manifest.json",".next/react-loadable-manifest.json",".next/server/font-manifest.json",".next/BUILD_ID",".next/server/next-font-manifest.js",".next/server/next-font-manifest.json"],"ignore":["node_modules/next/dist/compiled/@ampproject/toolbox-optimizer/**/*"]}
{"version":1,"config":{"env":{},"webpack":null,"eslint":{"ignoreDuringBuilds":false},"typescript":{"ignoreBuildErrors":false,"tsconfigPath":"tsconfig.json"},"distDir":".next","cleanDistDir":true,"assetPrefix":"","cacheMaxMemorySize":52428800,"configOrigin":"next.config.js","useFileSystemPublicRoutes":true,"generateEtags":true,"pageExtensions":["tsx","ts","jsx","js"],"poweredByHeader":true,"compress":true,"analyticsId":"","images":{"deviceSizes":[640,750,828,1080,1200,1920,2048,3840],"imageSizes":[16,32,48,64,96,128,256,384],"path":"/_next/image","loader":"default","loaderFile":"","domains":[],"disableStaticImages":false,"minimumCacheTTL":60,"formats":["image/webp"],"dangerouslyAllowSVG":false,"contentSecurityPolicy":"script-src 'none'; frame-src 'none'; sandbox;","contentDispositionType":"inline","remotePatterns":[],"unoptimized":false},"devIndicators":{"buildActivity":true,"buildActivityPosition":"bottom-right"},"onDemandEntries":{"maxInactiveAge":60000,"pagesBufferLength":5},"amp":{"canonicalBase":""},"basePath":"","sassOptions":{},"trailingSlash":false,"i18n":null,"productionBrowserSourceMaps":false,"optimizeFonts":true,"excludeDefaultMomentLocales":true,"serverRuntimeConfig":{},"publicRuntimeConfig":{},"reactProductionProfiling":false,"reactStrictMode":null,"httpAgentOptions":{"keepAlive":true},"outputFileTracing":true,"staticPageGenerationTimeout":60,"swcMinify":true,"output":"standalone","modularizeImports":{"@mui/icons-material":{"transform":"@mui/icons-material/{{member}}"},"lodash":{"transform":"lodash/{{member}}"}},"experimental":{"multiZoneDraftMode":false,"prerenderEarlyExit":false,"serverMinification":true,"serverSourceMaps":false,"linkNoTouchStart":false,"caseSensitiveRoutes":false,"clientRouterFilter":true,"clientRouterFilterRedirects":false,"fetchCacheKeyPrefix":"","middlewarePrefetch":"flexible","optimisticClientCache":true,"manualClientBasePath":false,"cpus":9,"memoryBasedWorkersCount":false,"isrFlushToDisk":true,"workerThreads":false,"optimizeCss":false,"nextScriptWorkers":false,"scrollRestoration":false,"externalDir":false,"disableOptimizedLoading":false,"gzipSize":true,"craCompat":false,"esmExternals":true,"fullySpecified":false,"outputFileTracingRoot":"/Users/aaron/source_code/astock-agent/frontend","swcTraceProfiling":false,"forceSwcTransforms":false,"largePageDataBytes":128000,"adjustFontFallbacks":false,"adjustFontFallbacksWithSizeAdjust":false,"typedRoutes":false,"instrumentationHook":false,"bundlePagesExternals":false,"parallelServerCompiles":false,"parallelServerBuildTraces":false,"ppr":false,"missingSuspenseWithCSRBailout":true,"optimizeServerReact":true,"useEarlyImport":false,"staleTimes":{"dynamic":30,"static":300},"optimizePackageImports":["lucide-react","date-fns","lodash-es","ramda","antd","react-bootstrap","ahooks","@ant-design/icons","@headlessui/react","@headlessui-float/react","@heroicons/react/20/solid","@heroicons/react/24/solid","@heroicons/react/24/outline","@visx/visx","@tremor/react","rxjs","@mui/material","@mui/icons-material","recharts","react-use","@material-ui/core","@material-ui/icons","@tabler/icons-react","mui-core","react-icons/ai","react-icons/bi","react-icons/bs","react-icons/cg","react-icons/ci","react-icons/di","react-icons/fa","react-icons/fa6","react-icons/fc","react-icons/fi","react-icons/gi","react-icons/go","react-icons/gr","react-icons/hi","react-icons/hi2","react-icons/im","react-icons/io","react-icons/io5","react-icons/lia","react-icons/lib","react-icons/lu","react-icons/md","react-icons/pi","react-icons/ri","react-icons/rx","react-icons/si","react-icons/sl","react-icons/tb","react-icons/tfi","react-icons/ti","react-icons/vsc","react-icons/wi"],"trustHostHeader":false,"isExperimentalCompile":false},"configFileName":"next.config.js","_originalRewrites":{"beforeFiles":[],"afterFiles":[{"source":"/api/:path*","destination":"http://localhost:8000/api/:path*"},{"source":"/ws","destination":"http://localhost:8000/ws"}],"fallback":[]}},"appDir":"/Users/aaron/source_code/astock-agent/frontend","relativeAppDir":"","files":[".next/routes-manifest.json",".next/server/pages-manifest.json",".next/build-manifest.json",".next/prerender-manifest.json",".next/server/middleware-manifest.json",".next/server/middleware-build-manifest.js",".next/server/middleware-react-loadable-manifest.js",".next/server/app-paths-manifest.json",".next/app-path-routes-manifest.json",".next/app-build-manifest.json",".next/server/server-reference-manifest.js",".next/server/server-reference-manifest.json",".next/react-loadable-manifest.json",".next/server/font-manifest.json",".next/BUILD_ID",".next/server/next-font-manifest.js",".next/server/next-font-manifest.json"],"ignore":["node_modules/next/dist/compiled/@ampproject/toolbox-optimizer/**/*"]}

View File

@ -1 +1 @@
{"version":3,"pages404":true,"caseSensitive":false,"basePath":"","redirects":[{"source":"/:path+/","destination":"/:path+","internal":true,"statusCode":308,"regex":"^(?:/((?:[^/]+?)(?:/(?:[^/]+?))*))/$"}],"headers":[],"dynamicRoutes":[{"page":"/stock/[code]","regex":"^/stock/([^/]+?)(?:/)?$","routeKeys":{"nxtPcode":"nxtPcode"},"namedRegex":"^/stock/(?<nxtPcode>[^/]+?)(?:/)?$"}],"staticRoutes":[{"page":"/","regex":"^/(?:/)?$","routeKeys":{},"namedRegex":"^/(?:/)?$"},{"page":"/_not-found","regex":"^/_not\\-found(?:/)?$","routeKeys":{},"namedRegex":"^/_not\\-found(?:/)?$"},{"page":"/chat","regex":"^/chat(?:/)?$","routeKeys":{},"namedRegex":"^/chat(?:/)?$"},{"page":"/login","regex":"^/login(?:/)?$","routeKeys":{},"namedRegex":"^/login(?:/)?$"},{"page":"/recommendations","regex":"^/recommendations(?:/)?$","routeKeys":{},"namedRegex":"^/recommendations(?:/)?$"},{"page":"/sectors","regex":"^/sectors(?:/)?$","routeKeys":{},"namedRegex":"^/sectors(?:/)?$"},{"page":"/users","regex":"^/users(?:/)?$","routeKeys":{},"namedRegex":"^/users(?:/)?$"}],"dataRoutes":[],"rsc":{"header":"RSC","varyHeader":"RSC, Next-Router-State-Tree, Next-Router-Prefetch","prefetchHeader":"Next-Router-Prefetch","didPostponeHeader":"x-nextjs-postponed","contentTypeHeader":"text/x-component","suffix":".rsc","prefetchSuffix":".prefetch.rsc"},"rewrites":[{"source":"/api/:path*","destination":"http://backend:8000/api/:path*","regex":"^/api(?:/((?:[^/]+?)(?:/(?:[^/]+?))*))?(?:/)?$"},{"source":"/ws","destination":"http://backend:8000/ws","regex":"^/ws(?:/)?$"}]}
{"version":3,"pages404":true,"caseSensitive":false,"basePath":"","redirects":[{"source":"/:path+/","destination":"/:path+","internal":true,"statusCode":308,"regex":"^(?:/((?:[^/]+?)(?:/(?:[^/]+?))*))/$"}],"headers":[],"dynamicRoutes":[{"page":"/stock/[code]","regex":"^/stock/([^/]+?)(?:/)?$","routeKeys":{"nxtPcode":"nxtPcode"},"namedRegex":"^/stock/(?<nxtPcode>[^/]+?)(?:/)?$"}],"staticRoutes":[{"page":"/","regex":"^/(?:/)?$","routeKeys":{},"namedRegex":"^/(?:/)?$"},{"page":"/_not-found","regex":"^/_not\\-found(?:/)?$","routeKeys":{},"namedRegex":"^/_not\\-found(?:/)?$"},{"page":"/chat","regex":"^/chat(?:/)?$","routeKeys":{},"namedRegex":"^/chat(?:/)?$"},{"page":"/login","regex":"^/login(?:/)?$","routeKeys":{},"namedRegex":"^/login(?:/)?$"},{"page":"/recommendations","regex":"^/recommendations(?:/)?$","routeKeys":{},"namedRegex":"^/recommendations(?:/)?$"},{"page":"/sectors","regex":"^/sectors(?:/)?$","routeKeys":{},"namedRegex":"^/sectors(?:/)?$"},{"page":"/users","regex":"^/users(?:/)?$","routeKeys":{},"namedRegex":"^/users(?:/)?$"}],"dataRoutes":[],"rsc":{"header":"RSC","varyHeader":"RSC, Next-Router-State-Tree, Next-Router-Prefetch","prefetchHeader":"Next-Router-Prefetch","didPostponeHeader":"x-nextjs-postponed","contentTypeHeader":"text/x-component","suffix":".rsc","prefetchSuffix":".prefetch.rsc"},"rewrites":[{"source":"/api/:path*","destination":"http://localhost:8000/api/:path*","regex":"^/api(?:/((?:[^/]+?)(?:/(?:[^/]+?))*))?(?:/)?$"},{"source":"/ws","destination":"http://localhost:8000/ws","regex":"^/ws(?:/)?$"}]}

View File

@ -1,11 +1,11 @@
{
"/_not-found/page": "app/_not-found/page.js",
"/api/chat/stream/route": "app/api/chat/stream/route.js",
"/page": "app/page.js",
"/login/page": "app/login/page.js",
"/recommendations/page": "app/recommendations/page.js",
"/chat/page": "app/chat/page.js",
"/recommendations/page": "app/recommendations/page.js",
"/page": "app/page.js",
"/stock/[code]/page": "app/stock/[code]/page.js",
"/users/page": "app/users/page.js",
"/sectors/page": "app/sectors/page.js"
"/login/page": "app/login/page.js",
"/sectors/page": "app/sectors/page.js",
"/users/page": "app/users/page.js"
}

File diff suppressed because one or more lines are too long

View File

@ -9,6 +9,6 @@ c:I[3331,["448","static/chunks/448-92a7b932cf4502ac.js","185","static/chunks/app
9:{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"}
a:{"display":"inline-block"}
b:{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0}
0:["7F7Bp3IAXK3gasxxiB5x7",[[["",{"children":["/_not-found",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["/_not-found",{"children":["__PAGE__",{},[["$L1",[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],null],null],null]},[null,["$","$L2",null,{"parallelRouterKey":"children","segmentPath":["children","/_not-found","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/fa5094a6607a8c23.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"zh-CN","children":["$","body",null,{"className":"min-h-screen bg-bg-primary text-text-primary font-display","children":["$","$L4",null,{"children":["$","$L5",null,{"children":[["$","div",null,{"className":"flex min-h-screen","children":[["$","aside",null,{"className":"hidden md:flex flex-col w-60 glass-sidebar fixed inset-y-0 left-0 z-40","children":[["$","div",null,{"className":"px-6 pt-7 pb-5","children":["$","div",null,{"className":"flex items-center gap-3","children":[["$","div",null,{"className":"w-8 h-8 rounded-lg bg-gradient-to-br from-amber-500 to-amber-600 flex items-center justify-center text-sm font-bold text-white shadow-glow-sm","children":"D"}],["$","div",null,{"children":[["$","h1",null,{"className":"text-sm font-semibold tracking-tight","children":"Dragon AI Agent"}],["$","p",null,{"className":"text-xs text-text-muted mt-0.5 font-light tracking-wide","children":"资金驱动 · 四层漏斗模型"}]]}]]}]}],["$","div",null,{"className":"mx-5 h-px bg-gradient-to-r from-transparent via-white/[0.06] to-transparent"}],["$","$L6",null,{}],["$","div",null,{"className":"px-6 py-5 border-t border-white/[0.04]","children":["$","$L7",null,{}]}]]}],["$","main",null,{"className":"flex-1 md:ml-60 pb-16 md:pb-0 min-h-screen","children":["$","$L2",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":"$8","children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":"$9","children":"404"}],["$","div",null,{"style":"$a","children":["$","h2",null,{"style":"$b","children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]]}],["$","$Lc",null,{}]]}]}]}]}]],null],null],["$Ld",["$","meta",null,{"name":"robots","content":"noindex"}]]]]]
0:["_K30GhWJ6_9AsiU6iKw4I",[[["",{"children":["/_not-found",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["/_not-found",{"children":["__PAGE__",{},[["$L1",[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],null],null],null]},[null,["$","$L2",null,{"parallelRouterKey":"children","segmentPath":["children","/_not-found","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/e86a9d7e539c28dc.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"zh-CN","children":["$","body",null,{"className":"min-h-screen bg-bg-primary text-text-primary font-display","children":["$","$L4",null,{"children":["$","$L5",null,{"children":[["$","div",null,{"className":"flex min-h-screen","children":[["$","aside",null,{"className":"hidden md:flex flex-col w-60 glass-sidebar fixed inset-y-0 left-0 z-40","children":[["$","div",null,{"className":"px-6 pt-7 pb-5","children":["$","div",null,{"className":"flex items-center gap-3","children":[["$","div",null,{"className":"w-8 h-8 rounded-lg bg-gradient-to-br from-amber-500 to-amber-600 flex items-center justify-center text-sm font-bold text-white shadow-glow-sm","children":"D"}],["$","div",null,{"children":[["$","h1",null,{"className":"text-sm font-semibold tracking-tight","children":"Dragon AI Agent"}],["$","p",null,{"className":"text-xs text-text-muted mt-0.5 font-light tracking-wide","children":"资金驱动 · 四层漏斗模型"}]]}]]}]}],["$","div",null,{"className":"mx-5 h-px bg-gradient-to-r from-transparent via-white/[0.06] to-transparent"}],["$","$L6",null,{}],["$","div",null,{"className":"px-6 py-5 border-t border-white/[0.04]","children":["$","$L7",null,{}]}]]}],["$","main",null,{"className":"flex-1 md:ml-60 pb-16 md:pb-0 min-h-screen","children":["$","$L2",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":"$8","children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":"$9","children":"404"}],["$","div",null,{"style":"$a","children":["$","h2",null,{"style":"$b","children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]]}],["$","$Lc",null,{}]]}]}]}]}]],null],null],["$Ld",["$","meta",null,{"name":"robots","content":"noindex"}]]]]]
d:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"Dragon AI Agent"}],["$","meta","3",{"name":"description","content":"基于资金驱动的四层漏斗模型盘中实时分析推荐A股"}]]
1:null

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
"use strict";(()=>{var e={};e.id=480,e.ids=[480],e.modules={399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},4372:(e,t,r)=>{r.r(t),r.d(t,{originalPathname:()=>l,patchFetch:()=>m,requestAsyncStorage:()=>c,routeModule:()=>u,serverHooks:()=>h,staticGenerationAsyncStorage:()=>d});var a={};r.r(a),r.d(a,{POST:()=>p});var o=r(9303),n=r(8716),s=r(670);let i=process.env.BACKEND_URL||"http://localhost:8000";async function p(e){let t=await e.json(),r=e.headers.get("Authorization"),a={"Content-Type":"application/json"};r&&(a.Authorization=r);let o=await fetch(`${i}/api/chat/stream`,{method:"POST",headers:a,body:JSON.stringify(t)});return o.ok?o.body?new Response(o.body,{headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"}}):new Response(JSON.stringify({error:"No response body"}),{status:502,headers:{"Content-Type":"application/json"}}):new Response(JSON.stringify({error:`Backend error: ${o.status}`}),{status:o.status,headers:{"Content-Type":"application/json"}})}let u=new o.AppRouteRouteModule({definition:{kind:n.x.APP_ROUTE,page:"/api/chat/stream/route",pathname:"/api/chat/stream",filename:"route",bundlePath:"app/api/chat/stream/route"},resolvedPagePath:"/Users/aaron/source_code/astock-agent/frontend/src/app/api/chat/stream/route.ts",nextConfigOutput:"standalone",userland:a}),{requestAsyncStorage:c,staticGenerationAsyncStorage:d,serverHooks:h}=u,l="/api/chat/stream/route";function m(){return(0,s.patchFetch)({serverHooks:h,staticGenerationAsyncStorage:d})}},9303:(e,t,r)=>{e.exports=r(517)}};var t=require("../../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),a=t.X(0,[948],()=>r(4372));module.exports=a})();
"use strict";(()=>{var e={};e.id=480,e.ids=[480],e.modules={399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},6373:(e,t,r)=>{r.r(t),r.d(t,{originalPathname:()=>l,patchFetch:()=>m,requestAsyncStorage:()=>c,routeModule:()=>u,serverHooks:()=>h,staticGenerationAsyncStorage:()=>d});var a={};r.r(a),r.d(a,{POST:()=>p});var o=r(9303),n=r(8716),s=r(670);let i=process.env.BACKEND_URL||"http://localhost:8000";async function p(e){let t=await e.json(),r=e.headers.get("Authorization"),a={"Content-Type":"application/json"};r&&(a.Authorization=r);let o=await fetch(`${i}/api/chat/stream`,{method:"POST",headers:a,body:JSON.stringify(t)});return o.ok?o.body?new Response(o.body,{headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"}}):new Response(JSON.stringify({error:"No response body"}),{status:502,headers:{"Content-Type":"application/json"}}):new Response(JSON.stringify({error:`Backend error: ${o.status}`}),{status:o.status,headers:{"Content-Type":"application/json"}})}let u=new o.AppRouteRouteModule({definition:{kind:n.x.APP_ROUTE,page:"/api/chat/stream/route",pathname:"/api/chat/stream",filename:"route",bundlePath:"app/api/chat/stream/route"},resolvedPagePath:"/Users/aaron/source_code/astock-agent/frontend/src/app/api/chat/stream/route.ts",nextConfigOutput:"standalone",userland:a}),{requestAsyncStorage:c,staticGenerationAsyncStorage:d,serverHooks:h}=u,l="/api/chat/stream/route";function m(){return(0,s.patchFetch)({serverHooks:h,staticGenerationAsyncStorage:d})}},9303:(e,t,r)=>{e.exports=r(517)}};var t=require("../../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),a=t.X(0,[948],()=>r(6373));module.exports=a})();

File diff suppressed because one or more lines are too long

View File

@ -7,6 +7,6 @@
8:I[3331,["448","static/chunks/448-92a7b932cf4502ac.js","185","static/chunks/app/layout-97bdd231e78ddf3f.js"],"SidebarNav"]
9:I[5315,["448","static/chunks/448-92a7b932cf4502ac.js","185","static/chunks/app/layout-97bdd231e78ddf3f.js"],"UserMenu"]
a:I[3331,["448","static/chunks/448-92a7b932cf4502ac.js","185","static/chunks/app/layout-97bdd231e78ddf3f.js"],"MobileBottomNav"]
0:["7F7Bp3IAXK3gasxxiB5x7",[[["",{"children":["chat",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["chat",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","chat","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/fa5094a6607a8c23.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"zh-CN","children":["$","body",null,{"className":"min-h-screen bg-bg-primary text-text-primary font-display","children":["$","$L6",null,{"children":["$","$L7",null,{"children":[["$","div",null,{"className":"flex min-h-screen","children":[["$","aside",null,{"className":"hidden md:flex flex-col w-60 glass-sidebar fixed inset-y-0 left-0 z-40","children":[["$","div",null,{"className":"px-6 pt-7 pb-5","children":["$","div",null,{"className":"flex items-center gap-3","children":[["$","div",null,{"className":"w-8 h-8 rounded-lg bg-gradient-to-br from-amber-500 to-amber-600 flex items-center justify-center text-sm font-bold text-white shadow-glow-sm","children":"D"}],["$","div",null,{"children":[["$","h1",null,{"className":"text-sm font-semibold tracking-tight","children":"Dragon AI Agent"}],["$","p",null,{"className":"text-xs text-text-muted mt-0.5 font-light tracking-wide","children":"资金驱动 · 四层漏斗模型"}]]}]]}]}],["$","div",null,{"className":"mx-5 h-px bg-gradient-to-r from-transparent via-white/[0.06] to-transparent"}],["$","$L8",null,{}],["$","div",null,{"className":"px-6 py-5 border-t border-white/[0.04]","children":["$","$L9",null,{}]}]]}],["$","main",null,{"className":"flex-1 md:ml-60 pb-16 md:pb-0 min-h-screen","children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]]}],["$","$La",null,{}]]}]}]}]}]],null],null],["$Lb",null]]]]
0:["_K30GhWJ6_9AsiU6iKw4I",[[["",{"children":["chat",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["chat",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","chat","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/e86a9d7e539c28dc.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"zh-CN","children":["$","body",null,{"className":"min-h-screen bg-bg-primary text-text-primary font-display","children":["$","$L6",null,{"children":["$","$L7",null,{"children":[["$","div",null,{"className":"flex min-h-screen","children":[["$","aside",null,{"className":"hidden md:flex flex-col w-60 glass-sidebar fixed inset-y-0 left-0 z-40","children":[["$","div",null,{"className":"px-6 pt-7 pb-5","children":["$","div",null,{"className":"flex items-center gap-3","children":[["$","div",null,{"className":"w-8 h-8 rounded-lg bg-gradient-to-br from-amber-500 to-amber-600 flex items-center justify-center text-sm font-bold text-white shadow-glow-sm","children":"D"}],["$","div",null,{"children":[["$","h1",null,{"className":"text-sm font-semibold tracking-tight","children":"Dragon AI Agent"}],["$","p",null,{"className":"text-xs text-text-muted mt-0.5 font-light tracking-wide","children":"资金驱动 · 四层漏斗模型"}]]}]]}]}],["$","div",null,{"className":"mx-5 h-px bg-gradient-to-r from-transparent via-white/[0.06] to-transparent"}],["$","$L8",null,{}],["$","div",null,{"className":"px-6 py-5 border-t border-white/[0.04]","children":["$","$L9",null,{}]}]]}],["$","main",null,{"className":"flex-1 md:ml-60 pb-16 md:pb-0 min-h-screen","children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]]}],["$","$La",null,{}]]}]}]}]}]],null],null],["$Lb",null]]]]
b:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"Dragon AI Agent"}],["$","meta","3",{"name":"description","content":"基于资金驱动的四层漏斗模型盘中实时分析推荐A股"}]]
1:null

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,5 +1,5 @@
2:I[9107,[],"ClientPageRoot"]
3:I[7449,["931","static/chunks/app/page-5a303311159f23ad.js"],"default",1]
3:I[7449,["931","static/chunks/app/page-0a611a415022fe45.js"],"default",1]
4:I[8145,["448","static/chunks/448-92a7b932cf4502ac.js","185","static/chunks/app/layout-97bdd231e78ddf3f.js"],"AuthProvider"]
5:I[7182,["448","static/chunks/448-92a7b932cf4502ac.js","185","static/chunks/app/layout-97bdd231e78ddf3f.js"],"AuthGuard"]
6:I[3331,["448","static/chunks/448-92a7b932cf4502ac.js","185","static/chunks/app/layout-97bdd231e78ddf3f.js"],"SidebarNav"]
@ -7,6 +7,6 @@
8:I[4707,[],""]
9:I[6423,[],""]
a:I[3331,["448","static/chunks/448-92a7b932cf4502ac.js","185","static/chunks/app/layout-97bdd231e78ddf3f.js"],"MobileBottomNav"]
0:["7F7Bp3IAXK3gasxxiB5x7",[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],["",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/fa5094a6607a8c23.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"zh-CN","children":["$","body",null,{"className":"min-h-screen bg-bg-primary text-text-primary font-display","children":["$","$L4",null,{"children":["$","$L5",null,{"children":[["$","div",null,{"className":"flex min-h-screen","children":[["$","aside",null,{"className":"hidden md:flex flex-col w-60 glass-sidebar fixed inset-y-0 left-0 z-40","children":[["$","div",null,{"className":"px-6 pt-7 pb-5","children":["$","div",null,{"className":"flex items-center gap-3","children":[["$","div",null,{"className":"w-8 h-8 rounded-lg bg-gradient-to-br from-amber-500 to-amber-600 flex items-center justify-center text-sm font-bold text-white shadow-glow-sm","children":"D"}],["$","div",null,{"children":[["$","h1",null,{"className":"text-sm font-semibold tracking-tight","children":"Dragon AI Agent"}],["$","p",null,{"className":"text-xs text-text-muted mt-0.5 font-light tracking-wide","children":"资金驱动 · 四层漏斗模型"}]]}]]}]}],["$","div",null,{"className":"mx-5 h-px bg-gradient-to-r from-transparent via-white/[0.06] to-transparent"}],["$","$L6",null,{}],["$","div",null,{"className":"px-6 py-5 border-t border-white/[0.04]","children":["$","$L7",null,{}]}]]}],["$","main",null,{"className":"flex-1 md:ml-60 pb-16 md:pb-0 min-h-screen","children":["$","$L8",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L9",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]]}],["$","$La",null,{}]]}]}]}]}]],null],null],["$Lb",null]]]]
0:["_K30GhWJ6_9AsiU6iKw4I",[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],["",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/e86a9d7e539c28dc.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"zh-CN","children":["$","body",null,{"className":"min-h-screen bg-bg-primary text-text-primary font-display","children":["$","$L4",null,{"children":["$","$L5",null,{"children":[["$","div",null,{"className":"flex min-h-screen","children":[["$","aside",null,{"className":"hidden md:flex flex-col w-60 glass-sidebar fixed inset-y-0 left-0 z-40","children":[["$","div",null,{"className":"px-6 pt-7 pb-5","children":["$","div",null,{"className":"flex items-center gap-3","children":[["$","div",null,{"className":"w-8 h-8 rounded-lg bg-gradient-to-br from-amber-500 to-amber-600 flex items-center justify-center text-sm font-bold text-white shadow-glow-sm","children":"D"}],["$","div",null,{"children":[["$","h1",null,{"className":"text-sm font-semibold tracking-tight","children":"Dragon AI Agent"}],["$","p",null,{"className":"text-xs text-text-muted mt-0.5 font-light tracking-wide","children":"资金驱动 · 四层漏斗模型"}]]}]]}]}],["$","div",null,{"className":"mx-5 h-px bg-gradient-to-r from-transparent via-white/[0.06] to-transparent"}],["$","$L6",null,{}],["$","div",null,{"className":"px-6 py-5 border-t border-white/[0.04]","children":["$","$L7",null,{}]}]]}],["$","main",null,{"className":"flex-1 md:ml-60 pb-16 md:pb-0 min-h-screen","children":["$","$L8",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L9",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]]}],["$","$La",null,{}]]}]}]}]}]],null],null],["$Lb",null]]]]
b:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"Dragon AI Agent"}],["$","meta","3",{"name":"description","content":"基于资金驱动的四层漏斗模型盘中实时分析推荐A股"}]]
1:null

File diff suppressed because one or more lines are too long

View File

@ -7,6 +7,6 @@
8:I[3331,["448","static/chunks/448-92a7b932cf4502ac.js","185","static/chunks/app/layout-97bdd231e78ddf3f.js"],"SidebarNav"]
9:I[5315,["448","static/chunks/448-92a7b932cf4502ac.js","185","static/chunks/app/layout-97bdd231e78ddf3f.js"],"UserMenu"]
a:I[3331,["448","static/chunks/448-92a7b932cf4502ac.js","185","static/chunks/app/layout-97bdd231e78ddf3f.js"],"MobileBottomNav"]
0:["7F7Bp3IAXK3gasxxiB5x7",[[["",{"children":["login",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["login",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","login","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/fa5094a6607a8c23.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"zh-CN","children":["$","body",null,{"className":"min-h-screen bg-bg-primary text-text-primary font-display","children":["$","$L6",null,{"children":["$","$L7",null,{"children":[["$","div",null,{"className":"flex min-h-screen","children":[["$","aside",null,{"className":"hidden md:flex flex-col w-60 glass-sidebar fixed inset-y-0 left-0 z-40","children":[["$","div",null,{"className":"px-6 pt-7 pb-5","children":["$","div",null,{"className":"flex items-center gap-3","children":[["$","div",null,{"className":"w-8 h-8 rounded-lg bg-gradient-to-br from-amber-500 to-amber-600 flex items-center justify-center text-sm font-bold text-white shadow-glow-sm","children":"D"}],["$","div",null,{"children":[["$","h1",null,{"className":"text-sm font-semibold tracking-tight","children":"Dragon AI Agent"}],["$","p",null,{"className":"text-xs text-text-muted mt-0.5 font-light tracking-wide","children":"资金驱动 · 四层漏斗模型"}]]}]]}]}],["$","div",null,{"className":"mx-5 h-px bg-gradient-to-r from-transparent via-white/[0.06] to-transparent"}],["$","$L8",null,{}],["$","div",null,{"className":"px-6 py-5 border-t border-white/[0.04]","children":["$","$L9",null,{}]}]]}],["$","main",null,{"className":"flex-1 md:ml-60 pb-16 md:pb-0 min-h-screen","children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]]}],["$","$La",null,{}]]}]}]}]}]],null],null],["$Lb",null]]]]
0:["_K30GhWJ6_9AsiU6iKw4I",[[["",{"children":["login",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["login",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","login","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/e86a9d7e539c28dc.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"zh-CN","children":["$","body",null,{"className":"min-h-screen bg-bg-primary text-text-primary font-display","children":["$","$L6",null,{"children":["$","$L7",null,{"children":[["$","div",null,{"className":"flex min-h-screen","children":[["$","aside",null,{"className":"hidden md:flex flex-col w-60 glass-sidebar fixed inset-y-0 left-0 z-40","children":[["$","div",null,{"className":"px-6 pt-7 pb-5","children":["$","div",null,{"className":"flex items-center gap-3","children":[["$","div",null,{"className":"w-8 h-8 rounded-lg bg-gradient-to-br from-amber-500 to-amber-600 flex items-center justify-center text-sm font-bold text-white shadow-glow-sm","children":"D"}],["$","div",null,{"children":[["$","h1",null,{"className":"text-sm font-semibold tracking-tight","children":"Dragon AI Agent"}],["$","p",null,{"className":"text-xs text-text-muted mt-0.5 font-light tracking-wide","children":"资金驱动 · 四层漏斗模型"}]]}]]}]}],["$","div",null,{"className":"mx-5 h-px bg-gradient-to-r from-transparent via-white/[0.06] to-transparent"}],["$","$L8",null,{}],["$","div",null,{"className":"px-6 py-5 border-t border-white/[0.04]","children":["$","$L9",null,{}]}]]}],["$","main",null,{"className":"flex-1 md:ml-60 pb-16 md:pb-0 min-h-screen","children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]]}],["$","$La",null,{}]]}]}]}]}]],null],null],["$Lb",null]]]]
b:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"Dragon AI Agent"}],["$","meta","3",{"name":"description","content":"基于资金驱动的四层漏斗模型盘中实时分析推荐A股"}]]
1:null

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,5 +1,5 @@
2:I[9107,[],"ClientPageRoot"]
3:I[7773,["70","static/chunks/app/recommendations/page-ef6715bbb27168f0.js"],"default",1]
3:I[7773,["70","static/chunks/app/recommendations/page-ea6294fe452e71ef.js"],"default",1]
4:I[4707,[],""]
5:I[6423,[],""]
6:I[8145,["448","static/chunks/448-92a7b932cf4502ac.js","185","static/chunks/app/layout-97bdd231e78ddf3f.js"],"AuthProvider"]
@ -7,6 +7,6 @@
8:I[3331,["448","static/chunks/448-92a7b932cf4502ac.js","185","static/chunks/app/layout-97bdd231e78ddf3f.js"],"SidebarNav"]
9:I[5315,["448","static/chunks/448-92a7b932cf4502ac.js","185","static/chunks/app/layout-97bdd231e78ddf3f.js"],"UserMenu"]
a:I[3331,["448","static/chunks/448-92a7b932cf4502ac.js","185","static/chunks/app/layout-97bdd231e78ddf3f.js"],"MobileBottomNav"]
0:["7F7Bp3IAXK3gasxxiB5x7",[[["",{"children":["recommendations",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["recommendations",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","recommendations","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/fa5094a6607a8c23.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"zh-CN","children":["$","body",null,{"className":"min-h-screen bg-bg-primary text-text-primary font-display","children":["$","$L6",null,{"children":["$","$L7",null,{"children":[["$","div",null,{"className":"flex min-h-screen","children":[["$","aside",null,{"className":"hidden md:flex flex-col w-60 glass-sidebar fixed inset-y-0 left-0 z-40","children":[["$","div",null,{"className":"px-6 pt-7 pb-5","children":["$","div",null,{"className":"flex items-center gap-3","children":[["$","div",null,{"className":"w-8 h-8 rounded-lg bg-gradient-to-br from-amber-500 to-amber-600 flex items-center justify-center text-sm font-bold text-white shadow-glow-sm","children":"D"}],["$","div",null,{"children":[["$","h1",null,{"className":"text-sm font-semibold tracking-tight","children":"Dragon AI Agent"}],["$","p",null,{"className":"text-xs text-text-muted mt-0.5 font-light tracking-wide","children":"资金驱动 · 四层漏斗模型"}]]}]]}]}],["$","div",null,{"className":"mx-5 h-px bg-gradient-to-r from-transparent via-white/[0.06] to-transparent"}],["$","$L8",null,{}],["$","div",null,{"className":"px-6 py-5 border-t border-white/[0.04]","children":["$","$L9",null,{}]}]]}],["$","main",null,{"className":"flex-1 md:ml-60 pb-16 md:pb-0 min-h-screen","children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]]}],["$","$La",null,{}]]}]}]}]}]],null],null],["$Lb",null]]]]
0:["_K30GhWJ6_9AsiU6iKw4I",[[["",{"children":["recommendations",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["recommendations",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","recommendations","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/e86a9d7e539c28dc.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"zh-CN","children":["$","body",null,{"className":"min-h-screen bg-bg-primary text-text-primary font-display","children":["$","$L6",null,{"children":["$","$L7",null,{"children":[["$","div",null,{"className":"flex min-h-screen","children":[["$","aside",null,{"className":"hidden md:flex flex-col w-60 glass-sidebar fixed inset-y-0 left-0 z-40","children":[["$","div",null,{"className":"px-6 pt-7 pb-5","children":["$","div",null,{"className":"flex items-center gap-3","children":[["$","div",null,{"className":"w-8 h-8 rounded-lg bg-gradient-to-br from-amber-500 to-amber-600 flex items-center justify-center text-sm font-bold text-white shadow-glow-sm","children":"D"}],["$","div",null,{"children":[["$","h1",null,{"className":"text-sm font-semibold tracking-tight","children":"Dragon AI Agent"}],["$","p",null,{"className":"text-xs text-text-muted mt-0.5 font-light tracking-wide","children":"资金驱动 · 四层漏斗模型"}]]}]]}]}],["$","div",null,{"className":"mx-5 h-px bg-gradient-to-r from-transparent via-white/[0.06] to-transparent"}],["$","$L8",null,{}],["$","div",null,{"className":"px-6 py-5 border-t border-white/[0.04]","children":["$","$L9",null,{}]}]]}],["$","main",null,{"className":"flex-1 md:ml-60 pb-16 md:pb-0 min-h-screen","children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]]}],["$","$La",null,{}]]}]}]}]}]],null],null],["$Lb",null]]]]
b:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"Dragon AI Agent"}],["$","meta","3",{"name":"description","content":"基于资金驱动的四层漏斗模型盘中实时分析推荐A股"}]]
1:null

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,5 +1,5 @@
2:I[9107,[],"ClientPageRoot"]
3:I[9314,["542","static/chunks/app/sectors/page-2f0e16a2b83354cf.js"],"default",1]
3:I[9314,["542","static/chunks/app/sectors/page-41a82a8a8f795a23.js"],"default",1]
4:I[4707,[],""]
5:I[6423,[],""]
6:I[8145,["448","static/chunks/448-92a7b932cf4502ac.js","185","static/chunks/app/layout-97bdd231e78ddf3f.js"],"AuthProvider"]
@ -7,6 +7,6 @@
8:I[3331,["448","static/chunks/448-92a7b932cf4502ac.js","185","static/chunks/app/layout-97bdd231e78ddf3f.js"],"SidebarNav"]
9:I[5315,["448","static/chunks/448-92a7b932cf4502ac.js","185","static/chunks/app/layout-97bdd231e78ddf3f.js"],"UserMenu"]
a:I[3331,["448","static/chunks/448-92a7b932cf4502ac.js","185","static/chunks/app/layout-97bdd231e78ddf3f.js"],"MobileBottomNav"]
0:["7F7Bp3IAXK3gasxxiB5x7",[[["",{"children":["sectors",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["sectors",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","sectors","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/fa5094a6607a8c23.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"zh-CN","children":["$","body",null,{"className":"min-h-screen bg-bg-primary text-text-primary font-display","children":["$","$L6",null,{"children":["$","$L7",null,{"children":[["$","div",null,{"className":"flex min-h-screen","children":[["$","aside",null,{"className":"hidden md:flex flex-col w-60 glass-sidebar fixed inset-y-0 left-0 z-40","children":[["$","div",null,{"className":"px-6 pt-7 pb-5","children":["$","div",null,{"className":"flex items-center gap-3","children":[["$","div",null,{"className":"w-8 h-8 rounded-lg bg-gradient-to-br from-amber-500 to-amber-600 flex items-center justify-center text-sm font-bold text-white shadow-glow-sm","children":"D"}],["$","div",null,{"children":[["$","h1",null,{"className":"text-sm font-semibold tracking-tight","children":"Dragon AI Agent"}],["$","p",null,{"className":"text-xs text-text-muted mt-0.5 font-light tracking-wide","children":"资金驱动 · 四层漏斗模型"}]]}]]}]}],["$","div",null,{"className":"mx-5 h-px bg-gradient-to-r from-transparent via-white/[0.06] to-transparent"}],["$","$L8",null,{}],["$","div",null,{"className":"px-6 py-5 border-t border-white/[0.04]","children":["$","$L9",null,{}]}]]}],["$","main",null,{"className":"flex-1 md:ml-60 pb-16 md:pb-0 min-h-screen","children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]]}],["$","$La",null,{}]]}]}]}]}]],null],null],["$Lb",null]]]]
0:["_K30GhWJ6_9AsiU6iKw4I",[[["",{"children":["sectors",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["sectors",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","sectors","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/e86a9d7e539c28dc.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"zh-CN","children":["$","body",null,{"className":"min-h-screen bg-bg-primary text-text-primary font-display","children":["$","$L6",null,{"children":["$","$L7",null,{"children":[["$","div",null,{"className":"flex min-h-screen","children":[["$","aside",null,{"className":"hidden md:flex flex-col w-60 glass-sidebar fixed inset-y-0 left-0 z-40","children":[["$","div",null,{"className":"px-6 pt-7 pb-5","children":["$","div",null,{"className":"flex items-center gap-3","children":[["$","div",null,{"className":"w-8 h-8 rounded-lg bg-gradient-to-br from-amber-500 to-amber-600 flex items-center justify-center text-sm font-bold text-white shadow-glow-sm","children":"D"}],["$","div",null,{"children":[["$","h1",null,{"className":"text-sm font-semibold tracking-tight","children":"Dragon AI Agent"}],["$","p",null,{"className":"text-xs text-text-muted mt-0.5 font-light tracking-wide","children":"资金驱动 · 四层漏斗模型"}]]}]]}]}],["$","div",null,{"className":"mx-5 h-px bg-gradient-to-r from-transparent via-white/[0.06] to-transparent"}],["$","$L8",null,{}],["$","div",null,{"className":"px-6 py-5 border-t border-white/[0.04]","children":["$","$L9",null,{}]}]]}],["$","main",null,{"className":"flex-1 md:ml-60 pb-16 md:pb-0 min-h-screen","children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]]}],["$","$La",null,{}]]}]}]}]}]],null],null],["$Lb",null]]]]
b:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"Dragon AI Agent"}],["$","meta","3",{"name":"description","content":"基于资金驱动的四层漏斗模型盘中实时分析推荐A股"}]]
1:null

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -7,6 +7,6 @@
8:I[3331,["448","static/chunks/448-92a7b932cf4502ac.js","185","static/chunks/app/layout-97bdd231e78ddf3f.js"],"SidebarNav"]
9:I[5315,["448","static/chunks/448-92a7b932cf4502ac.js","185","static/chunks/app/layout-97bdd231e78ddf3f.js"],"UserMenu"]
a:I[3331,["448","static/chunks/448-92a7b932cf4502ac.js","185","static/chunks/app/layout-97bdd231e78ddf3f.js"],"MobileBottomNav"]
0:["7F7Bp3IAXK3gasxxiB5x7",[[["",{"children":["users",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["users",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","users","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/fa5094a6607a8c23.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"zh-CN","children":["$","body",null,{"className":"min-h-screen bg-bg-primary text-text-primary font-display","children":["$","$L6",null,{"children":["$","$L7",null,{"children":[["$","div",null,{"className":"flex min-h-screen","children":[["$","aside",null,{"className":"hidden md:flex flex-col w-60 glass-sidebar fixed inset-y-0 left-0 z-40","children":[["$","div",null,{"className":"px-6 pt-7 pb-5","children":["$","div",null,{"className":"flex items-center gap-3","children":[["$","div",null,{"className":"w-8 h-8 rounded-lg bg-gradient-to-br from-amber-500 to-amber-600 flex items-center justify-center text-sm font-bold text-white shadow-glow-sm","children":"D"}],["$","div",null,{"children":[["$","h1",null,{"className":"text-sm font-semibold tracking-tight","children":"Dragon AI Agent"}],["$","p",null,{"className":"text-xs text-text-muted mt-0.5 font-light tracking-wide","children":"资金驱动 · 四层漏斗模型"}]]}]]}]}],["$","div",null,{"className":"mx-5 h-px bg-gradient-to-r from-transparent via-white/[0.06] to-transparent"}],["$","$L8",null,{}],["$","div",null,{"className":"px-6 py-5 border-t border-white/[0.04]","children":["$","$L9",null,{}]}]]}],["$","main",null,{"className":"flex-1 md:ml-60 pb-16 md:pb-0 min-h-screen","children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]]}],["$","$La",null,{}]]}]}]}]}]],null],null],["$Lb",null]]]]
0:["_K30GhWJ6_9AsiU6iKw4I",[[["",{"children":["users",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["users",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","users","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/e86a9d7e539c28dc.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"zh-CN","children":["$","body",null,{"className":"min-h-screen bg-bg-primary text-text-primary font-display","children":["$","$L6",null,{"children":["$","$L7",null,{"children":[["$","div",null,{"className":"flex min-h-screen","children":[["$","aside",null,{"className":"hidden md:flex flex-col w-60 glass-sidebar fixed inset-y-0 left-0 z-40","children":[["$","div",null,{"className":"px-6 pt-7 pb-5","children":["$","div",null,{"className":"flex items-center gap-3","children":[["$","div",null,{"className":"w-8 h-8 rounded-lg bg-gradient-to-br from-amber-500 to-amber-600 flex items-center justify-center text-sm font-bold text-white shadow-glow-sm","children":"D"}],["$","div",null,{"children":[["$","h1",null,{"className":"text-sm font-semibold tracking-tight","children":"Dragon AI Agent"}],["$","p",null,{"className":"text-xs text-text-muted mt-0.5 font-light tracking-wide","children":"资金驱动 · 四层漏斗模型"}]]}]]}]}],["$","div",null,{"className":"mx-5 h-px bg-gradient-to-r from-transparent via-white/[0.06] to-transparent"}],["$","$L8",null,{}],["$","div",null,{"className":"px-6 py-5 border-t border-white/[0.04]","children":["$","$L9",null,{}]}]]}],["$","main",null,{"className":"flex-1 md:ml-60 pb-16 md:pb-0 min-h-screen","children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]]}],["$","$La",null,{}]]}]}]}]}]],null],null],["$Lb",null]]]]
b:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"Dragon AI Agent"}],["$","meta","3",{"name":"description","content":"基于资金驱动的四层漏斗模型盘中实时分析推荐A股"}]]
1:null

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><title>500: Internal Server Error</title><meta name="next-head-count" content="3"/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-76aa9cbbdedb6a49.js" defer=""></script><script src="/_next/static/chunks/framework-f66176bb897dc684.js" defer=""></script><script src="/_next/static/chunks/main-9c5f6b283127d940.js" defer=""></script><script src="/_next/static/chunks/pages/_app-72b849fbd24ac258.js" defer=""></script><script src="/_next/static/chunks/pages/_error-7ba65e1336b92748.js" defer=""></script><script src="/_next/static/7F7Bp3IAXK3gasxxiB5x7/_buildManifest.js" defer=""></script><script src="/_next/static/7F7Bp3IAXK3gasxxiB5x7/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error<!-- -->.</h2></div></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":500}},"page":"/_error","query":{},"buildId":"7F7Bp3IAXK3gasxxiB5x7","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><title>500: Internal Server Error</title><meta name="next-head-count" content="3"/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-76aa9cbbdedb6a49.js" defer=""></script><script src="/_next/static/chunks/framework-f66176bb897dc684.js" defer=""></script><script src="/_next/static/chunks/main-9c5f6b283127d940.js" defer=""></script><script src="/_next/static/chunks/pages/_app-72b849fbd24ac258.js" defer=""></script><script src="/_next/static/chunks/pages/_error-7ba65e1336b92748.js" defer=""></script><script src="/_next/static/_K30GhWJ6_9AsiU6iKw4I/_buildManifest.js" defer=""></script><script src="/_next/static/_K30GhWJ6_9AsiU6iKw4I/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error<!-- -->.</h2></div></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":500}},"page":"/_error","query":{},"buildId":"_K30GhWJ6_9AsiU6iKw4I","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>

View File

@ -1 +1 @@
{"node":{},"edge":{},"encryptionKey":"//4e4Un3rmQCyKtOC4N3EIPxAWrU1Mgn2/m7eGMBtCI="}
{"node":{},"edge":{},"encryptionKey":"0i2smImWurCmhv0CX5NVAgoXCo5ZisN2pLRhtFiEWCU="}

View File

@ -9,7 +9,7 @@ const currentPort = parseInt(process.env.PORT, 10) || 3000
const hostname = process.env.HOSTNAME || '0.0.0.0'
let keepAliveTimeout = parseInt(process.env.KEEP_ALIVE_TIMEOUT, 10)
const nextConfig = {"env":{},"webpack":null,"eslint":{"ignoreDuringBuilds":false},"typescript":{"ignoreBuildErrors":false,"tsconfigPath":"tsconfig.json"},"distDir":"./.next","cleanDistDir":true,"assetPrefix":"","cacheMaxMemorySize":52428800,"configOrigin":"next.config.js","useFileSystemPublicRoutes":true,"generateEtags":true,"pageExtensions":["tsx","ts","jsx","js"],"poweredByHeader":true,"compress":true,"analyticsId":"","images":{"deviceSizes":[640,750,828,1080,1200,1920,2048,3840],"imageSizes":[16,32,48,64,96,128,256,384],"path":"/_next/image","loader":"default","loaderFile":"","domains":[],"disableStaticImages":false,"minimumCacheTTL":60,"formats":["image/webp"],"dangerouslyAllowSVG":false,"contentSecurityPolicy":"script-src 'none'; frame-src 'none'; sandbox;","contentDispositionType":"inline","remotePatterns":[],"unoptimized":false},"devIndicators":{"buildActivity":true,"buildActivityPosition":"bottom-right"},"onDemandEntries":{"maxInactiveAge":60000,"pagesBufferLength":5},"amp":{"canonicalBase":""},"basePath":"","sassOptions":{},"trailingSlash":false,"i18n":null,"productionBrowserSourceMaps":false,"optimizeFonts":true,"excludeDefaultMomentLocales":true,"serverRuntimeConfig":{},"publicRuntimeConfig":{},"reactProductionProfiling":false,"reactStrictMode":null,"httpAgentOptions":{"keepAlive":true},"outputFileTracing":true,"staticPageGenerationTimeout":60,"swcMinify":true,"output":"standalone","modularizeImports":{"@mui/icons-material":{"transform":"@mui/icons-material/{{member}}"},"lodash":{"transform":"lodash/{{member}}"}},"experimental":{"multiZoneDraftMode":false,"prerenderEarlyExit":false,"serverMinification":true,"serverSourceMaps":false,"linkNoTouchStart":false,"caseSensitiveRoutes":false,"clientRouterFilter":true,"clientRouterFilterRedirects":false,"fetchCacheKeyPrefix":"","middlewarePrefetch":"flexible","optimisticClientCache":true,"manualClientBasePath":false,"cpus":9,"memoryBasedWorkersCount":false,"isrFlushToDisk":true,"workerThreads":false,"optimizeCss":false,"nextScriptWorkers":false,"scrollRestoration":false,"externalDir":false,"disableOptimizedLoading":false,"gzipSize":true,"craCompat":false,"esmExternals":true,"fullySpecified":false,"outputFileTracingRoot":"/Users/aaron/source_code/astock-agent/frontend","swcTraceProfiling":false,"forceSwcTransforms":false,"largePageDataBytes":128000,"adjustFontFallbacks":false,"adjustFontFallbacksWithSizeAdjust":false,"typedRoutes":false,"instrumentationHook":false,"bundlePagesExternals":false,"parallelServerCompiles":false,"parallelServerBuildTraces":false,"ppr":false,"missingSuspenseWithCSRBailout":true,"optimizeServerReact":true,"useEarlyImport":false,"staleTimes":{"dynamic":30,"static":300},"optimizePackageImports":["lucide-react","date-fns","lodash-es","ramda","antd","react-bootstrap","ahooks","@ant-design/icons","@headlessui/react","@headlessui-float/react","@heroicons/react/20/solid","@heroicons/react/24/solid","@heroicons/react/24/outline","@visx/visx","@tremor/react","rxjs","@mui/material","@mui/icons-material","recharts","react-use","@material-ui/core","@material-ui/icons","@tabler/icons-react","mui-core","react-icons/ai","react-icons/bi","react-icons/bs","react-icons/cg","react-icons/ci","react-icons/di","react-icons/fa","react-icons/fa6","react-icons/fc","react-icons/fi","react-icons/gi","react-icons/go","react-icons/gr","react-icons/hi","react-icons/hi2","react-icons/im","react-icons/io","react-icons/io5","react-icons/lia","react-icons/lib","react-icons/lu","react-icons/md","react-icons/pi","react-icons/ri","react-icons/rx","react-icons/si","react-icons/sl","react-icons/tb","react-icons/tfi","react-icons/ti","react-icons/vsc","react-icons/wi"],"trustHostHeader":false,"isExperimentalCompile":false},"configFileName":"next.config.js","_originalRewrites":{"beforeFiles":[],"afterFiles":[{"source":"/api/:path*","destination":"http://backend:8000/api/:path*"},{"source":"/ws","destination":"http://backend:8000/ws"}],"fallback":[]}}
const nextConfig = {"env":{},"webpack":null,"eslint":{"ignoreDuringBuilds":false},"typescript":{"ignoreBuildErrors":false,"tsconfigPath":"tsconfig.json"},"distDir":"./.next","cleanDistDir":true,"assetPrefix":"","cacheMaxMemorySize":52428800,"configOrigin":"next.config.js","useFileSystemPublicRoutes":true,"generateEtags":true,"pageExtensions":["tsx","ts","jsx","js"],"poweredByHeader":true,"compress":true,"analyticsId":"","images":{"deviceSizes":[640,750,828,1080,1200,1920,2048,3840],"imageSizes":[16,32,48,64,96,128,256,384],"path":"/_next/image","loader":"default","loaderFile":"","domains":[],"disableStaticImages":false,"minimumCacheTTL":60,"formats":["image/webp"],"dangerouslyAllowSVG":false,"contentSecurityPolicy":"script-src 'none'; frame-src 'none'; sandbox;","contentDispositionType":"inline","remotePatterns":[],"unoptimized":false},"devIndicators":{"buildActivity":true,"buildActivityPosition":"bottom-right"},"onDemandEntries":{"maxInactiveAge":60000,"pagesBufferLength":5},"amp":{"canonicalBase":""},"basePath":"","sassOptions":{},"trailingSlash":false,"i18n":null,"productionBrowserSourceMaps":false,"optimizeFonts":true,"excludeDefaultMomentLocales":true,"serverRuntimeConfig":{},"publicRuntimeConfig":{},"reactProductionProfiling":false,"reactStrictMode":null,"httpAgentOptions":{"keepAlive":true},"outputFileTracing":true,"staticPageGenerationTimeout":60,"swcMinify":true,"output":"standalone","modularizeImports":{"@mui/icons-material":{"transform":"@mui/icons-material/{{member}}"},"lodash":{"transform":"lodash/{{member}}"}},"experimental":{"multiZoneDraftMode":false,"prerenderEarlyExit":false,"serverMinification":true,"serverSourceMaps":false,"linkNoTouchStart":false,"caseSensitiveRoutes":false,"clientRouterFilter":true,"clientRouterFilterRedirects":false,"fetchCacheKeyPrefix":"","middlewarePrefetch":"flexible","optimisticClientCache":true,"manualClientBasePath":false,"cpus":9,"memoryBasedWorkersCount":false,"isrFlushToDisk":true,"workerThreads":false,"optimizeCss":false,"nextScriptWorkers":false,"scrollRestoration":false,"externalDir":false,"disableOptimizedLoading":false,"gzipSize":true,"craCompat":false,"esmExternals":true,"fullySpecified":false,"outputFileTracingRoot":"/Users/aaron/source_code/astock-agent/frontend","swcTraceProfiling":false,"forceSwcTransforms":false,"largePageDataBytes":128000,"adjustFontFallbacks":false,"adjustFontFallbacksWithSizeAdjust":false,"typedRoutes":false,"instrumentationHook":false,"bundlePagesExternals":false,"parallelServerCompiles":false,"parallelServerBuildTraces":false,"ppr":false,"missingSuspenseWithCSRBailout":true,"optimizeServerReact":true,"useEarlyImport":false,"staleTimes":{"dynamic":30,"static":300},"optimizePackageImports":["lucide-react","date-fns","lodash-es","ramda","antd","react-bootstrap","ahooks","@ant-design/icons","@headlessui/react","@headlessui-float/react","@heroicons/react/20/solid","@heroicons/react/24/solid","@heroicons/react/24/outline","@visx/visx","@tremor/react","rxjs","@mui/material","@mui/icons-material","recharts","react-use","@material-ui/core","@material-ui/icons","@tabler/icons-react","mui-core","react-icons/ai","react-icons/bi","react-icons/bs","react-icons/cg","react-icons/ci","react-icons/di","react-icons/fa","react-icons/fa6","react-icons/fc","react-icons/fi","react-icons/gi","react-icons/go","react-icons/gr","react-icons/hi","react-icons/hi2","react-icons/im","react-icons/io","react-icons/io5","react-icons/lia","react-icons/lib","react-icons/lu","react-icons/md","react-icons/pi","react-icons/ri","react-icons/rx","react-icons/si","react-icons/sl","react-icons/tb","react-icons/tfi","react-icons/ti","react-icons/vsc","react-icons/wi"],"trustHostHeader":false,"isExperimentalCompile":false},"configFileName":"next.config.js","_originalRewrites":{"beforeFiles":[],"afterFiles":[{"source":"/api/:path*","destination":"http://localhost:8000/api/:path*"},{"source":"/ws","destination":"http://localhost:8000/ws"}],"fallback":[]}}
process.env.__NEXT_PRIVATE_STANDALONE_CONFIG = JSON.stringify(nextConfig)

View File

@ -1 +0,0 @@
self.__BUILD_MANIFEST=function(e){return{__rewrites:{afterFiles:[{has:e,source:"/api/:path*",destination:e},{has:e,source:"/ws",destination:e}],beforeFiles:[],fallback:[]},"/_error":["static/chunks/pages/_error-7ba65e1336b92748.js"],sortedPages:["/_app","/_error"]}}(void 0),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();

View File

@ -1 +0,0 @@
self.__SSG_MANIFEST=new Set([]);self.__SSG_MANIFEST_CB&&self.__SSG_MANIFEST_CB()

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,7 +1,7 @@
"use client";
import { useEffect, useState, useCallback } from "react";
import { fetchAPI } from "@/lib/api";
import { fetchAPI, postAPI } from "@/lib/api";
import type { LatestResult } from "@/lib/api";
import StockCard from "@/components/stock-card";
import { useWebSocket } from "@/hooks/use-websocket";
@ -10,6 +10,8 @@ export default function RecommendationsPage() {
const [data, setData] = useState<LatestResult | null>(null);
const [filter, setFilter] = useState<string>("all");
const [llmEnabled, setLlmEnabled] = useState(false);
const [refreshing, setRefreshing] = useState(false);
const [refreshResult, setRefreshResult] = useState<string | null>(null);
const loadData = useCallback(async () => {
try {
@ -34,6 +36,29 @@ export default function RecommendationsPage() {
}, [loadData])
);
const handleRefresh = async () => {
setRefreshing(true);
setRefreshResult(null);
try {
const res = await postAPI<{
status: string;
count: number;
temperature: number;
scan_mode: string;
is_trading: boolean;
}>("/api/recommendations/refresh?scan_session=manual");
const modeLabel = res.scan_mode === "intraday" ? "盘中实时" : "盘后";
setRefreshResult(`${modeLabel}扫描完成,发现 ${res.count} 只股票`);
await loadData();
} catch (e) {
console.error("扫描失败:", e);
setRefreshResult("扫描失败,请重试");
} finally {
setRefreshing(false);
setTimeout(() => setRefreshResult(null), 5000);
}
};
const recs = data?.recommendations ?? [];
const filtered =
filter === "all"
@ -52,8 +77,30 @@ export default function RecommendationsPage() {
<span className="font-mono tabular-nums">{filtered.length}</span>
</p>
</div>
<button
onClick={handleRefresh}
disabled={refreshing}
className="text-xs px-4 py-2 bg-gradient-to-r from-amber-500/20 to-amber-600/15 text-amber-400 rounded-xl hover:from-amber-500/30 hover:to-amber-600/25 disabled:opacity-40 transition-all duration-200 border border-amber-500/10 font-medium"
>
{refreshing ? (
<span className="inline-flex items-center gap-1.5">
<span className="w-3 h-3 border border-amber-400/40 border-t-amber-400 rounded-full animate-spin" />
...
</span>
) : (
"立即扫描"
)}
</button>
</div>
{/* Scan result toast */}
{refreshResult && (
<div className="glass-card-static border-amber-500/15 px-4 py-2.5 text-xs text-amber-400 animate-fade-in-up flex items-center gap-2 mb-5">
<span className="w-1 h-1 rounded-full bg-amber-400" />
{refreshResult}
</div>
)}
{/* Filter tabs */}
<div className="flex gap-2 mb-5 overflow-x-auto pb-1 animate-fade-in-up delay-75">
{[

View File

@ -14,15 +14,27 @@ export default function SectorHeatmap({ sectors }: { sectors: SectorData[] }) {
}
const maxScore = Math.max(...sectors.map((s) => s.heat_score));
const hasRealtime = sectors.some((s) => s.is_realtime);
return (
<div className="glass-card-static p-5">
<h2 className="text-sm font-semibold text-text-muted mb-4"></h2>
<div className="flex items-center gap-2 mb-4">
<h2 className="text-sm font-semibold text-text-muted"></h2>
{hasRealtime && (
<span className="text-[10px] px-1.5 py-0.5 rounded bg-emerald-500/10 text-emerald-400/80">
</span>
)}
</div>
<div className="space-y-2">
{sectors.map((s, index) => {
const intensity = s.heat_score / Math.max(maxScore, 1);
const isUp = s.pct_change > 0;
// 盘中使用实时涨幅,否则用日级涨幅
const displayPct = s.realtime_pct_change ?? s.pct_change;
const isUp = displayPct > 0;
const isTop3 = index < 3;
// 盘中使用实时涨停数
const displayLimitUp = s.realtime_limit_up_count ?? s.limit_up_count;
// Bar width based on score relative to max
const barWidth = `${Math.max(intensity * 100, 15)}%`;
@ -62,9 +74,9 @@ export default function SectorHeatmap({ sectors }: { sectors: SectorData[] }) {
<span className={`text-sm font-medium ${isTop3 ? "text-text-primary" : "text-text-secondary"}`}>
{s.sector_name}
</span>
{s.limit_up_count > 0 && (
{displayLimitUp > 0 && (
<span className="text-xs text-text-muted ml-2">
{s.limit_up_count}
{displayLimitUp}
</span>
)}
</div>
@ -75,8 +87,8 @@ export default function SectorHeatmap({ sectors }: { sectors: SectorData[] }) {
{formatNumber(s.capital_inflow)}
</span>
<span className={`font-mono tabular-nums font-semibold min-w-[60px] text-right ${isUp ? "text-red-400" : "text-emerald-400"}`}>
{s.pct_change > 0 ? "+" : ""}
{s.pct_change.toFixed(2)}%
{displayPct > 0 ? "+" : ""}
{displayPct.toFixed(2)}%
</span>
{/* Heat score pill */}
<span className={`font-mono tabular-nums text-xs font-semibold px-2 py-1 rounded-lg min-w-[36px] text-center ${

View File

@ -120,6 +120,9 @@ export interface SectorData {
limit_up_count: number;
days_continuous: number;
heat_score: number;
realtime_pct_change?: number | null;
realtime_limit_up_count?: number | null;
is_realtime?: boolean;
}
export interface LatestResult {