Commit Graph
42 Commits
Author SHA1 Message Date
wshy 420e0ccd14 Update README.md 2026-07-06 09:57:30 +08:00
wshy 491a61a0e2 Merge pull request #55 from shy3130/feat/tickflow-rate-limits
feat: 自定义数据源扩展 + 限频集中化 (v0.1.80)
2026-07-05 22:58:21 +08:00
wshyandshy3130 e524ea4893 perf: 指标计算移出启动关键路径, 后台异步预热 (#51)
启动时 instruments/index/ETF 同步刷新(<0.1s), enriched 的 compute_indicators
(107万行, 低配Linux 50s+) 推 daemon 线程异步完成。应用秒级 ready, 前端不再
报 ECONNREFUSED。预热期间上层走空表降级, 完成后自动替换缓存。

- repository: _enriched_warming 标志 + warmup 线程 + 懒加载守卫
- main: refresh_cache(background=True) + app.state.indicators_ready
- data API: status 端点加 indicators_ready 字段
- 前端: Data 页指标计算中提示 + 加快轮询

Closes #47

Co-authored-by: shy3130 <shy3130@users.noreply.github.com>
2026-07-04 21:55:03 +08:00
wshy 7827d480a5 Update README.md 2026-07-04 18:51:42 +08:00
wshy a52f1b35f4 Update README.md 2026-07-04 18:47:14 +08:00
wshyandshy3130 a23be3822a chore: add cache startup diagnostics (#49)
Co-authored-by: shy3130 <shy3130@users.noreply.github.com>
2026-07-04 18:42:49 +08:00
wshyandshy3130 57f417e6eb fix(sync): 修复同步卡死在26%及启动期视图注册崩溃 (#47) (#48)
三处根因:

1. 限流逻辑失效 (kline_sync.py ×3, index_sync.py ×2)
   条件 `len(chunks) > rpm` 在 free 档恒为 False (56 chunks < 60 rpm),
   导致节流 sleep 永不执行, 请求密集打出触发服务端限流 → 卡死。
   改为始终按 interval (60/rpm) 节流。

2. 卡死看门狗无法自愈 (pipeline_jobs.py, api/pipeline.py)
   原超时检查只在再次点「同步」时触发, 等待中永不回收。
   抽出 JobStore.reap_stale() (STALE_JOB_TIMEOUT_S=600), 在
   /run 和 /jobs/{id} 轮询端点都调用 — 前端每秒轮询, 10分钟后
   必定自动回收卡死 job, UI 不再永久停在 26%。

3. 启动期视图注册异常捕获不足 (repository.py)
   _register_views 只捕获 duckdb.IOException, 跨版本/平台空目录
   可能抛 CatalogException 等炸掉 lifespan。放宽到 Exception。

Co-authored-by: shy3130 <shy3130@users.noreply.github.com>
2026-07-04 15:53:50 +08:00
wshy 106ff628c6 Update README.md 2026-07-03 14:39:49 +08:00
wshy f4ee8d4a9d Update README.md 2026-07-03 14:10:51 +08:00
wshy e7667fa3e9 Update README.md 2026-07-03 13:50:10 +08:00
wshy 114a52969c Update README.md 2026-07-03 13:43:41 +08:00
wshy 38b5964987 Update README.md 2026-07-03 10:11:59 +08:00
wshy a6ad8665aa Update README.md 2026-07-02 22:29:30 +08:00
wshy c6541569c9 Update README.md 2026-07-01 17:37:01 +08:00
wshy e0e7b2c6a5 Update README.md 2026-07-01 15:03:45 +08:00
wshy 3f5f361361 Update README.md 2026-07-01 15:02:28 +08:00
wshy 83b96e2aeb Update README.md 2026-07-01 14:26:50 +08:00
wshy 163893c5be Update README.md 2026-07-01 14:19:08 +08:00
wshy 190311bfc8 Update README.md 2026-06-30 17:30:32 +08:00
wshy 35b20d6317 Merge pull request #32 from lzwaang/feature/codex-cli-ai-provider
Add Codex CLI AI provider
2026-06-30 10:17:06 +08:00
wshy df5871f44f Merge pull request #33 from shy3130/feat/backtest-warmup-slippage
feat: 回测页加预热期说明徽标与滑点配置
2026-06-29 22:45:46 +08:00
wshy 49e705ab40 Merge pull request #31 from shy3130/feat/v0.1.65-monitor-backtest-webhook
release: v0.1.65 监控增强 + 回测止盈 + 飞书推送
2026-06-29 17:23:05 +08:00
wshy ec30e35991 Merge pull request #29 from shy3130/codex/fix-stock-analysis-ultrawide
fix: expand analysis layouts on ultrawide screens
2026-06-29 17:13:08 +08:00
wshy a8efebbe68 Merge pull request #22 from ldm0206/main
feat: 添加 Docker 镜像构建和推送工作流
2026-06-28 16:08:08 +08:00
wshy acd0a21c12 Merge pull request #21 from shy3130/chore/remove-release-notes
chore: 移除无意义的发布说明文件
2026-06-27 23:44:48 +08:00
wshy a08b07faa2 Merge pull request #20 from shy3130/docs/release-notes-v0.1.60
docs(release): 添加 v0.1.60 发布说明
2026-06-27 23:42:02 +08:00
wshy 31140d62d0 Merge pull request #19 from shy3130/docs/changelog-v0.1.60
docs: add CHANGELOG for v0.1.60
2026-06-27 23:35:57 +08:00
wshy ab9a815306 Merge pull request #18 from shy3130/release/v0.1.60
Release v0.1.60
2026-06-27 23:33:41 +08:00
wshy d0c31a1def Update README.md 2026-06-27 16:22:29 +08:00
wshy 15c5d02922 Update README.md 2026-06-27 16:17:57 +08:00
wshy c878fd4345 Update README.md 2026-06-25 22:45:20 +08:00
wshy 747dd8f514 Merge pull request #13 from shy3130/feat/ai-financial-analysis
feat(financials): AI 财务分析 — 流式生成 + 全局胶囊 + 历史报告
2026-06-25 22:40:15 +08:00
wshy b53c6fdbf1 Add files via upload 2026-06-25 22:37:29 +08:00
wshy 059ab16e98 Update README.md 2026-06-25 17:31:45 +08:00
wshy 76ec644f35 chore(ai): 炸鸡中转站预设移至末尾,优惠 tag 改为赞助 (#12) 2026-06-25 10:57:02 +08:00
wshy 3380f97b3a fix(ai): 随机 UA 按钮可重复点击 (#11)
之前按钮在文本框有内容时被 disabled + onClick 拦截,导致只能生成
一次。移除禁用逻辑,每次点击都覆盖生成新的 UA,符合随机按钮语义。
2026-06-25 10:54:15 +08:00
wshy 7c81a03026 feat(ai): 可配置 User-Agent 绕过 Cloudflare 等 CDN 拦截 (fix #8) (#10)
问题(Issue #8): AI API 反代到 Cloudflare 后,OpenAI SDK 默认 UA
(OpenAI/Python) 被 Bot Fight Mode 拦截,报 'Your request was blocked'。

方案: 后端始终发送浏览器风格 UA,默认内置 Chrome UA(开箱即用);
AI 设置页提供开关 + 随机生成/手动粘贴的自定义 UA。

后端(config.py / settings.py / ai_generator.py / strategy.py):
- 新增 ai_user_agent 配置项,默认桌面 Chrome UA
- 两处 OpenAI client 创建均注入 default_headers={User-Agent}
  (ai_generator 实际生成 + strategy 测试连通性)
- 空 UA 自动回退内置默认,保证默认状态即绕过拦截

前端(api.ts / AI.tsx):
- 自定义 UA 开关:默认关闭(用内置默认),开启才显示输入框
- 随机生成按钮: 产出近期 Chrome 桌面 UA(Win/Mac/Linux 随机)
- 已有自定义 UA 时开关默认开启

不影响直连官方 OpenAI/DeepSeek 的用户(官方不校验 UA)。
2026-06-25 10:49:10 +08:00
wshy acd30dd728 fix(pipeline): free/none 档降级时误调实时行情接口 (#9)
从 expert 切换到 free 档后,本地 kline_daily 仍保留今天实时落盘的数据,
导致 run_now() 中 today_exists=True,误入实时行情覆写分支调
quotes.get_by_universes()。但 free/none 档走 free-api 服务器,无实时行情
端点,调用报错或返回空,当天日K数据可能异常。

根因:分支①只判断「今天有无数据」,未判断「当前档位有无实时行情能力」。
sync_daily_by_quotes 内部也无 capability 守卫。

修复:分支①条件增加 capset.has(Cap.QUOTE_POOL)(starter+ 才有)。
free/none 档降级到 elif latest_daily 分支,用 klines.batch(period='1d')
历史日K接口刷新当天,这是 free 档唯一可用且正确的数据源。
2026-06-25 10:16:34 +08:00
wshy 50db048140 Merge pull request #4 from shy3130/fix/docker-build-and-static-mount
fix(docker): 修复国内网络构建失败与前端静态文件 404
2026-06-24 11:24:51 +08:00
wshy 5c0e5959e9 Update README.md 2026-06-23 18:00:33 +08:00
wshy b918f4e0a0 Update README.md 2026-06-23 17:48:09 +08:00
shy. d4dbe526de Update README.md 2026-06-21 14:21:48 +08:00