Commit Graph

42 Commits

Author SHA1 Message Date
446c6bcc91 fix: harden permission-gated UI — minimum-org endpoint, modal/Popconfirm fail-closed on revocation
Some checks failed
CI / check (pull_request) Failing after 3m46s
2026-07-23 14:28:58 +08:00
a7a7af1667 fix: close permission review gaps
fix: harden permission-gated UI — minimum-org endpoint, modal/Popconfirm fail-closed on revocation
2026-07-23 14:28:58 +08:00
c98d37307e fix: align permission-gated UI actions 2026-07-23 12:34:37 +08:00
90cc321221 fix: UI improvements and DingTalk attendance refresh for completed sessions
All checks were successful
CI / check (pull_request) Successful in 1m33s
- DatePicker editors open immediately on double-click
- Student archive drawer hides empty studentNo parentheses
- Student add/edit form uses 2-column grid layout
- Table horizontal scrollbars show only on hover/focus
- Remove fake 近7日趋势 stats from attendance student detail
- Allow DingTalk refresh to update completed attendance sessions
  (late-arriving punches can now change absent → present)
- Switch dev command from concurrently to turbo run dev
- Remove concurrently/wait-on dependencies
2026-07-22 17:50:59 +08:00
393ee62168 feat: add Jinshuju student sync
All checks were successful
CI / check (pull_request) Successful in 2m14s
2026-07-22 11:41:50 +08:00
a585fd42d5 feat: 支持表格单元格快捷编辑
Some checks failed
CI 检查 / lint (pull_request) Has been cancelled
CI 检查 / typecheck (pull_request) Has been cancelled
CI 检查 / test (pull_request) Has been cancelled
2026-07-21 14:17:08 +08:00
375c7ec60b feat: refine admin forms, attendance and finance workflows
Squash merge PR #23.

Included changes:
- complete occupancy check-in required fields/default payload
- improve responsive admin management pages
- fix attendance edge cases and attendance period config
- refine wallet/finance-related workflow handling

Checks:
- npm run typecheck -w apps/admin
- npm run typecheck -w apps/server
2026-07-18 12:54:10 +00:00
f7328d670d fix: 归档删除改为软删除 2026-07-17 14:13:17 +08:00
d582d641c0 feat: improve admin responsive pages and teacher candidates 2026-07-15 13:56:58 +08:00
8bd445df5a fix student import and profile labels 2026-07-15 10:52:43 +08:00
xyx
acb11b87a3 fix: enhance pagination settings across multiple pages with default size and options 2026-07-13 16:49:21 +08:00
xyx
6d42241918 fix: enhance emergency contact phone display with masking and view option 2026-07-13 14:29:01 +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
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
c1d065a5e6 fix(students): remove staff role from status map 2026-07-09 16:32:02 +08:00
903f090293 feat: add staff status filter in student management 2026-07-09 10:07:51 +08:00
42d3f0e27f feat: DingTalk attendance import + integration config + expense types + UI polish
Server:
- Add DingTalk attendance import service with SSE progress streaming
- Add IntegrationConfig entity & module for multi-tenant DingTalk setup
- Add ExpenseType entity & ExpenseTypesModule
- Add SeedModule for DB initialization
- Add UserDingMapping entity for DingTalk user linkage
- Attendance service: import flow with dedup & student auto-mapping
- Rooms service: time-range overlap queries
- Sync controller/service: DingTalk integration wiring
- Permission guard: refactor to pure re-export
- Campus scope middleware: tenant-aware filtering

Admin UI:
- Attendance page: import UI with progress & result summary
- All pages: tableStyle/tablePagination standardization
- Login page: responsive styling
- Sensitive data: useViewSensitive hook for masked viewing
- Vite config: path aliases, build optimization
- Test infra: vitest config, test utilities

Docs: PRD DingTalk batch 1 & 2 design docs
2026-07-09 09:11:56 +08:00
24126ab3a9 fix: adjust Students table scroll.x to match total column width 2026-07-07 09:40:52 +08:00
85872d6564 refactor(admin): extract StudentProfileContent component and reuse in drawer 2026-07-06 17:22:09 +08:00
b8563fbde0 fix: use div wrapper for Drawer content 2026-07-06 17:01:17 +08:00
edb80b7fb2 fix: wrap Drawer content in fragment 2026-07-06 17:00:51 +08:00
b4fa3ab1fd feat: add learning records and attachments tabs to profile Drawer, plus PDF report button 2026-07-06 17:00:13 +08:00
09eb9ca9e0 fix: archive button opens Drawer instead of navigating to separate page 2026-07-06 16:58:54 +08:00
be75437861 fix: comprehensive UI fix — all table columns have explicit widths, no ellipsis on data, consistent scroll.x 2026-07-06 16:56:35 +08:00
cb39a183cc fix: restore form declaration, fix openDrawer state 2026-07-06 16:47:20 +08:00
0f9bcbdaca fix: import Tabs/Descriptions, remove duplicate state 2026-07-06 16:46:03 +08:00
aac01594da feat: student profile as Drawer from student list 2026-07-06 16:45:21 +08:00
8f3a20140d feat: click student name to navigate to profile page 2026-07-06 16:43:51 +08:00
4024d7c174 fix: remove ellipsis from student name column, give it 120px width 2026-07-06 16:42:36 +08:00
43ee4dc5d5 fix(admin): replace scroll.x='max-content' with calculated fixed widths for all tables 2026-07-06 16:39:53 +08:00
f4eac7b804 fix: add scroll.x='max-content' to 15 tables, widen narrow columns to prevent header wrapping 2026-07-06 16:10:33 +08:00
8bd59b8ac6 feat: complete student archive subsystem — 7 entities, PDF report, frontend profile page 2026-07-06 15:58:36 +08:00
ca909fae86 feat: add status+tenant filter to Students page, status filter to Rooms page 2026-07-06 14:33:30 +08:00
2c0ca583a3 feat(students): add multi-enrollment comparison view in student list expand row 2026-07-06 10:00:35 +08:00
6b0a21d266 fix: resolve all admin typecheck errors (typed api wrapper, unused imports, missing hooks, PermissionButton children) 2026-07-06 01:02:26 +08:00
b77e5a2f50 fix: remove PermissionButton wrappers from Upload components 2026-07-05 21:37:47 +08:00
940b587df9 fix: remove nested button patterns across all pages, remove Dashboard gantt 2026-07-05 21:35:03 +08:00
ef805fc823 fix: PermissionButton 包裹 Upload 时添加 type=text 消除外层按钮白底 2026-07-03 10:35:30 +08:00
2121282577 feat: 学生管理字段拆分(学号/身份证分列),表格和工具栏响应式适配 2026-07-03 10:10:04 +08:00
4f4cee157a chore: commit oxfmt formatting changes and verify artifacts 2026-07-02 15:55:09 +08:00
46a817503e feat(task1): restructure directories for turborepo monorepo
- Move backend/ to apps/server/ via git mv
- Move frontend/ to apps/admin/ via git mv
- Create packages/typescript-config/ with base, nestjs, and react-vite presets
2026-07-02 15:05:12 +08:00