# AGNET API E2E Flow Report

Generated: 2026-06-26T18:10:10.284Z

## Summary

| Metric | Count |
|--------|-------|
| Passed | 10 |
| Failed | 0 |
| Skipped | 2 |

## Execution Log

| Step | Phase | Method | Path | Status | ms |
|------|-------|--------|------|--------|-----|
| F01 | auth | POST | /api/auth/otp | pass | 1 |
| F02 | auth | POST | /api/auth/verify | pass | 0 |
| F03 | auth | GET | /api/auth/me | pass | 1 |
| F04 | onboarding | POST | /api/onboarding | pass | 1 |
| F05 | onboarding | GET | /api/onboarding/{id} | pass | 0 |
| F06 | onboarding | PATCH | /api/onboarding/{id}/steps/{step} | pass | 1 |
| F07 | onboarding | POST | /api/onboarding/{id}/submit | pass | 0 |
| F08 | scoring | GET | /api/onboarding/{id}/status | pass | 1 |
| F09 | scoring | GET | /api/scoring/satellite-image | pass | 0 |
| F11 | reference | GET | /api/reference/options | pass | 0 |
| F14 | internal | GET | worker:/api/model-status | skip | 0 |
| F13 | internal | POST | worker:/api/analyze | skip | 0 |

## DB ↔ API Sync Matrix

| DB | API | Transform |
|----|-----|-----------|
| ScoringRun.totalScore | OnboardingStatusResponse.score | 0–1000 integer |
| ScoringRun.decision | OnboardingStatusResponse.eligibilityOutcome | eligible|conditional|not_eligible |
| ScoringRun.rulesResult.reasonCodes | OnboardingStatusResponse.reasonCodes | RC_* array |
| ScoringRun.rulesResult.scoringMeta | OnboardingStatusResponse.scoringMeta | nested object |
| FinanceCase.publicCaseId | OnboardingStatusResponse.financeCaseId | AGN-FIN-* |
| FinanceCase.status | OnboardingStatusResponse.financeCaseStatus | enum |
| OnboardingSession.stepData.SCORING | StepScoringData | wizard persist |
| ScoringAudit.inputSnapshotHash | — | SHA-256 of stepData (immutable) |
| ScoringAudit.outputSnapshot | scoringMeta (redacted) | append-only audit |
| FinanceCase.notes (JSON) | FinanceModule.riskPd/riskRating | dashboard enrich |