3.6 KiB
3.6 KiB
Execution Board (Living Kanban)
Last updated: 2026-04-17
Completed (v1 — CLI Pipeline)
- Adobe Sign OAuth setup + token auto-refresh (
src/auth_adobe.py,src/adobe_api.py) ✅ - Template download pipeline — metadata, fields, docs, PDF (
src/download_templates.py) ✅ - Field type mapping — all major Adobe field types → DocuSign tabs ✅ (see
field-mapping.md) - Coordinate system fix — y passthrough (top-origin, no conversion needed) ✅
- Conditional logic mapping →
conditionalParentLabel/Value✅ (seevalidation/conditional-logic-eval.md) - DocuSign template JSON composition (
src/compose_docusign_template.py) ✅ - DocuSign JWT upload (
src/upload_docusign_template.py) ✅ - Regression checklist for all field types ✅ (see
tests/FIELD-TYPE-REGRESSION.md) - End-to-end round-trip test (3 real Adobe templates → DocuSign) ✅
Phase 1 — Idempotent Upload ✅ (2026-04-17)
- Add
find_existing_template(name)toupload_docusign_template.py— lists DS templates by name, returns most-recently-modified match - Change
upload_template()to upsert: PUT if match found, POST if not - Add
--force-createCLI flag to bypass upsert - Write
tests/test_upload_upsert.py— 4 tests passing
Phase 2 — FastAPI Backend Foundation ✅ (2026-04-17)
- Add new dependencies to
requirements.txt - Create
web/directory structure (app.py, config.py, session.py, routers/, static/) - Implement
GET /healthendpoint - Write
tests/test_api_health.py— 2 tests passing
Phase 3 — Auth Endpoints ✅ (2026-04-17)
- Implement Adobe Sign OAuth start + callback + disconnect in
web/routers/auth.py - Implement DocuSign OAuth start + callback + disconnect
- Implement
GET /api/auth/status - Write
tests/test_api_auth.py— 4 tests passing
Phase 4 — Template Listing API ✅ (2026-04-17)
- Implement
GET /api/templates/adobeinweb/routers/templates.py - Implement
GET /api/templates/docusign - Implement
GET /api/templates/status— computesnot_migrated / migrated / needs_update - Write
tests/test_api_templates.py— 7 tests passing
Phase 5 — Migration API ✅ (2026-04-17)
- Implement
POST /api/migrateinweb/routers/migrate.py— download → compose → upsert pipeline - Implement
GET /api/migrate/history— reads/writesmigration-output/.history.json - Write
tests/test_api_migrate.py— 7 tests passing
Phase 6 — Frontend ✅ (2026-04-17)
- Create
web/static/index.html— side-by-side template browser layout - Create
web/static/app.js— auth status check, template listing, migrate flow, history - Create
web/static/style.css— status badges, layout
Phase 7 — End-to-End & Regression ✅ (2026-04-17)
- Write
tests/test_e2e.py— 7-step full pipeline test, 1 test passing - Write
tests/test_regression.py— compose pipeline vs snapshots, 4 tests passing - Create
tests/fixtures/expected/— snapshot JSONs for David Tag Demo, NDA, Rob Test - Full suite: 29/29 passing
Gitea
- Committed and pushed all changes (2026-04-17)
Results & Lessons Learned
- (2026-04-14) NDA, David Tag Demo, Rob Test all converted cleanly
- (2026-04-15) Coordinate bug fixed — y is top-origin in both platforms, no conversion needed
- (2026-04-15) Paul Adobe Template created via API; Company/Title fields require manual UI fix (API limitation)
- (2026-04-17) v2 planning complete — idempotent upload + web UI implementation begins