## ADDED Requirements ### Requirement: Bind page SHALL prefill the account main phone The system SHALL prefill the bind-phone input with the logged-in account's main phone when one exists, using `GET /api/c/v1/asset/info` -> `bound_phone`, and SHALL allow sending a `bind_phone` verification code to that number. #### Scenario: Existing account with a main phone enters the bind page - **WHEN** the account already has a main phone and the user enters `pages/bind/bind` - **THEN** the phone input SHALL be prefilled with the main phone - **AND** the user SHALL be able to request a `bind_phone` verification code for that number without being rejected #### Scenario: New account without a main phone enters the bind page - **WHEN** the account has no main phone - **THEN** the phone input SHALL remain empty - **AND** the user SHALL enter a new number and follow the normal bind flow ### Requirement: Bind submission SHALL be idempotent for the account main phone When `POST /api/c/v1/auth/bind-phone` is submitted with the account main phone and a valid code, the system SHALL treat it as a successful idempotent association instead of rejecting because the phone is already in use. #### Scenario: Main phone plus valid code - **WHEN** the submitted phone equals the account main phone and the code is valid - **THEN** the bind request SHALL succeed - **AND** the response SHALL keep the existing shape (`phone`, `bound_at`) - **AND** the existing bind-completion routing SHALL apply unchanged #### Scenario: Number different from the main phone - **WHEN** the submitted phone differs from the account main phone - **THEN** the bind request SHALL be rejected - **AND** the system SHALL display the backend `msg` and keep the user on the bind page ### Requirement: Bind failures SHALL display backend messages The system SHALL present the backend-provided error message for all bind-phone failures instead of a generic failure text, and SHALL keep the user on the bind page. #### Scenario: Backend rejection with message - **WHEN** `bind-phone` returns a business error - **THEN** the bind page SHALL show the returned `msg` - **AND** the page SHALL NOT navigate away