feat(ui): split client into Live and Strategy pages and wire new routes

Rebuilds the client into Live (watchlist with charts, fundamentals, news,
quant analysis) and Strategy (backtest runner / precomputed results) pages,
adds the corresponding /api/stocks/:symbol/chart|fundamentals|related|quant
and /api/strategies endpoints, and updates project tooling.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-05-19 23:21:03 +08:00
parent f54041646f
commit 5716267309
10 changed files with 5187 additions and 296 deletions

16
web/package-lock.json generated
View File

@@ -12,6 +12,7 @@
"cors": "^2.8.5",
"dotenv": "^17.4.2",
"express": "^5.1.0",
"lightweight-charts": "^5.2.0",
"lucide-react": "^1.14.0",
"react": "^19.1.1",
"react-dom": "^19.1.1",
@@ -2041,6 +2042,12 @@
"url": "https://opencollective.com/express"
}
},
"node_modules/fancy-canvas": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/fancy-canvas/-/fancy-canvas-2.1.0.tgz",
"integrity": "sha512-nifxXJ95JNLFR2NgRV4/MxVP45G9909wJTEKz5fg/TZS20JJZA6hfgRVh/bC9bwl2zBtBNcYPjiBE4njQHVBwQ==",
"license": "MIT"
},
"node_modules/fdir": {
"version": "6.5.0",
"resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
@@ -2332,6 +2339,15 @@
"node": ">=6"
}
},
"node_modules/lightweight-charts": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/lightweight-charts/-/lightweight-charts-5.2.0.tgz",
"integrity": "sha512-ey3Vas8UhV06ni+LT9TA1nEe4y8So4Mi6CL/oarNHFMyTktz/xy8e8+oh04Q//eO3t6etvFXgayz2fClyFQb5w==",
"license": "Apache-2.0",
"dependencies": {
"fancy-canvas": "2.1.0"
}
},
"node_modules/loupe": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/loupe/-/loupe-3.2.1.tgz",