## ADDED Requirements

### Requirement: Display a usable phone-asset workspace
The system SHALL provide a routed phone-asset workspace at `/phone-assets` and SHALL retain `/reference/phone` as a non-operational static reference route.

#### Scenario: User opens the main workspace
- **WHEN** a user selects “手机号资产” from the main navigation
- **THEN** the router opens `/phone-assets` and the page requests the first asset page

#### Scenario: User opens the legacy route
- **WHEN** a user opens `/reference/phone`
- **THEN** the system shows the existing static reference view without requesting the new phone-asset API

### Requirement: Filter and paginate assets
The workspace SHALL let users submit and reset supported filters, change pages, and change page size while displaying the returned total and current records.

#### Scenario: Filter is submitted
- **WHEN** a user enters supported filter values and selects search
- **THEN** the workspace requests page `1` with those values and renders the returned records

#### Scenario: Filter is reset
- **WHEN** a user selects reset
- **THEN** the workspace clears filter controls and reloads the default first page

### Requirement: Create and edit assets through one validated form
The workspace SHALL provide a single form for create and edit flows, require a phone number, and display server validation or conflict messages without closing the form.

#### Scenario: New asset is saved
- **WHEN** a user completes valid required fields and confirms creation
- **THEN** the workspace calls `POST /api/phone-assets`, closes the dialog after success, and refreshes the current list

#### Scenario: Server rejects save
- **WHEN** the API returns a validation or duplicate-phone error
- **THEN** the workspace keeps the dialog open and displays the returned message

### Requirement: Protect destructive actions and show read-only relations
The workspace SHALL require explicit confirmation before deletion and SHALL present relation snapshots and sync time as read-only details.

#### Scenario: Delete is confirmed
- **WHEN** a user confirms deletion of a table row
- **THEN** the workspace calls the delete API and refreshes the list only after success

#### Scenario: User opens details
- **WHEN** a user opens a record detail panel
- **THEN** the workspace displays relation array values and sync time without offering inputs that modify them

### Requirement: Use confirmed form controls
The workspace SHALL restrict the phone input to 11 digits after trimming whitespace and removing a leading `+86`. It SHALL show card type, management type, and disposal status as confirmed dropdowns; management type displays empty for null and disposal status is required with initial value `正常使用`.

#### Scenario: User enters a prefixed number
- **WHEN** a user enters ` +8613812345678 `
- **THEN** the form submits `13812345678`

#### Scenario: Delete is blocked by relations
- **WHEN** the delete API returns a blocking relation type
- **THEN** the workspace shows that reason and does not remove the table row