adpa-enterprise-framework-automation
Version:
Modular, standards-compliant Node.js/TypeScript automation framework for enterprise requirements, project, and data management. Provides CLI and API for BABOK v3, PMBOK 7th Edition, and DMBOK 2.0 (in progress). Production-ready Express.js API with TypeSpe
159 lines (146 loc) • 7.62 kB
JavaScript
import { AIProcessor } from '../../ai/AIProcessor.js';
import { TechAcceptanceCriteriaTemplate } from './TechAcceptanceCriteriaTemplate.js';
class ExpectedError extends Error {
constructor(message) {
super(message);
this.name = 'ExpectedError';
}
}
/**
* Processor for the Technical Acceptance Criteria document.
*/
export class TechAcceptanceCriteriaProcessor {
aiProcessor;
constructor() {
this.aiProcessor = AIProcessor.getInstance();
}
async process(context) {
try {
const prompt = this.createPrompt(context);
const content = await this.aiProcessor.makeAICall([
{
role: 'system',
content: `You are an expert Technical Analyst and Requirements Engineer with extensive experience in defining technical acceptance criteria.
**YOUR TASK:**
Generate detailed "Technical Acceptance Criteria" based on the provided project context.
**PROCESS:**
1. **Requirements Analysis:** Break down technical requirements into testable criteria
2. **Criteria Definition:** Define specific, measurable, and verifiable acceptance criteria
3. **Test Scenarios:** Create scenarios that validate each acceptance criterion
4. **Success Metrics:** Define quantifiable success measures for each criterion
5. **Validation Methods:** Specify how each criterion will be validated and verified
The output must be professional, technically precise, and actionable for development and testing teams.`
},
{ role: 'user', content: prompt }
]).then(res => typeof res === 'string' ? res : res.content);
await this.validateOutput(content);
return {
title: 'Technical Acceptance Criteria',
content
};
}
catch (error) {
console.error('Error in TechAcceptanceCriteriaProcessor:', error);
if (error instanceof ExpectedError) {
throw error;
}
const template = new TechAcceptanceCriteriaTemplate();
const fallbackContent = template.generate(context);
return {
title: 'Technical Acceptance Criteria',
content: fallbackContent
};
}
}
createPrompt(context) {
return `Based on the provided project context, create comprehensive technical acceptance criteria that includes:
## Technical Acceptance Criteria
### 1. Functional Technical Criteria
Define acceptance criteria for all technical functional requirements:
- **API Functionality:** Endpoint behavior, request/response formats, error handling
- **Data Processing:** Data validation, transformation, storage, and retrieval
- **Business Logic:** Algorithm implementation, calculation accuracy, rule enforcement
- **Integration Points:** External system interactions, data exchange, protocol compliance
- **User Interface:** Technical UI requirements, responsiveness, accessibility compliance
### 2. Performance Acceptance Criteria
Specify measurable performance requirements:
- **Response Time:** Maximum acceptable response times for different operations
- **Throughput:** Required transaction processing capacity and concurrent user support
- **Resource Utilization:** CPU, memory, disk, and network usage limits
- **Scalability:** System behavior under increasing load and data volume
- **Load Handling:** Performance under peak usage conditions
### 3. Security Acceptance Criteria
Define security-related technical requirements:
- **Authentication:** User identity verification mechanisms and security
- **Authorization:** Access control and permission enforcement
- **Data Protection:** Encryption requirements for data at rest and in transit
- **Input Validation:** Protection against injection attacks and malicious input
- **Security Headers:** Required HTTP security headers and configurations
### 4. Reliability and Availability Criteria
Specify system reliability requirements:
- **Uptime Requirements:** System availability percentages and maintenance windows
- **Error Handling:** Graceful error handling and recovery mechanisms
- **Fault Tolerance:** System behavior during component failures
- **Data Integrity:** Data consistency and corruption prevention
- **Backup and Recovery:** Data backup and disaster recovery requirements
### 5. Compatibility and Integration Criteria
Define compatibility requirements:
- **Browser Compatibility:** Supported browsers and versions
- **Platform Compatibility:** Operating system and device support
- **API Compatibility:** Version compatibility and backward compatibility
- **Third-party Integration:** External service integration requirements
- **Legacy System Integration:** Compatibility with existing systems
### 6. Quality and Maintainability Criteria
Specify code and system quality requirements:
- **Code Quality:** Code coverage, complexity, and maintainability metrics
- **Documentation:** Technical documentation completeness and accuracy
- **Testing Requirements:** Unit, integration, and system test coverage
- **Monitoring and Logging:** System observability and diagnostic capabilities
- **Configuration Management:** Environment configuration and deployment requirements
### 7. Validation Methods and Test Scenarios
For each acceptance criterion, specify:
- **Validation Method:** How the criterion will be verified (automated/manual testing)
- **Test Scenarios:** Specific test cases that validate the criterion
- **Success Metrics:** Quantifiable measures that indicate criterion satisfaction
- **Failure Conditions:** Conditions that indicate criterion failure
- **Acceptance Threshold:** Minimum acceptable performance or quality levels
Context: ${JSON.stringify(context, null, 2)}
Please provide comprehensive technical acceptance criteria with specific, measurable, and testable requirements for all aspects of the system.`;
}
async validateOutput(content) {
if (!content || content.trim().length === 0) {
throw new ExpectedError('Generated technical acceptance criteria content is empty');
}
if (content === this.createPrompt({})) {
throw new ExpectedError('AI returned the prompt instead of generating technical acceptance criteria content');
}
const requiredSections = [
'acceptance criteria',
'functional',
'performance',
'security',
'validation',
'test',
'requirements'
];
const missingSections = requiredSections.filter(section => !content.toLowerCase().includes(section.toLowerCase()));
if (missingSections.length > 0) {
console.warn(`Technical Acceptance Criteria document may be missing sections: ${missingSections.join(', ')}`);
}
// Additional validation for technical acceptance criteria specific content
const techAcceptanceKeywords = [
'criteria',
'requirement',
'specification',
'validation',
'verification',
'acceptance',
'technical'
];
const hasTechAcceptanceContent = techAcceptanceKeywords.some(keyword => content.toLowerCase().includes(keyword));
if (!hasTechAcceptanceContent) {
throw new ExpectedError('Generated content does not appear to be technical acceptance criteria documentation');
}
}
}
//# sourceMappingURL=TechAcceptanceCriteriaProcessor.js.map