김나영 Portfolio

Backend Developer

사용자 데이터를 안정적으로 저장하고,
비즈니스 규칙을 API로 구현합니다.

팀 서비스 백엔드의 인증·권한, 공개 API, 사용자 데이터 조회 구조와 서비스 계층 구현을 중심으로 백엔드 프로젝트를 정리했습니다.

FESTAI 코드 보기

백엔드·서비스 개발 경험

개인 프로젝트 Java 17 Spring Boot JPA REST API

Pigge Server

Java 17·Spring Boot 기반 거래·커뮤니티 REST API 19개와 Android 클라이언트 연동을 구현했습니다. DTO 중복으로 발생한 Kotlin 빌드 오류와 실제 기기 접속을 위한 LAN 연결 문제를 해결하고, Service 테스트 3개로 거래 저장·월별 조회·잔액 계산 흐름을 검증했습니다.

Pigge Server API 흐름
Controller, Service, Repository, AI Client로 이어지는 거래 API 흐름
도메인

사용자별 수입·지출 거래 관리, 월별 현금 흐름 확인, 게시글·댓글 기반 커뮤니티

데이터 모델

사용자 이메일, 거래 유형, 금액, 카테고리, 거래 날짜 중심의 거래 Entity 구성

핵심 API

거래 저장·조회·AI 분석과 커뮤니티 게시글 작성·목록 조회·댓글 작성·조회 API 구현

구현 완료

거래·커뮤니티 API의 Controller-Service-JPA Repository 흐름을 구현하고, 최신 Android 클라이언트를 android/에 통합해 서버와 클라이언트 소스를 함께 관리하는 구조 구성

클라이언트 연동

Android의 Retrofit 연결 주소를 에뮬레이터 전용 주소에서 개발 PC의 LAN IP로 변경하고, 개발용 applicationId를 분리해 실제 기기 설치·연결 테스트 환경 구성

월별 집계 로직

거래 유형과 거래 월을 기준으로 수입·지출 합계를 계산하고 잔액 응답으로 연결

문제 해결

Android 통합 과정에서 중복 선언된 월별 요약 DTO가 Kotlin 재선언 오류와 홈 화면 필드 참조 오류를 일으키는 원인을 확인하고, 불완전한 DTO를 제거해 클라이언트 빌드 구조 정리

검증 근거

API 엔드포인트 19개와 Service 테스트 3개의 기존 검증 범위를 유지하면서, Android 클라이언트의 DTO 충돌·빌드 설정·Retrofit 접속 주소를 수정해 실제 기기 연동을 준비했습니다.

다음 개선 단계

트랜잭션 정합성, 조회 성능, Bean Validation, 공통 예외 응답, Swagger 문서화 보강

팀 프로젝트 Python FastAPI SQLite SQLAlchemy OpenCV

SilentOrchestra 2.0 · 팀 프로젝트

사용자가 정해진 명령을 외우는 대신 반복되는 몸짓과 현재 사용 맥락을 학습해 행동을 제안·실행하는 로컬 우선 Spatial AI Agent 팀 프로젝트입니다(2026.09). 웹캠 제스처 클라이언트와 FastAPI 관찰 API의 연동, OpenCV 기반 손짓 인식 개선을 맡았습니다.

SilentOrchestra 2.0 제스처 관찰 흐름
웹캠 제스처 클라이언트가 모션 특징을 뽑아 FastAPI 관찰 API로 넘기고, SQLite에 제스처·맥락 기억을 저장하는 흐름
도메인

Observation → Pattern → Suggestion → Memory → Execution → Feedback 학습 흐름으로, 3회 반복 관찰 후 행동을 제안하고 사용자 승인 이후 자동 실행

데이터 모델

사용자·제스처·사용 맥락을 결합한 개인화 행동 기억을 SQLite·SQLAlchemy로 저장하고, 원본 영상과 얼굴 정보 없이 모션 특징과 맥락만 보관

API 구조

웹캠 제스처 클라이언트가 관찰 이벤트를 FastAPI 관찰 API로 전송하고, 백엔드가 패턴·제안·실행 단계로 연결

문제 해결 — 미감지

손이 관심 영역 일부만 차지하면 전체 Optical Flow 중앙값이 0에 수렴해 좌우 손짓이 감지되지 않는 원인을 분석하고, 임계값을 넘은 움직임 픽셀만 선별해 평균 이동 방향을 계산하도록 개선(PR #1)

문제 해결 — 오탐지

배경·카메라 노이즈까지 움직임으로 잡히는 문제를 MOG2 전경 마스크와 Optical Flow 조건 결합, 수평·수직 이동 비교, 동일 방향의 연속 프레임 검증으로 안정화(PR #8)

검증

현재 저장소 기준 pytest 21 passed, SQLite 38 statements passed — 팀 저장소 전체 구현·검증 결과이며 개인 구현으로 주장하지 않음

전체 시스템

사용자·제스처·맥락을 결합한 개인화 행동 기억 관리와 학습 흐름, FastAPI 기반 API, SQLite·SQLAlchemy 저장 구조, 원본 프레임을 저장하지 않는 로컬 우선 설계로 구성된 팀 저장소 전체 성과입니다. 위 테스트 수치도 팀 저장소 전체 검증 결과입니다.

내 기여·검증 범위

관심 영역 전체 중앙값 대신 움직임 픽셀만 선별해 평균 방향을 계산하도록 바꾸고 최소 움직임 비율을 설정값으로 분리, 이동량·방향·움직임 비율·누적 감지 횟수를 출력해 현장 디버깅을 보완했습니다(PR #1). 이후 MOG2 전경 분리와 연속 프레임 방향 검증을 더해 오탐지를 줄였고(PR #8), 두 PR은 main에 병합됐습니다.

4-party (Kakao Map 기여)

4인 팀이 만든 명지대 학생 택시 동승 매칭 앱에서 Kakao Map 연동과 거리·소요시간 산출 기능을 담당했습니다.

기술 경험 범위

FESTAI는 FastAPI·PostgreSQL 기반 축제 플랫폼 백엔드, Pigge Server는 Spring Boot·JPA 기반 가계부 API, DentalLink는 Flutter·Supabase 기반 관리자 웹 연동과 AI 상담 기능, 4-party는 팀 프로젝트 중 Kakao Map 연동·거리·소요시간 산출 기여 범위로 구분해 설명합니다.