Skip to content

Conversation

@Downy-newlearner
Copy link
Owner

@Downy-newlearner Downy-newlearner commented Dec 8, 2025

FE & BE
어플리케이션 / 웹 / 디바이스 중 어플리케이션을 일부 완성했다.
정상적으로 구동되고, AI 서버와도 잘 연결되었지만 실사용을 고려했을 때는 부족한게 매우 많다.

AI
2026 수능완성 영어 문제집 한 권, 290문제에 대해 99%의 채점 완수율을 보였다.
하지만, Detection(YOLO), Recognition(ResNet) 모두 Seen data에 대한 추론이었기에, 99%의 완수율은 큰 의미가 없다.
또한 객관식에 대한 채점이었으므로, AI에서의 할 일은 너무나 많이 남아있다.

오는 2026년에는 다음 작업을 우선으로 해야한다.

  • 다양한 문제집 데이터(2만장 이상, 60권 분량 이상)를 모두 학습시킨 Detection Model 만들기
  • 소형 학원을 타겟으로 하여 해당 학원들이 취급하는 문제집에 대해 Textbook Identification 만들기(DB 만들기)
  • OCR 등 Recognition Solution 제시하기

우리 팀원들 너무 고생했고, 좋은 연말 보냈으면 좋겠다.


Note

Adds a README summarizing answer-classifier experiments and a MNIST base-model training notebook with logs/plots.

  • Test/Classification:
    • Docs: Add answer_classifier_README.md detailing dataset, training setup, and CV results for EfficientNet-B0, ResNet18, and MobileNetV3 answer classifiers (answer_1/answer_2).
    • Notebook: Add mnist_base_model.ipynb implementing and logging MNIST training runs (EfficientNet-B0, ResNet18), including metrics, model saving, and plot outputs.

Written by Cursor Bugbot for commit 064a6c2. This will update automatically on new commits. Configure here.

