← 返回 Skill 列表
extension
分类: 数据与分析需要 API Key

福建政采云工具

福建政采云(框架协议采购)商品及供应商数据工具。当需要查福建框采商品/电脑/笔记本/打印机的经销商联系方式、交易记录、做经销商画像(对话前分析某经销商的客户群体与业务覆盖)、按品牌型号反查供应商代理商品时使用。核心:给定商品行情ID(goodsPriceGuid) 或直接说商品名(如"联想M70z"),一键拉取商品全部经销商(完整联系人/电话/报价)+ 交易记录(客户/成交额),输出带专业解读的 7-Sheet 交易分析。

person作者: user_61665616hubcommunity

福建政采云工具包

福建省框架协议采购(框采)平台(zfcg.czt.fujian.gov.cn)的供应商与交易数据工具。能力对标京华云采技能包,核心是经销商画像——对话本地经销商前,先摸清它的客户群体、成交规模、业务覆盖。

七大能力(触发词)

| 能力 | 触发示例 | 命令 | |------|---------|------| | ① 搜商品(找guid) | "查联想M70z" / "联想台式机有哪些" / "罗列全部台式机" | python fujian_zfcg.py --find 联想M70z | | ② 查经销商 | "查这个商品的经销商" / "电脑经销商有哪些" | python fujian_zfcg.py --dealers <guid> | | ③ 交易记录+全分析 | "查交易记录" / "谁在卖、谁在买、什么价" | python fujian_zfcg.py --trade <guid[,guid]> | | ④ 经销商画像(核心) | "分析这个赛道的经销商" / "对话前摸下底" | python fujian_zfcg.py --profile <guid> | | ⑤ 官方导出 | "导出经销商 Excel" | python fujian_zfcg.py --export <guid> | | ⑥ 供应商反查 | "某某公司代理了哪些商品" | python fujian_zfcg.py --supplier <公司名> | | ⑦ 重建索引 | "重新跑全量索引"(30 天过期后) | python fujian_zfcg.py --rebuild-index |

登录(一键,无需手动复制 Cookie)

首次使用或 token 过期(约 4 小时),运行:

python login.py

自动打开浏览器 → 手动登录 → 回命令行按回车 → 登录态自动保存到 config.json。之后所有命令自动复用。

快速上手(3 步)

  1. 一键登录:python login.py(自动开浏览器 → 登录 → 回车 → 登录态自动保存,无需手动复制 Cookie)
  2. 说商品名搜 guid:python fujian_zfcg.py --find 联想M70z(自动拆解品牌+型号,只列 M70z 不看 M70f)
  3. 查经销商/画像:python fujian_zfcg.py --profile <goodsPriceGuid>

已固化品类:台式机、笔记本(便携式计算机)、打印机(多功能一体机)。搜到新商品自动累积进 goods_map.json。

搜索增强(v1.2 核心)

--find 支持三种输入,自动拆解 + 本地二次过滤:

| 输入 | 行为 | 示例 | |------|------|------| | 大类罗列 | 空关键词罗列该品类全部商品(防反爬间隔) | --find "" --category 台式机 | | 指定品牌 | 品牌词模糊匹配(联想→联想开天) | --find 联想 | | 品牌+型号 | 自动拆解,型号前缀精确匹配,罗列全部配置 | --find 联想M70z → 只出 M70z 的 G2t-D594/G2t-D601 |

关键机制:接口 keyword 是"宽模糊"(搜"联想M70z"会把 M70 全系带出),脚本在本地做二次过滤——品牌别名表匹配 + 型号前缀精确匹配(大小写不敏感),点名 M70z 就绝不混入 M70f/M70d。结果按大型号分组打印,小型号(配置)单独摘出说明。

交易分析 7-Sheet(v1.2 新增)

--trade 支持逗号分隔多 guid 合并分析,输出 7 个 Sheet,每个分析 Sheet 带专业文字解读(红色标题+黑色解读):

| # | Sheet | 解读要点 | |---|-------|---------| | 1 | 概览总结 | 商品信息卡 + 总成交额/订单数/供应商数/客户数 + TOP3 供应商/客户 + 复购率 + 操作建议 | | 2 | 交易明细 | 全量明细(订单/供应商/客户/价格/数量/时间) | | 3 | 供应商分析 | 头部集中度(TOP3 占比)→ 集中高可重点谈判/低则比价 | | 4 | 客户分析 | 客户类型分布(医院/学校/政府/企业)+ 最大金主 + 跟进建议 | | 5 | 时间维度 | 按月聚合 + 采购节奏判断(开学季/财政年末) | | 6 | 价格分析 | 价格区间/均价/价差 → 议价空间判断 + 报价参考 | | 7 | 复购与关系 | 客户×供应商稳定关系 → 路径依赖识别,切入替换策略 |

