YesDev进阶:订阅项目/需求/问题等变更通知,打通自有系统数据

118 阅读6分钟

协作背景

在团队研发协作过程中,难免需要在内部多个系统之间打通系统数据。例如在处理线上售后工单时,当需要把YesDev项目管理和CRM系统、客服系统、前台业务系统的数据打通,消除信息孤岛和提升内部协作沟通效率,同时保证数据安全时,可以使用YesDev设计提供的项目/需求/问题等变更通知推送和订阅,以及数据拉取API接口。让具备开发能力的团队和企业,能够低成本、快速获取需要的项目数据信息,打通自有内部系统。

YesDev是什么?

YesDev是一站式企业研发管理、项目管理与协同办公平台,支持敏捷开发、DevOps、Scrum、硬件项目等多种迭代方式,能为企业管理者智能生成项目投入产出的数据模型,真正实现项目研发全流程数字化管理。

服务端Webhook配置

假设企业key为:GCKJ。

新增配置文件:
./config/record_webhook_GCKJ.php,编辑保存:

<?php
// 变更记录的回调通知地址
return [
    'webhook' => 'http://test.www.yesdev.cn/xxx',
];

温馨提示:需要使用前,请联系我们技术人员在服务端配置你系统的Webhook地址。

变更推送

YesDev将会以POST请求的方式,将以下格式的报文推送到你的回调地址。

请求方式

POST

请求头

Content-Type: application/x-www-form-urlencoded;

请求的参数格式

参数名类型说明备注
module_type整数模块类型1项目、2任务、3需求、4问题、100周报、101PRD、200文档、300测试用例、310测试计划、400工作组
module_type_id整数对应模块的ID例如:项目ID、需求ID、问题ID等
recordJSON变更记录,多组

其中,record是JSON格式,存在多组的变更记录信息。示例:

[{    "name":"刘xx",    "date":"2023-07-21 15:56:04",    "record_msg":"任务SOP与前端联调 任务状态从【待办】改为【进行中】"}]

每一组的变更记录结构体格式:

参数名类型说明备注
name字符串员工姓名如:张三
date日期时间操作的日期时间示例:2023-07-21 15:09:04
record_msg字符串变更说明内容

请求参数示例

完整推送的数据示例:

{
    "module_type":3,
    "module_type_id":628908,
    "record":"[{"name":"黄禅宗","date":"2023-07-21 16:21:14","record_msg":"数据拉取API 测试负责人从【】改为【dogstar】","record_msg_change":"dogstar"}]"
}

响应要求

对响应返回的结果和HTTP状态码无要求,但需要在5秒内响应,超时失败不重试。

详情数据拉取API

根据变更推送的module_type和module_type_id,可以继续调用以下API接口拉取所需要的项目/需求/问题等详情数据。

  • App.ModuleData.GetModuleDataDetail:获取模块数据详情接口

拉取项目详情

温馨提示:module_type=1时,表示拉取项目详情,此时module_type_id对应项目ID。

项目详情示例:

{
    "ret": 200,
    "data": {
        "module_type": 1,
        "module_type_id": 102433,
        "detail": {
            "id": 102433,
            "project_name": "七月YesDev产品迭代",
            "admin_id": 2600,
            "project_type": 0,
            "project_start_time": "2023-07-04",
            "project_end_time": "2023-07-31",
            "project_product_id": 17,
            "project_desc": "<p>项目背景:</p><p><br/></p><p>项目文档:</p><p><br/></p>",
            "project_status": 1,
            "add_time": "2023-07-04 09:58:01",
            "app_key": "GCKJ",
            "charge_staff_id": 2598,
            "workgroup_id": 13,
            "top_time": 0,
            "sys_update_time": "2023-07-21 16:09:30",
            "created_staff_id": 2598,
            "refuse_delete": 0,
            "from_channel": "",
            "show_modules": "1_1,2_1,5_1,3_1,4_1,6_1,13_1,11_1,12_1,8_1,9_1,10_1,14_1,15_1,17_1,16_1,18_1,19_1,20_1,21_1,22_1,23_1,24_1,25_1,",
            "label_name_str": null,
            "show_modules_times": 0,
            "visit_times": 0,
            "redundancy_historical_update_version": 359,
            "redundancy_last_record_log": "[{"name":"黄禅宗","date":"2023-07-21 16:09:30","record_msg":"更新了 需求#628908 的开发文档"}]",
            "project_bg_color": "#673AB7",
            "auto_tidy_up": 1,
            "project_purpose_type": 0,
            "is_locking": 0,
            "auto_create_danger_problem": 0,
            "project_level_type": 1
        }
    },
    "msg": ""
}

拉取需求详情

温馨提示:module_type=3时,表示拉取需求详情,此时module_type_id对应需求ID。

需求详情示例:

