开发者文档 · 开放接口

模式库接口

让 AI 读取已脱敏的项目资料,起草模式库条目并提交为草稿。

以下接口的完整地址都以 https://api.yqpj.com/app-api/project/open-api 开头,请求头带 X-Api-Key: <你的密钥>。

命令行把两个接口串成一步:yqpj-agent model-draft <项目名 | 业务编号 | 编号> [--dry-run] 先拉项目资料,交给本机 AI 按起草规约生成条目,校验结构后提交草稿;yqpj-agent model-draft --all 对你已上线、维护中的项目逐个起草,已有草稿的跳过。

GET /models/project-context 起草用的项目资料

返回 AI 起草模式条目需要的项目资料:需求正文、费用结构、状态与周期、仓库、可选的模式分类,以及这个项目对应草稿的链接标识与是否已有草稿。

所需权限:查看我的项目(PROJECT_READ),且你是项目创建者或已接受的开发者。

请求参数(查询串)

字段类型必填说明
project文本是项目编号、业务编号或名称;纯数字(少于 19 位)按项目编号找

请求示例

GET /app-api/project/open-api/models/project-context?project=34

返回示例

{
  "code": 0,
  "data": {
    "projectId": 34,
    "maskedName": "钱**务",
    "status": "MAINTAINING",
    "statusLabel": "维护中",
    "requirement": "(已脱敏的需求正文)",
    "remark": null,
    "devCycleMin": 30,
    "devCycleMax": 45,
    "cycleUnit": "DAY",
    "dealTime": 1788192000000,
    "testTime": 1791561600000,
    "onlineTime": 1792425600000,
    "maintainTime": 1792512000000,
    "endTime": null,
    "actualDevDays": 49,
    "participantCount": 2,
    "fees": [
      { "category": "开发费", "categoryCode": "dev", "amount": 5500, "currency": "USDT",
        "chargeType": "ONCE", "period": null, "remark": null }
    ],
    "repos": [ { "repo": "github.com/***/wallet", "branch": "master", "repoRemote": "github.com/acme/wallet", "localBranch": "master" } ],
    "modelCategories": [ { "id": 3, "code": "distribution", "name": "分销返佣" } ],
    "draftSlug": "ai-case-34",
    "draftModelId": null,
    "draftStatus": null
  },
  "msg": ""
}

说明

  • 脱敏:项目名只给脱敏名称;需求、备注、费用备注、分支里出现的项目名和参与方名称都会被替换;仓库只留平台与仓库名。另附 repoRemote(规范化的 host/owner/repo,不含账号口令)与 localBranch(原始分支名),只供本机命令行找本地代码目录,不交给 AI。
  • 提交草稿时 devDaysMin/Max、priceMin/Max 不知道就传 null;传 0 或负数会被当成 null。
  • actualDevDays 为成交到上线的实际天数,任一日期缺失时为空。
  • modelCategories 是当前启用的模式分类,起草时从中选一个填 categoryId。
  • 一个项目一条草稿:draftSlug 固定为 ai-case-<项目编号>,用它提交草稿,重复起草会更新同一条。已有时 draftModelId、draftStatus 有值。

POST /models/draft 提交 AI 起草的条目

把起草好的模式条目存为草稿,来源记为 AI 起草,之后由人工在后台审阅发布。

所需权限:新建项目(PROJECT_WRITE)。

请求参数

字段类型必填说明
slug文本是链接标识:小写字母、数字、中划线,以字母或数字开头,2~80 位(大写会转小写)
title文本是标题,最长 100 字
categoryId数字是分类编号,须是已存在的分类
summary文本是一句话摘要,最长 300 字
tags文本数组否标签
scenarios文本否适用场景(Markdown)
roles数组否角色与权益,每项:role 角色、gives 付出、gets 获得
fundFlow对象否资金流向:nodes(id、label)与 edges(from、to、label)
rules数组否规则参数表,每项:name、value、unit、note
economics文本否经济模型推演(Markdown)
sustainability文本否可持续性分析(Markdown)
riskLevel枚举否风险等级:LOW / MEDIUM / HIGH / EXTREME
riskPoints文本数组否风险要点
complianceNote文本否合规提示
devModules数组否开发要点,每项:module、note
devDaysMin / devDaysMax整数否开发天数下限 / 上限
priceMin / priceMax金额否参考报价下限 / 上限
priceCurrency枚举否CNY / USD / USDT
caseProjectIds数字数组否关联的平台项目编号(展示时只给脱敏名称与状态)
difficulty枚举否难度:EASY / MEDIUM / HARD
simTemplate枚举否测算器模板:FUND_POOL;不填表示不提供测算器
simDefaults对象否测算参数默认值(覆盖模板默认),如 {"ticket": 1000}
simVisibleParams文本数组否H5 显示的测算参数编码,空为全部

请求示例

{
  "slug": "ai-case-34",
  "title": "三级分销会员",
  "categoryId": 3,
  "summary": "会员购买后按三级关系返佣的推广模式",
  "tags": ["分销", "会员"],
  "roles": [
    { "role": "推广员", "gives": "购买会员 199 元", "gets": "下级消费 10% 返佣" }
  ],
  "rules": [
    { "name": "一级返佣", "value": "10", "unit": "%", "note": "按实付金额" }
  ],
  "riskLevel": "MEDIUM",
  "riskPoints": ["层级过多可能触及合规红线"],
  "devDaysMin": 30,
  "devDaysMax": 45,
  "priceMin": 5000,
  "priceMax": 8000,
  "priceCurrency": "USDT",
  "caseProjectIds": [34],
  "difficulty": "MEDIUM"
}

返回示例

{
  "code": 0,
  "data": { "id": 17, "slug": "ai-case-34", "status": "DRAFT" },
  "msg": ""
}

规则说明

  • 同 slug 更新:该链接标识还没有条目时新建草稿;已有草稿时用本次内容更新它。
  • 不覆盖已发布内容:同 slug 已有条目且不是草稿时拒绝提交。
  • 标题、分类、一句话摘要缺失,或分类不存在时报错。