feat: Phase 1-3 全部完成 — 沙盒增强、学情分析、学习路径

This commit is contained in:
yuzhiran-dev
2026-05-18 09:48:51 +08:00
commit 11bb86854c
277 changed files with 37755 additions and 0 deletions
@@ -0,0 +1,19 @@
import { Controller, Get, Param, Query } from '@nestjs/common';
import { ApiTags } from '@nestjs/swagger';
import { ModelsService } from './models.service';
@ApiTags('AI 模型')
@Controller('models')
export class ModelsController {
constructor(private modelsService: ModelsService) {}
@Get()
async findAll(@Query('featured') featured?: string) {
return this.modelsService.findAll({ featured: featured === 'true' });
}
@Get(':id')
async findById(@Param('id') id: string) {
return this.modelsService.findById(parseInt(id, 10));
}
}
@@ -0,0 +1,9 @@
import { Module } from '@nestjs/common';
import { ModelsController } from './models.controller';
import { ModelsService } from './models.service';
@Module({
controllers: [ModelsController],
providers: [ModelsService],
})
export class ModelsModule {}
@@ -0,0 +1,21 @@
import { Injectable } from '@nestjs/common';
import { PrismaService } from '../../prisma/prisma.service';
@Injectable()
export class ModelsService {
constructor(private prisma: PrismaService) {}
async findAll(params: { featured?: boolean }) {
const where: any = { status: 'ACTIVE' };
if (params.featured) where.isFeatured = true;
return this.prisma.aiModel.findMany({
where,
orderBy: { sortOrder: 'asc' },
});
}
async findById(id: number) {
return this.prisma.aiModel.findUnique({ where: { id } });
}
}