# Phase 3 - TED projection model

## Goal

Move TED from being the implicit root data model to being a typed projection on top of the generic
canonical document model.

## New persistence model

### Generic root
- `DOC.doc_document`
- `DOC.doc_content`
- `DOC.doc_text_representation`
- `DOC.doc_embedding`

### TED-specific projection
- `TED.ted_notice_projection`
- `TED.ted_notice_lot`
- `TED.ted_notice_organization`

## Relationship model

- one generic `DOC.doc_document`
- zero or one `TED.ted_notice_projection`
- zero to many `TED.ted_notice_lot`
- zero to many `TED.ted_notice_organization`

The projection also keeps an optional back-reference to the legacy `TED.procurement_document` row to
support incremental migration and validation.

## Runtime behavior

When a new TED XML document is imported:
1. it is parsed into the existing legacy `ProcurementDocument`
2. the generic DOC root is ensured/refreshed
3. the primary text representation is ensured
4. if the generic vectorization pipeline is enabled, a pending embedding is ensured
5. the TED structured projection tables are refreshed from the parsed legacy document

## Why this phase matters

This is the first phase where TED is explicitly modeled as a document type projection instead of the
platform's canonical root entity. That makes the next steps possible:
- generic semantic search across multiple document types
- future non-TED projections
- migration of TED structured search to the new projection tables