深度解读衔接:交易分析输出的 TOP 客户/供应商,可再用「天机商查」技能(business-search)补工商背景(法人/注册/风险),提升画像深度。

供应商反查(v1.2 新增)

平台无纯供应商名反查接口(所有查询围绕 goodsPriceGuid),采用本地累积索引方案:

  1. 首次运行 python fujian_zfcg.py --rebuild-index:全品类(台式机 337 + 笔记本 + 打印机)跑一遍拉经销商,建 supplier_index.json(供应商 → 代理商品映射)。防反爬:请求间隔随机 1.5~3 秒,约 40 分钟。
  2. 之后 python fujian_zfcg.py --supplier 公司名 秒查该供应商代理了哪些商品(精确/包含匹配)。
  3. 有效期机制:索引带 __built_at__ 时间戳,30 天有效。反查时自动读时间戳,过期则提示重新 --rebuild-index。

数据分析引擎(v1.3 已落地)

三层架构:fujian_zfcg.py(API 层)→ data_store.py + store/(本地 json5 分片数据仓库,增量 upsert 去重)→ analysis_engine.py(三粒度对比 × 5 维度 → 单 Excel 多 Sheet + AI 解读)。

数据仓库(data_store.py)

store/
├── store.index.json5     总索引(分片登记 + 覆盖率)
├── goods_台式/笔记本/打印机.json5    商品分片(guid 主键)
├── dealers_台式/笔记本/打印机.json5  挂靠+联系人分片(供应商名主键,联系人→型号映射)
├── trades_YYYYH#.json5   交易分片(orderGuid 主键,按半年切)
└── dim_客户渠道/渠道客户/客户品牌/渠道品牌.json5   维度分片(v1.3.3:--dims 重算,主体→关联方→{台数,金额,笔数},均按金额降序)

| 命令 | 说明 | |------|------| | python data_store.py --init | 建库 | | python data_store.py --import-index | 从 supplier_index.json 导入初始商品+挂靠(不耗 API) | | python data_store.py --sync [--category 台式计算机] [--full] | 增量同步(罗列商品→新 guid 拉经销商) | | python data_store.py --sync-contacts [--brand 联想] [--category 台式计算机] | 补联系人电话(对库内已有商品拉经销商) | | python data_store.py --sync-trades [--guid x] [--brand 联想] | 拉交易记录(orderGuid 去重,增量) | | python data_store.py --dims | 重建 4 张维度分片(客户→渠道/渠道→客户/客户→品牌/渠道→品牌;本地重算不耗 API,交易更新后重跑刷新) | | python data_store.py --stats | 统计 + 覆盖率 |

联系人→型号映射(头儿拍板格式):"联系人": {"张三": {"电话": "139...", "型号": [guid1, guid2]}, "李四": {"电话": "138...", "型号": [guid3]}}——多人多型号,电话以最新为准。

经销商清单导出(export_dealers.py,v1.4.1 新增)

合并 dealers_台式/笔记本.json5 + goods_*.json5(本地聚合,不耗 API),一键产出渠道可直接使用的 Excel。

| 命令 | 说明 | |------|------| | python export_dealers.py | 默认导出 经销商清单_全量.xlsx(台式+笔记本合并去重) | | python export_dealers.py --category 台式 | 只导台式 | | python export_dealers.py --out my.xlsx | 指定输出路径 |

全量交易拉取(sync_trades_targeted.py,v1.4.3 新增)

只拉「台式+笔记本」交易(避开打印机),每 25 个 guid 落盘防中断,--full 增量去重补新订单。

| 命令 | 说明 | |------|------| | python sync_trades_targeted.py | 只补缺口(未拉过的 guid) | | python sync_trades_targeted.py --full | 全量重拉(已拉的仅补新订单,orderGuid 去重) |

实测:背景跑 704→1601 笔(台式 1522 笔 / 5115.3 万 / 11092 台;笔记本平台整体 0 成交)。拉完跑分析引擎出市场模板。

产出 3 Sheet:①经销商清单(全量,含联系方式/经营品牌/联想标记/联想型号清单,联想行黄色高亮,可筛选)②联想渠道(可触达)(603 家联想经销商,按联想型号数降序,核心出击名单)③汇总(总量/电话覆盖/品牌分布)。 实况(2026-09-03 补电话后):1113 家经销商 100% 有电话;603 家联想经销商为核心出击名单。无电话缺口已用 refresh_nophone.py 精准补齐(详见下)。

