classDiagram
%% Core Entities
class Book {
+String title
+String author
+String publisher
+String isbn
+String language
+Date publishedDate
+String[] tags
+generateFormats()
+validateOutputs()
}
class Metadata {
+String fileName
+String title
+String author
+String publisher
+String isbn
+String language
+Date publishedDate
+String[] tags
+String coverImage
+loadFromYaml()
+getMetadataValue(key, type)
}
class BuildOptions {
+Boolean debug
+Boolean pdfOnly
+Boolean skipQualityChecks
+Boolean skipDiff
+String outputDir
+parseCommandLine()
}
class Directory {
+String path
+Boolean exists
+create()
+ensureExists()
}
%% Output Formats
class Format {
<<abstract>>
+String fileExtension
+String mimeType
+generate()
+validate()
}
class PDFFormat {
+String texSource
+buildFromLatex()
+buildFromHTML()
+buildFromMarkdown()
}
class EPUBFormat {
+String htmlSource
+validateWithEpubcheck()
+checkAccessibility()
}
class MOBIFormat {
+String htmlSource
+convertWithCalibre()
}
class KFXFormat {
+String kpfSource
+convertWithKindlePreviewer()
}
class HTMLFormat {
+String texSource
+convertWithMake4ht()
}
class MarkdownFormat {
+String texSource
+convertWithPandoc()
}
%% Quality Entities
class QualityReport {
+String reportType
+String outputPath
+Date generatedDate
+Boolean hasPassed
+String[] issues
+generateReport()
+displayResults()
}
class EPUBCheckReport {
+validateStructure()
+validateContent()
}
class AccessibilityReport {
+checkComformance()
+generateHTMLReport()
}
class PDFDiffReport {
+compareWithPrevious()
+highlightChanges()
}
%% Content Entities
class Content {
+String type
+String path
+process()
}
class TextContent {
+String source
+String markdown
+String html
+processText()
}
class ImageContent {
+String filepath
+String format
+processImage()
}
%% Managers/Services
class BuildManager {
+initializeComponents()
+executeWorkflow()
+logCompletion()
}
class Logger {
+String logLevel
+String logFile
+info(message)
+error(message)
+debug(message)
+warn(message)
}
%% Relationships
Book "1" *-- "1" Metadata : contains
Book "1" *-- "many" Format : produces
Book "1" *-- "many" Content : consists of
Book "1" *-- "many" QualityReport : validates with
BuildManager "1" --> "1" Book : builds
BuildManager "1" --> "1" BuildOptions : uses
BuildManager "1" --> "1" Logger : logs with
BuildManager "1" --> "many" Directory : manages
Format <|-- PDFFormat
Format <|-- EPUBFormat
Format <|-- MOBIFormat
Format <|-- KFXFormat
Format <|-- HTMLFormat
Format <|-- MarkdownFormat
QualityReport <|-- EPUBCheckReport
QualityReport <|-- AccessibilityReport
QualityReport <|-- PDFDiffReport
Content <|-- TextContent
Content <|-- ImageContent
EPUBFormat --> EPUBCheckReport : validated by
EPUBFormat --> AccessibilityReport : assessed by
PDFFormat --> PDFDiffReport : compared by
HTMLFormat --> MOBIFormat : converted to
HTMLFormat --> EPUBFormat : converted to
HTMLFormat --> KFXFormat : converted to
TextContent --> PDFFormat : rendered as
TextContent --> HTMLFormat : rendered as
TextContent --> MarkdownFormat : rendered as
%% Usage flows
PDFFormat --> MarkdownFormat : input for
EPUBFormat --> QualityReport : input for
PDFFormat --> PDFDiffReport : input for