import { Student } from '../entities/student.entity'; import { StudentProfile } from '../entities/student-profile.entity'; import { StudentEnrollment } from '../entities/student-enrollment.entity'; import { esc, sectionFrame, sectionHeader, coverFooter } from './archive-report.helpers'; import { buildEnrollmentSection } from './archive-report.enrollment'; export function buildCover( student: Student, profile: StudentProfile | null, enrollments: StudentEnrollment[], now: string, tocNames: string[], ): string { const types = enrollments.map((e) => e.classType).filter(Boolean).join(' / ') || '-'; const tocHtml = tocNames.length > 0 ? tocNames .map( (name, i) => `
${String(i + 1).padStart(2, '0')}${esc(name)}
`, ) .join('') : '
暂无章节
'; return sectionFrame(` ${sectionHeader('封面')}
学生档案报告
生成日期: ${esc(now)}
${esc(student.name)}
学号: ${esc(student.studentNo || '-')}
身份证号: ${esc(student.idNumber || '-')}
科类方向
${esc(profile?.subjectDirection || '-')}
目标院校
${esc(profile?.targetCollege || '-')}
目标专业
${esc(profile?.targetMajor || '-')}
报读班型
${esc(types)}
${tocHtml}
恭学教育
${coverFooter()} `, true); } export function buildBasicInfo( student: Student, profile: StudentProfile | null, enrollments: StudentEnrollment[], now: string, ): string { const infoCards = `
${esc(now)} · 系统生成
基础信息

个人信息

姓名${esc(student.name)}
性别${esc(student.gender || '-')}
电话${esc(student.phone || '-')}
民族${esc(student.ethnicity || '-')}
紧急联系人${esc(student.emergencyContact || '-')}
紧急电话${esc(student.emergencyPhone || '-')}
年级${esc(profile?.grade || '-')}
`; const enrollmentSection = buildEnrollmentSection(enrollments); return sectionFrame(` ${sectionHeader('基础信息')} ${infoCards} ${enrollmentSection} `); }