top of page

Uge 36: Projekt update

  • Writer: Kenneth H Sørensen
    Kenneth H Sørensen
  • Sep 5
  • 5 min read

Updated: Sep 7


ree

Ansvarsområde til use cases


Vi har (d. 2/9-2025) haft et teammøde, hvor vi afklarede roller og ansvar i projektet.


Jeg vil beskrive mit afgrænsede ansvarsområde, gennemgå de komponenter jeg har ansvar for og til sidst udlede use cases, der danner grundlaget for de features jeg senere skal udvikle.



Fra valgfag til model


Jeg har tidligere lavet en model som indgangsvinkel til projektet, og den har været med til at tydeliggøre, hvordan vi fordeler services og komponenter mellem os i teamet.


ree

Efter vores seneste møde har vi nu fordelt områderne mere konkret og her fremgår det hvad jeg har ansvar for.


ree

Mit ansvarsområde

  • Upload/Ingestion Service (microservice)

  • Database (image metadata)

  • Storage (images)


Jeg har ikke ansvar for Metadata/Results Service, da et andet teammedlem også arbejder med backend. Vi har derfor delt backend-ansvaret op i hver vores microservice.



Mit ansvar


Mit ansvarsområde er afgrænset til én microservice, Upload/Ingestion Service. Den rummer både usikkerheder og kompleksitet, især fordi jeg vil designe den med IT-sikkerhed tænkt ind fra start.


Usikkerhederne handler bl.a om

  • Integration af storage

  • Håndtering af metadata i databasen

  • Kommunikation med andre services


Som led i det vil jeg gerne lære om og implementere API-kald med GraphQL, samt events via message brokers som RabbitMQ eller Kafka, på en sikker måde.


Samlet set giver det mig mulighed for at dykke dybt i backend-udvikling & API-design, med

IT-sikkerhed som en integreret del af løsningen.



Systemkomponenternes ansvar


Mit fokus / andet


Mobilappen

Brugeren tager et billede af en maskine (f.eks på en byggeplads)

Appen uploader billedet (via pre-signed URL)

Appen sender nødvendig upload- / operationsmetadata (om objekt / proces) til Ingestion Service


API-gateway (måske)

Router requests fra appen og sender dem videre til den korrekte service


Ingestion Service

Udsteder pre-signed URLs, så billeder kan uploades eller hentes direkte til/fra storage

Gemmer metadata i databasen (om objekt / proces)

Eksponerer API med GraphQL (for forespørgsler og status opslag)

Publicerer events (f.eks "ImageUploaded") som andre services kan reagere på

Styre billeders livscyklus (retention- og sletningspolitik)


Storage

AWS S3, Azure Blob eller lignende

Indeholder de rå billeder

Adgang styres via pre-signed URLs, ikke direkte


AI-service

Konsumerer "ImageUploaded" event

Henter billede via pre-signed GET-URL

Analyserer billedet og afgør f.eks maskintype

Returnerer resultat til Results Service


Results Service

Modtager resultat output fra AI service

Gemmer analyseresultatet i egen database

Stiller resultater til rådighed for mobilapp eller andre systemer


Systemets databaser

Ingestion DB - data omkring billedet og dens status

Results DB - hvis vi vil gemme resultat-output



Jeg skal stå for ingestion-leddet i systemet, hvor billeder håndteres sikkert gennem pre-signed URLs, metadata lagres og status kan tilgås via GraphQL, events udsendes til resten af systemet, og billeders livscyklus styres i samspil med storage og databasen.



Use cases


På baggrund af oversigten over komponenternes ansvar kan jeg udarbejde use cases, der beskriver Ingestion Services rolle fra upload til endelig status.


De danner grundlaget for de features, jeg senere skal udvikle.


Scope: Det system under design, som use casen beskriver (her: Ingestion Service)

Level: Abstraktionsniveau for use casen

  • Summary: Et overordnet mål, der kan dække flere user-goals

  • User-goal: En komplet opgave, som giver værdi for en aktør

  • Subfunction: En delopgave eller teknisk funktion, der støtter et større mål

Primær aktør: Den eksterne part (bruger, system, service), som ønsker noget fra systemet

Aktørmål: Det primære mål, aktøren ønsker at opnå gennem systemet


Use Case 1: Upload Picture

  • Scope: Ingestion Service

  • Level: User-goal

  • Primær aktør: Mobilapp

  • Aktørmål: Få et billede sikkert ind i systemet, så det kan behandles senere


