aaf49d5580
fix: guard bill generation submission
2026-07-14 11:20:42 +08:00
5cf6aede1e
feat: improve occupancy import template
2026-07-14 11:20:41 +08:00
811e7ce826
feat: show DingTalk punch device details
2026-07-14 11:20:41 +08:00
013b3f4afe
fix: 押金页添加批量构建学生选项的功能以简化学生数据处理
2026-07-13 17:18:35 +08:00
7bfd30b513
fix: 添加表单验证错误处理逻辑以改善错误提示
2026-07-13 16:50:47 +08:00
ceb0e2bf14
fix: 添加默认床位生成逻辑并优化床位添加验证
2026-07-13 16:50:47 +08:00
acb11b87a3
fix: enhance pagination settings across multiple pages with default size and options
2026-07-13 16:49:21 +08:00
f98c0ccaa8
refactor(rooms): remove dorm gender restrictions
2026-07-13 16:12:57 +08:00
aa1ed7db56
refactor: resolve remaining field audit issues
2026-07-13 16:12:57 +08:00
0533c30ece
refactor(classes): preserve student membership history
2026-07-13 16:12:57 +08:00
1f32d1285b
refactor(deposits): remove refund approval remnants
2026-07-13 16:12:56 +08:00
7b08560aef
fix(deposits): show student numbers in lookup
2026-07-13 16:12:56 +08:00
0515e6ed27
fix(integration): simplify manual DingTalk sync setup
2026-07-13 16:12:22 +08:00
6396d3e934
fix(schedules): support editable schedule notes
2026-07-13 16:12:21 +08:00
2874ab7bee
fix(occupancies): assign room resources during transfers
2026-07-13 16:12:21 +08:00
8cadf8970e
fix(admin): restore teacher profile form values
2026-07-13 16:12:20 +08:00
ebce2463f0
fix: remove sensitive data masking from student options label
2026-07-13 15:27:17 +08:00
910a4263f6
fix: refactor notification display logic and add format function
2026-07-13 14:52:03 +08:00
6d42241918
fix: enhance emergency contact phone display with masking and view option
2026-07-13 14:29:01 +08:00
70283d9dfe
fix: enhance 401 error handling to exclude login requests
2026-07-13 14:22:22 +08:00
187e4f2af0
fix: improve error handling in expense form submissions
2026-07-13 12:16:39 +08:00
1c8bd08be4
feat: settle course attendance automatically
2026-07-13 10:26:38 +08:00
b9b295c997
refactor: remove unused classroom fields
2026-07-13 09:34:15 +08:00
cc4f4dae4e
fix: audit remediation — SSE user scoping, FK transactional safety, UI error handling
...
- H4: scoped SSE import progress to exact userId match; non-HTTP events excluded from all subscribers
- H2: moved PRAGMA foreign_key_check inside SQLite transaction before COMMIT; violations rollback preserving old tables
- M1: removed dead axios-style error branch from extractErrorMessage (interceptor already unwraps)
- M2: split handleSave try/catch — save errors vs reload errors shown distinctly
- M3: added provider field validation before AI config test request
- Added SSE scoping regression tests (import service + controller)
- Added FK check failure rollback test (database-migrations.spec)
- Updated controller spec expectations for userId parameter
Co-authored-by: Code Review <branch-review>
2026-07-12 22:59:03 +08:00
b6fca99390
fix: align permission navigation and page access
2026-07-11 14:55:49 +08:00
1e1c476bc3
feat: add CASL authorization and AI configuration
2026-07-11 14:25:34 +08:00
8f0991a51f
feat: replace tenants with organization management
2026-07-10 21:27:26 +08:00
8ed1682b90
fix permissions and teacher attendance workflows
2026-07-10 20:40:52 +08:00
44105c1689
refactor: remove obsolete scaffolding and dead modules
...
Drop the unused root hello-world controller, empty CommonModule imports, development seeding code, legacy student report entity, stale DTOs, notification hook, and their placeholder tests.
2026-07-10 14:12:56 +08:00
50b3608db4
fix(admin): repair class, role, and room views
...
Use the RBAC user endpoint for teacher selection, restore role table columns, correct Ant Design props, and add typed room bed and locker responses.
2026-07-10 14:12:08 +08:00
1ca4a4d185
fix(archive): serve student attachments securely
...
Download attachments through authenticated API requests, support configurable upload paths, validate resolved file locations, and retain compatibility with legacy stored paths.
2026-07-10 14:11:47 +08:00
55881863c1
feat(sync): sync class schedules to DingTalk students
...
Group active schedules by class, resolve enrolled students through DingTalk mappings, reuse shifts and attendance groups, and expose class-based sync status in the admin UI.
2026-07-10 14:11:39 +08:00
bc6b8b0095
fix: 修复入住管理白屏、重构首页工作台、拍平教务菜单
...
- Occupancies: 补齐缺失的 Alert import(渲染时 ReferenceError 导致白屏),
并为两处 api.get 补泛型消除既有类型错误
- Dashboard: 改为待办优先的工作台(待办异常区 + 核心 KPI + 更多指标折叠 +
图表按重要性重排),修复 fetchData 无限请求循环(loadedRef),
重活图表用 IntersectionObserver(callback ref)懒加载
- MainLayout: 将三层嵌套的"教室管理"提升为一级菜单,全站菜单统一为两层
2026-07-10 11:16:30 +08:00
18060d44a8
fix: pass user name and mobile to backend when importing students
2026-07-10 09:50:45 +08:00
97c2ceccde
fix: re-apply UX fixes on Bills, Expenses, Deposits
...
- Add Empty component to antd imports
- Replace console.error with message.error in catch blocks
- Add batchLoading state + guard on batch operations
- Add locale emptyText to Tables
2026-07-09 19:57:10 +08:00
8f28c172c4
fix: close unclosed fragments in Expenses/Deposits, fix brace in Bills
2026-07-09 19:52:33 +08:00
bc2ff2b270
fix: brace mismatch in Classes fetchData try/catch/finally
2026-07-09 19:49:21 +08:00
c59fd6ce92
fix(admin): UX improvements — silent fetch failures, empty states, batch loading guards, dashboard refresh
...
- Replace console.error-only catches with message.error user-facing notifications
across Bills, Classes, ClassroomRentals, ClassroomSchedule, Classrooms, Deposits,
Expenses, OperationLogs, Permissions, Roles, RoomVisual, Rooms, Students,
Tenants, Users
- Add Empty component via Table locale prop on list pages: Bills, Classes,
ClassroomRentals, Classrooms, Deposits, Expenses (room+personal), Occupancies,
Rooms, Students, Tenants, Roles
- Add batchLoading state to batch delete/update operations: Bills (batchDelete,
batchUpdateStatus), Expenses (batchDeleteRoom, batchDeletePersonal),
Occupancies (batchCheckOut, batchDelete), Rooms (batchDelete),
Students (batchDelete)
- Add refreshLoading indicator to Dashboard header when re-fetching data
- Consistent error pattern: catch (e: unknown) { const err = e as { message?: string }; message.error(...); }
2026-07-09 18:03:42 +08:00
b0f7883f33
feat(admin): remove all department/campus scoping from frontend
...
- Delete CampusSwitcher component and useCampus hook
- Delete Departments page and its route
- Remove campus header interceptor from API client
- Remove departmentId from Class interfaces
- Remove campusLocation from student profile
- Remove department permissions from test fixtures
- Remove currentCampusId from test cleanup
TypeScript compiles clean.
2026-07-09 17:40:57 +08:00
22bc1876d8
refactor: remove departmentId from Class entity
2026-07-09 17:32:37 +08:00
9b7a8e37b4
fix: resolve 5 review findings
...
Critical 1: Remove broken '钉钉绑定' tab (IntegConfig) — deleted /rbac/user-ding-mappings calls
Critical 2: Fix decorator placement in CreateClassDto — @IsOptional @IsArray restored to teachers
Important 1: Restore sync.service.spec.ts from 1fa3363 , strip importDingTalkUsers tests
Important 2: Fix N+1 in batchImportStudents — batched find/save with In() operator
Important 3: Add migrate-student-ding-mapping.sql
2026-07-09 17:25:44 +08:00
1f63a53222
feat: rewrite sync drawer with checkable tree + class batch import
2026-07-09 17:16:08 +08:00
c1d065a5e6
fix(students): remove staff role from status map
2026-07-09 16:32:02 +08:00
5145c3e4b4
fix(layout): use controlled sidebar openKeys to preserve manual expand/collapse across navigation
2026-07-09 16:31:56 +08:00
d1d5b4681b
feat(schedules): replace teacher ID input with searchable user select, show teacher name, add schedule button
2026-07-09 16:31:53 +08:00
7e4f06058c
fix(admin): match flat API response shape, no nested data envelope
2026-07-09 15:52:40 +08:00
2da2e68318
fix(admin): refactor inline map arrow to avoid oxc TSX parser confusion
2026-07-09 15:46:24 +08:00
d2d0ca31ad
fix(admin): use type pattern consistent with rest of codebase (oxc compat)
2026-07-09 15:43:46 +08:00
867e1aab1f
fix(admin): avoid TSX generic syntax to fix oxc parser in Vite 8
2026-07-09 15:41:30 +08:00
8bfb8bf7ae
fix(admin): fix syntax error — missing closing parens in map after console.log removal
2026-07-09 15:39:03 +08:00