mirror of
https://github.com/shy3130/tick-stock-panel.git
synced 2026-11-02 10:26:13 +00:00
本次发布包含三组修复: - fix(ext-data): 资金流等当日快照接口不再被日期一致性校验误拒写; schema 端点恢复返回真实列类型 (DuckDB 1.5 的 DESCRIBE 列名变更); 拉取配置的分页参数不再保存后静默丢失。 - fix(settings): 系统设置的通知弹窗/声效/语音播报/外链模板/界面缩放 改后端持久化, 修复桌面版换端口 (origin 变化) 后配置丢失。 - fix(minute): 残缺分钟分区不再被当作无数据丢弃; 新增分钟缺口体检 面板, 让「同步完成≠数据完整」可见。 同时引入 DCO 贡献来源声明与再许可授权条款, PR 须逐提交带 Signed-off-by (CI 由 .github/workflows/dco.yml 检查)。 版本号同源 5 处: VERSION / frontend/package.json / backend/pyproject.toml / backend/app/__init__.py 的 _FALLBACK_VERSION / release.yml 的 inputs 默认值; uv.lock 仅改项目自身条目 (上次升版误改 pytesseract 的问题不再复现)。 Signed-off-by: shy3130 <shy3130@qq.com>
37 lines
1.4 KiB
Python
37 lines
1.4 KiB
Python
"""Tick Stock Panel backend."""
|
|
|
|
import json
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
# 版本号唯一权威 = frontend/package.json: 安装包 AppVersion (release.yml 读它传给
|
|
# ISCC)、macOS 包元数据 (tsp.spec 读它)、页面版本徽标与更新检查 (本模块) 全部同源,
|
|
# 改版本只改那一份文件。dev 模式读仓库文件; PyInstaller 冻结后读 _MEIPASS/package.json
|
|
# (tsp.spec 的 datas 会收集)。读取失败回退硬编码值 —— 版本号绝不阻塞应用启动。
|
|
_FALLBACK_VERSION = "0.3.15"
|
|
|
|
|
|
def _load_version() -> str:
|
|
if getattr(sys, "frozen", False):
|
|
pkg = Path(getattr(sys, "_MEIPASS", ".")) / "package.json"
|
|
else:
|
|
# backend/app/__init__.py 上溯两级 = 项目根
|
|
pkg = Path(__file__).resolve().parents[2] / "frontend" / "package.json"
|
|
try:
|
|
return json.loads(pkg.read_text(encoding="utf-8"))["version"]
|
|
except Exception:
|
|
return _FALLBACK_VERSION
|
|
|
|
|
|
__version__ = _load_version()
|
|
|
|
# Windows 默认 stdout/stderr 编码为 GBK(cp936),TickFlow SDK 内部输出含 emoji 的
|
|
# 指数/标的名称(如 \U0001f193)时会抛 UnicodeEncodeError,导致请求失败。
|
|
# 进程加载最早阶段强制 UTF-8,根治此类编码崩溃。
|
|
for _stream in (sys.stdout, sys.stderr):
|
|
if hasattr(_stream, "reconfigure"):
|
|
try:
|
|
_stream.reconfigure(encoding="utf-8", errors="replace")
|
|
except Exception: # noqa: BLE001
|
|
pass
|