Preconditions

  • Mobilappen er autentificeret over for systemet

  • Mobilappen er autoriseret til at uploade billeder

  • Mobilappen har (taget) et billede til upload


Main Success Scenario

  1. Mobilapp anmoder Ingestion Service om at starte en upload

  2. Ingestion Service verificerer anmodningen

  3. Ingestion Service opretter en upload-session og lagrer de relevante oplysninger

  4. Ingestion Service indhenter en midlertidig upload-URL fra storage

  5. Ingestion Service returnerer en upload-reference og den midlertidige URL til mobilappen

  6. Mobilapp uploader billedet direkte til storage via den midlertidige URL

  7. Mobilapp bekræfter overfor Ingestion Service at upload er gennemført

  8. Ingestion Service validerer resultatet, markerer upload som fuldført, og udsender en hændelse om, at et nyt billede er tilgængeligt

  9. Use case slutter, når upload er registreret og hændelsen er udsendt


Postconditions

  • Systemet har registreret en fuldført upload med status Uploaded og tilhørende metadata

  • En hændelse om gennemført upload er udsendt til videre behandling


Extensions

2a. Ugyldig eller ikke-autoriseret anmodning - afvises

4a. Storage utilgængelig eller URL kan ikke udstedes  - fejl, logges, mulig retry

6a. Upload mislykkes eller URL udløber  - mobilapp kan anmode om en ny URL

7a. Bekræftelse mangler eller data stemmer ikke  - upload markeres som fejl, ingen hændelse udsendes



Use Case 2: Download Picture for Processing

  • Scope: Ingestion Service

  • Level: User-goal

  • Primær aktør: AI Service

  • Aktørmål: Hente et billede sikkert fra systemet, så det kan behandles


Preconditions

  • AI Service er autentificeret over for systemet

  • AI Service er autoriseret til at tilgå billeder

  • Et billede er registreret som uploadet og tilgængeligt


Main Success Scenario

  1. AI Service anmoder Ingestion Service om adgang til et billede, der er uploadet

  2. Ingestion Service verificerer anmodningen

  3. Ingestion Service henter en midlertidig download-URL fra storage

  4. Ingestion Service returnerer billedreference og den midlertidige URL til AI Service

  5. AI Service henter billedet direkte fra storage via den midlertidige URL

  6. AI Service bekræfter over for Ingestion Service, at billedet er hentet

  7. Ingestion Service opdaterer billedets status og logger handlingen

  8. Use case slutter, når systemet har registreret at billedet er hentet til behandling


Postconditions

  • AI Service har fået adgang til billedet for videre behandling

  • Systemet har registreret billedets status som "hentet til behanding" (eller tilsvarende)

  • Adgangen er logget i systemet


Extensions

2a. Ugyldig eller ikke-autoriseret anmodning - afvises

3a. Storage utilgængelig eller URL kan ikke udstedes  - fejl, logges, mulig retry

5a. Download mislykkes eller URL udløber  - AI Service kan anmode om en ny URL



Use Case 3: Update Picture Status after Processing

  • Scope: Ingestion Service

  • Level: User-goal

  • Primær aktør: Result Service

  • Aktørmål: Opdatere systemet om, at et billede er analyseret og behandlet færdigt


Preconditions

  • Result Service er autentificeret over for systemet

  • Result Service er autoriseret til at opdatere billedstatus

  • Et billede er registreret som "hentet til behandling"


Main Success Scenario

  1. Result Service anmoder Ingestion Service om at opdatere status for et billede

  2. Ingestion Service verificerer anmodningen

  3. Ingestion Service opdaterer billedets status til “behandlet” (eller tilsvarende)

  4. Ingestion Service logger handlingen

  5. Use case slutter, når systemet har registreret at billedet er behandlet


Postconditions

  • Systemet har registreret billedets status som "behandlet"

  • Opdateringen er logget


Extensions

2a. Ugyldig eller ikke-autoriseret anmodning  - afvises

3a. Billedet er ikke i korrekt status til at blive markeret som behandlet  - afvises

3b. Database utilgængelig  - fejl, logges, mulig retry



Videre plan


Udarbejdelse af sekvensdiagrammer og andre modeller, der bygger bro fra HLD til LLD


Dykke ned i ressourcer om

  • API-sikkerhed

  • dokumentation for pre-signed URLs

  • Begynde at lære om GraphQL

  • Begynde at lære om Message brokers og events

  • Læse om arkitekturprincipper som microservices vs. monolit og hexagonal arkitektur




bottom of page