yhames / rmf-web-java

이노베이션 아카데미 x 현대오토에버 채용 연계 프로젝트 🤖

Home Page:https://github.com/open-rmf

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

로봇서비스 API Gateway 고도화

프로젝트 요약

Open-RMF

오픈소스 프로젝트인 Open-RMFrmf-web를 활용한 Python → Java 전환 프로젝트

실행 방법

  • PostgreSQL, Spring Cloud Gateway, api-java-server
docker-compose up
  • rmf-web 실행
docker exec -it innovation-rmf-web /bin/bash
pnpm start:react
  • ROS Mock Server 실행
docker exec -it innovation-mock-server /bin/bash
python3 src/mock_server/mock_server/websocket_client.py

Mockup 노드 기능

  • 웹소켓 메시지(fleet_state, task_state, task_log) 전송
  • /mock/dummy 요청
    • /building_map 이벤트 발행 요청
    • Quartz 스케쥴러에 door_state 이벤트 발행 Job 추가

팀원

정승철
@middlefitting
김예건
@dawnpoems
박정우
@yhames

↗️ 업무분담 및 개인별 진행사황

사용기술

Java Spring ROS MySQL Docker
WebSocket Socket.io ReactiveX
Python Typescript React

Git Branch 전략

  • branchmain, dev, feature로 구분합니다.
  • issuebranch 생성
    • WBS 작업 목록을 milestone으로 등록
    • issue 생성하고 milestone과 연결된 상세 내용 및 담당자 설정
    • 생성된 issue에서 branch 생성
    • branch issue에서 자동으로 생성되는 것을 사용
  • feature 작업시 Conventional Commit 적용
  • 작업 완료된 featuredevpull request
    • main, dev에는 push 지양
  • merge
    • squash merge 사용
    • commit message#<issue 번호>-<issue 제목> (#<pr 번호>) 형식 준수

프로젝트 구조

  • 전체 프로젝트 구조
.
├── api-server-java
├── database
├── documents
│   ├── 01 분석
│   ├── 02 설계
│   ├── 03 개발
│   └── 04 테스트
├── rmf-api-gateway
├── rmf-web
│   ├── docker
│   ├── packages
│   │   ├── api-client
│   │   ├── api-server
│   │   ├── dashboard
│   │   ├── dashboard-e2e
│   │   ├── react-components
│   │   ├── rmf-auth
│   │   ├── rmf-models
│   │   └── ros-translator
│   ├── pipenv-install
│   └── scripts
└── src
    ├── mock_server
    │   ├── bags
    │   │   └── rosbag2_2024_03_26-06_07_58
    │   ├── dummy
    │   ├── launch
    │   ├── mock_server
    │   ├── resource
    │   └── test
    ├── rmf_api_msgs
    ├── rmf_building_map_msgs
    ├── rmf_internal_msgs
    └── rmf_visualization_msgs
  • api-server-java 프로젝트 구조
api-server-java
└── src
    ├── main
    │   ├── java
    │   │   └── com
    │   │       └── rmf
    │   │           └── apiserverjava
    │   │               ├── baseentity
    │   │               ├── config
    │   │               ├── controller
    │   │               ├── dto
    │   │               ├── entity
    │   │               ├── global
    │   │               │   ├── annotation
    │   │               │   ├── constant
    │   │               │   ├── converter
    │   │               │   ├── exception
    │   │               │   ├── parser
    │   │               │   └── utils
    │   │               ├── jobs
    │   │               ├── mock
    │   │               ├── repository
    │   │               ├── rmfapi
    │   │               ├── rosmsgs
    │   │               ├── rxjava
    │   │               │   ├── bookkeepers
    │   │               │   ├── eventbus
    │   │               │   ├── eventconsumer
    │   │               │   └── watchdog
    │   │               ├── security
    │   │               ├── service
    │   │               └── websocket
    │   └── resources
    │       └── door_dummy
    └── test
        └── java
            └── com
                └── rmf
                    └── apiserverjava
                        ├── config
                        ├── entity
                        ├── global
                        ├── integration
                        ├── repository
                        └── service

요구사항

Python 모듈 구조도

Python_API_모듈_분석.png

Java 전환 방향성 및 개발 범위

  • Java 전환 방향성
구분 Python Java
Framework Uvicorn
FastAPI
Pydantic
Spring Boot
Protocol WebSocket
socket.io
WebSocket
socket.io
ORM Tortoise JPA
ReactiveX RxPy RxJava
Database SQLite PosgreSQL
  • 개발 범위
구분 설명
REST API API Client에서 요청하는 REST API 구현
WebSocket 리액티브 프로그래밍으로 Fleet Adapter에서 전달하는 WebSocket 데이터 처리 기능 구현
socket.io API Client에서 구독하는 Socket.io API 구현
로그인 DB, REST API, 클라이언트 개발 및 인증과 인가 처리
(ROS Mocking) RMF Core와 연결된 기능의 Mocking으로 ROS 의존성 제거
(사용자 관리) 사용자 추가 및 정보 변경 기능 개발
  • 개발 방식 구조도

Java_서버_개발_구조도.png

아키텍처 설계

Java API 모듈 구조도

[로봇서비스 API 고도화] 01 Java API 모듈 구조도.pdf

Java_API_모듈_분석.png

데이터 플로우 다이어그램

[로봇서비스 API 고도화] 02 데이터 플로우 다이어그램.pdf

DataFlow_Diagram.png

화면 설계

[로봇서비스 API 고도화] 04 FE-화면설계-와이어프레임.pdf

화면_설계_01.png

화면_설계_02.png

화면_설계_03.png

데이터베이스 설계

테이블 및 인덱스 정의서

[로봇서비스 API 고도화] 05 DB 물리 설계서.xlsx

테스트 시나리오

통합테스트

개발 범위에 대한 테스트 시나리오 기반 통합 테스트 작성

[로봇서비스 API 고도화] 02 테스트 시나리오 기반 통합테스트 결과서.pdf

Integration_Test_Coverage.png

단위테스트

비즈니스 로직이 존재하는 Service, Utils, Entity 계층에 메서드 단위의 테스트 코드 작성

Unit_Test_Coverage.png

About

이노베이션 아카데미 x 현대오토에버 채용 연계 프로젝트 🤖

https://github.com/open-rmf


Languages

Language:TypeScript 55.4%Language:Java 26.9%Language:Python 14.1%Language:JavaScript 1.6%Language:CMake 0.8%Language:Jinja 0.4%Language:Shell 0.3%Language:Rust 0.2%Language:MDX 0.2%Language:HTML 0.1%Language:Dockerfile 0.0%Language:CSS 0.0%