chore: 服务端模块装配与入口更新
This commit is contained in:
@@ -1,64 +1,12 @@
|
|||||||
import { Module } from '@nestjs/common';
|
import { Module } from '@nestjs/common';
|
||||||
import { APP_GUARD } from '@nestjs/core';
|
import { APP_GUARD } from '@nestjs/core';
|
||||||
|
import { LoggerModule } from 'nestjs-pino';
|
||||||
import { ConfigModule, ConfigService } from '@nestjs/config';
|
import { ConfigModule, ConfigService } from '@nestjs/config';
|
||||||
import { EventEmitterModule } from '@nestjs/event-emitter';
|
import { EventEmitterModule } from '@nestjs/event-emitter';
|
||||||
import { TypeOrmModule, type TypeOrmModuleOptions } from '@nestjs/typeorm';
|
import { TypeOrmModule, type TypeOrmModuleOptions } from '@nestjs/typeorm';
|
||||||
import { ThrottlerModule, ThrottlerGuard } from '@nestjs/throttler';
|
import { ThrottlerModule, ThrottlerGuard } from '@nestjs/throttler';
|
||||||
import { ScheduleModule } from '@nestjs/schedule';
|
import { ScheduleModule } from '@nestjs/schedule';
|
||||||
import {
|
import * as Entities from './entities';
|
||||||
Student,
|
|
||||||
Room,
|
|
||||||
Occupancy,
|
|
||||||
Bed,
|
|
||||||
Locker,
|
|
||||||
RoomExpense,
|
|
||||||
PersonalExpense,
|
|
||||||
Bill,
|
|
||||||
BillItem,
|
|
||||||
User,
|
|
||||||
OperationLog,
|
|
||||||
RoomInspection,
|
|
||||||
RoomInspectionDetail,
|
|
||||||
Deposit,
|
|
||||||
DepositInstallment,
|
|
||||||
Classroom,
|
|
||||||
Organization,
|
|
||||||
ClassroomRental,
|
|
||||||
Permission,
|
|
||||||
Role,
|
|
||||||
Class,
|
|
||||||
ClassStudent,
|
|
||||||
ClassTeacher,
|
|
||||||
ClassSchedule,
|
|
||||||
AttendanceRecord,
|
|
||||||
AttendanceSession,
|
|
||||||
AttendanceDevice,
|
|
||||||
AttendancePeriodConfig,
|
|
||||||
DingAttendanceRaw,
|
|
||||||
SyncLog,
|
|
||||||
SyncState,
|
|
||||||
Notification,
|
|
||||||
StudentProfile,
|
|
||||||
StudentEnrollment,
|
|
||||||
ExamScore,
|
|
||||||
Exam,
|
|
||||||
LearningRecord,
|
|
||||||
ExpenseType,
|
|
||||||
ResultArchive,
|
|
||||||
ArchiveAttachment,
|
|
||||||
StudentDingMapping,
|
|
||||||
JinshujuMatchRule,
|
|
||||||
AiConfig,
|
|
||||||
StudentWallet,
|
|
||||||
WalletTransaction,
|
|
||||||
FinancialOperation,
|
|
||||||
AiConversation,
|
|
||||||
AiMessage,
|
|
||||||
AiToolRun,
|
|
||||||
AiAttachment,
|
|
||||||
AiForm,
|
|
||||||
AiReview,
|
|
||||||
} from './entities';
|
|
||||||
import { AuthModule } from './auth/auth.module';
|
import { AuthModule } from './auth/auth.module';
|
||||||
import { InitialSchema1784520727860 } from './migrations/1784520727860-InitialSchema';
|
import { InitialSchema1784520727860 } from './migrations/1784520727860-InitialSchema';
|
||||||
import { AddExamManagement1784600000000 } from './migrations/1784600000000-AddExamManagement';
|
import { AddExamManagement1784600000000 } from './migrations/1784600000000-AddExamManagement';
|
||||||
@@ -68,6 +16,8 @@ import { AddAiChat1784780000000 } from './migrations/1784780000000-AddAiChat';
|
|||||||
import { EnhanceAiChatForAntDesignX1784860000000 } from './migrations/1784860000000-EnhanceAiChatForAntDesignX';
|
import { EnhanceAiChatForAntDesignX1784860000000 } from './migrations/1784860000000-EnhanceAiChatForAntDesignX';
|
||||||
import { AddA2UiForms1784870000000 } from './migrations/1784870000000-AddA2UiForms';
|
import { AddA2UiForms1784870000000 } from './migrations/1784870000000-AddA2UiForms';
|
||||||
import { AddA2UiReviews1784880000000 } from './migrations/1784880000000-AddA2UiReviews';
|
import { AddA2UiReviews1784880000000 } from './migrations/1784880000000-AddA2UiReviews';
|
||||||
|
import { AddImportRuns1784910000000 } from './migrations/1784910000000-AddImportRuns';
|
||||||
|
import { DropAiMessageFeedback1784920000000 } from './migrations/1784920000000-DropAiMessageFeedback';
|
||||||
const allMigrations = [
|
const allMigrations = [
|
||||||
InitialSchema1784520727860,
|
InitialSchema1784520727860,
|
||||||
AddExamManagement1784600000000,
|
AddExamManagement1784600000000,
|
||||||
@@ -77,6 +27,8 @@ const allMigrations = [
|
|||||||
EnhanceAiChatForAntDesignX1784860000000,
|
EnhanceAiChatForAntDesignX1784860000000,
|
||||||
AddA2UiForms1784870000000,
|
AddA2UiForms1784870000000,
|
||||||
AddA2UiReviews1784880000000,
|
AddA2UiReviews1784880000000,
|
||||||
|
AddImportRuns1784910000000,
|
||||||
|
DropAiMessageFeedback1784920000000,
|
||||||
];
|
];
|
||||||
import { AuthorizationModule } from './authorization';
|
import { AuthorizationModule } from './authorization';
|
||||||
import { RbacModule } from './rbac/rbac.module';
|
import { RbacModule } from './rbac/rbac.module';
|
||||||
@@ -109,6 +61,7 @@ import { WalletsModule } from './wallets/wallets.module';
|
|||||||
import { FinancialOperationsModule } from './financial-operations/financial-operations.module';
|
import { FinancialOperationsModule } from './financial-operations/financial-operations.module';
|
||||||
import { ExamsModule } from './exams/exams.module';
|
import { ExamsModule } from './exams/exams.module';
|
||||||
import { AiChatModule } from './ai-chat';
|
import { AiChatModule } from './ai-chat';
|
||||||
|
import { ImportsModule } from './imports/imports.module';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
IntegrationConfig,
|
IntegrationConfig,
|
||||||
@@ -118,6 +71,12 @@ import { IntegrationConfigModule } from './integration/config/config.module';
|
|||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
imports: [
|
imports: [
|
||||||
|
LoggerModule.forRoot({
|
||||||
|
pinoHttp: {
|
||||||
|
level: process.env.LOG_LEVEL ?? 'info',
|
||||||
|
autoLogging: process.env.NODE_ENV === 'production',
|
||||||
|
},
|
||||||
|
}),
|
||||||
AuthorizationModule,
|
AuthorizationModule,
|
||||||
ConfigModule.forRoot({ isGlobal: true }),
|
ConfigModule.forRoot({ isGlobal: true }),
|
||||||
ThrottlerModule.forRoot([
|
ThrottlerModule.forRoot([
|
||||||
@@ -134,61 +93,63 @@ import { IntegrationConfigModule } from './integration/config/config.module';
|
|||||||
useFactory: (config: ConfigService): TypeOrmModuleOptions => {
|
useFactory: (config: ConfigService): TypeOrmModuleOptions => {
|
||||||
const dbType = config.get('DB_TYPE', 'sqlite');
|
const dbType = config.get('DB_TYPE', 'sqlite');
|
||||||
const allEntities = [
|
const allEntities = [
|
||||||
Student,
|
Entities.Student,
|
||||||
Room,
|
Entities.Room,
|
||||||
Occupancy,
|
Entities.Occupancy,
|
||||||
Bed,
|
Entities.Bed,
|
||||||
Locker,
|
Entities.Locker,
|
||||||
RoomExpense,
|
Entities.RoomExpense,
|
||||||
PersonalExpense,
|
Entities.PersonalExpense,
|
||||||
Bill,
|
Entities.Bill,
|
||||||
BillItem,
|
Entities.BillItem,
|
||||||
User,
|
Entities.User,
|
||||||
OperationLog,
|
Entities.OperationLog,
|
||||||
RoomInspection,
|
Entities.RoomInspection,
|
||||||
RoomInspectionDetail,
|
Entities.RoomInspectionDetail,
|
||||||
Deposit,
|
Entities.Deposit,
|
||||||
DepositInstallment,
|
Entities.DepositInstallment,
|
||||||
Classroom,
|
Entities.Classroom,
|
||||||
Organization,
|
Entities.Organization,
|
||||||
ClassroomRental,
|
Entities.ClassroomRental,
|
||||||
Class,
|
Entities.Class,
|
||||||
ClassStudent,
|
Entities.ClassStudent,
|
||||||
ClassTeacher,
|
Entities.ClassTeacher,
|
||||||
Permission,
|
Entities.Permission,
|
||||||
Role,
|
Entities.Role,
|
||||||
ClassSchedule,
|
Entities.ClassSchedule,
|
||||||
AttendanceRecord,
|
Entities.AttendanceRecord,
|
||||||
AttendanceSession,
|
Entities.AttendanceSession,
|
||||||
AttendanceDevice,
|
Entities.AttendanceDevice,
|
||||||
AttendancePeriodConfig,
|
Entities.AttendancePeriodConfig,
|
||||||
DingAttendanceRaw,
|
Entities.DingAttendanceRaw,
|
||||||
Notification,
|
Entities.Notification,
|
||||||
StudentProfile,
|
Entities.StudentProfile,
|
||||||
StudentEnrollment,
|
Entities.StudentEnrollment,
|
||||||
ExamScore,
|
Entities.ExamScore,
|
||||||
Exam,
|
Entities.Exam,
|
||||||
LearningRecord,
|
Entities.LearningRecord,
|
||||||
StudentDingMapping,
|
Entities.StudentDingMapping,
|
||||||
JinshujuMatchRule,
|
Entities.JinshujuMatchRule,
|
||||||
ExpenseType,
|
Entities.ExpenseType,
|
||||||
ArchiveAttachment,
|
Entities.ArchiveAttachment,
|
||||||
ResultArchive,
|
Entities.ResultArchive,
|
||||||
SyncLog,
|
Entities.SyncLog,
|
||||||
SyncState,
|
Entities.SyncState,
|
||||||
StudentDingMapping,
|
|
||||||
IntegrationConfig,
|
IntegrationConfig,
|
||||||
IntegrationConfigDetail,
|
IntegrationConfigDetail,
|
||||||
AiConfig,
|
Entities.AiConfig,
|
||||||
StudentWallet,
|
Entities.StudentWallet,
|
||||||
WalletTransaction,
|
Entities.WalletTransaction,
|
||||||
FinancialOperation,
|
Entities.FinancialOperation,
|
||||||
AiConversation,
|
Entities.AiConversation,
|
||||||
AiMessage,
|
Entities.AiMessage,
|
||||||
AiToolRun,
|
Entities.AiToolRun,
|
||||||
AiAttachment,
|
Entities.AiAttachment,
|
||||||
AiForm,
|
Entities.AiForm,
|
||||||
AiReview,
|
Entities.AiReview,
|
||||||
|
Entities.ImportRun,
|
||||||
|
Entities.ImportStep,
|
||||||
|
Entities.ImportRow,
|
||||||
];
|
];
|
||||||
if (dbType === 'mysql') {
|
if (dbType === 'mysql') {
|
||||||
return {
|
return {
|
||||||
@@ -242,6 +203,7 @@ import { IntegrationConfigModule } from './integration/config/config.module';
|
|||||||
ExpenseTypesModule,
|
ExpenseTypesModule,
|
||||||
AiConfigModule,
|
AiConfigModule,
|
||||||
AiChatModule,
|
AiChatModule,
|
||||||
|
ImportsModule,
|
||||||
],
|
],
|
||||||
providers: [
|
providers: [
|
||||||
{ provide: APP_GUARD, useClass: ThrottlerGuard },
|
{ provide: APP_GUARD, useClass: ThrottlerGuard },
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
import { NestFactory } from '@nestjs/core';
|
import { NestFactory } from '@nestjs/core';
|
||||||
|
import helmet from 'helmet';
|
||||||
|
import compression from 'compression';
|
||||||
import { AppModule } from './app.module';
|
import { AppModule } from './app.module';
|
||||||
import { runMigrationsOnStartup } from './migration-runner';
|
import { runMigrationsOnStartup } from './migration-runner';
|
||||||
|
|
||||||
@@ -8,7 +10,9 @@ async function bootstrap() {
|
|||||||
const app = await NestFactory.create(AppModule);
|
const app = await NestFactory.create(AppModule);
|
||||||
app.setGlobalPrefix('api');
|
app.setGlobalPrefix('api');
|
||||||
app.enableCors();
|
app.enableCors();
|
||||||
|
app.use(helmet());
|
||||||
|
app.use(compression());
|
||||||
|
|
||||||
await app.listen(process.env.PORT ?? 3000);
|
await app.listen(process.env.PORT ?? 3000);
|
||||||
console.log(`Server running on http://localhost:${process.env.PORT ?? 3000}`);
|
|
||||||
}
|
}
|
||||||
bootstrap();
|
bootstrap();
|
||||||
|
|||||||
@@ -8,6 +8,8 @@ import { EnhanceAiChatForAntDesignX1784860000000 } from './migrations/1784860000
|
|||||||
import { AddA2UiForms1784870000000 } from './migrations/1784870000000-AddA2UiForms';
|
import { AddA2UiForms1784870000000 } from './migrations/1784870000000-AddA2UiForms';
|
||||||
import { AddA2UiReviews1784880000000 } from './migrations/1784880000000-AddA2UiReviews';
|
import { AddA2UiReviews1784880000000 } from './migrations/1784880000000-AddA2UiReviews';
|
||||||
import { EnlargeAiReviewSections1784900000000 } from './migrations/1784900000000-EnlargeAiReviewSections';
|
import { EnlargeAiReviewSections1784900000000 } from './migrations/1784900000000-EnlargeAiReviewSections';
|
||||||
|
import { AddImportRuns1784910000000 } from './migrations/1784910000000-AddImportRuns';
|
||||||
|
import { DropAiMessageFeedback1784920000000 } from './migrations/1784920000000-DropAiMessageFeedback';
|
||||||
import { config } from 'dotenv';
|
import { config } from 'dotenv';
|
||||||
|
|
||||||
config();
|
config();
|
||||||
@@ -36,6 +38,8 @@ export async function runMigrationsOnStartup(): Promise<void> {
|
|||||||
AddA2UiForms1784870000000,
|
AddA2UiForms1784870000000,
|
||||||
AddA2UiReviews1784880000000,
|
AddA2UiReviews1784880000000,
|
||||||
EnlargeAiReviewSections1784900000000,
|
EnlargeAiReviewSections1784900000000,
|
||||||
|
AddImportRuns1784910000000,
|
||||||
|
DropAiMessageFeedback1784920000000,
|
||||||
],
|
],
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user