自动拉取JIRA的bug单录入到Multica的Issue

2026/06 08 19:06

可以实现JIRA录入Bug单后,Multica自动接单并且自动修复上传到分支

创建JIRA访问令牌

进入JIRA,点用户信息,个人访问令版,创建令牌,保存好

创建拉取脚本

getJiraTask.py

import requests
import json
import os

JIRA_HOST = "http://jira.公司域名.com:端口号"
PAT_TOKEN = "NTU2Njk2MDY0ODkzOoKHXqTwoFE1jrEZOTpV45ZaHAfw"
Q_ASSIGNEE = "AND assignee in (用户名,用户名...)"
Q_STATUS = "AND status = 等待处理 AND resolution = Unresolved"
Q_CREATED = "AND created >= -48h"
JQL = f"project=KTP {Q_CREATED} {Q_STATUS} {Q_ASSIGNEE}"
URL = f"{JIRA_HOST}/rest/api/2/search"
HEADERS = { "Authorization": f"Bearer {PAT_TOKEN}", "Content-Type": "application/json" }
PARAMS = {"jql": JQL, "maxResults": 100, "startAt": 0 }

def loadLocalTaskKeys():
    try:
        with open("task_key.txt", "r") as f:
            return [line.strip() for line in f if line.strip()]
    except FileNotFoundError:
        return []

def getJiraTasks():
    if os.path.exists("task_new.json"):
        os.remove("task_new.json")
    taskKeys = loadLocalTaskKeys()
    response = requests.get(URL, headers=HEADERS, params=PARAMS)
    if response.status_code == 200:
        data = response.json()
        newTasks = []
        for issue in data["issues"]:
            key = issue["key"]
            if key in taskKeys:
                continue
            summary = issue["fields"]["summary"]
            lowSummary = summary.lower()
            if "bot" in lowSummary:
                description = issue["fields"]["description"]
                assignee = issue["fields"]["assignee"]["name"]
                newTasks.append({"key": key, "summary": summary, "description": description, "assignee": assignee})
        if newTasks:
            with open("task_new.json", "w", encoding="utf-8") as f:
                json.dump(newTasks, f, ensure_ascii=False, indent=2)

getJiraTasks()

以上脚本拉取近2天的JIRA任务单,并且判断

1、标题是否有bot,没有则不创建

2、防止重复创建

Multica添加Skill:get_client_jira_task

# 工作目录
限定在xx目录中

# 生成新任务
* 运行getJiraTasks.py,将会生成task_new.json文件
* 若没有生成task_new.json文件,任务中止

# 转换为Multica issue
* task_new.json的格式为一组issue信息,单个issue信息含有key,summary,description,issue的title=key+summary
* 单个issue信息,转换为Multica的issue,项目为xxx,分配给bot_develop执行,并将key追加到task_key.txt中

添加定时器

每隔30分钟自动运行skill get_client_jira_task

bot_develop智能体配置

```md
## 你是谁
你是xxx,主要使用xxx语言

## 你的git工作区
xxxx
不得切换git分支

## 代码目录
xxxx

## 编辑与提交
- 修改前,先更新git
- 编辑完成直接commit和push
- commit提交信息与issue标题一致
```