Phase 1 — Idempotent upload: - upload_docusign_template.py now upserts: PUT if template with same name exists (most recently modified), POST otherwise - --force-create flag to bypass upsert Phase 2-6 — FastAPI web UI: - web/app.py: FastAPI app with /health, static file serving - web/routers/auth.py: Adobe Sign + DocuSign OAuth start/callback/disconnect - web/routers/templates.py: template listing + migration status badges (not_migrated / migrated / needs_update) - web/routers/migrate.py: POST /api/migrate pipeline + GET /api/migrate/history - web/static/: vanilla HTML/CSS/JS side-by-side template browser UI Phase 7 — Tests (29/29 passing): - test_upload_upsert.py: 4 upsert unit tests - test_api_health/auth/templates/migrate.py: full API coverage - test_e2e.py: 7-step full pipeline end-to-end test - test_regression.py: compose output vs snapshots for 3 real templates - conftest.py: --update-snapshots CLI option Docs: IMPLEMENTATION-PLAN.md, updated EXECUTION-BOARD.md + architecture.md Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| routers | ||
| static | ||
| __init__.py | ||
| app.py | ||
| config.py | ||
| session.py | ||