feat: implement QuestionBank CRUD with pagination and template query

- Add pagination support to findAll (page, limit query params)
- Add findByTemplateId method to service
- Add GET /by-template/:templateId endpoint to controller
- Service already includes CRUD for QuestionBank and QuestionBankItem
This commit is contained in:
Developer
2026-04-23 17:19:11 +08:00
commit 0a9588abb7
492 changed files with 112453 additions and 0 deletions
@@ -0,0 +1,94 @@
import {
IsString,
IsNotEmpty,
IsOptional,
IsArray,
IsInt,
Min,
Max,
IsObject,
IsBoolean,
} from 'class-validator';
export class CreateTemplateDto {
@IsString()
@IsNotEmpty()
name: string;
@IsString()
@IsOptional()
description?: string;
@IsArray()
@IsString({ each: true })
@IsOptional()
keywords?: string[];
@IsInt()
@Min(1)
@Max(20)
@IsOptional()
questionCount?: number = 5;
@IsObject()
@IsOptional()
difficultyDistribution?: {
standard: number;
advanced: number;
specialist: number;
};
@IsString()
@IsOptional()
style?: string = 'technical';
@IsString()
@IsOptional()
knowledgeBaseId?: string;
@IsString()
@IsOptional()
knowledgeGroupId?: string;
@IsBoolean()
@IsOptional()
isActive?: boolean = true;
@IsArray()
@IsString({ each: true })
@IsOptional()
linkedGroupIds?: string[];
@IsObject()
@IsOptional()
weightConfig?: {
prompt: number;
other: number;
};
@IsObject()
@IsOptional()
difficultyConfig?: {
standard: number;
advanced: number;
specialist: number;
};
@IsInt()
@Min(1)
@Max(20)
@IsOptional()
questionCountMin?: number;
@IsInt()
@Min(1)
@Max(20)
@IsOptional()
questionCountMax?: number;
@IsInt()
@Min(0)
@Max(100)
@IsOptional()
passingScore?: number;
}
@@ -0,0 +1,4 @@
import { PartialType } from '@nestjs/mapped-types';
import { CreateTemplateDto } from './create-template.dto';
export class UpdateTemplateDto extends PartialType(CreateTemplateDto) {}