/** * Page Analysis Helper Functions * * Utility functions for checking PageAnalysis pattern detection status. * Provides convenient boolean checks and counting methods for UI components. * * @layer Application - Utilities */ import { PageAnalysis } from '@/domain/entities/PageAnalysis'; import { ReliabilityStatus } from '@archer/domain'; /** * Checks if page analysis has any detected patterns * * Returns true if analysis contains listing templates, search mechanism, * or pagination mechanism. * * @param analysis - PageAnalysis domain entity * @returns true if any patterns detected, false otherwise */ export function hasPatterns(analysis: PageAnalysis): boolean { return analysis.hasPatterns(); } /** * Checks if page analysis is confirmed by AI * * Returns true if reliability status is CONFIRMED. * * @param analysis - PageAnalysis domain entity * @returns true if confirmed, false otherwise */ export function isConfirmed(analysis: PageAnalysis): boolean { return analysis.isConfirmed(); } /** * Gets count of detected listing templates * * Returns number of listing templates detected in analysis. * Returns 0 if no templates detected. * * @param analysis - PageAnalysis domain entity * @returns Number of listing templates (0 if none) */ export function getListingCount(analysis: PageAnalysis): number { return analysis.getListingCount(); } /** * Checks if page analysis is in draft state * * Returns true if reliability status is DRAFT or undefined. * * @param analysis - PageAnalysis domain entity * @returns true if draft, false otherwise */ export function isDraft(analysis: PageAnalysis): boolean { return ( analysis.reliabilityStatus === ReliabilityStatus.DRAFT || analysis.reliabilityStatus === undefined ); } /** * Checks if page analysis is pending confirmation * * Returns true if reliability status is PENDING_CONFIRMATION. * * @param analysis - PageAnalysis domain entity * @returns true if pending confirmation, false otherwise */ export function isPendingConfirmation(analysis: PageAnalysis): boolean { return analysis.reliabilityStatus === ReliabilityStatus.PENDING_CONFIRMATION; } /** * Checks if page analysis is rejected * * Returns true if reliability status is REJECTED. * * @param analysis - PageAnalysis domain entity * @returns true if rejected, false otherwise */ export function isRejected(analysis: PageAnalysis): boolean { return analysis.reliabilityStatus === ReliabilityStatus.REJECTED; } /** * Checks if page analysis has listing templates * * @param analysis - PageAnalysis domain entity * @returns true if has listing templates, false otherwise */ export function hasListingTemplates(analysis: PageAnalysis): boolean { return (analysis.listingTemplates?.length ?? 0) > 0; } /** * Checks if page analysis has search mechanism * * @param analysis - PageAnalysis domain entity * @returns true if has search mechanism, false otherwise */ export function hasSearchMechanism(analysis: PageAnalysis): boolean { return analysis.searchMechanism !== undefined; } /** * Checks if page analysis has pagination mechanism * * @param analysis - PageAnalysis domain entity * @returns true if has pagination mechanism, false otherwise */ export function hasPaginationMechanism(analysis: PageAnalysis): boolean { return analysis.paginationMechanism !== undefined; } /** * Gets reliability status display text * * Converts reliability status enum to human-readable text. * * @param status - ReliabilityStatus enum value * @returns Display text for status */ export function getReliabilityStatusText(status?: ReliabilityStatus): string { if (!status) { return 'Unknown'; } switch (status) { case ReliabilityStatus.DRAFT: return 'Draft'; case ReliabilityStatus.PENDING_CONFIRMATION: return 'Pending Confirmation'; case ReliabilityStatus.CONFIRMED: return 'Confirmed'; case ReliabilityStatus.REJECTED: return 'Rejected'; default: return 'Unknown'; } } /** * Gets reliability status color class * * Returns Tailwind CSS color class for badge styling. * * @param status - ReliabilityStatus enum value * @returns Tailwind color class */ export function getReliabilityStatusColor(status?: ReliabilityStatus): string { if (!status) { return 'gray'; } switch (status) { case ReliabilityStatus.DRAFT: return 'gray'; case ReliabilityStatus.PENDING_CONFIRMATION: return 'yellow'; case ReliabilityStatus.CONFIRMED: return 'green'; case ReliabilityStatus.REJECTED: return 'red'; default: return 'gray'; } }