# Personal Stock Agent 统一个人股票监控 MVP,支持 A股、港股、美股自选股,按日生成监控报告。数据接口固定使用 IPADS Responses API,密钥从 `.env` 的 `IPADS_API_KEY` 读取。 ## Run ```bash npm install npm run dev ``` Frontend: http://127.0.0.1:5173 Backend: http://127.0.0.1:8787 LAN access: ```bash HOST=0.0.0.0 CLIENT_PORT=5174 PORT=8787 npm run dev ``` Open `http://gahow-pc.ipads-lab.se.sjtu.edu.cn:5174` from another device on the same network. ## IPADS API 配置文件: ```env IPADS_API_KEY=your_api_key ``` 固定服务端配置: ```text base_url = "http://tianx.ipads-lab.se.sjtu.edu.cn:8319/v1" wire_api = "responses" env_key = "IPADS_API_KEY" ``` The backend calls: ```text POST http://tianx.ipads-lab.se.sjtu.edu.cn:8319/v1/responses Authorization: Bearer ${IPADS_API_KEY} ``` The response output text must be JSON matching the stock snapshot schema used by the agent. If `IPADS_API_KEY` is blank, the app uses deterministic demo data so the dashboard remains usable. ## Features - Add/remove watchlist symbols such as `600519`, `000001.SZ`, `00700.HK`, `AAPL`, `MSFT.US`. - Normalize symbols into A股、港股、美股 markets. - Generate a daily report with earnings timing, peer stocks, valuation discount/premium, related news, and buy-watch/hold/avoid recommendations. - Refreshes the cached daily report every 24 hours while the backend process is running. - View each watchlist stock with locally cached D/W/M/Y K-line chart data, zoom controls, MA5/MA20/MA60, RSI14, MACD, volume, and cached financial statements. US K-line and quote/research fields use Nasdaq as the fixed data source and target at least 5 years of verified daily OHLCV history when available. - Cache related market context such as sector, liquidity, volatility, drawdown, relative strength, capital flow, sentiment, and risk flags. - Run an agent-backed quantitative analysis across technical, valuation, growth, quality, liquidity, sentiment, and risk factors to classify each stock as buy-watch/hold/avoid. - Add tags to every watchlist stock and filter the watchlist by tag. - In configured provider mode, prompts require verified data and do not permit approximate or fabricated values; missing data is surfaced instead of being filled with synthetic values. - K-line cache updates incrementally: once 5 years of daily bars exist locally, refreshes request only the latest missing window and merge by date. ## Local cache Persistent app data defaults to `./data` and can be moved with: ```env STOCK_AGENT_DATA_DIR=/path/to/stock-agent-data ``` The backend stores watchlist data in `watchlist.json` and per-stock cached snapshot/K-line/financial data under `cache/`.