refactor(mobile): extract types, static data, utils, styles from App.vue

Pure moves only — zero behavior change, template untouched:
- types.ts (447), utils.ts (51), data/{auth,navigation,practice,mentor,
  home,supervisor,icons}.ts, styles/app.css (4690, still global non-scoped
  via <style src>)
- App.vue 9006 → 3559 lines; 98 moved declarations verbatim except
  export/import syntax
- Built CSS hash identical to pre-refactor (byte-equal styles); reactive
  state, computed, watchers, lifecycle and templates all stay in App.vue
- Component-level split deferred to phase two after 2026-07-10 Alpha
This commit is contained in:
2026-07-08 21:07:45 +08:00
parent 15cd789da6
commit e4070c8b8c
11 changed files with 5649 additions and 5528 deletions
+49
View File
@@ -0,0 +1,49 @@
import type { RoleKey, SupervisorPanelKey, UserPanelKey } from '../types';
export const aliases: Record<string, RoleKey> = {
h5: 'user',
user: 'user',
employee: 'user',
candidate: 'candidate',
supervisor: 'supervisor',
admin: 'supervisor',
manager: 'supervisor'
};
export const rolePaths: Record<RoleKey, string> = {
user: '/h5/user',
candidate: '/h5/candidate',
supervisor: '/h5/supervisor'
};
export const userPanelSegments: Record<Exclude<UserPanelKey, ''>, string> = {
tasks: 'training',
practice: 'practice',
sop: 'knowledge',
cases: 'cases',
submit: 'submit',
profile: 'profile',
history: 'history',
recommend: 'recommend'
};
export const candidatePanelSegments: Record<Exclude<UserPanelKey, ''>, string> = {
tasks: 'interview',
practice: 'interview',
sop: 'sop',
cases: 'cases',
submit: 'materials',
profile: 'profile',
history: 'history',
recommend: 'recommend'
};
export const supervisorPanelSegments: Record<Exclude<SupervisorPanelKey, ''>, string> = {
team: 'team',
reviews: 'reviews',
assign: 'assign',
weakness: 'weakness',
case: 'cases',
sop: 'sop',
profile: 'profile'
};