shy3130
|
a9c00fd567
|
Merge branch 'pr-221' into merge/pr-221-220-219
|
2026-09-01 22:20:01 +08:00 |
|
shy3130
|
fb7785ceb9
|
feat(abnormal,dashboard): 盘中异动聚合、维度 source_field 与板块分时端点
- abnormal_moves 新增 build_intraday: enriched 七类当日信号聚合,
优先级(涨停>炸板>翘板>跌停>新高>新低>放量)+涨跌幅排序, GET /api/abnormal/intraday
- 维度排名项携带 group_source 与 source_field(configId.field),
前端可精确判定概念/行业而非字符串包含
- ext_data 新增 dimension-intraday: 成分股×当日分钟分区等权聚合,
prev_close 优先/首根退化基准、成分网格化 ffill、全市场对照线,
小数制涨跌幅契约、60s 进程内缓存、点击触发不预计算
- 板块分时 7 测 + 盘中异动 4 测
|
2026-08-30 19:05:32 +08:00 |
|
 kevin9327andClaude Opus 4.8
|
ebf1a89254
|
fix(ext-data): 扩展数据上传增加体积上限并分块落盘 (#204)
问题: 扩展数据上传 /api/ext-data/{id}/upload 与字段检测 /api/ext-data/detect-fields
都直接 `content = await file.read()`, 无任何字节/行数限制。上传超大 CSV/XLSX
会把整个文件读入内存再交给 Polars/Excel 解析, 可能造成高内存占用、进程 OOM 或
服务不可用。自选截图 OCR 已有 12MB 上限, 扩展上传却没有统一上限。
修复: 抽出 _write_upload_capped(file, dest, max_bytes), 以 1MB 分块把上传写入
临时文件, 累计超过上限即拒绝(413), 不再一次性读入内存; 两个上传入口统一改用它。
上限常量 _MAX_UPLOAD_BYTES = 50MB(对扩展快照数据足够宽裕, 亦便于按需调整)。
兼容性: 后缀白名单、解析与映射逻辑不变; 仅新增体积上限。413 由 detect_fields 的
`except HTTPException: raise` 与 upload_data 的 finally 清理临时目录正常传播。
验证: 新增 tests/test_ext_upload_size_limit.py 覆盖未超限完整写入、恰好等于上限、
超限抛 413 三例, 全过; ruff 无新增告警(B008 与 origin/main 同为 2 个, 均为既有
FastAPI File(...) 默认值写法)。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-08-30 18:51:24 +09:00 |
|
shy3130
|
c90b83c3e4
|
feat: v0.2 UI 重构 + 自选分组侧边栏 + 扩展数据时间窗口 + 个股对话框优化
- 侧边栏美化:品牌改名/菜单 active 指示条/收起展开/底部精简
- 数据源+AI 状态卡:名称替换固定文字/档位 tag 条件显示
- 设置页重构:account 合入数据源 tab/数据源置顶/收起展开菜单
- 自选分组侧边栏:二级子菜单/分组跳转同步/清空分组
- 个股对话框:tab 移顶栏/分时关闭/放大全屏/操作按钮归位
- 扩展数据:定时拉取时间窗口(time_window_start/end)
- 版本号: 0.1.88 → 0.2.1
|
2026-08-10 17:53:14 +08:00 |
|
shy3130
|
a1e8be58db
|
feat: release v0.1.86
|
2026-07-18 00:49:28 +08:00 |
|
wshy
|
5b2282f8cb
|
feat(ext-data): 新增扩展数据支持 URL 创建并调整设置弹窗 tab (#64)
- 新建扩展数据弹窗加入 URL/文件/手动 三种接入方式, URL 模式支持探测字段、预览、保存拉取配置并可选立即导入或定时拉取
- 后端新增 /api/ext-data/detect-url 探测接口, 自动识别 JSON 行数组路径、字段类型与 symbol/code 候选列
- 抽出 infer_fields_from_df / detect_symbol_candidates / apply_config_mapping 公共逻辑, 文件上传与 URL 探测复用
- 拉取写入支持仅含 code 的数据, 按 code_map 自动生成标准 symbol
- 设置弹窗 tab 顺序调整为 拉取/推送/上传, 默认显示拉取
|
2026-07-07 18:04:49 +08:00 |
|
shy3130
|
e7615fb9e6
|
fix: 扩展数据拉取修复与连板梯队queryKey修复
|
2026-07-01 23:02:37 +08:00 |
|
shy3130
|
76431b588e
|
feat: 概念/行业数据改为用户手动获取
将内置概念(ext_gn_ths)/行业(ext_hy_ths)数据源从「自动拉取」改为
「用户在页面手动点获取」, 避免启动时网络请求阻塞, 也符合用户自主控制预期。
后端:
- ext_presets.py (新增): 内置预设配方 + 结构转换 (接口 concepts/industries
数组 → 拼接成字符串) + ensure_builtin_presets(只建config不拉数据) +
fetch_preset(手动拉取, 供 API 调用)
- ext_data.py: 新增 POST /api/ext-data/presets/{config_id}/fetch 专用接口
(放在动态路由前避免被当 config_id); 走结构转换保证 schema 一致
- main.py: lifespan 改为只 ensure_builtin_presets 创建 config, 不自动拉取
安全保证: 已存在则完全跳过, 绝不覆盖用户已有数据; 行业表去掉无用的
thscode/time 列。
|
2026-06-28 16:01:39 +08:00 |
|
shy3130
|
7042aca968
|
fix(ext-data): 上传 CSV 时自动转码 GBK/GB18030,修复 invalid utf-8 sequence
国内行情软件(同花顺/东财/通达信)及 Windows 中文 Excel 导出的 CSV 多为
GBK 系编码,而 Polars read_csv 默认按 UTF-8 解析,遇中文即抛
'invalid utf-8 sequence'。
新增 ensure_utf8_csv():先尝试 UTF-8(合法则原样返回,零副作用),
否则依次尝试 gb18030/gbk/gb2312/big5 转成 UTF-8 临时文件再交给 Polars。
覆盖上传(upload_data)与字段探测(detect_fields、parse_upload_file)三处入口,
无需新增依赖(编码均为 Python 标准库内置)。
|
2026-06-24 12:05:04 +08:00 |
|
shy3130
|
7369358d08
|
Initial release v0.1.19
|
2026-06-18 17:18:23 +08:00 |
|