feat(shared,tests): add error boundaries, lib utils, i18n messages, and integration tests
Some checks failed
CI / scheduled-backup (push) Has been skipped
CI / backup-verify (push) Has been skipped
CI / weekly-dr-drill (push) Failing after 0s
CI / build-deploy (push) Has been cancelled
CI / security-scan (push) Has been cancelled

shared:

- Add class-filter, error-state, route-error, section-error-boundary, widget-boundary components

- Add ui/alert component

- Add constants directory

- Add breached-password, export-utils, permission-bitmap, rate-limit, resolve-action-error, route-permissions, route-resolver, type-guards lib

- Add i18n messages (en, zh-CN) for invitation-codes, parent, questions, rbac

tests:

- Add integration tests for elective

- Add tests/setup/empty-stub

scripts:

- Add update-md.cjs, tmp_append_en.ps1, tmp_merge_en.ps1 utilities
This commit is contained in:
SpecialX
2026-07-03 10:26:38 +08:00
parent 21142f9b99
commit 0e63c24ed9
97 changed files with 9753 additions and 819 deletions

View File

@@ -1,6 +1,12 @@
{
"title": "Leave Request",
"title.parent": "Online Leave",
"title.teacher": "Leave Approval",
"title.student": "My Leave Requests",
"description": "Submit a leave request for your child.",
"description.parent": "Submit a leave request for your child. Attendance is auto-synced after homeroom teacher approval.",
"description.teacher": "View and approve leave requests from students in your classes. Approved leaves automatically mark attendance as 'excused'.",
"description.student": "Submit your own leave request. It takes effect after homeroom teacher approval.",
"backToDashboard": "Back to Dashboard",
"onlineLeave": "Online Leave Request",
"comingSoon": "Coming soon",
@@ -8,5 +14,68 @@
"contactOptions": "Contact options",
"callOffice": "Call the school office during working hours",
"sendMessage": "Send a message to the homeroom teacher via the Messages page",
"goToMessages": "Go to Messages"
}
"goToMessages": "Go to Messages",
"types": {
"sick": "Sick Leave",
"personal": "Personal Leave",
"family": "Family Affairs",
"other": "Other"
},
"status": {
"pending": "Pending",
"approved": "Approved",
"rejected": "Rejected",
"cancelled": "Cancelled"
},
"form": {
"student": "Student",
"studentPlaceholder": "Select your child",
"leaveType": "Leave Type",
"dateRange": "Leave Dates",
"reason": "Reason",
"reasonPlaceholder": "Briefly explain the reason for leave (max 500 chars)",
"submit": "Submit Request",
"submitting": "Submitting…"
},
"list": {
"reason": "Reason",
"reviewedBy": "Reviewed by {name} ({date})",
"reviewComment": "Review Comment",
"attendanceSynced": "Attendance synced"
},
"review": {
"title": "Review Leave Request",
"description": "{name} · {className} · {dateRange}",
"approve": "Approve",
"reject": "Reject",
"cancel": "Cancel",
"commentLabel": "Review Comment",
"commentPlaceholder": "Enter review comment (required for rejection, optional for approval)",
"openButton": "Review"
},
"errors": {
"invalidForm": "The form has errors, please check and retry",
"noRelation": "You have no parent-child relation with this student",
"classMismatch": "Selected class does not match the student's current class",
"overlappingLeave": "An active leave request already exists in this date range",
"reviewCommentRequired": "Review comment is required when rejecting",
"notFound": "Leave request not found or no access",
"alreadyReviewed": "This leave request has already been reviewed",
"notOwner": "You can only cancel your own leave requests",
"cannotCancel": "Current status does not allow cancellation (only pending can be cancelled)"
},
"messages": {
"created": "Leave request submitted, waiting for homeroom teacher approval",
"approved": "Leave request approved, attendance synced",
"rejected": "Leave request rejected",
"cancelled": "Leave request cancelled"
},
"empty": {
"parentTitle": "No leave records",
"parentDesc": "You have not submitted any leave requests for your children",
"teacherTitle": "No leave requests",
"teacherDesc": "No pending or reviewed leave requests from your classes",
"studentTitle": "No leave records",
"studentDesc": "You have not submitted any leave requests"
}
}