adobe-to-docusign-migrator/web/routers
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
..
__init__.py feat: idempotent upload + FastAPI web UI with full test coverage 2026-04-17 14:47:27 -04:00
auth.py fix: Adobe Sign connects via .env refresh token; restore DocuSign OAuth 2026-04-17 15:27:42 -04:00
migrate.py feat(issues): structured field-issue reporting throughout migration pipeline 2026-04-21 15:25:23 -04:00
templates.py feat(ui-phase-16): templates view — readiness badges, filter bar, detail tabs 2026-04-21 11:26:49 -04:00
verify.py fix(verify): look up actual template role names before sending envelope 2026-04-21 14:38:40 -04:00