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
This commit is contained in:
@@ -36,8 +36,10 @@ import {
|
||||
StudentEnrollment,
|
||||
ExamScore,
|
||||
LearningRecord,
|
||||
ExpenseType,
|
||||
ResultArchive,
|
||||
ArchiveAttachment,
|
||||
UserDingMapping,
|
||||
} from './entities';
|
||||
import { AuthModule } from './auth/auth.module';
|
||||
import { RbacModule } from './rbac/rbac.module';
|
||||
@@ -62,6 +64,12 @@ import { NotificationsModule } from './notifications/notifications.module';
|
||||
import { DepartmentsModule } from './departments/departments.module';
|
||||
import { CommonModule } from './common/common.module';
|
||||
import { ArchiveModule } from './archive/archive.module';
|
||||
import { SeedModule } from './seed/seed.module';
|
||||
import { ExpenseTypesModule } from './expense-types/expense-types.module';
|
||||
|
||||
import { IntegrationConfig, IntegrationConfigDetail } from './integration/entities/integration-config.entity';
|
||||
import { IntegrationConfigModule } from './integration/config/config.module';
|
||||
|
||||
import { CampusScopeMiddleware } from './common/campus-scope.middleware';
|
||||
@Module({
|
||||
imports: [
|
||||
@@ -108,8 +116,14 @@ import { CampusScopeMiddleware } from './common/campus-scope.middleware';
|
||||
StudentEnrollment,
|
||||
ExamScore,
|
||||
LearningRecord,
|
||||
ResultArchive,
|
||||
ExpenseType,
|
||||
ArchiveAttachment,
|
||||
ResultArchive,
|
||||
SyncLog,
|
||||
SyncState,
|
||||
UserDingMapping,
|
||||
IntegrationConfig,
|
||||
IntegrationConfigDetail,
|
||||
];
|
||||
if (dbType === 'mysql') {
|
||||
return {
|
||||
@@ -153,6 +167,9 @@ import { CampusScopeMiddleware } from './common/campus-scope.middleware';
|
||||
DepartmentsModule,
|
||||
CommonModule,
|
||||
ArchiveModule,
|
||||
SeedModule,
|
||||
IntegrationConfigModule,
|
||||
ExpenseTypesModule,
|
||||
],
|
||||
providers: [
|
||||
{ provide: APP_GUARD, useClass: ThrottlerGuard },
|
||||
|
||||
Reference in New Issue
Block a user