## Why

Contract documents currently print an employee's job title by reading their **live, current** position through `account->position->name` (`Field::$defaultKeyByCodes['employee_position']`). This value always reflects whatever position is assigned today, even for contracts signed in the past. HR has no way to store/override the position title that should appear on a specific employee's contract independent of their current live position assignment.

## What Changes

- Add a `contract_position` column (string, nullable) to the `employees` table — a simple standalone text field, not a foreign key to `positions` and not a replacement for the existing `account_position` pivot (which continues to be the source of truth for the employee's current/live position elsewhere in the system).
- Backfill migration: for every existing employee, set `contract_position` to their current position name (`account->positions()->first()->name`, the same lookup already used in `Account::getCompany()` and `EmployeeExport`), so no employee starts with a blank value.
- Update the contract template field mapping so the `employee_position` template variable (used when generating/previewing contract documents) resolves from `account->employee->contract_position` instead of `account->position->name`. The template placeholder `${employee_position}` itself is unchanged — only where its value comes from changes.
- Employees can view and edit `contract_position` as an ordinary employee profile field going forward (HR sets it manually per employee after the initial backfill; it is not kept in sync automatically with position changes).
- The admin employee list endpoint supports filtering by `contract_position` (partial text match), alongside the existing `position_id` filter.
- The employee export adds a `contract_position` column (heading "Vị trí HĐ"), alongside the existing "Vị trí" (live position) column.

## Capabilities

### New Capabilities
- `employee-contract-position`: employees have an editable `contract_position` text field, seeded from their current position on creation of the column, contract documents render `employee_position` from this field instead of the live account position, the admin employee list can be filtered by it, and it appears as its own column in the employee export.

### Modified Capabilities
(none — no existing synced specs to modify; this is the first spec for this behavior)

## Impact

- **Database**: new migration adding `contract_position` to `employees`, plus a data-backfill step.
- **Code**: `app/Models/Field.php` (`$defaultKeyByCodes['employee_position']` mapping), `app/Models/Employee.php` (fillable), Employee admin controller(s) validation/update for the new field, `app/Classes/Traits/AccountTrait.php` (`getEmployeeListByRequest` filter), `app/Exports/EmployeeExport.php` (new export column).
- **Behavior change**: contract documents generated after this change will show the employee's stored `contract_position` value rather than their live current position — for employees who have since changed position without HR updating `contract_position`, printed contracts will show the (correct, historically frozen) old title.
