입구 진입 프로세스

%% 입구 진입 프로세스
sequenceDiagram
autonumber
actor Car as 차량
participant Enter as 입구 라즈베리 파이
participant React as React 서버
participant AI as 이미지 AI 서버
participant Spring as Spring 서버
participant DB

Car ->> Enter: 외부에서 차량 진입
activate Enter
Enter ->> AI: 번호판 이미지 전송
deactivate Enter
activate AI
AI -->> React: 추출된 텍스트 반환
deactivate AI
activate React
opt 잘못된 형태의 텍스트
	React ->> Enter: 재촬영 요청
	deactivate React
	activate Enter
	Enter ->> AI : 번호판 이미지 재전송
	deactivate Enter
	activate AI
	AI -->> React: 추출된 텍스트 반환
	deactivate AI
	activate React
end
	React ->> Spring: 추출된 텍스트와 장애차량 여부 전송
	deactivate React
	activate Spring
	activate Spring
	Spring ->> Spring: 자리 배정 로직 처리
	deactivate Spring
	alt 정상적으로 자리 배정
		Spring ->> DB: 자리 배정 정보 저장
		deactivate Spring
		activate DB
			DB -->> Spring: 성공 반환
			deactivate DB
			activate Spring
			Spring -->> React: 자리 배정 정보 반환
			deactivate Spring
			activate React
			React --) Car: 안내 화면 출력 안내표 발급
			deactivate React
			activate Car
			%% Car ->> React: 안내표 받고 확인 버튼 클릭
			deactivate Car
			activate React
			React -) Enter: 차단 바 해제 요청
			deactivate React
			activate Enter
			Enter -->> Car: 차단 바 해제 후 진입
			deactivate Enter
		
	else 만차인 경우
		activate DB
		DB -->> Spring: 자리 없음 반환
		deactivate DB
		activate Spring
		Spring -->> React: 만차 응답 반환
		deactivate Spring
		activate React
		React -->> Car: 만차 화면 출력
		deactivate React

end

주차 프로세스

%% 주차 프로세스
sequenceDiagram
autonumber
actor Car as 차량
participant Bar as 자리 차단봉
participant Pie as 라즈베리 파이
participant Manager as 관리자
participant AI as 이미지 AI 서버
participant React as React 서버
participant Spring as Spring 서버
participant DB

alt 정상 주차 과정
	Car ->> Pie: 차량이 구역에 진입, 이미지 촬영
	activate Pie
	Pie ->> AI: 번호판 이미지 전송
	deactivate Pie
	activate AI
	AI -->> Pie: 추출된 텍스트 반환
	deactivate AI	
	activate Pie
	opt 잘못된 형태의 텍스트
		Pie ->> AI: 번호판 이미지 재전송
		deactivate Pie
		activate AI
		AI -->> Pie: 추출된 텍스트 반환
		deactivate AI
		activate Pie
	end
	Pie ->> Spring: 추출된 텍스트와 구역 번호 전송
	deactivate Pie
	activate Spring
	Spring ->> DB: 차량이 할당된 구역 검색 요청
	deactivate Spring
	activate DB
%%	alt 정상 DB
		DB -->> Spring: 검색 결과 반환
		deactivate DB
		**activate Spring
		activate Spring**
		Spring ->> Spring: 요청 구역과 검색 결과 일치 여부 판별
		deactivate Spring
		Spring -->> Pie: 결과 반환
		deactivate Spring
		activate Pie
		Pie -->> Bar: 차단봉 해제
		deactivate Pie
%%	else DB 오류
%%		activate DB
%%		DB -->> Spring: 에러 반환
%%		deactivate DB
%%		activate Spring
%%		Spring -->> Pie: 에러 반환
%%		deactivate Spring
%%	end

else 주차 과정 중 문제 발생
	Car ->> Manager: 배정 정보 전달
	activate Manager
	Manager ->> React: 배정 자리 정보 검색
	deactivate Manager
	activate React
	React ->> Spring: 배정 자리 정보 요청
	deactivate React
	activate Spring
	Spring ->> DB: 검색 요청
	deactivate Spring
	activate DB
%%	alt 정상 DB 검색
		DB -->> Spring: 검색 결과 반환
		deactivate DB
		activate Spring
		Spring -->> React: 검색 결과 반환
		deactivate Spring
		activate React
		React -->> Manager: 검색 결과 출력
		deactivate React
		activate Manager
		Manager ->> React: 정보 수정 요청
		deactivate Manager
		activate React
		React ->> Spring: 정보 수정 요청
		deactivate React
		activate Spring
%%		alt 정상 DB 수정
			Spring ->> DB: 수정 정보 반영
			deactivate Spring
			activate DB
			DB -->> Spring: 수정 완료 반환
			deactivate DB
			activate Spring
			Spring -->> React: 수정 완료 반환
			deactivate Spring
			activate React
			React --) Manager: 수정 완료 출력
			React --) Pie: 차단봉 해제 요청
			deactivate React
			activate Pie
			Pie -->> Bar: 차단봉 해제
			deactivate Pie
%%		else DB 수정 오류 발생

%%		end
%%	else DB 검색 오류 발생

%%	end
end

출차 프로세스

%% 출차 프로세스
sequenceDiagram
autonumber
actor Car as 차량
participant Bar as 자리 차단봉
participant Pie as 라즈베리 파이
participant AI as 이미지 AI 서버
participant Spring as Spring 서버
participant DB

Car ->> Pie: 출차 위치 도착, 이미지 촬영
activate Pie
Pie ->> AI: 번호판 이미지 전송
deactivate Pie
activate AI
AI -->> Pie: 추출된 텍스트 반환
deactivate AI
activate Pie
opt 잘못된 형태의 텍스트
	Pie ->> AI: 번호판 이미지 재전송
	activate AI

	deactivate Pie
	AI -->> Pie: 추출된 텍스트 반환
	deactivate AI
end
activate Pie
Pie ->> Spring: 추출된 텍스트 전송
deactivate Pie
activate Spring
Spring ->> DB: 차량 정보 수정
deactivate Spring
activate DB
%% alt 정상 DB 수정
	DB -->> Spring: 정상 응답 반환
	deactivate DB
	activate Spring
	Spring -->> Pie: 출차 완료 반환
	deactivate Spring
	activate Pie
	Pie -->> Bar: 차단바 해제
	deactivate Pie
%% else DB 수정 오류 발생
%% 	activate DB
%% 	DB -->> Spring: 오류 반환
%% 	deactivate DB
%% 	activate Spring
%% 	Spring -->> Pie: 오류 반환
%% 	deactivate Spring
%% end