Combo Log CRUD + CSV Import
Overview
Section titled “Overview”Maintain a durable ledger of tested combos as Creative Act Reports (IAO) — Reports documenting completed creative testing Acts (CCO) that realize Plan Specifications. The Plan Specification Identifier convention TYPE-PRODUCT-COUNT-AUDIENCE-SEQ (e.g., SP-IPH-2-WOMEN-001) provides human-readable, sortable structured identifiers.
Goal: CRUD for creative_act_report and bulk CSV import; import/export for operational workflows.
Plan Specification Identifier convention
Section titled “Plan Specification Identifier convention”[IAO: Structured Identifier denoting a Plan Specification]
{type}-{productCode}-{productCount}-{audience}-{sequenceNum}| Segment | Values | Example |
|---|---|---|
type | SP (Split), CT (Carousel), NT (Narrow), UGC, ST | SP |
productCode | Derived from MaterialArtifacts: IPH, SAM, AIR, MIX | IPH |
productCount | Number of MaterialArtifacts in combo | 2 |
audience | Target audience | WOMEN |
sequenceNum | Auto-incremented, zero-padded | 001 |
CRUD operations
Section titled “CRUD operations”| Method | Endpoint | Description |
|---|---|---|
GET | /api/combo-logs | List Creative Act Reports with filters: type, audience, date_from, date_to |
POST | /api/combo-logs | Create Report (auto-generates plan_specification_identifier) |
PUT | /api/combo-logs/:id | Update Report |
DELETE | /api/combo-logs/:id | Delete Report |
All endpoints use CF Access auth and target p99 < 200ms.
CSV import (ProcedureExecution)
Section titled “CSV import (ProcedureExecution)”[PKO: ProcedureExecution — parse CSV → resolve MaterialArtifacts → upsert Creative Act Reports]
POST /api/combo-logs/importwith CSV payload- API enqueues
CREATIVE_ACT_REPORT_IMPORTfor background ProcedureExecution - Worker parses rows, applies fuzzy matching against
performance_measurement_datasetfor MaterialArtifact resolution - Worker upserts into
creative_act_reportin chunks - Returns summary: N valid rows imported, M errors
Fuzzy matching: The current system uses Levenshtein distance + substring heuristics to match product titles from CSV to known MaterialArtifacts. This carries forward.
Queue contract (import)
Section titled “Queue contract (import)”{ "job_type": "CREATIVE_ACT_REPORT_IMPORT", "job_id": "uuid", "source": { "type": "upload", "bearer_entity_key": "imports/..." }}Export
Section titled “Export”GET /api/combo-logs/export generates a CSV of all Creative Act Reports matching current filters.
Acceptance criteria
Section titled “Acceptance criteria”- PASS: Create/update/delete reflect in list; CSV import ProcedureExecution adds N valid rows and reports M invalid rows deterministically
- FAIL: Non-idempotent import creates duplicates; corrupted JSON in
cases_included