Sangeetha-Grantha

Metadata Value
Track ID TRACK-076
Title Refactor Infrastructure Services
Status Completed
Created 2026-02-28
Author Sangeetha Grantha Team
Depends On TRACK-073

TRACK-076: Refactor Infrastructure Services

Objective

Split GeminiApiClient.kt (471), WebScrapingService.kt (456), KrithiStructureParser.kt (547), and AuditRunnerService.kt (474) into focused, sub-300-line files.

Motivation

Scope

Phase 1: Expand Tests

Phase 2: Split GeminiApiClient.kt

Extract To Responsibility ~Lines
GeminiRetryStrategy.kt shouldRetry, handleThrottle, jitteredDelay, backoff logic ~150
GeminiApiClient.kt (slimmed) generateContent, generateStructured, HTTP client ~280

Phase 3: Split WebScrapingService.kt

Extract To Responsibility ~Lines
ScrapingPromptBuilder.kt buildStructuredText, buildPrompt, JSON schema builders ~180
WebScrapingService.kt (slimmed) scrapeKrithi, caching, orchestration ~250

Phase 4: Split KrithiStructureParser.kt

Extract To Responsibility ~Lines
SectionHeaderDetector.kt detectHeader, detectLanguageHeader, detectSectionHeader, regex patterns ~200
KrithiStructureParser.kt (slimmed) buildBlocks, extractSections, extractLyricVariants ~280

Phase 5: Split AuditRunnerService.kt

Extract To Responsibility ~Lines
SectionCountAudit.kt runSectionCountAudit + SQL queries ~150
LabelSequenceAudit.kt runLabelSequenceAudit + SQL queries ~150
OrphanedBlobsAudit.kt runOrphanedBlobsAudit + SQL queries ~150
AuditRunnerService.kt (slimmed) runFullAudit orchestration ~80

Verification

  1. ./gradlew :modules:backend:api:test – 0 failures
  2. No file exceeds 300 lines
  3. E2E: mise exec -- cargo run --manifest-path tools/sangita-cli/Cargo.toml -- test steel-thread