feat(teacher-bff): 添加考试作业成绩聚合端点

env.ts 新增 CoreEduServiceUrl
teacher.service 新增 listExamsByClass/listHomeworkByClass/listGradesByExam 三个聚合方法
teacher.controller 暴露 3 个 GET 端点:
  /teacher/classes/:classId/exams
  /teacher/classes/:classId/homework
  /teacher/exams/:examId/grades

验证: 3 端点全部 200 返回 core-edu 数据
This commit is contained in:
SpecialX
2026-07-09 08:05:24 +08:00
parent beb204c00f
commit 6215f4e21f
3 changed files with 80 additions and 10 deletions

View File

@@ -1,11 +1,12 @@
import { z } from 'zod';
import { z } from "zod";
const envSchema = z.object({
PORT: z.string().default('3003'),
IamServiceUrl: z.string().url().default('http://localhost:3002'),
ClassesServiceUrl: z.string().url().default('http://localhost:3001'),
LOG_LEVEL: z.string().default('info'),
NODE_ENV: z.string().default('development'),
PORT: z.string().default("3003"),
IamServiceUrl: z.string().url().default("http://localhost:3002"),
ClassesServiceUrl: z.string().url().default("http://localhost:3001"),
CoreEduServiceUrl: z.string().url().default("http://localhost:3004"),
LOG_LEVEL: z.string().default("info"),
NODE_ENV: z.string().default("development"),
});
export type Env = z.infer<typeof envSchema>;
@@ -13,11 +14,14 @@ export type Env = z.infer<typeof envSchema>;
export function loadEnv(): Env {
const result = envSchema.safeParse({
...process.env,
IamServiceUrl: process.env.IAM_SERVICE_URL || 'http://localhost:3002',
ClassesServiceUrl: process.env.CLASSES_SERVICE_URL || 'http://localhost:3001',
IamServiceUrl: process.env.IAM_SERVICE_URL || "http://localhost:3002",
ClassesServiceUrl:
process.env.CLASSES_SERVICE_URL || "http://localhost:3001",
CoreEduServiceUrl:
process.env.CORE_EDU_SERVICE_URL || "http://localhost:3004",
});
if (!result.success) {
throw new Error('Invalid env: ' + JSON.stringify(result.error.flatten()));
throw new Error("Invalid env: " + JSON.stringify(result.error.flatten()));
}
return result.data;
}