pnkt/jiravel 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

pnkt/jiravel

Composer 安装命令:

composer require pnkt/jiravel

包简介

A comprehensive Laravel package for Jira integration with advanced features

README 文档

README

A Laravel package for Jira integration with comprehensive ticket management capabilities.

Installation

composer require pnkt/jiravel

Publish the config file:

php artisan vendor:publish --tag=jiravel-config

Configuration

Add your Jira credentials to .env:

JIRA_BASE_URL=https://your-domain.atlassian.net
JIRA_USERNAME=your-email@example.com
JIRA_API_TOKEN=your-api-token
JIRA_PROJECT_KEY=PROJECT

Add the logging channel to config/logging.php:

'channels' => [
    'jiravel' => [
        'driver' => 'daily',
        'path' => storage_path('logs/jiravel.log'),
        'level' => env('JIRA_LOG_LEVEL', 'info'),
        'days' => 14,
    ],
],

Usage

Basic Operations

use Pnkt\Jiravel\Facades\Jiravel;
use Pnkt\Jiravel\DataTransferObjects\TicketData;
use Pnkt\Jiravel\DataTransferObjects\CommentData;
use Pnkt\Jiravel\DataTransferObjects\StatusData;

// Get a ticket
$ticket = Jiravel::getTicket('PROJECT-123');

// Create a ticket
$ticketData = new TicketData(
    summary: 'Bug Report',
    description: 'Critical bug description',
    issueType: 'Bug',
    priority: 'High',
    assignee: 'developer@example.com'
);

$newTicket = Jiravel::createTicket($ticketData);

// Search tickets
$tickets = Jiravel::searchTickets('project = PROJECT AND type = Bug');

// Add comment
$commentData = new CommentData(
    body: 'This issue has been assigned',
    author: 'manager@example.com'
);

Jiravel::addComment('PROJECT-123', $commentData);

// Change status
$statusData = new StatusData(
    status: 'In Progress',
    comment: 'Starting work'
);

Jiravel::changeStatus('PROJECT-123', $statusData);

Advanced Operations

use Pnkt\Jiravel\DataTransferObjects\AssigneeData;
use Pnkt\Jiravel\DataTransferObjects\AttributeData;
use Pnkt\Jiravel\DataTransferObjects\DescriptionData;

// Reassign ticket
$assigneeData = new AssigneeData(assignee: 'senior-dev@example.com');
Jiravel::reassignTicket('PROJECT-123', $assigneeData);

// Change attribute
$attributeData = new AttributeData(
    attribute: 'priority',
    value: 'High'
);
Jiravel::changeAttribute('PROJECT-123', $attributeData);

// Edit description
$descriptionData = new DescriptionData(
    description: 'Updated description'
);
Jiravel::editDescription('PROJECT-123', $descriptionData);

// Get ticket history
$history = Jiravel::getTicketHistory('PROJECT-123');

Using Services Directly

use Pnkt\Jiravel\Contracts\Services\TicketServiceInterface;
use Pnkt\Jiravel\Contracts\Services\CommentServiceInterface;
use Pnkt\Jiravel\Contracts\Services\StatusServiceInterface;

$ticketService = app(TicketServiceInterface::class);
$commentService = app(CommentServiceInterface::class);
$statusService = app(StatusServiceInterface::class);

// Get available transitions
$transitions = $statusService->getAvailableTransitions('PROJECT-123');

// Get comments
$comments = $commentService->getComments('PROJECT-123');

Error Handling

use Pnkt\Jiravel\Exceptions\JiraException;
use Pnkt\Jiravel\Exceptions\JiraValidationException;
use Pnkt\Jiravel\Exceptions\JiraRateLimitException;

try {
    $ticket = Jiravel::getTicket('PROJECT-999');
} catch (JiraValidationException $e) {
    // Handle validation errors
    Log::warning('Validation error: ' . $e->getMessage());
} catch (JiraRateLimitException $e) {
    // Handle rate limiting
    $retryAfter = $e->retryAfter;
    Log::warning("Rate limited. Retry after {$retryAfter} seconds");
} catch (JiraException $e) {
    // Handle general Jira errors
    Log::error('Jira error: ' . $e->getMessage());
}

Features

  • Ticket Management: Create, read, update, delete tickets
  • Comments: Add, update, delete comments
  • Status Transitions: Change ticket status with transition support
  • Search: Advanced search using JQL
  • History: Get complete ticket history and changelog
  • Rate Limiting: Built-in rate limiting (1000 requests/minute)
  • Caching: Automatic caching for GET requests
  • Logging: Comprehensive logging for debugging

Testing

composer test

License

The MIT License (MIT). Please see License File for more information.

pnkt/jiravel 适用场景与选型建议

pnkt/jiravel 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 2 次下载、GitHub Stars 达 0, 最近一次更新时间为 2025 年 08 月 16 日, 在 PHP 生态内属于活跃度较高的组件。

我们在过去多个企业项目中使用过 pnkt/jiravel 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 pnkt/jiravel 我们能提供哪些服务?
定制开发 / 二次开发

基于 pnkt/jiravel 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 2
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 32
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2025-08-16