---
title: "Changemkr: fire systemer blev én platform"
description: "Fire arvede systemer blev én AI-platform til forandringsledelse, omkring én skemaautoritet med porte, der holder den. Målt frem til juni 2026."
url: https://torn.studio/da/arbejde/changemkr-fire-systemer-en-platform
locale: da
published: 2026-09-01
updated: 2026-06-30
---

# Changemkr: fire systemer blev én platform

> **Kort svar:** Torn Studio havde produktrollen i Changemkr og ejer en del af platformen. Fire arvede systemer blev fem driftsatte tjenester omkring én skemaautoritet på 63 tabeller, og otte AI-miljøer deler én LangGraph-tjeneste med versionerede prompter. Siden beskriver arbejdet frem til juni 2026, hvor studiets periode sluttede.

**Kunde:** Changemkr · **Leveret:** 2026-06-30

**Studiets forhold til kunden:** Changemkr er en platform, Torn Studio ejer en del af. Studiet havde produktrollen fra januar 2025 til juni 2026 — først som CPO, siden på deltid — og byggede i kodebasen ved siden af rollen. Arbejde efter juni 2026 tilhører andre og står ikke her.

## Opgaven

Changemkr havde brug for én platform, hvor undersøgelse, analyse, planlægning og opfølgning hang sammen, med AI gennem hele kæden. Produktet lå dengang i fire kodebaser, der var vokset hver for sig og beskrev de samme begreber forskelligt.

## Det der gjorde det svært

- Planlægningshierarkiet lå som syv separate modeller i et Django-API, og det samme ord betød forskellige ting i de fire systemer — én ændring krævede fire indgreb af fire personer, der læste modellen forskelligt.
- AI-laget talte sit eget ordforråd, så assistenten foreslog objekter, lærredet ikke kunne tage imod. Det var den ene af to blokeringer før lancering.
- Databasemodellerne i Python-tjenesten blev vedligeholdt i hånden ved siden af det TypeScript-definerede skema, så de to beskrivelser af de samme tabeller kunne glide fra hinanden i stilhed.

## Tal der kan tælles efter

| Tal der kan tælles efter | | |
| --- | --- | --- |
| 4 | arvede systemer lagt sammen | Migrationsrapporten i repoet opregner dem én for én med, hvad hver ejede, og hvad der erstattede det. Et script i bygningen holder antallet af importer fra dem på nul. |
| 63 | tabeller under én autoritet | Tællelige i skemakataloget ved junigrænsen. Python-modellerne genereres ud fra samme definition, og en port fælder bygningen, når de er gledet fra hinanden. |
| 8 | AI-miljøer på én tjeneste | Tællelige i promptregistret. Hvert miljø bærer sin egen model, sit eget værktøjssæt og sin egen promptversionering med fortrydelse i ét klik. |
| 80 | specifikationsfiler til ende-til-ende-test | Tællelige i testkataloget ved junigrænsen. Siden citerer antallet af filer, fordi repoet selv har trukket sit tal for beståede tests fra den periode tilbage. |

## Sådan blev det gjort

### Én skemaautoritet, resten afledt

Drizzle fik lov at definere alle 63 tabeller, og modellerne i Python-tjenesten genereres ud fra samme definition af et script. En port i bygningen sammenligner det genererede med det indtjekkede og fælder ved afvigelse, så to systemer, der beskriver samme tabel forskelligt, ikke kan tjekkes ind.

### Hårde domænegrænser

NestJS ejer forretningsdata — konti, organisationer, undersøgelser, planer. Python-tjenesten ejer AI-domænet — tråde, indlejringer, hukommelse, supervisoren. Webappen kalder begge direkte, og grænsen står i klartekst i repoets instruktionsfil, hvilket gør den til en beslutning, andre kan følge.

### Syv modeller blev én

Planlægningshierarkiet blev lagt om til én tabel med en typediskriminator, plus en tabel til nøgleresultater og en til relationer. Ordforrådet blev lukket, og AI-laget kom til at tale præcis de ord, lærredet bruger. Blokeringen om netop det blev lukket den tiende juni 2026.

### Porte bærer grænserne

Et script holder antallet af importer fra de arvede systemer på nul og fælder bygningen ved første tilbagefald. Et andet fælder skemaet, når de genererede modeller er gledet. Konsolideringen holder, fordi den kontrolleres ved hver ændring.

**Teknologi:** NestJS, FastAPI, Next.js, Drizzle ORM, SQLAlchemy, LangGraph, PostgreSQL, pgvector, BullMQ, Azure Container Apps

## Hvad beviset rækker til

Dette viser, at fire systemer kan lægges sammen til ét og holdes sammen af porte. Det viser intet om et marked: platformen var ikke lanceret ved junigrænsen, dommen i repoets egen beredskabslog var driftsætbar med resterende punkter, og et af dem var en manuel sikkerhedsopgave, ingen kode lukker.

## Ofte stillede spørgsmål

### Er Changemkr en kunde hos Torn Studio?

Studiet ejer en del af platformen og havde produktrollen der, hvilket står øverst på siden. Forskellen betyder noget: en opgave for andre og et produkt, studiet er med til at eje, er forskellige påstande, og læseren skal vide hvilken, før resultaterne.

### Hvorfor slutter casen i juni 2026?

Studiets produktrolle løb til da. Platformen er udviklet videre siden af andre, og at regne det arbejde med ville være at tage æren for en andens. Hvert tal på siden er målt ved den grænse og kan kontrolleres der.

### Hvorfor står der intet tal for, hvor mange tests der bestod?

Repoet målte sin testsuite igen i august 2026 og trak det tidligere tal tilbage som ugyldigt. Et tal, kilden selv har trukket tilbage, hører ikke til her, så siden citerer det, der var stabilt ved grænsen: tabeller, tjenester, AI-miljøer og testfiler.

### Hvad betyder én skemaautoritet i praksis?

At én definition holder alle 63 tabeller, og at alt andet afledes af den. Modellerne i Python-tjenesten genereres af et script, og en port fælder bygningen, når det genererede og det indtjekkede er gledet fra hinanden. To systemer, der beskriver samme tabel forskelligt, bliver umuligt at tjekke ind.

### Hvor stor en del af koden skrev studiet?

Studiet byggede store dele af produktet i perioden og formulerede hovedparten af idéerne og funktionerne, mens andre også arbejdede i kodebasen. Siden påstår derfor en rolle og en periode, og tallene beskriver det leverede system ved grænsen.