Downy-newlearner and others added 30 commits August 31, 2025 23:41
- Groq LLM API를 활용한 수학 문제 답안 인식 스크립트 추가
- 이미지에서 학생 답안을 추출하는 llm_test.py 구현
- 다양한 답안 형식 지원 (단답형, 복수답, 꼬리문제)
- AI 서비스 의존성 라이브러리 requirements.txt 업데이트
- 향후 FastAPI, ML 모델 개발을 위한 기본 라이브러리 포함
- Flask 패턴을 기반으로 한 FastAPI 프로젝트 구조 구성
- recognition 모듈을 models/recognition/으로 이동하여 모듈화
- API 라우터 분리: recognition, grading, health 엔드포인트
- 비즈니스 로직을 services/ 레이어로 분리
- Pydantic 스키마를 통한 데이터 검증 모델 추가
- 이미지 처리 유틸리티 및 설정 관리 모듈 구현
- 상세한 README.md 문서 작성 (설치, 실행, API 가이드 포함)
- 확장 가능한 디렉토리 구조로 재편성
- Detection 폴더의 yolov8l_best_0904.pt 모델 사용하도록 경로 수정
- exp_images 폴더의 이미지를 입력으로 사용하도록 변경
- 출력 디렉토리를 Detection 폴더 내로 변경
- section_crop 사용 설명서 추가
- Flutter 프로젝트 초기 설정 및 구조 생성
- 로그인 페이지 및 관련 UI 컴포넌트 구현
- 아이디/비밀번호 찾기 플로우 페이지 구현
- 회원가입 페이지 구현
- 재사용 가능한 위젯 컴포넌트 라이브러리 구성
- 앱 레벨 라우팅 및 테마 시스템 구현
- Figma 디자인과 픽셀 퍼펙트 매칭
- 수능완성영어 인식 모델 (best_0927_수능완성영어.pt) 추가
- Flutter 프로젝트 빌드 아티팩트 및 설정 파일 추가
- Android, iOS, macOS 플랫폼 생성 파일 포함
- 플러그인 등록 및 네이티브 바인딩 파일 구성
- SingleChildScrollView + ConstrainedBox 패턴 적용으로 반응형 레이아웃 구현
- 고정 크기 Container(402x874) 제거하여 다양한 디바이스 크기 대응
- PageTitle 위젯의 고정 width/height 제거로 텍스트 잘림 방지
- 불필요한 StatusBar 위젯 및 키보드 플레이스홀더 제거
- SNS 버튼 구조 개선으로 버튼 찌그러짐 문제 해결
- error-collector.mdc 룰북 기반 코드 품질 개선
- YOLOv8s(2048) + YOLOv8n(1280) 라우팅 추론 스크립트 구현
- Small 클래스(page_number, problem_number, answer_1/2)는 YOLOv8s로 처리
- Large 클래스(korean/english_content, section, answer_option)는 YOLOv8n으로 처리
- exp_images 18개 이미지 추론 완료 (총 208개 객체 검출)
- 시각화 결과 및 JSON 예측 결과 저장 기능 추가
- section_crop.py 추론 파라미터 명시적 설정 (imgsz=2048, conf=0.25, iou=0.7, max_det=300)
- 로그인/회원가입 페이지 UI/UX 개선
- 이메일 인증 기능 구현 (signup_page.dart)
- 린터 오류 수정 및 코드 품질 개선
- Detection/Recognition AI 모델 파일 추가
- 비밀번호 찾기/재설정 페이지 추가
- 위젯 컴포넌트 개선 (input_field, labeled_input_field 등)
- CLS Loss 및 Augmentation 최적화 (2024-10-04)
- 자세한 내용은 README와 Slack 참고
- 회원가입 페이지: 실시간 유효성 검사, 이메일 인증, 비밀번호 정책 검사
- 아이디 찾기: 이메일 인증 및 결과 표시
- 비밀번호 찾기/재설정: JWT 토큰 기반 인증 및 비밀번호 변경
- 문제집 페이지: 클래스 순/문제집 순 토글 뷰, 진행률 표시
- 네비게이션: 하단 네비게이션 바 구현
- UI/UX 개선:
  - 레이아웃 일관성 향상 (타이틀 위치 통일, 상대적 크기 사용)
  - 에러 메시지 표시 개선 (Material Design 기본 스타일 제거)
  - 비밀번호 정책 및 일치 여부 실시간 표시
  - 휴대폰 번호 숫자 유효성 검사
  - 인증번호 입력 UI 개선
  - 서버 응답 처리 개선 (다양한 응답 형식 지원)
민유진 and others added 28 commits November 4, 2025 23:55
- Move Model_routing_1004 and Model_routing_1104 to legacy directory
- Add new Model_routing_1111 implementation
- Add routing inference results for 2022 실전편 test cases
- Update test results in Hierarchical_crop directory
- UserService 추가: 사용자 정보 2단계 캐싱(메모리+SharedPreferences) 및 /me API 연동
- User 모델 생성: 사용자 정보(userId, name, profileImageUrl) 표현
- ApiConfig 클래스 생성: 모든 API 엔드포인트 중앙 관리 (서버 IP 변경 시 1곳만 수정)
- AuthService 추가: JWT 토큰 관리 및 로그인 상태 확인
- AcademyService 추가: 학원 정보 조회 및 가입 요청 API
- LocationService 추가: 위치 기반 서비스
- 로그인 시 사용자 정보 자동 로드 및 캐싱
- 마이페이지에서 UserService를 통한 사용자 정보 표시
- 12개 인증/계정 관련 페이지 API 호출 리팩토링 (하드코딩 제거)
[완료된 작업]
- 토큰 갱신 로직 개선: 사전 갱신 방식 구현 (만료 5분 전 자동 갱신)
- JWT 토큰 만료 확인 기능 추가 (isTokenExpired, isTokenExpiringSoon)
- refresh-token API 호출 구현 (Authorization 헤더 방식)
- 자동 로그인 기능 구현 (설정 저장/조회, 로딩 페이지에서 처리)
- 아이디 저장 기능 구현 (설정 및 저장된 아이디 관리)
- 로딩 페이지 추가 (자동 로그인 시 토큰 확인 및 갱신)
- 로그인 페이지에 자동 로그인/아이디 저장 체크박스 추가
- API 호출 시 토큰 만료 시 자동 갱신 후 재시도 로직 추가
- 위치 권한 추가 (Android/iOS)
- shared_preferences, geolocator 패키지 추가
- UI 개선 (연속학습 페이지 헤더, 홈 페이지 텍스트)

