spike(todos): Candidate-Schema entwerfen + ADR (Phase 1 von #360) #361
Labels
No labels
app/archiv
app/einkaufslisten
app/imap-client
app/wissensbasis
arch-answered
arch-question
area/api
area/auth
area/infra
area/mobile
area/shared
area/ui
area/web
portfolio-status
prio/high
prio/low
prio/medium
roadmap/public
size/l
size/m
size/s
size/xl
size/xs
status/blocked
status/needs-info
type/bug
type/chore
type/docs
type/feature
type/idea
type/refactor
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
admin-mrrm/mrrmlabapp#361
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Ziel
Phase 1 von Epic #360 — Candidate-Modell festlegen, bevor weitere Source-Writer entstehen, damit kein Lock-in. Output: Schema + Drizzle-Migration + ADR.
Showstopper-Risiko (warum jetzt)
tracking-todo-writer) gebaut wird, zementiert sich das Anti-Pattern und mehrere Migration-Cycle-Kosten entstehen.Scope (in dieser Phase)
Schema-Entwurf (Drizzle,
apps/api/src/modules/candidates/candidates.schema.ts)Felder mindestens:
Unique-Constraints
(ownerSub, source, sourceRef)UNIQUE → Idempotenz pro SourceADR (
docs/adr/000X-candidate-model.md)Dokumentiert:
titleim Candidate liegt (Stabilität, auch wenn Source-Inhalt sich ändert)lifecycleStateEnum vs. Flags — Entscheidung dokumentierenDrizzle-Migration
apps/api/src/db/migrations/XXXX_candidates.sqlerzeugenOut-of-scope (in dieser Phase)
lists/listItemsDaten (nicht nötig — Candidates leben parallel)Acceptance
candidates.schema.tsmit Drizzle-Definition committeddev-neu-DB ausführbardocs/adr/000X-candidate-model.mdcommitted mit Begründungen für 1-7Candidate/NewCandidateexportiertBezug