오픈소스 프로젝트인 Open-RMF
의 rmf-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
- 웹소켓 메시지(
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
branch
는main
,dev
,feature
로 구분합니다.issue
및branch
생성WBS
작업 목록을milestone
으로 등록issue
생성하고milestone
과 연결된 상세 내용 및 담당자 설정- 생성된
issue
에서branch
생성 branch
issue
에서 자동으로 생성되는 것을 사용
feature
작업시 Conventional Commit 적용- 작업 완료된
feature
는dev
로pull 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
- 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 의존성 제거 |
(사용자 관리) | 사용자 추가 및 정보 변경 기능 개발 |
- 개발 방식 구조도
[로봇서비스 API 고도화] 01 Java API 모듈 구조도.pdf
[로봇서비스 API 고도화] 02 데이터 플로우 다이어그램.pdf
[로봇서비스 API 고도화] 04 FE-화면설계-와이어프레임.pdf
[로봇서비스 API 고도화] 05 DB 물리 설계서.xlsx
개발 범위에 대한 테스트 시나리오 기반 통합 테스트 작성
[로봇서비스 API 고도화] 02 테스트 시나리오 기반 통합테스트 결과서.pdf
비즈니스 로직이 존재하는 Service
, Utils
, Entity
계층에 메서드 단위의 테스트 코드 작성