중학교 성적 계산 로직을 담당하는 Go 기반 서비스입니다. GSM(광주소프트웨어마이스터고) 입학 전형의 내신 성적 계산을 위한 엔진입니다
이 서비스는 AWS Lambda 함수로 배포되어 REST API 형태로 동작합니다.
HTTP Method: POST
Content-Type: application/json
"CANDIDATE": 재학생 (1-3학년 성적 모두 필요)"GRADUATE": 졸업생 (1-3학년 성적 모두 필요)"GED": 검정고시 (평균 점수만 필요)
achievement1_1: 1학년 1학기 성적 배열 (5단계: 1~5)achievement1_2: 1학년 2학기 성적 배열achievement2_1: 2학년 1학기 성적 배열achievement2_2: 2학년 2학기 성적 배열achievement3_1: 3학년 1학기 성적 배열achievement3_2: 3학년 2학기 성적 배열
artsPhysicalAchievement: 예체능 성적 배열 (전 학기 통합)
absentDays: 학기별 결석일수 배열attendanceDays: 학기별 출석일수 배열volunteerTime: 연도별 봉사시간 배열
liberalSystem: 자유학기제 적용 여부 ("FIRST" 또는 "SECOND")freeSemester: 자유학기 대상 학기 ("1-1", "1-2", "2-1", "2-2")
gedAvgScore: 검정고시 평균 점수 (숫자)
{
"graduationType": "CANDIDATE",
"achievement1_1": [3, 4, 3, 5, 4],
"achievement1_2": [4, 4, 3, 5, 4],
"achievement2_1": [4, 5, 4, 5, 5],
"achievement2_2": [4, 5, 4, 5, 5],
"achievement3_1": [5, 5, 4, 5, 5],
"achievement3_2": [5, 5, 5, 5, 5],
"artsPhysicalAchievement": [4, 4, 5, 3, 4, 4],
"absentDays": [2, 1, 0],
"attendanceDays": [190, 195, 200, 185, 198, 192, 200, 100, 100],
"volunteerTime": [25, 30, 35],
"liberalSystem": "자유학기제",
"freeSemester": "1-2"
}{
"graduationType": "GED",
"gedAvgScore": 92.5
}{
"generalSubjectsScore": 165.75,
"generalSubjectsScoreDetail": {
"score1_2": 32.4,
"score2_1": 36.0,
"score2_2": 36.0,
"score3_1": 33.75,
"score3_2": 27.6
},
"artsPhysicalSubjectsScore": 48.0,
"totalSubjectsScore": 213.75,
"attendanceScore": 28.5,
"volunteerScore": 30.0,
"totalScore": 272.25
}{
"error": "Validation Error",
"message": "상세 오류 메시지",
"code": "ERROR_CODE"
}- 교과 성적: 240점
- 일반 교과: 180점 (학기별 최대 36점 × 5학기)
- 예체능 교과: 60점
- 비교과 성적: 60점
- 출결 점수: 30점
- 봉사 점수: 30점
- 교과 점수:
(평균점수 - 60) / 40 × 240 - 비교과 점수: 출결 30점(만점) + 봉사 30점(만점)
EMPTY_BODY: 요청 본문이 비어있음INVALID_JSON: JSON 형식 오류VALIDATION_ERROR: 데이터 검증 실패MARSHAL_ERROR: 응답 생성 실패
- 일반 교과: 학기별 성적 환산 (최대 180점)
- 예체능 교과: 예술/체육 성적 환산 (60점)
- 출결 점수: 결석/지각/조퇴 기반 계산 (30점)
- 봉사 점수: 연간 봉사시간 기반 계산 (30점)
- 평균 점수 기반 교과/비교과 점수 환산
- 출결 점수 만점(30점) 자동 부여
chmod +x build.sh
./build.sh#Git Bash
bash build.sh
#PowerShell
powershell -ExecutionPolicy Bypass -File build.ps1# 의존성 정리
go mod tidy
# Lambda용 바이너리 빌드 (PowerShell)
$env:CGO_ENABLED=0; $env:GOOS="linux"; $env:GOARCH="amd64"; go build -o bootstrap main.go
# ZIP 패키지 생성 (PowerShell - Compress-Archive 사용)
Compress-Archive -Path bootstrap -DestinationPath function.zip -Force
# 또는 7-Zip 사용 (설치된 경우)
7z a function.zip bootstrap성공적으로 빌드되면 다음 파일이 생성됩니다:
bootstrap: AWS Lambda 실행 파일function.zip: Lambda 배포용 ZIP 패키지