From a5ce7834875bd9f4fee6ebc36f8498b00788ca7d Mon Sep 17 00:00:00 2001 From: Justin Gu <97915@qq.com> Date: Mon, 15 Jun 2026 00:05:52 +0800 Subject: [PATCH] =?UTF-8?q?release:=20v1.13.1=20=E2=80=94=20cninfo=20?= =?UTF-8?q?=E5=85=AC=E5=91=8A=E6=A3=80=E7=B4=A2=20Bug=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=20+=20PDF=20=E4=B8=8B=E8=BD=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 29 ++++++++++++++++++++--------- pyproject.toml | 2 +- 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 329d657..aa8b5d6 100644 --- a/README.md +++ b/README.md @@ -1581,23 +1581,34 @@ ruff format --check src/ tests/ # format check ## Changelog +### 1.13.1 (2026-06-15) + +**cninfo 公告检索 Bug 修复 + PDF 下载**(实测 `easy-tdx announcement 601088` 暴露的 3 个 Bug + 新增 PDF 下载功能)。 + +Bug 修复: + +- `url` 404:原仅拼 `announcementId` 一个参数,补全 4 参数 `stockCode`/`announcementId`/`orgId`/`announcementTime`(少任一参数 404) +- `type` 列全 null:cninfo 对很多公告不填 `announcementTypeName`,回退到 `adjunctType`(如 "PDF") +- 表格输出 `url` 被截断成 `https://www.cninfo.com.cn/new/`:`output._render_table` 对 object 列硬切 30 字符;新增 `_render_table_full`,`announcement --table` 专用不截断 + +新增功能 — PDF 下载: + +- `CninfoClient.download_pdf(announcement, dest_dir=, filename=)`:接受 `Announcement` 或 DataFrame 一行,自动建目录,默认文件名 `{YYYYMMDD}_{announcement_id}.PDF` +- CLI:`--download N --download-dir DIR` 批量下载最新 N 条 PDF +- `Announcement` dataclass 扩展字段:`code`/`org_id`/`announcement_id`/`announcement_time`/`pdf_url`(`pdf_url` 为 `static.cninfo.com.cn` 直链) + +测试:`tests/unit/test_cninfo.py` 24 → 35 个用例,新增 URL 4 参数、type 回退、pdf_url 构建、`download_pdf`(成功/无附件/建目录/Series 兼容/网络失败/自定义文件名)共 11 个场景。全部 621 单测通过,mypy strict + ruff 清洁。 + ### 1.13.0 (2026-06-14) **新增巨潮公告检索** — 三层接入(编程 API / CLI / Web API),独立数据源,无需连接 TDX 行情服务器。 -- 新模块 `easy_tdx.cninfo`:`CninfoClient().get_announcements(code, count=, page=)` 返回 `DataFrame[title, type, date, url, code, org_id, announcement_id, announcement_time, pdf_url]` -- CLI:`easy-tdx announcement 688017 [--count N --page N --table] [--download N --download-dir DIR]` +- 新模块 `easy_tdx.cninfo`:`CninfoClient().get_announcements(code, count=, page=)` 返回 `DataFrame[title, type, date, url]` +- CLI:`easy-tdx announcement 688017 [--count N --page N --table]` - Web:`GET /api/v1/announcements?code=&count=&page=` -- `CninfoClient().download_pdf(announcement, dest_dir=)` 下载公告 PDF(接受 `Announcement` 或 DataFrame 一行) - 标准库 urllib 实现,零新依赖 - 沿用 #19 修复的 orgId 动态映射 + 三段硬编码 fallback(保证 601xxx 段可查) -**Bug 修复**(实测 601088 暴露): - -- `type` 列全 null:cninfo 对很多公告不填 `announcementTypeName`,回退到 `adjunctType`(如 "PDF") -- `url` 404:原仅拼 `announcementId` 一个参数,补全 4 参数 `stockCode`/`announcementId`/`orgId`/`announcementTime` -- 表格输出 url 被截断成 `https://www.cninfo.com.cn/new/`:`announcement --table` 改用不截断渲染 - ### 1.12.0 (2026-06-14) **新增 4 个技术指标(30 → 34)** — 按"语义空白"补齐三类现有指标库缺失的维度:止损位、机构成本价、趋势启动时机。均为纯 numpy 实现,零新依赖。 diff --git a/pyproject.toml b/pyproject.toml index 176e881..7ead368 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "easy-tdx" -version = "1.13.0" +version = "1.13.1" description = "通达信 TCP 协议行情数据客户端,支持在线行情、离线数据读取与写入同步" readme = "README.md" requires-python = ">=3.10"