精准补电话(refresh_nophone.py,v1.4.2 新增)

当导出清单出现无电话经销商时,别跑全量 --sync-contacts(389 商品慢且费配额)。本脚本只重拉「无电话经销商」关联到的 guid(约 227 个),upsert_dealers 仅非空覆盖、原有电话不丢。

| 命令 | 说明 | |------|------| | python refresh_nophone.py | 精准补齐无电话经销商(需 config.json 有效 token;失效先 python login.py) |

实测:149 家无电话 → 0 家(全部补到),笔记本分片还新发现 12 家经销商。

地域深挖:交易 orgGuid 前 6 位 = 行政区划代码 → 地市/区县(如 350521 = 泉州市惠安县)。

分析引擎(analysis_engine.py)

3 种对比粒度(互斥,一次只能用一个):

| 模式 | 参数示例 | 用途 | |------|---------|------| | 单品牌全型号 | --brand 联想 | 看自家产品线全貌 | | 多品牌对比 | --brands 联想,华为,浪潮 | 品牌间市场地位对比 | | 跨品牌型号对比 | --models M70Z,W525,CE300Z | 竞品分析(不限品牌) |

5 个分析维度(--dims 可多选):概览总结 / 交易分析 / 渠道甄别(四象限)/ 客户分析(含地市)/ 市场格局(份额+CR5/CR10)。维度×粒度按兼容矩阵退化(渠道在多品牌退化、市场在单品牌退化)。

成交透视 Sheet(v1.3.3 引入;v1.4 起仅单品牌盘点模板沿用此格式,多品牌 --brands 改走上方市场分析模板):

  • 品牌份额分析-by客户 / by渠道:双行表头(品牌名跨2列合并 + 数量|占比)、行内占比口径(该品牌台数/该行总台数)、品牌固定配色(联想绿/华为橙…)、占比列百分比格式
  • 客户&渠道匹配-客户维度 / 渠道&客户匹配-渠道维度:主体列纵向合并单元格(同客户/同渠道多行只显示首行)——识别并保留了参考表的合并单元格布局
  • 成交明细:宽表 + 自动筛选
  • 口径:主品牌归一化(联想开天/联想/LENOVO/开天/启天/昭阳 → 联想,列头展示 联想/Lenovo);单品牌分析时份额矩阵退化为单列(占比恒 100%),多品牌对比用 --brands

双模板(v1.4.0,按粒度分流):

  • --brands 多品牌 → 市场分析模板 9 Sheet(视角×架构去重:一页一决策,不同主体不同表格架构):导读(口径+导航+月度节奏)/ 品牌总览(榜式·三合一+SKU单产/渠道均产效率列)/ 区域战局(矩阵式·地市×品牌,每品牌双列=份额(万,无进度条)+占比(品牌色进度条,0.0%))/ 客户攻坚榜(榜式·主用品牌/状态[未渗透橙|联想客户绿]/行动[首攻A/B/C|加单|维护])/ 渠道招商榜(榜式·可转化台数+招商等级 S≥100台/A≥50/B≥20/已合作)/ 份额矩阵·by渠道 / 匹配×2 / 成交明细
  • --brand/--models 单品牌 → 盘点模板(旧结构:5 维度+四象限,下轮精简)
  • 占比进度条:所有份额/占比/市占列 = Excel 数据条(DataBar),多品牌矩阵按品牌列用各自品牌色(自动加深)
  • 默认品牌排序(v1.4.3):所有分析品牌列顺序 = 联想第一、华为第二、其余按整体份额降序(新增 brand_order(),品牌总览/区域战局/份额矩阵by渠道 三处统一);区域战局每品牌拆「份额(万,纯数字无进度条)」+「占比(0.0%进度条)」双列,双行表头,不再单列"联想市占"尾列

口径定稿:成交额 = finalPrice × qty;qty≤0 金额记 0 并进异常清单;四象限切分用中位数(挂名型号数 ≥ 中位数 = 挂名多;实销笔数 >0 = 有实销;A 种子渠道 / B 缺货渠道 / C 可撬动 / D 边缘)。

用法:

python analysis_engine.py --brand 联想 --out 联想全系分析.xlsx
python analysis_engine.py --brands 联想,华为,浪潮 --dims 概览,交易,市场
python analysis_engine.py --models M70Z,W525,CE300Z --dims 概览,交易,渠道,市场
python analysis_engine.py --brand 联想 --guide channel --purpose territory   # 引导词预设
python analysis_engine.py --fetch-only    # 只拉数据(无人值守后台跑)
python analysis_engine.py --fill interpretations.json5 --out 原文件.xlsx    # AI 解读回填

