shy3130
|
f20772d7b7
|
feat(open-api): 开放能力闭环 — write:ext 数据写入 + SSE 事件流 + 契约守护
二开闭环补齐三块: 数据进得来 (写入)、事件推得出 (SSE)、契约有人守 (快照+CI)。
- write:ext scope (第六档): POST /api/ext-data/{id}/ingest 对 Token 开放,
复用管理端同一校验/落盘/视图刷新路径; 结构配置/上传/拉取仍不开放,
外部只能写行数据, 不能改写表结构
- SSE 短期票据 (V2 收尾): POST /api/events/ticket 换 60s 一次性票据 →
GET /api/events?ticket=… 订阅事件流; 票据只继承 Token scope 不放大权限;
进程内事件总线 (services/events.py, 慢消费者丢旧保新), 告警落盘点已挂
(alert_store.append/append_many → bus), 事件按 scope 过滤双向验证
- 契约守护: test_openapi_contract.py 冻结 tier=a 开放面 (61 端点),
增删须显式更新快照; 新增 ci.yml (后端全量测试 + 前端构建) 把契约
变化拦在 PR 上
- examples/open-api: 四个零依赖可运行示例 (行情/写入/回测/事件流) + README
- 菜单设置架构标注: 每页核心/扩展徽标 + 悬停原因 + 图例 (按 open-platform-plan
§2 依赖方向分类, 核心 8 页/扩展 11 页); 顺带补上 MenuSettings 缺失的 模拟盘
- 测试: 网关 write矩阵/票据语义 + 票据生命周期/总线/SSE帧/告警联动 + 契约快照,
全量 2408 passed / 102s; 线上实测: ingest 200 / 票据一次性 / SSE hello+
alert 推送 / scope 过滤双向 / 契约 61 路径
|
2026-09-26 11:31:11 +08:00 |
|
shy3130
|
7f628816b9
|
feat(open-api): 0.3.2 开放能力版 — API Token 网关 + Tier A 契约 + 版本清单
- Token 域模块: tsp_ 前缀 + SHA-256 哈希存储 (0600), 明文仅创建时返回一次,
吊销立即生效, last_used_at 节流落盘 (≥60s)
- Bearer 网关中间件 (与密码会话并行): 五档 scope 校验 (read:market/read:ext/
read:analysis/run:backtest/paper:trade) + 滑动窗口限流 (默认 120/min,
OPEN_API_RATE_LIMIT_PER_MIN 可调) + X-RateLimit 响应头; 管理接口永不对 Token 开放
- GET /api/openapi.json?tier=a 契约视图: 按网关规则表过滤 OpenAPI 规范 (58 路径),
规则表即唯一契约源
- 设置 → 开放接口: Token 管理 UI (创建表单/scope 说明/明文一次性展示/吊销)
- 设置 → 系统设置 检查更新: 静态链接升级为真实版本对比 (GitHub API 优先,
latest.json 清单兜底), 发现新版本给下载入口
- release.yml 新增 manifest job: Release 附 latest.json (版本/三平台下载地址/sha256),
支持分批发布按实际资产生成
- 版本 0.3.1 → 0.3.2 (后端 __init__/pyproject + 前端 package.json)
- docs: features.md 开放接口章节; open-platform-plan.md V1/V2 标记已实现
- 测试: test_api_gateway.py 8 项 (域模块/scope 映射/E2E 401-403-200 矩阵/
429+Retry-After/吊销即拒), 全量 2394 通过
|
2026-09-25 22:38:58 +08:00 |
|
shy3130
|
fb8a711070
|
fix(ci): 镜像版本标签规则 type=match 正则误写为 glob,改为 type=ref,event=tag
|
2026-08-23 14:36:50 +08:00 |
|
shy3130
|
6e317a5a43
|
feat(v0.2): 完善量化研究与二次开发能力
|
2026-08-13 20:16:02 +08:00 |
|
shy3130
|
75cf2b19c2
|
fix(packaging): support legacy Polars CPUs
|
2026-07-12 14:08:24 +08:00 |
|
shy3130
|
484050ac06
|
feat: — 数据目录/实时监控/定时复盘/老CPU兼容
1. 桌面客户端体验优化,Polars 兼容内核 (老 CPU 兼容)
2. 自选页实时监控优化
3. 个股监控逻辑优化
4. 新增定时复盘
6. 其他: 修复 settings.py 中 HTTPException 未 import 的既有 bug
|
2026-06-28 18:08:52 +08:00 |
|
shy3130
|
028a042f93
|
ci(docker): 优化镜像构建工作流 + 清理未启用的版本自增脚本
在 #22 (Docker 镜像构建工作流) 基础上的三点优化:
1. CI 关闭国内镜像源(USE_CN_MIRROR=0): GitHub runner 在海外,
让构建直连官方 npm/PyPI 反而更快更稳; 本地/国内手动 docker build
仍走 Dockerfile 默认的 CN 镜像。
2. 新增 .dockerignore: 排除 .git/data/node_modules/docs/screenshots 等
非构建必需文件, 减小上下文体积、加速传输。
3. 叠加 tag 触发 + build-push-action v5→v6: 打 v* tag 时额外产出
带版本号镜像(如 :v0.1.62), 便于固定回溯。
清理:
- 删除 scripts/bump_version.py (prepare-commit-msg hook 从未实际安装,
属于死代码; 发版版本号改为手动维护, 与方案 B 一致)。
- 同步修正 backend/app/api/data.py 中对该脚本的过时引用注释。
|
2026-06-28 16:18:46 +08:00 |
|
ldm2060
|
2779ea4972
|
feat: 添加 Docker 镜像构建和推送工作流
|
2026-06-28 12:31:11 +08:00 |
|
shy3130
|
f8f7fc6488
|
fix(ci): PyInstaller 产物输出到 backend/dist, 与 tickflow.iss Source 路径一致
修复 Inno Setup 找不到打包产物的错误:
No files found matching ..\backend\dist\TickFlowStockPanel\*
原因: workflow 用 --distpath ../dist 输出到项目根 dist/, 但 .iss 引用的是 backend/dist/
修复: PyInstaller 用默认输出 (backend/dist), DMG/Linux 步骤路径同步调整
|
2026-06-25 00:35:13 +08:00 |
|
shy3130
|
19e86979d3
|
fix(ci): macOS 图标生成显式安装 Pillow
CI 上 uv sync --no-dev --extra desktop 不装 Pillow (它属于 backtest 的
matplotlib 依赖链, 非 desktop 运行时依赖), 导致 generate_icon.py 报
'No module named PIL'。本地能跑是因 venv 残留历史依赖, 属偶然不可靠。
显式 uv pip install pillow 再生成图标。
|
2026-06-24 15:14:54 +08:00 |
|
shy3130
|
a8ed19ac8c
|
fix(ci): 修复 macOS 构建两个失败点 (venv 发现 + 缺图标)
macOS 构建在 macos-26 runner 上失败, 两个独立问题, 均已本地验证通过:
1. uv pip install --project backend 报 'No virtual environment found'
macos-26 runner 上 --project 的 venv 自动发现不可靠。改为
working-directory: backend, 与 uv sync 步骤一致。
2. spec 打包时找不到 packaging/icon.icns
icon.ico 已入库 (Windows 用), 但 icon.icns 未入库 (macOS 专用产物)。
release.yml 此前无生成图标步骤, macOS 构建必然缺图标而崩。
新增 '生成 macOS 图标' 步骤 (仅 macos), 用 backend venv 里的 Pillow
(传递依赖) 跑 generate_icon.py 现场生成。
3. 打包步骤改为 backend cwd 执行, 用 --distpath/--workpath 显式指定
产物输出到项目根 dist/, 与后续 DMG 步骤路径保持一致。
本地完整验证 (生成图标 + pyinstaller) 成功产出 dist/TickFlowStockPanel.app。
|
2026-06-24 15:10:10 +08:00 |
|
shy3130
|
0e49708466
|
ci(release): macOS 仅构建 ARM64 包, 移除已不可行的 Intel 构建
原因 (经核实, 技术上无法产出可用 Intel 包):
1. GitHub 最后一个原生 Intel runner (macos-13) 已于 2025-12-04 退役;
2. 项目依赖 polars, 而 polars 自 1.33 起移除了 macOS x86_64 原生 wheel
(改 py3-none-any), 在 arm64 runner 上经 Rosetta 无法装出 x64 原生库,
产出的 Intel 包会在 polars 调用处崩溃。
改动:
- 平台矩阵移除 macos x64 项, runner 从 macos-14 升到 macos-26 (2026-02 GA, 免费)
- Release 下载表格删除 'macOS (Intel 芯片)' 行, 仅保留 Apple Silicon
- 注释说明放弃 Intel 的原因, 面向用户文案标注仅支持 Apple Silicon
|
2026-06-24 14:41:35 +08:00 |
|
shy3130
|
6aff0b1389
|
feat: Release 说明加下载按钮 (markdown 链接直连附件)
- release.yml body 模板: 下载表格每行加「⬇️ 立即下载」按钮
· 用 $github.repository + 版本号变量拼稳定下载 URL
· CI 自动填充, 无需手动改链接
- v0.1.35 Release 已同步更新 (本地 gh release edit)
- 新增 generate_icon_designs.py (图标设计方案生成, 选定方案后产出最终 ico)
|
2026-06-23 22:33:05 +08:00 |
|
shy3130
|
5933ef1bc8
|
feat: Windows 打包改为 Inno Setup 安装包 (Setup.exe)
- 新增 packaging/tickflow.iss: Inno Setup 脚本
· 用户目录安装 (不弹 UAC), 桌面+开始菜单快捷方式
· 卸载时询问是否删除用户数据
· 内置简中语言包 (ChineseSimplified.isl, 官方仓库获取)
- 新增 packaging/generate_icon.py + icon.ico: 应用图标
· 与 favicon.svg/Logo.tsx 一致 (紫色方括号 + K线)
· 用 Pillow 绘制, 多尺寸 (16/32/48/64/128/256)
- spec 加 icon: exe 图标 = 安装包图标 = 快捷方式图标
- release.yml: Windows 步骤改为 choco install innosetup + ISCC 编译
- 本地验证通过: 安装→快捷方式→启动→health 0.1.35 全 OK
|
2026-06-23 22:26:31 +08:00 |
|
shy3130
|
168f996c49
|
feat: 桌面客户端打包 (pywebview + PyInstaller) + 系统通知
- 桌面入口: desktop.py (单实例锁 + 端口探测 + uvicorn + pywebview 窗口)
- 配置层: config.py 加 sys.frozen 检测, frozen 下 data_dir 指向用户目录
- 系统通知: notify_adapter.py 三平台 (Win winotify / mac osascript / Linux notify-send)
接入 quote_service 告警出口, preferences 开关控制, 前端监控设置加 toggle
- 前端: 监控设置加系统通知开关, 系统设置加检查更新入口
- 打包: packaging/tickflow.spec (onedir, collect-all 原生库, 排除 vectorbt)
- CI: .github/workflows/release.yml 手动触发 + 平台可选 (windows/macos/linux)
- 依赖: platformdirs/winotify/plyer 入主依赖, pywebview 入 desktop extras
- README 加桌面客户端下载章节
- bump 版本号到 0.1.33
|
2026-06-23 21:47:29 +08:00 |
|