01 / 프로젝트 이해

외국어 IT 공식 문서를 문단 단위로 함께 번역하고, 여러 기여 중 읽기 좋은 번역을 모아 제공하는 커뮤니티입니다.
- 개발 기간
- 2025.01 — 2025.02
- 팀 구성
- 6인 팀 · FE 3 / BE 3 (인프라 겸임 1)
- 기술 스택
- Spring Boot · Python · MariaDB
- 제공 상태 ·
- 공개 저장소 · 소개 영상 제공
내 역할과 핵심 기여
백엔드 팀원으로 문서·원문·번역의 데이터 관계와 API, HTML 파싱, 베스트 번역 조회, 알림 이벤트·SSE 초기 연결과 메모 API를 구현했습니다.
- 문서 전체 정보와 원본 문단·사용자 번역을 분리하고 원문 순서를 유지했습니다.
- Spring Boot에서 Python 파서를 실행해 번역 가능한 HTML 요소를 추출했습니다.
- 문단별 번역 선택과 좋아요 일괄 조회, 알림 생성·저장·전송을 연결했습니다.
- React 웹
문서·번역·메모 HTTP API · SSE 알림 · IndexedDB 원문 보관
API 요청 · SSE 구독
문서·원문·번역 API · 베스트 번역 조회 · 알림·메모
원문 처리 프로세스 실행 · 데이터 저장
- Python · BeautifulSoup
서버 내부 ProcessBuilder 실행 · HTML → 문단 JSON
- MariaDB
문서 → 원본 문단 → 번역 · 좋아요·메모·알림
내 담당: 문서·번역 API와 파싱·알림 초기 구현. SSE 최종 수정은 BE 팀원과 협업했으며 번역 뷰어·IndexedDB는 FE 담당 영역입니다.
구조·설계 판단 상세02 / 구현과 문제 해결
HTML 원본을 번역 가능한 문단으로
- 01 · 관리자원본 등록
문서 정보와 HTML 내용이 담긴 .txt 파일을 등록합니다.
- 02 · Spring Boot권한·파일 검사
관리자 권한·빈 파일·확장자·중복을 확인합니다.
- 03 · Java → Python요소·순서 추출
표준 입력의 HTML을 태그·내용·pOrder가 있는 JSON으로 반환합니다.
- 04 · Spring Boot → MariaDB문단 저장
OriginDocument로 저장하고 사용자의 번역을 문단에 연결합니다.
Python은 별도 HTTP 서버가 아닌 서버 내부 처리 프로세스입니다. 원문의 순서와 개별 번역의 관계를 데이터에 남깁니다.
실행 흐름 상세사용자 역할별 유스케이스
- 관리자
- 문서 정보·원본 등록
- 등록 권한·중복 검사
- 사용자
- 문단별 번역 작성·조회
- 번역 좋아요·알림 확인
- 개인 메모 관리
CASE 01SSE 구독이 DB 연결을 오래 점유할 때
- 문제
- 오래 유지되는 구독과 새로고침 재연결이 DB 연결 풀 부족으로 이어졌습니다.
- 판단·대응
- 구독 메서드의 @Transactional을 제거했습니다. BE 팀원들과 인증 객체에서 사용자 ID를 읽도록 경로를 수정했습니다.
- 결과·한계
- 연결 유지에 필요한 사용자 식별과 알림의 DB 저장·조회를 분리했습니다. 원인 파악과 최종 수정은 팀원들과 함께 진행했습니다.
CASE 02여러 번역을 원문 순서대로 읽게 하려면
- 문제
- 문단별로 기본 번역을 고르고 좋아요 정보를 함께 제공할 조회 기준이 필요했습니다.
- 판단·대응
- 공개 번역을 좋아요·작성 시각으로 정렬해 문단별로 선택하고, pOrder로 배치한 뒤 좋아요 목록을 일괄 조회했습니다.
- 결과·한계
- 원문 순서의 번역 응답을 구성했습니다. 정렬에는 팀원 수정도 반영됐으며, 기록의 수동 응답시간 관찰은 백엔드 단독 벤치마크가 아닙니다.
구현한 범위와 남은 과제
긴 원문을 문단별 기여와 조회로 연결했습니다. 지정 HTML 태그를 추출하므로 문서 구조에 따른 파서 보완이 필요할 수 있습니다.