⚠️ 运行环境:analysis_engine/data_store 依赖 openpyxl + json5,用隔离 venv: C:/Users/Administrator/.workbuddy/binaries/python/envs/default/Scripts/python.exe

分析引导词库(analyze_guides.json5)

默认组合(头儿 2026-09-01 拍板,写入技能默认):

| 维度 | 默认值(均支持多选) | |------|--------| | 角色 | 渠道拓展经理 | | 目的 | 找渠道 + 区域进攻 | | 风格 | 战略视角 + 犀利务实 | | 输出 | 报告式 |

  • 多选语义(关键):所有维度可多选;选中的 = 主力视角(篇幅大、详细展开),没选中的 = 辅助参考(篇幅少、一句话带过)——不是不用,是降低占比
  • 引导词 = 任务输入参数(启动时确定),不是输出后处理:显式参数 > 预设引用(--guide)> AI 代选 > 默认兜底,永远不等人选择,防任务超时
  • 预设组合:default / channel / territory / intel / bid / finance / brief
  • 数据拉取(--fetch-only 无人值守)与分析生成(读本地库秒级)解耦
  • 本地模板只定规格,实际解读文字由 AI 生成:引擎产出 analyze_brief.json5(数据摘要+引导词+模板规格),AI 据此写解读 → --fill 回填 Excel
  • 完整设计见 analysis_plan.md

关键经验速查(务必遵守)

  1. 鉴权 = HTTP Header access_token(从 Cookie 提取 JWT),不是 Cookie、不是 Authorization。这是脱敏开关——带上它,公开接口也返回完整 linkMan/linkMobile(不再 ******)。
  2. 商品搜索需 nsssjss 签名头(已固化脚本,不绑定 timestamp 可长期复用;失效时从浏览器 ignore/search 请求重新抓取)。
  3. 商品搜索必须带分类路径(categoryguid/guids/names),光 keyword 报 400 non null hash key required。
  4. 交易记录接口需要 Header regionguid(非空即可,如 1260001)。
  5. token 有效期约 4 小时,过期后运行 python login.py 重新登录即可。
  6. 防反爬:全量罗列/索引构建必须保持请求间隔(已内置 1.5~3s 随机),不要改小。

经销商画像解读

--profile 输出的核心是「经销商 × 交易记录」交叉:

  • 经销商画像总览:每个经销商的联系人/电话/报价 + 成交单数 + 成交额 + 客户数 + 状态(有成交/未成交)+ 解读。
  • 经销商客户明细:每个经销商具体卖给哪些采购单位(客户)、各客户订单数/采购额。
  • 成交额 TOP 经销商 = 真正活跃的渠道(577 家经销商里往往只有几十家有实际成交)。

客户类型自动分类:医院/医疗、学校/教育、政府/机关、企业/单位、事业单位。

文档索引(按需读)

| 文件 | 内容 | |------|------| | FAQ.md | 使用手册 + 排障指南(快速上手/命令速查/常见问题20条/错误码速查/最佳实践) | | references/api_docs.md | 接口端点、参数、字段映射、鉴权机制 | | references/workflows.md | 详细工作流、端到端案例、异常处理 |

目录结构

fujian-zfcg-toolkit/
├── SKILL.md          本文件
├── fujian_zfcg.py    核心脚本(find/dealers/trade/profile/export/rebuild-index/supplier/test)
├── data_store.py     v1.3.3 数据仓库(分片 json5,增量 upsert;--dims 维度分片:客户↔渠道↔品牌关系网)
├── analysis_engine.py v1.4.0 分析引擎(双模板:--brands=市场分析9表[导读/品牌总览/区域战局/客户攻坚榜/渠道招商榜/份额矩阵by渠道/匹配×2/明细];--brand=盘点7表[导读/型号总览/区域渗透/渠道四象限/客户榜/匹配/明细];占比=数据条进度条按品牌配色)
├── analyze_guides.json5 v1.3 分析引导词库(角色/目的/风格/输出 + presets)
├── analysis_plan.md  数据分析体系设计文档(v2 定稿,评审 6~10 已标注)
├── interpretations_sample.json5 AI 解读模板样例(含数据异常栏)
├── config.json       Cookie 配置(含 access_token)
├── goods_map.json    guid ↔ 商品名映射表(自动累积)
├── supplier_index.json  供应商→代理商品 反查索引(rebuild-index 生成)
├── login.py          CDP 一键登录助手
├── store/            数据仓库分片目录
├── references/
│   ├── api_docs.md
│   └── workflows.md
└── FAQ.md