后端与接口
在 Sumsub 沙箱中创建或更新 KYC…
当需要为 Sumsub 申请人流程新建或修改问卷定义时,用紧凑 spec 生成 payload 并调用 Sumsub API 完成创建或更新。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 59/100 ×0.15
适用场景
在 Sumsub 沙箱中创建或更新 KY特定
解决思路
- 先调用 sumsub-check-permissions 技能获取租户权限,确认 allowedChecks 中包含 QUESTIONNAIRE;若缺失则立即停止,不要构建或 POST 问卷,并告知用户联系 CSM 或 Sumsub 支持开通该权限。
- 收集用户的问题列表,映射为紧凑 spec 格式(JSON 或 YAML),不要手写完整的本地化 payload;英文标题会自动包装为 localizedTitle / localizedDesc。
- 校验 spec:确认 id 是唯一 slug,每个 item 的 type 受支持,所有条件引用都指向真实存在的 <sectionId>.<itemId>。
- 运行 ${CLAUDE_SKILL_DIR}/scripts/build_questionnaire.py,将 spec 通过 stdin 传入以生成 payload,并简要检查输出。
- 判断是新建还是更新:POST 在 id 已存在时返回 409 CONFLICT,PATCH 在 id 不存在时返回 404 NOT_FOUND,两者行为严格,需提前选对动词;不确定时先 GET /{id}。
- 新建时通过 ${CLAUDE_SKILL_DIR}/scripts/post_questionnaire.sh <payload.json> 发起 POST(也可用 … | post_questionnaire.sh - 从 stdin 管道传入);若用户之前用过某个 id,先通过 ${CLAUDE_SKILL_DIR}/scripts/get_questionnaire.sh 查询以避免 409 CONFLICT。
- 更新已有问卷时,先通过 ${CLAUDE_SKILL_DIR}/scripts/get_questionnaire.sh 查询,让用户看到将被覆盖的内容,再通过 ${CLAUDE_SKILL_DIR}/scripts/patch_questionnaire.sh <payload.json> 发起 PATCH。
- 认证使用 App Token + secret 签名每个请求;仅使用沙箱 token(以 sbx: 开头),拒绝生产 token 并让用户在 https://cockpit.sumsub.com/checkus/home?sbx=true 生成沙箱 token 对;环境变量为 SUMSUB_APP_TOKEN、SUMSUB_SECRET_KEY,可选 SUMSUB_BASE(默认 https://api.sumsub.com);若用户已在对话中提供凭据则复用,否则先询问一次,绝不回显 secret。
- 从响应体中读取 id 和 clientId,构建仪表盘链接:https://cockpit.sumsub.com/checkus/sdkIntegrations/questionnaireDetails/<id>?clientId=<clientId>&sbx=true,并以可点击的 markdown 链接呈现。
- 报告时先给出人类可读信息:title、section/item 数量、country/lang 覆盖情况(如相关)、仪表盘链接,最后单独一行输出 Questionnaire ID (for level wiring / future PATCH): <id>。
- 所有面向用户的消息(POST 前摘要、流程中状态更新、诊断信息)都用 title 指代问卷,不要用 id slug;slug 只出现在最后专门那一行,因为用户需要把它复制到 level 的 questionnaireDefId。
- 遇到 4xx 时输出 HTTP 状态码和错误体中的 description 字段,不要盲目重试;POST 返回 409 CONFLICT 时建议改用 PATCH。
- 将返回的问卷 id 作为 level 的 QUESTIONNAIRE doc-set 中的 questionnaireDefId(规范字段)或 questionnaireId(别名)传给 sumsub-create-level 技能。
- 支持的 item 类型:text、textArea、date、dateTime、bool、select、phone、selectDropdown、multiSelect、countrySelect、countryMultiSelect、fileAttachment、multiFileAttachments;其中 select / selectDropdown / multiSelect 必须提供 options: [[value, title], ...]。
- 使用 condition 字符串表达显示/隐藏逻辑,语法参见 references/questionnaire-schema.md。
适用边界 · 注意事项
- 不适用于其他 Sumsub 实体(levels、workflows、applicants)的操作。
- 不适用于提交问卷数据(答案)。
- 不适用于非 Sumsub 的表单构建器。