Frontend: - Replace Next.js with Vite + React + TypeScript - Add new component architecture (app-shell, sidebar, dashboard modules) - Implement product modules: FRAME, safety protocols, walkthrough checkin, campus/staff attendance, personality quiz, sign language, classroom timer - Add shadcn/ui component library with Tailwind CSS - Remove legacy generated components, stores, and pages Backend: - Add product migrations: frame_entries, user_progress, safety_quiz_results, walkthrough_checkins, communication_events, personality_quiz_results, campus_attendance_config/summaries, staff_attendance_records, content_catalog - Add corresponding models, services, and routes - Implement cookie-based auth with refresh token rotation - Add content catalog seeder with product content - Migrate to ESLint flat config - Switch from yarn to npm Infrastructure: - Update .gitignore for new tooling - Add project documentation (CLAUDE.md, docs/) - Remove deprecated config files and yarn.lock Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
72 lines
2.3 KiB
TypeScript
72 lines
2.3 KiB
TypeScript
import type {
|
|
CampusAttendancePrintInput,
|
|
CampusAttendanceStats,
|
|
CampusAttendanceSummaryViewModel,
|
|
} from '@/business/campus-attendance/types';
|
|
|
|
export const CAMPUS_ATTENDANCE_TEST_SEED = {
|
|
campusId: 'tigers',
|
|
campusMascot: 'Tigers',
|
|
campusFullName: 'Tigers <Main> Campus',
|
|
campusFullNameEscaped: 'Tigers <Main> Campus',
|
|
generatedByName: 'Test Director',
|
|
generatedByRole: 'Director & Campus Lead',
|
|
generatedByRoleEscaped: 'Director & Campus Lead',
|
|
reportTitleEscaped: 'Attendance & Daily <Report>',
|
|
todayNotesEscaped: 'Needs <support> & follow-up',
|
|
} as const;
|
|
|
|
export const campusAttendanceTodayRecord: CampusAttendanceSummaryViewModel = {
|
|
id: 'summary-1',
|
|
campus_id: CAMPUS_ATTENDANCE_TEST_SEED.campusId,
|
|
date: '2026-06-08',
|
|
total_enrolled: 50,
|
|
total_present: 45,
|
|
total_absent: 5,
|
|
total_tardy: 1,
|
|
attendance_percentage: 90,
|
|
recorded_by: 'director-1',
|
|
notes: 'Needs <support> & follow-up',
|
|
};
|
|
|
|
export const campusAttendanceWeekRecord: CampusAttendanceSummaryViewModel = {
|
|
id: 'summary-2',
|
|
campus_id: CAMPUS_ATTENDANCE_TEST_SEED.campusId,
|
|
date: '2026-06-09',
|
|
total_enrolled: 50,
|
|
total_present: 40,
|
|
total_absent: 10,
|
|
total_tardy: 2,
|
|
attendance_percentage: 80,
|
|
recorded_by: 'director-1',
|
|
notes: null,
|
|
};
|
|
|
|
export const campusAttendanceStatsSeed: CampusAttendanceStats = {
|
|
id: CAMPUS_ATTENDANCE_TEST_SEED.campusId,
|
|
mascot: CAMPUS_ATTENDANCE_TEST_SEED.campusMascot,
|
|
fullName: CAMPUS_ATTENDANCE_TEST_SEED.campusFullName,
|
|
color: 'bg-orange-500',
|
|
bgGradient: 'from-orange-500 to-amber-500',
|
|
borderColor: 'border-orange-500/30',
|
|
textColor: 'text-orange-400',
|
|
bgLight: 'bg-orange-500/10',
|
|
description: 'Strength, courage & determination',
|
|
todayPct: 90,
|
|
weekAvg: 85,
|
|
config: null,
|
|
recentData: [campusAttendanceTodayRecord, campusAttendanceWeekRecord],
|
|
todayRecord: campusAttendanceTodayRecord,
|
|
};
|
|
|
|
export const campusAttendancePrintInputSeed: CampusAttendancePrintInput = {
|
|
reportTitle: 'Attendance & Daily <Report>',
|
|
generatedByName: CAMPUS_ATTENDANCE_TEST_SEED.generatedByName,
|
|
generatedByRole: CAMPUS_ATTENDANCE_TEST_SEED.generatedByRole,
|
|
today: '2026-06-08',
|
|
weekStart: '2026-06-08',
|
|
campusesToPrint: [campusAttendanceStatsSeed],
|
|
printTodayRecords: [campusAttendanceTodayRecord],
|
|
printWeekRecords: [campusAttendanceTodayRecord, campusAttendanceWeekRecord],
|
|
};
|