## 2026-01-02 ### [Task 6] User Recommended Major List API Integration - **Time**: 2026-01-02 - **Goal**: Integrate the user recommended major list API into the simulation page. - **Scope**: - `src/service/api/major.ts` (Create) - `src/pages/simulate.vue` (Update) - **Result**: - Created `src/service/api/major.ts` encapsulating `/user/major/list` API. - Updated `src/pages/simulate.vue` to fetch and display data in Panel A using the new API. - Implemented infinite scroll and filtering by probability. - Mapped API response fields to the UI table. - [Result]: - Updated `UserMajorListResponse` to support `{ list: { items: [], probCount: {} } }` structure. - Added 'stable' (较稳妥) tab to `simulate.vue`. ## 2026-01-23 ### [Task 8] Fix TypeScript type error in `simulate.vue` - **Time**: 2026-01-23 - **Goal**: Fix type error `Argument of type '"stable"' is not assignable to parameter of type 'TabKey'`. - **Scope**: `src/pages/simulate.vue` - **Result**: Updated `TabKey` definition to include `'stable'` and remove unused `'all'`. ## 2026-01-24 ### [Task 9] Volunteer Filling Logic Perfection - **Time**: 2026-01-24 - **Goal**: Implement real API integration for saving and fetching volunteers, with modification detection. - **Scope**: - `src/service/api/volunteer.ts` (New) - `src/pages/simulate.vue` (Update) - **Result**: - Created `volunteer.ts` with `saveVolunteer` and `getVolunteerDetail`. - Integrated these into `simulate.vue`. - Added `isModified` logic for reordering and deletion. - Added `onBeforeRouteLeave` and `watch(activePanel)` protection for unsaved changes. - Updated Panel B template to use real API data structure.