{
    "ret": 200,
    "data": {
        "module_type": 3,
        "module_type_id": 628908,
        "detail": {
            "id": 628908,
            "need_name": "项目/需求/问题/任务变更通知订阅推送,以及数据拉取API",
            "need_check_status": 1,
            "need_status": 410,
            "product_category_id": 17,
            "product_category_version_id": 0,
            "need_from": "",
            "need_finish_date": "2023-07-28",
            "need_content": "<p>需求背景:</p><p>参考资料: <br/></p>",
            "document_content_type": 0,
            "need_note": "",
            "need_level": 1,
            "app_key": "GCKJ",
            "admin_id": 49,
            "add_time": "2023-07-21 14:31:36",
            "charge_staff_id": 45,
            "test_charge_staff_id": 13,
            "project_id": 102433,
            "prd_id": 0,
            "sys_update_time": "2023-07-21 17:38:07",
            "created_staff_id": 45,
            "refuse_delete": 0,
            "from_channel": "top_menu_in_project",
            "outside_app_key": "",
            "outside_staff_id": 0,
            "outside_charge_name": "",
            "cost": "0.00",
            "label_name_str": null,
            "show_modules": "",
            "redundancy_historical_update_version": 15,
            "redundancy_last_record_log": "[{"name":"黄禅宗","date":"2023-07-21 17:38:07","record_msg":"项目\/需求\/问题\/任务变更通知订阅推送,以及数据拉取API 需求状态从【研发中】改为【待发布】","record_msg_change":"待发布"}]",
            "need_plan_id": 0,
            "is_delay_reminder": 0,
            "delay_reminder_day_nums": 1,
            "have_send_delay_reminder": 0
        }
    },
    "msg": ""
}

拉取问题详情

温馨提示:module_type=4时,表示拉取问题详情(Bug/故障/缺陷/工单/风险),此时module_type_id对应问题ID。

问题详情示例:

{
    "ret": 200,
    "data": {
        "module_type": 4,
        "module_type_id": 7020907,
        "detail": {
            "id": 7020907,
            "problem_title": "批量操作按钮【取消关联】,增加二次确认弹窗交互",
            "problem_content": "<p>当前实现:</p><p><br/></p><p><font>优化方案:</font></p><p><font><br/></font></p>",
            "problem_type": 2,
            "problem_level": 20,
            "problem_status": 1,
            "problem_attribution": 0,
            "product_category_version_id": 0,
            "file_ids": null,
            "admin_id": 217216,
            "add_time": "2023-06-01 18:23:08",
            "app_key": "GCKJ",
            "created_staff_id": 12143,
            "assign_staff_id": 2598,
            "end_time": null,
            "is_follow": 0,
            "product_category_id": 17,
            "project_id": 102433,
            "need_id": 0,
            "test_plan_id": 0,
            "test_plan_case_id": 0,
            "sys_update_time": "2023-07-06 09:24:13",
            "outside_app_key": "",
            "outside_staff_id": 0,
            "from_channel": "project_problem_modal",
            "outside_charge_name": "",
            "label_name_str": null,
            "redundancy_historical_update_version": 2,
            "redundancy_last_record_log": "[{"name":"彭xx","date":"2023-07-06 09:24:12","record_msg":"批量操作按钮【取消关联】,增加二次确认弹窗交互 问题所属项目从【六月YesDev产品迭代】改为【七月YesDev产品迭代】","record_msg_change":"七月YesDev产品迭代"}]"
        }
    },
    "msg": ""
}

拉取任务详情

温馨提示:module_type=2时,表示拉取任务详情,此时module_type_id对应任务ID。

任务详情示例:

{
    "ret": 200,
    "data": {
        "module_type": 2,
        "module_type_id": 80164349,
        "detail": {
            "id": 80164349,
            "task_title": "新建任务弹窗新增关联问题功能",
            "task_type": 3,
            "admin_id": 2600,
            "task_time": "2.0",
            "task_finish_time": "2023-07-12",
            "task_status": 1,
            "project_id": 102433,
            "problem_id": 0,
            "app_key": "GCKJ",
            "add_time": "2023-06-05 17:13:15",
            "staff_id": 2598,
            "need_id": 625625,
            "sys_update_time": "2023-07-24 08:00:02",
            "task_desc": "",
            "created_staff_id": 2598,
            "from_channel": "reqm_detail",
            "delay_days": 0,
            "outside_app_key": "",
            "outside_staff_id": 0,
            "outside_charge_name": "",
            "parent_id": 0,
            "label_name_str": null,
            "check_status": 0,
            "check_staff_id": 0,
            "redundancy_historical_update_version": 9,
            "redundancy_last_record_log": "[{"name":"系统","date":"2023-07-24 08:00:02","record_msg":"任务#80164349 新建任务弹窗新增关联问题功能,已延期【127小时】"}]",
            "task_delay_reminder_send_nums": 3,
            "task_delay_reminder_send_total_nums": 3,
            "last_task_delay_reminder_send_date": "2023-07-24 08:00:01"
        }
    },
    "msg": ""
}

除此之外,还可以拉取周报、PRD、文档、测试用例、测试计划的详情数据。