# V1.2 Task 2 Completion Report ## Status Completed ## Implemented - Added `POST /api/v1/auth/register` for self-registration applications. - Added phone code send/verify endpoints with hashed Redis code storage, five-attempt limit, one-minute send cooldown, five-minute expiry, and one-time verification transaction. - Added `SmsVerificationProvider` abstraction. - Test/demo profiles use an in-memory mock provider; non-test profiles fail closed when SMS is not configured. - Replaced direct phone binding with a verified transaction requirement. - Added V065 registration application migration and H2 schema. - Added miniapp registration page and login entry. - Duplicate phone registration is rejected without overwriting the existing user. ## Automated Tests ```text mvn -B -f backend/pom.xml test "-Dtest=PhoneVerificationGuardTest,UserRegistrationServiceTest,V12MigrationContractTest,MigrationValidationTest,EntityMigrationParityTest" 25 tests passed, 0 failures, 0 errors npm --prefix miniapp run type-check passed ``` ## Not Verified - Real SMS provider integration is not connected. - Clean PostgreSQL V001-V065 migration and live Redis behavior were not run in this step. - Historical WeChat account association UI and ambiguous-account manual queue remain deferred to the account lifecycle/onboarding stage. ## Next Phase Task 3: operator-created profiles, CSV preview/commit, review linkage, and account issuance.