[앞으로 해야할 일]
1. 코드 테스트 진행
2. 개선 사항
   - 로그아웃 기능 확인/개선
   - 로그아웃 시 자동 로그인 설정 해제 여부 확인
   - 토큰 삭제 로직 확인
   - 에러 처리 강화
   - 네트워크 오류 시 사용자 안내
   - 토큰 갱신 실패 시 재시도 로직
3. UX 개선
   - 로딩 중 인디케이터 표시
   - 자동 로그인 실패 시 안내 메시지
- Assessment 모델에 두 가지 JSON 형식 지원 (API 응답 camelCase, 캐시 snake_case)
- className 매칭 로직 개선: 캐시에서 로드된 데이터에도 적용
- Assessment 캐시 초기화 기능 추가 (clearAllAssessmentCache)
- 클래스 정보 조회 API 통합 및 디버깅 로그 추가
- 홈 화면에서 Assessment 데이터 로드 전 캐시 초기화
- Tab-based Refresh 기능 구현 (홈/학원 페이지)
- SSL 인증서 검증 우회를 main.dart로 이동 (kDebugMode 조건부)
- Domain Layer 추가 (chapter, workbook, student_answer, grading_history, section_image)
- Repository 패턴 구현 및 UseCase 패턴 적용
- API 레이어 분리 및 Mapper 추가
- AppDependencies를 통한 의존성 주입 설정
- 문제집 상세/챕터/문제 화면 개선
- 채점 이력 기능 추가
- 연속 학습 위젯 개선
- 학습 완료 판단 로직 개선: 모든 과제가 완료되어야 완료로 판단 (any → every)
- 홈 페이지에서 다른 페이지 복귀 시 오늘의 숙제 정보 자동 동기화
- 연속학습 위젯에서 날짜 선택 시 최신 데이터로 강제 갱신
- API 호출 및 응답 로깅 추가로 디버깅 개선
@Downy-newlearner Downy-newlearner merged commit 70a9576 into main Dec 8, 2025
0 of 6 checks passed
Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is the final PR Bugbot will review for you during this billing cycle

Your free Bugbot reviews will reset on January 7

Details

You are on the Bugbot Free tier. On this plan, Bugbot will review limited PRs each billing cycle.

To receive Bugbot reviews on all of your PRs, visit the Cursor dashboard to activate Pro and start your 14-day free trial.

# JSON 파일 초기화
self._init_json_file()

logger.info("LLMDBPipeline 초기화 완료")
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bug: Missing output_json_path attribute initialization causes failure

The LLMDBPipeline class uses self.output_json_path in _init_json_file and save_to_json methods, but this attribute is never initialized in __init__. When the constructor calls _init_json_file(), it will raise an AttributeError (caught by try-except, logging an error). The JSON initialization silently fails, and any subsequent calls to save_to_json will also fail. The groq_api_key parameter is also accepted but never used, suggesting incomplete implementation.

Additional Locations (2)

Fix in Cursor Fix in Web

cropped = image[y1:y2, x1:x2]
a_path = section_output / f"prob_{idx:02d}_{a_det['class_name']}.jpg"
cv2.imwrite(str(a_path), cropped)
result["crop_paths"][a_det['class_name']] = str(a_path)
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bug: All problems in section get same content detections

In crop_and_save_images, when iterating over multiple problems within a section, the code always assigns the same content to every problem. For english_content, korean_content, and answer options, it filters all detections of each type from the section then uses eng_dets[0], kor_dets[0], etc. for every problem. This means if a section has 3 problems, all 3 get saved with identical english/korean content images (just with different filenames like prob_00_english_content.jpg, prob_01_english_content.jpg). The content detections need to be matched to their corresponding problems, likely by spatial proximity to each prob_det.

Fix in Cursor Fix in Web

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants