本 Skill 用于发起风控报告异步申请,并根据 taskId 查询报告生成结果。用户不得单独调用登录 Skill;报告申请命令会使用本 Skill 内置的税局登录能力完成登录链路,并默认自动生成授权书 PDF。
本 skill 依赖企享云开放平台凭证:
client_appkeyclient_secretAPI 密钥申请:https://open.qixiangyun.com
凭证读取优先级:
.env.env(/Users/xueds/Python/skills/qixiangyun-skill/.env)QXY_CLIENT_APPKEY / QXY_CLIENT_SECRET首次使用时,如果凭证不存在:
client_appkey 和 client_secret appKey和appSecret请注册企享云开放平台申请 https://open.qixiangyun.com
.env:```env
QXY_CLIENT_APPKEY=用户提供的appkey
QXY_CLIENT_SECRET=用户提供的secret
```
自然人登录密码必须通过环境变量传入,避免明文落入命令历史:
export QXY_LOGIN_PASSWORD="your_password"
自动生成授权书时,服务提供方/授权企业名称和税号就是本次申请报告的企业名称和税号,默认从税局登录后发现的企业信息自动带入。代理不得再向用户索要 ISV 公司名称或 ISV 税号。
python3 scripts/risk_report_workflow.py apply \
--area-code 3100 \
--phone 13800138000 \
--password-env QXY_LOGIN_PASSWORD \
--rpt-type 1
申请入口通常只需要地区代码、自然人手机号、自然人密码和开放平台配置。企业名称和税号会在税局登录后的企业列表中自动发现,并默认作为授权书中的服务提供方/授权企业信息;如果同一个自然人账号关联多个企业,流程会返回 enterprise_selector 卡点,再由用户补充 --enterprise-index、--nsrmc 或 --nsrsbh 继续同一个 apply 命令。
如果用户输入地区与选中企业所属地区不同,后续企业订购、多账号创建和风控报告申请都必须使用选中企业的地区代码。不得继续使用用户最初输入的地区覆盖选中企业地区。
如果返回 waiting_for_user_input=true,只能继续调用同一个 apply 命令并补充对应参数:
user_input_kind=enterprise_selector:展示返回的 enterprises,用户选择后补充 --enterprise-index、--nsrmc 或 --nsrsbh。如果用户直接回复数字 1 / 2 / 3,必须按展示顺序把该数字作为 --enterprise-index 续跑同一个 apply 命令。user_input_kind=authorization_consent:把返回的 authorizationConsentText 用自然语言展示给用户,用户明确同意后补充 --authorization-consentuser_input_kind=natural_sms_code:补充 --natural-sms-codeuser_input_kind=enterprise_sms_code:补充 --enterprise-sms-code--authorization-consent 必须是用户自然语言同意文本,且必须包含“同意”。首次未提供或文本不明确时,Skill 会返回完整 authorizationConsentText,不得替用户静默确认授权。授权确认前必须先向用户展示包含企业名称、税号和授权范围的 authorizationConsentText。
用户确认授权后,必须继续执行同一个 apply 命令并补充 --authorization-consent。不得因为自动生成授权书而询问 ISV 公司名称或税号;这两个值默认等于本次申请报告的企业名称和税号。
如果授权确认文案中的企业与用户刚才选择的企业不一致,不得继续申请;应回到 enterprise_selector 卡点并按用户选择的展示序号重新补充 --enterprise-index。
默认情况下,脚本会在 .generated/authorization/ 下生成审计 DOCX 和接口 PDF,并把 PDF base64 写入 sq_info 后提交 MCP。CLI 仍使用 --sq-info-base64 作为人工覆盖入口。如需覆盖,可显式传:
--authorization-pdf--sq-info-base64--authorization-template--authorization-output-dir--authorization-phone申请成功后必须把返回的 taskId 告诉用户保存。taskId 等同于接口返回的 riskRptId。
python3 scripts/risk_report_workflow.py query --task-id 5255567414997147791
状态语义:
pending:报告生成中failed:报告生成失败success:报告生成成功python3 scripts/risk_report_workflow.py wait \
--task-id 5255567414997147791 \
--interval-seconds 60 \
--max-attempts 35
默认轮询配置覆盖约 35 分钟,适配 20-30 分钟报告生成耗时。
https://mcp.qixiangyun.com/mcp/apply_risk_report-httpapply_risk_report_autoquery_risk_report_result_autoarea_code、rpt_type、agg_org_id、account_id、sq_inforisk_rpt_idareaCode、rptType、aggOrgId、accountId、sqInfo、riskRptIdenterpriseLogin.verified=true 只表示历史流程走到企业登录完成,不能直接等同于税局缓存仍有效。login_enterprise_account 校验缓存或快速登录;校验不 ready 时,保留企业选择、订购和多账号信息,清理企业登录态并重新发起企业短信登录。aggOrgId/accountId 可兼容读取历史 camelCase 和内部 snake_case 字段,但提交 MCP 前必须统一为 agg_org_id/account_id。client_secret、授权书 base64。details,但必须脱敏手机号、账号 ID、企业 ID、验证码、密钥和授权书正文。共 3 个版本