Skip to main content
Glama
getCompletenessEvaluation.ts3.96 kB
/** * Completeness Evaluation Module for Jira Issues * * This file provides functionality to evaluate the completeness of a Jira issue. * It analyzes various aspects of the issue including requirements, specifications, * and other necessary components to determine how well-defined and complete the issue is. * The evaluation helps in identifying gaps in issue documentation and assists teams * in improving the quality of their requirements and specifications. */ import { calculateCompletenessScore } from './calculateCompletenessScore' import { checkAcceptanceCriteria } from './checkAcceptanceCriteria' import { checkDependencies } from './checkDependencies' import { checkDesignSpecifications } from './checkDesignSpecifications' import { checkTechnicalConstraints } from './checkTechnicalConstraints' import { checkTestingRequirements } from './checkTestingRequirements' import { checkUserImpact } from './checkUserImpact' import { extractRelevantText } from './extractRelevantText' import { generateSuggestions } from './generateSuggestions' import { getInternalContextualRequirements } from './utils/getInternalContextualRequirements' import type { CompletenessEvaluation, CategoryCheckResult } from './completenessEvaluation.types' import type { IssueCommentResponse } from '../../../types/comment' import type { JiraIssue } from '../../../types/issue.types' /** * Evaluates the completeness of a Jira issue's documentation * based on agile principles and the issue's context * * @param issue - The Jira issue to analyze * @param commentsResponse - Comments related to the issue * @returns Completeness evaluation with score, missing information, and suggestions */ export function getCompletenessEvaluation( issue: JiraIssue, commentsResponse: IssueCommentResponse, ): CompletenessEvaluation { // Extract all relevant text from the issue const allText = extractRelevantText(issue, commentsResponse) // Determine what information categories are relevant for this issue type and context const contextualRequirements = getInternalContextualRequirements(issue) // Check for each information category const acceptanceCriteriaResult = checkAcceptanceCriteria(allText, issue) // Only check categories relevant to this issue's context const technicalConstraintsResult: CategoryCheckResult = contextualRequirements.needsTechnicalConstraints ? checkTechnicalConstraints(allText) : { missing: [], present: true, quality: 'complete' } const dependenciesResult = checkDependencies(allText, issue) const testingRequirementsResult: CategoryCheckResult = contextualRequirements.needsTestingRequirements ? checkTestingRequirements(allText) : { missing: [], present: true, quality: 'complete' } const designSpecificationsResult: CategoryCheckResult = contextualRequirements.needsDesignSpecifications ? checkDesignSpecifications(allText, issue) : { missing: [], present: true, quality: 'complete' } const userImpactResult: CategoryCheckResult = contextualRequirements.needsUserImpact ? checkUserImpact(allText) : { missing: [], present: true, quality: 'complete' } // Combine missing information for relevant categories only const missingInformation = [ ...acceptanceCriteriaResult.missing, ...technicalConstraintsResult.missing, ...dependenciesResult.missing, ...testingRequirementsResult.missing, ...designSpecificationsResult.missing, ...userImpactResult.missing, ] // Calculate score based on context-aware requirements const score = calculateCompletenessScore( acceptanceCriteriaResult, technicalConstraintsResult, dependenciesResult, testingRequirementsResult, designSpecificationsResult, userImpactResult, issue.fields.issuetype.name, contextualRequirements, ) // Generate context-aware suggestions const suggestions = generateSuggestions(missingInformation, issue.fields.issuetype.name, contextualRequirements) return { score, missingInformation, suggestions, } }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/tbreeding/jira-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server