29 lines
1.0 KiB
Markdown
29 lines
1.0 KiB
Markdown
# Feature Plan: Media Asset Normalization
|
|
|
|
## Goal
|
|
Normalize media into reusable assets so messages reference media IDs rather than duplicate transport blobs.
|
|
|
|
## Why This Fits GIA
|
|
- GIA already has shared media prep and cross-transport relay.
|
|
- Normalized assets reduce duplicate downloads/uploads and improve traceability.
|
|
|
|
## Scope
|
|
- New `MediaAsset` entity with checksum + metadata.
|
|
- New link table between `Message` and `MediaAsset`.
|
|
- De-dup by `sha256` and file size.
|
|
|
|
## Implementation
|
|
1. Add models/migrations: `MediaAsset`, `MessageMediaRef`.
|
|
2. Update inbound media ingestion to upsert `MediaAsset`.
|
|
3. Update outbound transport prep to consume `MediaAsset` references.
|
|
4. Add background backfill for existing attachments.
|
|
5. Add retention/GC strategy for orphaned assets.
|
|
|
|
## Acceptance Criteria
|
|
- Same file across transports resolves to one `MediaAsset`.
|
|
- Message records keep only pointers and display metadata.
|
|
- Relay path can reuse existing asset without re-download.
|
|
|
|
## Out of Scope
|
|
- External CDN migration in this phase.
|