Commit Graph

  • fb54a6c466 fix: assign users to leaf departments only, handle multi-branch dept chains wangziqi 2026-07-10 10:08:07 +08:00
  • 3ccb878092 fix: fetch users from all sub-departments in syncAll and fetchOrgTreeWithUsers wangziqi 2026-07-10 10:06:35 +08:00
  • 3992f6c33f feat: implement fetchOrgTree and fetchOrgTreeWithUsers via dingtalk API wangziqi 2026-07-10 10:04:00 +08:00
  • 18060d44a8 fix: pass user name and mobile to backend when importing students wangziqi 2026-07-10 09:50:45 +08:00
  • 31bcd15189 fix: use real name and phone from frontend when importing students wangziqi 2026-07-10 09:50:18 +08:00
  • b261ec5930 feat: change dingUserIds to users array with name/mobile in DTOs wangziqi 2026-07-10 09:49:41 +08:00
  • 1f9308c1b7 plan: fix student import name/phone from dingtalk wangziqi 2026-07-10 09:47:26 +08:00
  • e7e335cd95 spec: fix student import name/phone from dingtalk wangziqi 2026-07-10 09:45:43 +08:00
  • 97c2ceccde fix: re-apply UX fixes on Bills, Expenses, Deposits wangziqi 2026-07-09 19:57:10 +08:00
  • 8f28c172c4 fix: close unclosed fragments in Expenses/Deposits, fix brace in Bills wangziqi 2026-07-09 19:52:33 +08:00
  • bc2ff2b270 fix: brace mismatch in Classes fetchData try/catch/finally wangziqi 2026-07-09 19:49:21 +08:00
  • c59fd6ce92 fix(admin): UX improvements — silent fetch failures, empty states, batch loading guards, dashboard refresh wangziqi 2026-07-09 18:03:42 +08:00
  • 6029d8e2fd refactor(server): remove Department/UserDepartment entities, CampusScope, and departmentId from all entities wangziqi 2026-07-09 17:51:32 +08:00
  • b0f7883f33 feat(admin): remove all department/campus scoping from frontend wangziqi 2026-07-09 17:40:57 +08:00
  • 22bc1876d8 refactor: remove departmentId from Class entity wangziqi 2026-07-09 17:32:37 +08:00
  • 40fef906cd fix: resolve DingTalk dept ID to local department ID in class create wangziqi 2026-07-09 17:28:12 +08:00
  • 9b7a8e37b4 fix: resolve 5 review findings wangziqi 2026-07-09 17:25:44 +08:00
  • 1f63a53222 feat: rewrite sync drawer with checkable tree + class batch import wangziqi 2026-07-09 17:16:08 +08:00
  • 91035e9f2c feat: add batch-import students to class endpoint wangziqi 2026-07-09 17:12:23 +08:00
  • 7b8691866e refactor: remove User-based import and RBAC UserDingMapping endpoints wangziqi 2026-07-09 17:10:33 +08:00
  • 570ef7b7e9 revert: remove deepest-2-levels filter, restore full org tree wangziqi 2026-07-09 17:07:22 +08:00
  • e87e5e2096 refactor: syncAll creates Student + StudentDingMapping directly wangziqi 2026-07-09 17:05:54 +08:00
  • 73c1ea7a76 fix: correct studentId-as-userId bugs in 3 files wangziqi 2026-07-09 17:04:35 +08:00
  • 86f126671c fix: repair 5 sites where StudentDingMapping.studentId was misused as User FK wangziqi 2026-07-09 17:00:00 +08:00
  • ef1b46b9f4 refactor: replace UserDingMapping with StudentDingMapping entity wangziqi 2026-07-09 16:53:25 +08:00
  • 1fa336331c docs: student ding mapping + batch operations implementation plan wangziqi 2026-07-09 16:49:38 +08:00
  • 6762a7f661 docs: student ding mapping + drawer batch operations spec wangziqi 2026-07-09 16:46:32 +08:00
  • c1d065a5e6 fix(students): remove staff role from status map wangziqi 2026-07-09 16:32:02 +08:00
  • 4592502876 feat(sync): add import request/result logging wangziqi 2026-07-09 16:32:02 +08:00
  • 6b232eb4ed fix(seed): only seed with SEED_DEV=true, not auto on dev env wangziqi 2026-07-09 16:32:01 +08:00
  • c56f297f95 refactor: remove SeedModule from app imports (manual seed only) wangziqi 2026-07-09 16:32:01 +08:00
  • b81a06e77c refactor(classes): remove CampusScope dependency wangziqi 2026-07-09 16:32:01 +08:00
  • 5145c3e4b4 fix(layout): use controlled sidebar openKeys to preserve manual expand/collapse across navigation wangziqi 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 wangziqi 2026-07-09 16:31:53 +08:00
  • c928ee0f65 feat(rbac): add user-ding-mapping CRUD endpoints wangziqi 2026-07-09 16:31:50 +08:00
  • 4f3b5112b0 feat: filter org-tree-with-users to deepest 2 levels wangziqi 2026-07-09 16:12:13 +08:00
  • 0509175a57 feat: add getDeptDepthMap BFS method for org tree depth tracking wangziqi 2026-07-09 16:08:53 +08:00
  • a6891b32d7 docs: implementation plan for org tree deepest levels filter wangziqi 2026-07-09 16:07:26 +08:00
  • 3ee1ebaa1e docs: org tree deepest levels only design spec wangziqi 2026-07-09 16:06:09 +08:00
  • 7e4f06058c fix(admin): match flat API response shape, no nested data envelope wangziqi 2026-07-09 15:52:40 +08:00
  • 64c8964ea4 fix(server): handle existing User from syncAll in importDingTalkUsers to avoid UNIQUE constraint error wangziqi 2026-07-09 15:51:04 +08:00
  • 2da2e68318 fix(admin): refactor inline map arrow to avoid oxc TSX parser confusion wangziqi 2026-07-09 15:46:24 +08:00
  • d2d0ca31ad fix(admin): use type pattern consistent with rest of codebase (oxc compat) wangziqi 2026-07-09 15:43:46 +08:00
  • 867e1aab1f fix(admin): avoid TSX generic syntax to fix oxc parser in Vite 8 wangziqi 2026-07-09 15:41:30 +08:00
  • 8bfb8bf7ae fix(admin): fix syntax error — missing closing parens in map after console.log removal wangziqi 2026-07-09 15:39:03 +08:00
  • 4d4db7626c chore: remove dead CampusScope references from attendance spec test wangziqi 2026-07-09 15:35:59 +08:00
  • 3240c7cfdd fix(server): restore @InjectRepository(UserDingMapping) accidentally removed with scope wangziqi 2026-07-09 15:31:35 +08:00
  • 7f355952fd fix(server): remove CampusScope from AttendanceService wangziqi 2026-07-09 15:29:50 +08:00
  • 897ffbe018 fix(server): restore staff exclusion in StudentsService.findAll default filter wangziqi 2026-07-09 15:28:18 +08:00
  • 9b36284f1a fix(server): remove CampusScope from StudentsService wangziqi 2026-07-09 15:25:54 +08:00
  • b624c52b30 fix(admin): restore nested ImportUsersResponse and remove debug console.log wangziqi 2026-07-09 15:24:54 +08:00
  • f7df3bdcf1 fix(admin): only show class-mark button on leaf departments with users wangziqi 2026-07-09 15:18:23 +08:00
  • 3ea7f9a2b7 docs: add DingTalk import fix implementation plan wangziqi 2026-07-09 15:17:25 +08:00
  • a568d9a871 docs: add DingTalk import fix design spec wangziqi 2026-07-09 15:15:56 +08:00
  • 7666baceff fix: add missing Bed and Locker entities to TypeORM registration wangziqi 2026-07-09 14:00:58 +08:00
  • db3e4aae84 fix(admin): display classCount and warnings in import response wangziqi 2026-07-09 13:01:07 +08:00
  • eeacab6130 test(sync): add class-marking import test cases (7 new, 5 fixed) wangziqi 2026-07-09 12:53:03 +08:00
  • 7f42c12392 feat(admin): add class marking modal in DingTalk org import drawer wangziqi 2026-07-09 12:41:29 +08:00
  • 0f3fec6b44 fix(sync): remove unused classStudentRepo injection, use transactional manager for class lookup wangziqi 2026-07-09 12:37:49 +08:00
  • 00de6cbd3a feat(sync): importDingTalkUsers supports class creation and teacher/student linking wangziqi 2026-07-09 12:33:10 +08:00
  • 5b92521426 docs: remove 班主任 distinction — all teachers use roleType='teacher' wangziqi 2026-07-09 12:24:35 +08:00
  • 166066f49f feat(sync): add ImportClassItemDto and expose deptIds in org-tree-with-users wangziqi 2026-07-09 12:21:39 +08:00
  • e90f73cb60 fix: broken Form.Item tag in check-in room select wangziqi 2026-07-09 12:19:04 +08:00
  • 74e6171e17 feat: add bed occupancy stats to RoomVisual cards and API wangziqi 2026-07-09 12:18:30 +08:00
  • 0d82c96ec6 docs: dingtalk import class marking design spec wangziqi 2026-07-09 12:18:21 +08:00
  • ba94a0e091 feat: add bed/locker selection to check-in form and occupancy table wangziqi 2026-07-09 12:16:51 +08:00
  • f959d2adf2 docs: add task-7 fix report wangziqi 2026-07-09 12:13:21 +08:00
  • 5700fa556b fix: restore RoomPage component wrapper and fix action column wangziqi 2026-07-09 12:13:19 +08:00
  • e572f92017 feat: upgrade Room detail to Drawer with Bed/Locker tabs wangziqi 2026-07-09 12:08:06 +08:00
  • 454a0d24c6 fix: release beds/lockers in batchCheckOut wangziqi 2026-07-09 12:05:36 +08:00
  • 54d8d0545e feat: integrate Bed/Locker into Occupancy check-in/out flow wangziqi 2026-07-09 12:02:43 +08:00
  • 3bed3409fe feat: add Bed and Locker REST routes to RoomsController wangziqi 2026-07-09 12:00:04 +08:00
  • 79d6e97bd8 fix: restore CampusScope injection, fix batchCreate bed/locker numbering wangziqi 2026-07-09 11:58:42 +08:00
  • 12fa2e974f feat: add Bed and Locker CRUD to RoomsService wangziqi 2026-07-09 11:55:37 +08:00
  • 87a3f0c554 chore: remove unused IsArray/ArrayMinSize imports from Bed DTO wangziqi 2026-07-09 11:54:24 +08:00
  • 9b7dee17f3 feat: add Bed and Locker DTOs wangziqi 2026-07-09 11:53:38 +08:00
  • a6fbb71251 feat: add bed_id and locker_id to Occupancy entity wangziqi 2026-07-09 11:52:34 +08:00
  • 513b6c11e4 fix: add @Unique constraints for Bed and Locker entities wangziqi 2026-07-09 11:51:29 +08:00
  • ad6c303369 feat: add Bed and Locker entities with Room FK wangziqi 2026-07-09 11:49:59 +08:00
  • 36a1aca6f0 docs: bed/locker management implementation plan (10 tasks) wangziqi 2026-07-09 11:48:29 +08:00
  • 543fddbc1e docs: bed & locker management design spec wangziqi 2026-07-09 11:44:24 +08:00
  • 115ee5206e Merge branch 'feat/dingtalk-sync-role-selection' wangziqi 2026-07-09 11:33:07 +08:00
  • fb8c897b4f fix: disable import button when roles not loaded (null defaultTeacherRoleId guard) wangziqi 2026-07-09 11:32:01 +08:00
  • 0cfdab95ee fix: add DTO validation, transactional imports, role-not-found handling, null role guard wangziqi 2026-07-09 11:28:11 +08:00
  • 33e6cb445c fix: parallel fetches, error handling, extract UserTreeNode component wangziqi 2026-07-09 11:16:47 +08:00
  • a42039d1df feat: add sync users Tab with Drawer tree to IntegrationConfig wangziqi 2026-07-09 11:13:05 +08:00
  • ff6cb03419 feat: add org-tree-with-users and import-users endpoints wangziqi 2026-07-09 11:08:33 +08:00
  • 8ba3327074 fix: handle duplicate usernames and failed role lookups in importDingTalkUsers wangziqi 2026-07-09 11:07:25 +08:00
  • 3790b2dabb refactor: remove sync and mark-staff buttons from Users page wangziqi 2026-07-09 11:06:58 +08:00
  • cd7f9c90b3 feat: add importDingTalkUsers and org-tree-with-users to SyncService wangziqi 2026-07-09 11:04:24 +08:00
  • 3835110204 feat: add importDingTalkUsers and org-tree-with-users to SyncService wangziqi 2026-07-09 11:04:24 +08:00
  • 2b60a10927 feat: add fetchOrgTreeWithUsers to DingTalkService wangziqi 2026-07-09 10:58:26 +08:00
  • 5abc27c1f0 chore: add .worktrees to gitignore wangziqi 2026-07-09 10:57:19 +08:00
  • 3578ba92ed docs: implementation plan for dingtalk sync role selection wangziqi 2026-07-09 10:56:24 +08:00
  • 423472daf2 docs: dingtalk sync role selection design wangziqi 2026-07-09 10:52:09 +08:00
  • 40aad81087 fix: use rimraf for cross-platform clean command wangziqi 2026-07-09 10:38:17 +08:00
  • 129b011958 feat: add clean script to remove build artifacts, db, and node_modules wangziqi 2026-07-09 10:37:53 +08:00
  • 5ddd6d305a feat: ordered dev startup with concurrently + wait-on (server → admin) wangziqi 2026-07-09 10:26:49 +08:00
  • 731f74e51a refactor: remove scheduled cron sync, manual trigger only wangziqi 2026-07-09 10:24:12 +08:00
  • e8dec3b171 feat: add DingTalk integration config page wangziqi 2026-07-09 10:14:51 +08:00