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
04ef5c42d9
refactor(deposits): remove inline installment creation
2026-07-13 16:12:22 +08:00
0515e6ed27
fix(integration): simplify manual DingTalk sync setup
2026-07-13 16:12:22 +08:00
effa34434b
refactor(students): remove obsolete class id input
2026-07-13 16:12:22 +08:00
0377acd33b
refactor: remove residual campus and department fields
2026-07-13 16:12:22 +08:00
6396d3e934
fix(schedules): support editable schedule notes
2026-07-13 16:12:21 +08:00
dfd3cf6772
fix(archive): align aggregate result field
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
337d25e370
Merge PR #3 : validated codex/xyx fixes
...
Includes PR #2 changes and DingTalk token cache test fixture updates.
2026-07-13 08:08:19 +00:00
7860703672
test: update DingTalk token cache fixtures
2026-07-13 16:04:05 +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
619b3b22bd
fix: use saved dingtalk config for integration calls
2026-07-13 11:43:11 +08:00
b5ef91bf2d
fix: support Windows dev startup
2026-07-13 10:35:43 +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
a266d450e1
chore: apply eslint --fix autofixes (remove unnecessary as never casts in tests)
2026-07-12 23:01:37 +08:00
b5f4b8747c
fix: schedules lookups test mock missing classroomRepo constructor arg
...
The SchedulesService constructor expects 5 repository arguments.
The test only provided 4, passing {} as never for classroomRepo.
Added classroomRepo mock with find() returning full selected columns.
Fixes: schedules.lookups.spec.ts — 'returns scoped classes and
minimal classrooms for schedule viewers'
2026-07-12 23:01:00 +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
247879f276
docs: add CodeGraph repository guidance
...
Document the preferred CodeGraph-first workflow for locating and understanding indexed code.
2026-07-10 14:13:07 +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
b093d69f6a
fix(server): correct archive filters and deposit access
...
Parse archived class query flags without Boolean string coercion, register the refund approval permission, and grant dorm managers the deposit permission group.
2026-07-10 14:12:44 +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
e26a8e816e
fix(attendance): normalize DingTalk match statuses
...
Store and validate stable English status codes for unmatched, pending, and matched attendance records so import, filtering, and auto-match use the same values.
2026-07-10 14:11:55 +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
f6a84fd6b3
fix: assign each user to single leaf dept to prevent duplicates
2026-07-10 10:09:47 +08:00
fb54a6c466
fix: assign users to leaf departments only, handle multi-branch dept chains
2026-07-10 10:08:07 +08:00
3ccb878092
fix: fetch users from all sub-departments in syncAll and fetchOrgTreeWithUsers
2026-07-10 10:06:35 +08:00
3992f6c33f
feat: implement fetchOrgTree and fetchOrgTreeWithUsers via dingtalk API
2026-07-10 10:04:59 +08:00
18060d44a8
fix: pass user name and mobile to backend when importing students
2026-07-10 09:50:45 +08:00
31bcd15189
fix: use real name and phone from frontend when importing students
2026-07-10 09:50:18 +08:00
b261ec5930
feat: change dingUserIds to users array with name/mobile in DTOs
2026-07-10 09:49:41 +08:00
1f9308c1b7
plan: fix student import name/phone from dingtalk
2026-07-10 09:47:26 +08:00
e7e335cd95
spec: fix student import name/phone from dingtalk
2026-07-10 09:45:43 +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