Hoppa till innehåll

Etapp 1 - Datamodell

SQLite-schema i sex domäner

Datamodellen definieras i db/schema.sql och täcker samtliga sju krav från uppdragsbeskrivningen. Totalt 27 tabeller, en vy och en uppsättning förladdade preflight-regler. Alla geometrier i mm och alla tidsstämplar som ISO-8601 (UTC).

sqlite3 publisher.db < db/schema.sqlPRAGMA foreign_keys = ON;

01Kund & varumärke

Entiteterna som gör en publikation till den publikationen.

customerspublicationsbrand_profilespalette_entriespage_formatscolumn_rulesbrand_assets

02Artikelmotor

Modulärt textinnehåll med ordnade byggstenar.

articlesarticle_modulesauthorsarticle_authorsarticle_mediaarticle_sources

03Bildmotor

Alla filer med tryckmetadata och lagringsadapter.

assetsimage_meta

04Sidplaneringsmotor

Nummer, sidor och placeringar på spaltnätet.

issuesissue_sectionspagespage_placements

05Deadline-motor

Återkommande tidsfrister och nedräkning.

deadline_templatesdeadline_taskscalendar_blocks

06Preflight

Validering av komplett innehåll före export.

preflight_rulespreflight_runspreflight_checks

02

Modulär artikelstruktur

Kärnan är att innehåll är ordnade moduler. En articles-rad är metadata och behållare; det faktiska innehållet ligger i article_modules med en position. Byggstenarna motsvarar kraven på rubrik, nedryckare, ingress, mellanrubriker, brödtext, faktarutor, citat, byline och källhänvisningar.

article_modules.kindMänsklig etikett
headlineRubrik
deckNedryckare
ledeIngress
subheadMellanrubrik
bodyBrödtext (ett stycke per rad)
pull_quoteCitat / utfallscitat
fact_boxFaktaruta
imageBildplats (hänvisar till asset)
bylineByline-rad
sourcesKäll-/anteckningsblock
calloutUtstick / ram

03

Lagringsadaptergräns

Bilddatabasen lagrar lokalt men har en ren adaptergräns för framtida molnlagring (S3 / Cloudflare R2). Adaptern avgörs av kolumnen assets.provider - att lägga till S3/R2 innebär bara att skriva ett adapterobjekt, inte att ändra andra moduler.

local
Fil i det lokala arkivet på Macen via local_path. Standard i Etapp 1. Implementerad.
s3
Amazon S3 via remote_key + uri. Definierat i schema, ej implementerat (kommande etapp).
r2
Cloudflare R2 via remote_key + uri. Definierat i schema, ej implementerat (kommande etapp).
uri
Fjärr-URL som redan ligger ute. Stöds av schemat.

04

Viktiga begränsningar

Regler som databasen själv tvingar fram, inte bara applikationskod.

Paginering
CHECK (page_model = 'screen' OR target_pages IS NULL OR (target_pages % 4) = 0)Tryckta nummer avvisar sidantal som inte är multiplar av 4. Skärmnummer kan ha vilket sidantal som helst.
Aktiv grafisk profil
UNIQUE (publication_id, is_active)En publikation har exakt en aktiv brand_profiles.
Färgroll
CHECK (color_role IN ('surface','ink','muted','accent','primary_ink','heading','rule','highlight','spot'))
Tryckkvalitet
assets.dpi, assets.color_profile, assets.checksum (sha256)Bärs av bildmotorn och används av preflight (minst 300 dpi för tryck).