adobe-to-docusign-migrator/web
Paul Huliganga b2bbcac842 feat(issues): structured field-issue reporting throughout migration pipeline
Replaces flat warning strings with machine-readable FieldIssue objects
(code, field_name, message, severity) emitted during compose and surfaced
in all migration result paths via a new field_issues[] key.

Codes: CROSS_RECIPIENT_CONDITIONAL, UNSUPPORTED_OPERATOR, HIDE_ACTION,
MULTI_PREDICATE, INVALID_PARENT_TAB, FIELD_TYPE_SKIPPED, PARTIAL_FIELD_TYPE

Cross-recipient conditional detection: compose now builds a field→assignee
map and flags conditions where the trigger field belongs to a different
recipient — the main cause of the CONDITIONALTAB_HAS_INVALID_PARENT 400.

UI changes:
- Success rows with field_issues show ⚠️ icon + amber "partial" badge
- Results, History & Audit, and Template Detail history tab all show
  field issues grouped by code in collapsible sections within expanded rows

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-21 15:25:23 -04:00
..
routers feat(issues): structured field-issue reporting throughout migration pipeline 2026-04-21 15:25:23 -04:00
static feat(issues): structured field-issue reporting throughout migration pipeline 2026-04-21 15:25:23 -04:00
__init__.py feat: idempotent upload + FastAPI web UI with full test coverage 2026-04-17 14:47:27 -04:00
app.py feat(ui-phase-19): verification — send/status/void API + frontend polling 2026-04-21 11:40:19 -04:00
config.py feat: idempotent upload + FastAPI web UI with full test coverage 2026-04-17 14:47:27 -04:00
session.py feat: idempotent upload + FastAPI web UI with full test coverage 2026-04-17 14:47:27 -04:00