@startuml componentes !include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Component.puml LAYOUT_WITH_LEGEND() title Agatha · Nivel 3 · Componentes del núcleo Container(api, "API del demo", "FastAPI", "Orquesta el trabajo") System_Ext(youtube, "YouTube") ContainerDb(manifiestos, "Manifiestos", "SQLite") Container_Boundary(core, "Núcleo hexagonal") { Component(servicio, "Servicio de aplicación", "Python", "Caso de uso: recibir, transformar, entregar") Component(chunker, "Chunker", "Python", "Parte el TAR canónico en bloques de 10 MB") Component(bch, "Códec BCH", "bchlib", "t=16, m=15 · 30 bytes de paridad por bloque de 2048") Component(bitmap, "Bitmap 4K", "NumPy", "Empaqueta los bits en 3840x2160 · 1 pixel = 1 bit") Component(video, "Códec de video", "FFmpeg", "FFV1 sin pérdida y H.264 CRF 18 para la subida") Component(canal, "Puerto de canal", "Interfaz", "Abstrae dónde vive el video") Component(verificador, "Verificador", "hashlib", "Compara el SHA256 del TAR reconstruido") } Rel(api, servicio, "Invoca el caso de uso") Rel(servicio, chunker, "Parte el archivo") Rel(chunker, bch, "Protege cada bloque") Rel(bch, bitmap, "Bits protegidos") Rel(bitmap, video, "Frames") Rel(video, canal, "Bundle listo") Rel(canal, youtube, "Sube y descarga", "Adaptador") Rel(servicio, verificador, "Valida la reconstrucción") Rel(servicio, manifiestos, "Persiste solo el manifiesto") @enduml