|
|
22bc1876d8
|
refactor: remove departmentId from Class entity
|
2026-07-09 17:32:37 +08:00 |
|
|
|
40fef906cd
|
fix: resolve DingTalk dept ID to local department ID in class create
|
2026-07-09 17:28:12 +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 |
|
|
|
91035e9f2c
|
feat: add batch-import students to class endpoint
|
2026-07-09 17:12:23 +08:00 |
|
|
|
7b8691866e
|
refactor: remove User-based import and RBAC UserDingMapping endpoints
|
2026-07-09 17:10:33 +08:00 |
|
|
|
570ef7b7e9
|
revert: remove deepest-2-levels filter, restore full org tree
|
2026-07-09 17:07:22 +08:00 |
|
|
|
e87e5e2096
|
refactor: syncAll creates Student + StudentDingMapping directly
|
2026-07-09 17:05:54 +08:00 |
|
|
|
73c1ea7a76
|
fix: correct studentId-as-userId bugs in 3 files
- dingtalk.service.ts syncOneUser: find Student by userId before mapping,
use Student.id (not User.id) as studentId FK
- sync.service.ts importDingTalkUsers: type coercion for studentId
(method deleted in Task 4, minimal compile fix)
- schedule-sync.service.ts getStatus: remove broken teacher mapping
query (teacher scheduling deprecated); hardcode mappedTeachers=0,
totalTeachers=0
|
2026-07-09 17:04:35 +08:00 |
|
|
|
86f126671c
|
fix: repair 5 sites where StudentDingMapping.studentId was misused as User FK
- dingtalk.service.ts syncOneUser: query studentRepo (not userRepo) by mapping.studentId
- sync.service.ts importDingTalkUsers: skip User role lookup for existing mappings
- attendance.service.ts autoMatchDingRecords: use studentId directly, remove second-hop query
- schedule-sync.service.ts syncAll: skip teacher mapping block (deprecated)
- rbac.service.ts getUnboundUsers: return [] (method deleted in Task 4)
|
2026-07-09 17:00:00 +08:00 |
|
|
|
ef1b46b9f4
|
refactor: replace UserDingMapping with StudentDingMapping entity
|
2026-07-09 16:53:25 +08:00 |
|
|
|
1fa336331c
|
docs: student ding mapping + batch operations implementation plan
|
2026-07-09 16:49:38 +08:00 |
|
|
|
6762a7f661
|
docs: student ding mapping + drawer batch operations spec
|
2026-07-09 16:46:32 +08:00 |
|
|
|
c1d065a5e6
|
fix(students): remove staff role from status map
|
2026-07-09 16:32:02 +08:00 |
|
|
|
4592502876
|
feat(sync): add import request/result logging
|
2026-07-09 16:32:02 +08:00 |
|
|
|
6b232eb4ed
|
fix(seed): only seed with SEED_DEV=true, not auto on dev env
|
2026-07-09 16:32:01 +08:00 |
|
|
|
c56f297f95
|
refactor: remove SeedModule from app imports (manual seed only)
|
2026-07-09 16:32:01 +08:00 |
|
|
|
b81a06e77c
|
refactor(classes): remove CampusScope dependency
|
2026-07-09 16:32:01 +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 |
|
|
|
c928ee0f65
|
feat(rbac): add user-ding-mapping CRUD endpoints
|
2026-07-09 16:31:50 +08:00 |
|
|
|
4f3b5112b0
|
feat: filter org-tree-with-users to deepest 2 levels
|
2026-07-09 16:12:13 +08:00 |
|
|
|
0509175a57
|
feat: add getDeptDepthMap BFS method for org tree depth tracking
|
2026-07-09 16:08:53 +08:00 |
|
|
|
a6891b32d7
|
docs: implementation plan for org tree deepest levels filter
|
2026-07-09 16:07:26 +08:00 |
|
|
|
3ee1ebaa1e
|
docs: org tree deepest levels only design spec
|
2026-07-09 16:06:09 +08:00 |
|
|
|
7e4f06058c
|
fix(admin): match flat API response shape, no nested data envelope
|
2026-07-09 15:52:40 +08:00 |
|
|
|
64c8964ea4
|
fix(server): handle existing User from syncAll in importDingTalkUsers to avoid UNIQUE constraint error
|
2026-07-09 15:51:04 +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 |
|
|
|
4d4db7626c
|
chore: remove dead CampusScope references from attendance spec test
|
2026-07-09 15:35:59 +08:00 |
|
|
|
3240c7cfdd
|
fix(server): restore @InjectRepository(UserDingMapping) accidentally removed with scope
|
2026-07-09 15:31:35 +08:00 |
|
|
|
7f355952fd
|
fix(server): remove CampusScope from AttendanceService
|
2026-07-09 15:29:50 +08:00 |
|
|
|
897ffbe018
|
fix(server): restore staff exclusion in StudentsService.findAll default filter
|
2026-07-09 15:28:18 +08:00 |
|
|
|
9b36284f1a
|
fix(server): remove CampusScope from StudentsService
|
2026-07-09 15:25:54 +08:00 |
|
|
|
b624c52b30
|
fix(admin): restore nested ImportUsersResponse and remove debug console.log
|
2026-07-09 15:24:54 +08:00 |
|
|
|
f7df3bdcf1
|
fix(admin): only show class-mark button on leaf departments with users
|
2026-07-09 15:18:23 +08:00 |
|
|
|
3ea7f9a2b7
|
docs: add DingTalk import fix implementation plan
|
2026-07-09 15:17:25 +08:00 |
|
|
|
a568d9a871
|
docs: add DingTalk import fix design spec
|
2026-07-09 15:15:56 +08:00 |
|
|
|
7666baceff
|
fix: add missing Bed and Locker entities to TypeORM registration
|
2026-07-09 14:00:58 +08:00 |
|
|
|
db3e4aae84
|
fix(admin): display classCount and warnings in import response
|
2026-07-09 13:01:07 +08:00 |
|
|
|
eeacab6130
|
test(sync): add class-marking import test cases (7 new, 5 fixed)
|
2026-07-09 12:53:03 +08:00 |
|
|
|
7f42c12392
|
feat(admin): add class marking modal in DingTalk org import drawer
|
2026-07-09 12:41:29 +08:00 |
|
|
|
0f3fec6b44
|
fix(sync): remove unused classStudentRepo injection, use transactional manager for class lookup
|
2026-07-09 12:37:49 +08:00 |
|
|
|
00de6cbd3a
|
feat(sync): importDingTalkUsers supports class creation and teacher/student linking
|
2026-07-09 12:33:10 +08:00 |
|
|
|
5b92521426
|
docs: remove 班主任 distinction — all teachers use roleType='teacher'
|
2026-07-09 12:24:35 +08:00 |
|
|
|
166066f49f
|
feat(sync): add ImportClassItemDto and expose deptIds in org-tree-with-users
|
2026-07-09 12:21:39 +08:00 |
|
|
|
e90f73cb60
|
fix: broken Form.Item tag in check-in room select
|
2026-07-09 12:19:04 +08:00 |
|
|
|
74e6171e17
|
feat: add bed occupancy stats to RoomVisual cards and API
|
2026-07-09 12:18:30 +08:00 |
|