{
  "schemaVersion": 1,
  "dateMeaning": "documentation-update",
  "description": "查看开放平台 API 的新增接口、字段与业务功能变化。日期为文档更新日期。",
  "entries": [
    {
      "id": "2026-11-09-qiye-callback-msg-list",
      "date": "2026-11-09",
      "type": "added",
      "typeLabel": "新增接口",
      "title": "新增查询企微消息回调记录接口",
      "summary": "新增侧栏「企业微信」分类及接口文档 /api/getQiyeCallbackMsgList（GET/POST）：查询企业微信推送到平台的事件回调报文记录，返回落库的事件类型、变更类型、变更详情、员工/外部联系人标识与解析后的原始报文体；支持落库时间区间（闭区间）与 event/changetype/detail 精确筛选，按落库时间倒序分页输出，筛选参数全部可选。",
      "impact": "已开通企业微信对接的客户可回溯群变更等事件原始报文用于对账与排障。报文字段为企业微信命名风格且多为字符串，MemChangeList.Item 单成员为字符串、多成员为数组，需兼容两种形态；报文解析失败时该条 data 回落为原始字符串；接口契约 code 恒为 0，业务成功与否以 msg 是否为空判定。",
      "links": [
        {
          "title": "查询企微消息回调记录",
          "url": "https://docs.open.xinduobang.cn/docs/qiye/qiye-callback-msg-list",
          "apiPath": "/api/getQiyeCallbackMsgList"
        }
      ]
    },
    {
      "id": "2026-11-09-qiye-chat-list",
      "date": "2026-11-09",
      "type": "added",
      "typeLabel": "新增接口",
      "title": "新增获取企业外部群列表接口",
      "summary": "「企业微信」分类新增接口文档 /api/getQiyeChatList（GET/POST）：分页列出企业微信客户群，每群带出群 ID、群名称、群主、建群时间与四项人数（进群客户人数 member_count、累计入群人次 join_total_count、离群人数 left_count、群内员工数 staff_count，满足 member_count + left_count = join_total_count）；支持 chat_id / chat_name / owner 与建群时间区间（闭区间）筛选，include_dismiss=1 可一并列出已解散的群，按建群时间倒序分页输出。另与平台后台「企业微信群数据分析」页的人数口径差异已写明：后台会剔除登记为客户但实际是员工的成员，本接口按企业微信侧成员类型原值统计。企微外部联系人、企微消息回调记录两篇文档同步增加互链导航。",
      "impact": "群运营规模可按群 ID 批量取数，闭合不变量可用于接入自校验。需注意三类边界均属正常数据：join_total_count 按入群记录条数计（同一客户退群又进群算 2 条，是人次不是人数）；建群时间未同步到时 addtime=0 且 addtime_str 为空串；企业微信侧无群名时 chat_name 返回平台生成的占位串（形如「创建者：xxx 创建时间【YYYY-MM-DD HH:mm:ss】」，群主未同步到时为「创建者： 创建时间【--】」），不可当真实群名入库展示。解散群表现为 member_count=0、left_count 等于累计人次。",
      "links": [
        {
          "title": "获取企业外部群列表",
          "url": "https://docs.open.xinduobang.cn/docs/qiye/qiye-chat-list",
          "apiPath": "/api/getQiyeChatList"
        },
        {
          "title": "获取企微外部联系人列表",
          "url": "https://docs.open.xinduobang.cn/docs/qiye/qiye-external-user-list",
          "apiPath": "/api/getQiyeExternalUserList"
        },
        {
          "title": "查询企微消息回调记录",
          "url": "https://docs.open.xinduobang.cn/docs/qiye/qiye-callback-msg-list",
          "apiPath": "/api/getQiyeCallbackMsgList"
        }
      ]
    },
    {
      "id": "2026-11-09-qiye-chat-user-list",
      "date": "2026-11-09",
      "type": "added",
      "typeLabel": "新增接口",
      "title": "新增获取群成员明细接口",
      "summary": "「企业微信」分类新增接口文档 /api/getQiyeChatUserList（GET/POST，chat_id 必填）：按群分页列出群内外部联系人成员（不含企业员工），每条带出在群状态与入群/退群时间、三个来源不同的名字字段（name 群成员昵称、group_nickname 群内昵称、profile_name 客户档案名）、关联的平台会员身份（uid、固定脱敏 phone）、系统归属员工与企业微信跟进员工；支持 status 在群状态、name 昵称模糊、入群时间区间筛选，默认同时返回已退群成员。unionid 在成员行为空时自动用客户档案补齐，群档案缺失时照常返回明细且 chat_name 为空串。企业外部群列表、企微外部联系人列表两篇文档同步增加互链导航，群列表文档的人数说明改为直接指向本文；四篇企微文档示例中的时间戳与可读时间已统一按东八区对齐。",
      "impact": "客户名册与各群人数形成闭环：群列表给汇总人数、本接口给具体名单，会员与员工字段口径同外部联系人列表接口，同一客户在三个接口拿到的身份一致。需注意：join_time / out_time 为 0 时对应字符串为空串；群解散会让整群显示已退群，需结合 is_delete 判断；三个名字字段来源与更新时机不同、不做合并；userid 为空的历史残缺行照常返回且关联字段为空；邀请人、入群方式与渠道归因串当前不对外输出。",
      "links": [
        {
          "title": "获取群成员明细",
          "url": "https://docs.open.xinduobang.cn/docs/qiye/qiye-chat-user-list",
          "apiPath": "/api/getQiyeChatUserList"
        },
        {
          "title": "获取企业外部群列表",
          "url": "https://docs.open.xinduobang.cn/docs/qiye/qiye-chat-list",
          "apiPath": "/api/getQiyeChatList"
        },
        {
          "title": "获取企微外部联系人列表",
          "url": "https://docs.open.xinduobang.cn/docs/qiye/qiye-external-user-list",
          "apiPath": "/api/getQiyeExternalUserList"
        },
        {
          "title": "查询企微消息回调记录",
          "url": "https://docs.open.xinduobang.cn/docs/qiye/qiye-callback-msg-list",
          "apiPath": "/api/getQiyeCallbackMsgList"
        }
      ]
    },
    {
      "id": "2026-11-09-qiye-external-user-list",
      "date": "2026-11-09",
      "type": "added",
      "typeLabel": "新增接口",
      "title": "新增获取企微外部联系人列表接口",
      "summary": "「企业微信」分类新增接口文档 /api/getQiyeExternalUserList（GET/POST）：分页列出企业微信外部联系人（客户），每条同时带出关联的平台会员身份（uid、固定脱敏的 phone）、系统归属员工（staff_uid / staff_name）与企业微信跟进员工（qiye_friend_staff / qiye_friend_staff_list，可多人、按员工去重）；支持客户名称模糊、external_userid / unionid 精确、添加时间区间（闭区间）筛选，按添加时间倒序分页输出，含尚未注册成会员的客户。企微消息回调记录文档同步增加互链导航。",
      "impact": "客户名册可与平台会员、销售归属一次对齐，无需自行拼接两套关系。需注意：staff_* 是系统内唯一归属销售、qiye_friend_staff 是企微好友关系上的跟进员工（一对多），二者经常不是同一人，不可互相替代；unionid / phone / staff_* 为空和 uid=0 均为正常数据（含未注册成会员的客户），staff_name 可能回退显示账号名、qiye_friend_staff_list[].name 查不到姓名时回落显示 userid；手机号脱敏不可通过参数关闭，需完整手机号请用 uid 走会员列表接口。",
      "links": [
        {
          "title": "获取企微外部联系人列表",
          "url": "https://docs.open.xinduobang.cn/docs/qiye/qiye-external-user-list",
          "apiPath": "/api/getQiyeExternalUserList"
        },
        {
          "title": "查询企微消息回调记录",
          "url": "https://docs.open.xinduobang.cn/docs/qiye/qiye-callback-msg-list",
          "apiPath": "/api/getQiyeCallbackMsgList"
        }
      ]
    },
    {
      "id": "2026-11-05-org-insurance-money",
      "date": "2026-11-05",
      "type": "added",
      "typeLabel": "新增接口",
      "title": "新增主体上保金额统计接口文档",
      "summary": "新增接口文档 /api/getOrgInsuranceMoney：按上保主体统计指定时间段内的上保金额、保单张数、覆盖人数与最后一次上保时间，并给出区间合计。starttime、endtime 必填（支持秒级/毫秒级时间戳与日期写法，结束日只给到日期时自动含当天），org_id 或 org_name 可只查单个主体，都不传则返回全部主体并按金额倒序排名。统一保单按保单号去重后一张保单只计一次保费，与后台「保险配置」页主体列表及开票口径一致；覆盖人数单独按营员去重。只读，不落库。",
      "impact": "客户侧可按主体做保费对账与上保规模统计，无需逐主体调用。注意三点：时间口径是出单时间而非保期，跨保期的保单按出单时间归属区间；已退保保单与支付类保单不计入，且该口径固定不可调；未落主体信息的历史记录与平台自有主体不计入（平台自有主体仅在未指定主体时被排除），需要统计某个具体主体时请显式传 org_id，建议用统一社会信用代码匹配。",
      "links": [
        {
          "title": "主体上保金额统计",
          "url": "https://docs.open.xinduobang.cn/docs/insurance/get-org-insurance-money",
          "apiPath": "/api/getOrgInsuranceMoney"
        }
      ]
    },
    {
      "id": "2026-11-03-member-user-trace",
      "date": "2026-11-03",
      "type": "added",
      "typeLabel": "新增接口",
      "title": "新增用户行为轨迹接口文档",
      "summary": "新增接口文档 /api/getUserTrace：按会员 UID 查询浏览、下单、支付、分享、核销等行为记录，与后台「会员详情-行为轨迹」页同源；支持 start_time 起始过滤、max_time 停留时长阈值（传 60 过滤停留不足 1 分钟的浏览记录）与分页；content 为含订单号、所属员工等注记的纯文本。会员列表相关接口同步增加导航。",
      "impact": "客户侧可按 uid 拉取会员行为轨迹用于回访与画像；返回不含 total，需以 pageNum 翻页直至 list 为空或条数不足 pageSize 结束；非浏览类行为 stay_seconds 为 0，access_id 含义随 type 变化（浏览类为营种 ID、订单类为订单 ID）。",
      "links": [
        {
          "title": "用户行为轨迹",
          "url": "https://docs.open.xinduobang.cn/docs/member/user-trace",
          "apiPath": "/api/getUserTrace"
        },
        {
          "title": "获取会员列表",
          "url": "https://docs.open.xinduobang.cn/docs/member/member-list",
          "apiPath": "/api/memberlist"
        }
      ]
    },
    {
      "id": "2026-11-03-product-comment-list",
      "date": "2026-11-03",
      "type": "added",
      "typeLabel": "新增接口",
      "title": "新增评价列表接口文档",
      "summary": "新增接口文档 /api/getCommentList：查询营种的已发布评价，支持评价时间、营种、营期、星级（0~5 精确匹配、含半星）与售卖门店筛选；relation=1 可一并返回与所查营种互相关联的其他营种评价。仅返回已发布展示的评价，待审核、已隐藏及系统默认好评不包含，范围规则不可通过参数调整。营种列表相关接口同步增加导航。",
      "impact": "客户侧可获取营种真实口碑用于展示与分析；无营期的评价 period_id=0、period_name=\"\"，且不会被 period_id/store_id 筛选命中，需做兼容；picstr 为图片 URL 数组，无图时为空数组。",
      "links": [
        {
          "title": "评价列表",
          "url": "https://docs.open.xinduobang.cn/docs/product/comment-list",
          "apiPath": "/api/getCommentList"
        },
        {
          "title": "获取营种列表",
          "url": "https://docs.open.xinduobang.cn/docs/product/product-list",
          "apiPath": "/api/productList"
        }
      ]
    },
    {
      "id": "2026-10-28-member-stores",
      "date": "2026-10-28",
      "type": "fields",
      "typeLabel": "字段更新",
      "title": "会员列表补充门店筛选与所属门店",
      "summary": "获取会员列表的文档增加 store_id 筛选参数和 store_list 返回字段，说明一个会员可属于多个门店。",
      "impact": "按门店同步会员或制作门店客户看板时，可使用 store_id；读取所属门店时按数组处理，不假设会员只属于一家门店。",
      "links": [
        {
          "title": "获取会员列表",
          "url": "https://docs.open.xinduobang.cn/docs/member/member-list",
          "apiPath": "/api/memberlist"
        },
        {
          "title": "获取门店清单",
          "url": "https://docs.open.xinduobang.cn/docs/product/store-list",
          "apiPath": "/api/storelist"
        }
      ]
    },
    {
      "id": "2026-10-23-student-id-type",
      "date": "2026-10-23",
      "type": "fields",
      "typeLabel": "字段更新",
      "title": "订单变更通知补充营员证件类型",
      "summary": "营员变更快照 exchange_student_info 的 old_list、new_list 补充 idcard_type 字段及证件类型枚举。",
      "impact": "同步换营员记录时，可同时读取证件类型与证件号码；不要一律按身份证处理。",
      "links": [
        {
          "title": "订单变更通知",
          "url": "https://docs.open.xinduobang.cn/docs/webhook/order-change-notify"
        }
      ]
    },
    {
      "id": "2026-10-20-period-insurance",
      "date": "2026-10-20",
      "type": "added",
      "typeLabel": "新增接口",
      "title": "新增营期保险金额查询文档",
      "summary": "新增 /api/getPeriodInsurance 文档，可按营期查询在保保费、保单张数、覆盖人数及多款保险明细；统一保单按保单去重计费。",
      "impact": "适合已开通保险对接的营期对账和在保汇总。此接口只读，不提供投保操作或逐人保单明细；成功判断需结合 msg 与 data。",
      "links": []
    },
    {
      "id": "2026-10-19-period-groups",
      "date": "2026-10-19",
      "type": "added",
      "typeLabel": "新增接口",
      "title": "新增创建营期团、营期组的文档",
      "summary": "补充 /api/createTeam 与 /api/createGroup，说明通过团、组别名创建，以及返回 cut_id、group_id、is_create 的含义。",
      "impact": "编排营期团组结构时先建团再建组；相同别名按文档规则复用。同一范围内串行调用，不会自动分配或迁移营员。",
      "links": [
        {
          "title": "创建营期团",
          "url": "https://docs.open.xinduobang.cn/docs/period/create-team",
          "apiPath": "/api/createTeam"
        },
        {
          "title": "创建营期组",
          "url": "https://docs.open.xinduobang.cn/docs/period/create-group",
          "apiPath": "/api/createGroup"
        },
        {
          "title": "获取营期分团分组详情",
          "url": "https://docs.open.xinduobang.cn/docs/period/get-period-group-detail",
          "apiPath": "/api/getPeriodGroup"
        }
      ]
    },
    {
      "id": "2026-10-16-import-order-period",
      "date": "2026-10-16",
      "type": "added",
      "typeLabel": "新增接口",
      "title": "新增导入订单换营与待确认营期文档",
      "summary": "补充 /api/changeImportOrderPeriod 和 /api/getDelayPlu，说明导入订单跨营种换营、营期规格获取及待确认营期的处理。",
      "impact": "仅适用于文档约定的导入订单。换营不重算价格，差价需另行处理；营期变化会触发退保。getDelayPlu 可能创建缺失的待确认营期及规格，不能当作纯只读查询。",
      "links": [
        {
          "title": "更换营期",
          "url": "https://docs.open.xinduobang.cn/docs/order/change-period",
          "apiPath": "/api/changeImportOrderPeriod"
        },
        {
          "title": "获取营种待确认plu",
          "url": "https://docs.open.xinduobang.cn/docs/extension/get-delay-plu",
          "apiPath": "/api/getDelayPlu"
        }
      ]
    },
    {
      "id": "2026-10-14-order-product-stores",
      "date": "2026-10-14",
      "type": "fields",
      "typeLabel": "字段更新",
      "title": "订单和营种列表增加门店筛选说明",
      "summary": "查询订单与获取营种列表补充 store_id 筛选；营种返回字段增加所属门店数组 store_list。订单数据结构也补充所属门店字段说明。",
      "impact": "制作分店报表或按门店同步订单、营种时可按门店过滤；营种所属门店应按多个门店处理。",
      "links": [
        {
          "title": "获取订单",
          "url": "https://docs.open.xinduobang.cn/docs/order/query-order",
          "apiPath": "/api/catOrder"
        },
        {
          "title": "获取营种列表",
          "url": "https://docs.open.xinduobang.cn/docs/product/product-list",
          "apiPath": "/api/productList"
        },
        {
          "title": "订单数据结构",
          "url": "https://docs.open.xinduobang.cn/docs/order/order-fields"
        }
      ]
    },
    {
      "id": "2026-10-13-store-list",
      "date": "2026-10-13",
      "type": "added",
      "typeLabel": "新增接口",
      "title": "新增获取门店清单文档",
      "summary": "补充 /api/storelist 文档，作为门店筛选参数及门店展示信息的取值来源。",
      "impact": "需要按门店查询会员、订单或营种时，先读取门店清单取得门店 ID，避免依赖手工填写的名称。",
      "links": [
        {
          "title": "获取门店清单",
          "url": "https://docs.open.xinduobang.cn/docs/product/store-list",
          "apiPath": "/api/storelist"
        }
      ]
    },
    {
      "id": "2026-10-10-import-template",
      "date": "2026-10-10",
      "type": "added",
      "typeLabel": "新增接口",
      "title": "新增营种导入模板查询文档",
      "summary": "按营种查询订单基础字段和报名表字段，返回字段类型、必填标记与可选项，可用于生成 Excel 表头或动态表单。",
      "impact": "儿童与成人报名字段按 child、big 分组处理；同名字段不能直接合并。需要营期规格选项时，可结合营种详情接口获取。",
      "links": [
        {
          "title": "获取订单导入模版",
          "url": "https://docs.open.xinduobang.cn/docs/product/import-template",
          "apiPath": "/api/importTemplate"
        }
      ]
    },
    {
      "id": "2026-10-10-order-sign-url",
      "date": "2026-10-10",
      "type": "added",
      "typeLabel": "新增接口",
      "title": "新增订单合同地址查询文档",
      "summary": "补充 /api/getOrderSignUrl，用于获取订单最新的电子合同地址，并更新订单与回调中的 sign_pdf_url 相关说明。",
      "impact": "需打开或下载最新合同时，按订单查询专门接口，结合文档说明处理尚无合同及地址有效性。",
      "links": [
        {
          "title": "重新获取合同签名",
          "url": "https://docs.open.xinduobang.cn/docs/order/get-order-sign-url",
          "apiPath": "/api/getOrderSignUrl"
        },
        {
          "title": "订单数据结构",
          "url": "https://docs.open.xinduobang.cn/docs/order/order-fields"
        }
      ]
    },
    {
      "id": "2026-10-09-course-types",
      "date": "2026-10-09",
      "type": "added",
      "typeLabel": "新增接口",
      "title": "新增营种分类查询文档",
      "summary": "查询营种分类，支持按名称、父级分类和上下架状态筛选，返回分类 ID、名称及父级关系。",
      "impact": "可用于构建分类筛选或分类导航；默认只返回已上架分类，需要查询下架分类时传入对应 status。",
      "links": [
        {
          "title": "获取营种分类",
          "url": "https://docs.open.xinduobang.cn/docs/product/course-type-list",
          "apiPath": "/api/getCourseTypeList"
        }
      ]
    },
    {
      "id": "2026-10-09-form-list",
      "date": "2026-10-09",
      "type": "added",
      "typeLabel": "新增接口",
      "title": "新增报名表列表查询文档",
      "summary": "查询报名表列表，支持按名称、营种 ID 和上下架状态筛选，返回报名表 ID、名称及状态。",
      "impact": "需要确定营种使用的报名表时可传 pid 查询。该接口返回报名表列表，读取导入所需字段请查看营种导入模板接口。",
      "links": [
        {
          "title": "获取报名表列表",
          "url": "https://docs.open.xinduobang.cn/docs/product/form-list",
          "apiPath": "/api/getFormList"
        }
      ]
    },
    {
      "id": "2026-10-09-product-info",
      "date": "2026-10-09",
      "type": "added",
      "typeLabel": "新增接口",
      "title": "新增营种详情查询文档",
      "summary": "按营种 ID 获取基本信息、规格期次、价格方案与报名配置，支持读取亲子定价和营期差价。",
      "impact": "适合营种信息展示、规格选择和报名流程对接。价格需区分规格价、亲子套餐价及营期差价，具体取值见接口文档。",
      "links": [
        {
          "title": "获取营种详情",
          "url": "https://docs.open.xinduobang.cn/docs/product/product-info",
          "apiPath": "/api/productInfo"
        }
      ]
    },
    {
      "id": "2026-09-20-product-access-log",
      "date": "2026-09-20",
      "type": "added",
      "typeLabel": "新增接口",
      "title": "新增营种浏览明细查询文档",
      "summary": "按营种和时间范围查询历史浏览记录，返回访问时间、浏览时长及用户信息。",
      "impact": "可用于营种访问分析和客户跟进。浏览时长以秒为单位，接口仅返回时长大于 0 的记录；按文档约定的时间范围分页查询。",
      "links": [
        {
          "title": "获取营种浏览明细",
          "url": "https://docs.open.xinduobang.cn/docs/product/product-access-log",
          "apiPath": "/api/productAccessLog"
        }
      ]
    },
    {
      "id": "2026-09-11-copy-course",
      "date": "2026-09-11",
      "type": "added",
      "typeLabel": "新增接口",
      "title": "新增复制营种接口文档",
      "summary": "根据已配置的模板复制新营种，并生成对应的有效营期、规格及营期配置，返回新营种和营期编号。",
      "impact": "适用于已开通营种模板场景的接入方，复制源由平台配置，无需传营种 ID。每次调用都会新建营种，应避免重复提交。",
      "links": [
        {
          "title": "复制营种",
          "url": "https://docs.open.xinduobang.cn/docs/extension/copy-course-data",
          "apiPath": "/api/copyCourseData"
        }
      ]
    },
    {
      "id": "2026-09-11-order-student-id",
      "date": "2026-09-11",
      "type": "fields",
      "typeLabel": "字段更新",
      "title": "订单查询与变更通知补充营员 ID",
      "summary": "订单营员数据补充 students[].sid；订单查询支持传入 sid，精确查询单个营员关联的订单。",
      "impact": "查询结果中的营员 ID 可用于退营、编辑营员及评价查询等接口。sid 与其他筛选条件同时传入时取交集，无匹配订单时返回空列表。",
      "links": [
        {
          "title": "获取订单",
          "url": "https://docs.open.xinduobang.cn/docs/order/query-order",
          "apiPath": "/api/catOrder"
        },
        {
          "title": "订单数据结构",
          "url": "https://docs.open.xinduobang.cn/docs/order/order-fields"
        },
        {
          "title": "订单变更通知",
          "url": "https://docs.open.xinduobang.cn/docs/webhook/order-change-notify"
        }
      ]
    }
  ]
}
