Releases: MLINK-70/TradePilot-AI
Release list
TradePilot AI v1.0.4 — 数据隔离修复 + 报告级快照
数据隔离修复
MATRIX 缓存串台(严重)
get_competitiveness_matrix 的缓存 cmd/partner/period/reporter 全填 0,不同产品在同(市场,年份,出口国)下命中同一份矩阵——查咖啡机拿到蓝牙耳机的出口大国数据。修复:partner_code 存 HS 编码,与 COMPARE/TOPEXP 对齐;HS 为空跳过缓存(宁可 cache miss,不能 cache wrong hit)。
限流并发锁
_rate_hits 全局 dict 的读-改-写非原子,加 threading.Lock。
新增能力
Blast Radius 测试(8 项)
A→B 串台 / A→B→A 回环 / COMPARE/TOPEXP/LLM 缓存隔离 / 缓存行物理证据。测试有效性已验证:还原无修复版 3 项失败、恢复修复版 8 项全过。
报告级快照 _snapshot
/api/analyze 和 /api/trade/query 返回加 _snapshot 字段,打包 calc_version / prompt_version / model / sources——以后能回答「这份报告基于哪批数据、哪个公式、哪个提示词、哪个模型」。
unit 字段绑定
pricing 返回 "unit": "USD/kg";trade_evidence 加 "unit": {"trend":"亿美元","weight_trend":"千吨"}。单位与数值绑定,防 USD/kg 与 USD 混用。
测试:147 项 pytest 全部通过(原 139 + 新增 8 项 Blast Radius)。
TradePilot AI v1.0.3 — 数据准确性修复
TradePilot AI v1.0.3 — 数据准确性修复
🔴 竞争力指标 + 定价建议恢复(德国类市场此前 100% 失效)
根因:查询「目标市场总进口」用 partnerCode=0,UN Comtrade 按 partner2Code(原产国)拆行,德国 2024 年进口 HS 8518 被拆成 106 个原产国,撑爆 500 条上限被拒绝后异常被静默吞掉。
修复:请求加 partner2Code=0(500 行 → 18 行)+ 去重键补维度。
实测(蓝牙耳机 → 德国):TC = 0.724、中国占德国市场进口份额 = 15.33%、定价建议区间 23.07–57.58 美元/公斤,全部恢复且带数据血缘(quality=valid)。
🔴 竞争对手份额虚高修复
任一出口国数据获取失败时,原实现把缺失份额等比摊给剩余国家(中国 34% → 52%)。修复:有失败国时所有份额置 null,显示"数据缺失"而非虚高占比。
🟡 数据血缘键名错位
get_cache_meta 返回 validation_reason,两处误按 reason 取值导致拒绝原因透出失效,已统一键名。
🟡 SSRF 防线绕过(安全类)
config.py 与 collectors.py 对 IPv6 漏查 is_private,IPv4-mapped 地址(::ffff:192.168.1.1)被当公网放行。已补:IPv6 先解包 IPv4-mapped 再判定。
🟡 品牌份额口径不透明(数据可信类)
网页报告与 Word 报告的品牌表均补「份额(口径)」列;防幻觉校验改为按口径分组求和。
测试:139 项 pytest 全部通过(原 129 + 新增回归 10 项)。
TradePilot AI v1.0.2 — 基于 v1.0/v1.0.1 的重大修复(含业务闭环)
🔴 重大修复说明
本版本基于 v1.0 与 v1.0.1,系统性修复了数据准确性、数据可信度、业务闭环与安全加固问题。
1. 数据准确性(UN Comtrade 聚合重大修复)
核心结论:UN Comtrade 原始接口的"明细行"不能直接求和。 平台按 customsCode(贸易方式)和 motCode(运输方式)把同一笔贸易拆成多条 + 成对重复行。此前所有"清洗"都在不理解字段语义的情况下进行,导致贸易额严重失真。
| 问题 | 根因 | 修复 |
|---|---|---|
| 德国进口 8525 被算成 55.07 亿(真实 6.88 亿,差 8 倍) | 22 行明细直接求和 | 去重 + 取 customsCode=C00 且 motCode=0 唯一记录为总额;无则报错拒绝(宁缺勿错) |
| "mot=0 优先"仍错(27.5 亿) | 只过滤 mot 仍保留 customsCode 拆分行 | 双条件同时命中 |
| 出口 vs 进口镜像不一致(4 倍差) | 两国上报口径真实差异 | 标记 Suspicious,不覆盖替换(三态质量模型) |
| 500 条截断被当完整结果 | 截断检测在过滤后 | 移到过滤前,触顶拒绝 |
| preview/formal 切换旧缓存命中 | 缓存键无模式维度 | 缓存键加 mode |
| SEC 财务单位错误(苹果 0.00 亿) | 百万美元当美元 | SEC_VAL_SCALE=1e6 |
| 印度编码 699→356 | UNCTAD 内部码 | 改 M49 标准码 |
| 索尼年报取不到 | 20-F + 百万日元 | 按公司配置 (form, 币种, 倍数) |
2. 数据层架构收口(可信可追溯)
- 数据血缘:trade_cache 新增 source/raw_count/clean_count/quality/reason/schema_version,每个数字可追溯来源
- DataGate 总闸:rejected 数据禁止进入分析,AI 只解释数据不判定可信度
- 四态质量:valid / suspicious / invalid / rejected(空数据 ≠ 数据没找到)
- 计算审计 _audit:TC/份额公式展开 + 三腿质量,排查数字问题直接看审计字段
- 数据新鲜度:前端 🟢🟡🟠🔴 徽章
- REJECTED 防线:截断/C00 缺失留痕拒绝,不伪装成"暂无数据"
3. 🚀 业务闭环(销售漏斗 / 定价建议 / 我的订阅)
📈 销售漏斗:客户线索状态管理(new→sent→replied→quoted→won/lost),检索自动入库、状态流转白名单校验、漏斗看板
💰 定价建议:数据驱动定价(出口单价 + 市场进口均价 → 建议区间,AI 不参与算术),带 DataGate 血缘审计
📌 我的市场订阅:关注 (产品→市场) 组合,一键刷新看出口额变化(📈/📉)
🤖 AI 质量注入:数据置信度总览(✅可信/
4. 安全与健壮性(多轮排查 36+20+13 处)
- XSS 修复(chart-meta 纯 DOM)、Docker 密钥泄漏(.dockerignore)、422 错误可读化
- SEARCH_BASE_URL 校验(带 Key 外发防线)、get_latest_year 429 熔断、Word COM 45s 超时
- get_latest_year UnboundLocalError(熔断变量遮蔽)、同国查询明确报错(市场分析放开/贸易页拦截)
- LLM 缓存 key 规范化(大小写双缓存烧 token)、AI HS 解析失败留痕
- 静默失败排查(value=0 伪装修复 + 8 处日志)、计算审计、新鲜度
5. 测试
129 项 pytest 全绿(含脏数据 8 case、DataGate、血缘、定价、熔断、同国守卫、置信度总览等回归)
TradePilot AI v1.0.1 — 数据准确性专项 + 全量健壮性修复
🔴 重大数据问题修复(数据准确性专项)
核心结论:UN Comtrade 原始接口的"明细行"不能直接求和。 平台按 customsCode(贸易方式)和 motCode(运输方式)把同一笔贸易拆成多条 + 成对重复行。此前所有"清洗"都在不理解字段语义的情况下进行,导致贸易额严重失真。
| 问题 | 根因 | 修复 |
|---|---|---|
| 德国进口 8525 被算成 55.07 亿(真实 6.88 亿,差 8 倍) | 22 行明细直接求和 | 去重 + 取 customsCode=C00 且 motCode=0 唯一记录为总额;无则报错拒绝(宁缺勿错) |
| "mot=0 优先"仍错(27.5 亿) | 只过滤 mot 仍保留 customsCode 拆分行 | 双条件同时命中 |
| 出口 vs 进口镜像不一致(4 倍差) | 两国上报口径真实差异 | 标记 Suspicious,不覆盖替换(三态质量模型) |
| 500 条截断被当完整结果 | 截断检测在过滤后 | 移到过滤前,触顶拒绝 |
| preview/formal 切换旧缓存命中 | 缓存键无模式维度 | 缓存键加 mode |
| SEC 财务单位错误(苹果 0.00 亿) | 百万美元当美元 | SEC_VAL_SCALE=1e6 |
| A 股序列降序取错年份 | 返回降序 | 排序升序 |
| 印度编码 699→356 | UNCTAD 内部码 | 改 M49 标准码 |
| 索尼年报取不到 | 20-F + 百万日元 | 按公司配置 (form, 币种, 倍数) |
| LLM 趋势缓存数值不失效 | 键不含数据签名 | 键加签名 + deepcopy |
原则沉淀:宁缺勿错 · 先理解语义再清洗 · Valid/Suspicious/Invalid 三态质量模型。
🐛 其他修复
- 确定性崩溃:线索 URL 端口越界、模拟客户花括号、LLM 非 dict、Retry-After 无上限、脏缓存 KeyError
- 防幻觉绕过:URL 归一化空串绕过校验、搜索结果裸拼 prompt
- Agent 步骤去重、请求模型长度上限、eBay token 缓存、Word DispatchEx
- SSRF DNS rebinding TOCTOU 关闭(IP 钉扎建连)
- 速卖通签名修复:timestamp yyyy-MM-dd HH:mm:ss(GMT+8) + 签名大写 hex
- UN Comtrade 数据源切换开关(设置面板)
✅ 测试
86 项 pytest 全部通过(新增 23 项回归测试)
TradePilot AI v1.0.0 — 正式版
TradePilot AI v1.0.0 — 正式版
从"自己用的工具"升级为"能给别人演示的产品"。基于四路代码审查(60 条建议)落地约 47 条,覆盖安全、正确性、性能、可部署性。
🤖 AI Agent 一句话全流程(最强演示点)
- 一句话输入 → 意图解析 → 证据链 → 市场分析 → 结构化报告 → 客户线索 → 定制开发信(SSE 流式进度)
- 每步失败自动跳过,汇总"完成 X/6 步"
- 报告可下载:Word / PDF 学术式排版(封面 + 字体分级 + 页码)
🔒 安全加固(审查第一批全收)
- 移除宽 CORS → Host 白名单校验 + 安全响应头(CSP/nosniff/frame-ancestors)
- AI 服务地址白名单校验(防 SSRF + 密钥泄露)
- DOMPurify 失败降级纯文本;提示词注入防护;.env 写入校验;商品采集 SSRF 加固
🛡️ 权限层(新)
- 管理员账户:设置仅管理员可改,未登录 401 留痕
- 匿名限流(单 IP 滑动窗口)+ 访问日志 access_log 可展示拒绝记录
- 新页面:管理面板(拦截记录 / 服务器 Key 状态)
🔗 客户线索模块(新)
- Tavily 检索 + LLM 画像 + 防幻觉硬约束(无来源 URL 剔除)+ 一键定制开发信
🐛 正确性修复 + ⚡ 性能 + 🧪 测试/CI + 🚀 部署
- CAGR 年差修复、组织目标走聚合、缓存 TTL 体系、SQLite WAL、LLM 重试分流
- 50+ 自动化测试 + GitHub Actions CI(lint/测试双 OS/打包)
- Dockerfile(LibreOffice 层)+ Linux PDF 支持
📦 桌面版
- 全新首页排版:AI Agent 导航首位 + 市场分析主体 + 六步流程条
- 报告导出 Word/PDF 双格式
TradePilot AI v0.9.2
v0.9.2 更新
报告系统大升级
- 市场分析/贸易数据双报告:学术论文式封面+目录(点线页码+单击跳转)+章节空行+首行缩进+字体分级+页脚页码+表格防切分+无拼写波浪线
- 支持 PDF 下载(Word/PDF 双格式)
图表增强
- 饼图引线标签(百分比内嵌大字+名称外拉)
- 单价柱状图/出口国份额饼图/品牌份额饼图/CPI 趋势图
- 图表为主、表格作证、文字解读的三段式叙事
数据与分析
- 贸易报告新增:出口大国对比、竞争格局、消费环境、驱动因素(CPI 趋势)
- 市场分析新增:龙头品牌财务画像
- World Bank 新指标:CPI/汇率/高科技出口占比/手机普及率
历史记录
- 两页"历史"按钮:最近 10 条查询,点击回填重新查询
- 重复查询命中缓存(省 token)
其他
- 跨境电商页排版优化(财报收折叠、Key 提示、卡片标题)
- 429 指数退避重试
TradePilot AI v0.9.1 — 第二版 Demo
TradePilot AI v0.9.1 — 第二版 Demo
✨ 本次更新
- UI 重构「远洋港」:暖纸底 + 深海蓝 + 朱红,衬线标题,双线导航,下划线表单(四页面统一)
- 市场分析页双栏仪表盘:KPI 卡(出口额/CAGR/TC 全真实数据)+ 趋势图 + 详细证据链
- 贸易数据页 → 行业报告级:
- 关键指标卡(CAGR/峰值/波动/单价,程序精确计算)
- AI 解读数字高亮
- 竞争格局板块(龙头品牌/变动原因/产业链)
- 入局策略(跟随出口国视角)+ 优势品类表
- 动态出口大国识别(自动匹配品类全球出口大国)
- 报告结构升级(参考 IDC/上外研究报告):
- 摘要五段式(背景→数据→发现→挑战→建议)
- 风险表带具体法规条款(CE/EPR/SIRIM 等)
- 行动路线分步化 + 市场展望
- HS 编码 AI 自动解析:任意产品自动匹配(羽毛球拍→9506),中文描述自动补全,持久化缓存
- 多 AI 提供商:DeepSeek(默认)/ GPT / Claude / 自定义(OpenAI 兼容)可切换
- 多搜索提供商:Tavily(默认)/ Serper / 自定义
- 设置面板精简:AI/搜索/商品 API 折叠化 + 必备说明
⚙️ 使用
- 下载
TradePilot-AI.exe直接运行(免安装) - 首次运行复制
.env.example为.env,填入 DeepSeek API Key - 右上角 ⚙️ 设置面板可配置 AI 提供商/搜索/商品 API
📦 数据来源
UN Comtrade(贸易)/ World Bank(经济)/ Tavily(行业动态)/ WTO(宏观背景)—— 统计指标程序精确计算,AI 估算处明确标注