1차 개발을 완료 하였다
기존의 아키텍처 설계는 이러한 식으로 하였다

하지만 추후 DBMS를 Mysql을 바꾸었다
그리고 API는 다음과 같이 구성하였다

그리고 앱 화면은 다음과 같이 구성하였다

그리고 ERD는 다음과 같이 구성하였다

이후 user_name 칼럼은 제거하였다
앱 시작에 관한 시퀀스 다이어그램이다

앱이 시작되면 기기에서 저장되어있는 user_id를 불러오고, user_id가 있다면 해당하는 wifi의 ssid와 bssid를 불러온다
그리고 사용자에게 location 권한을 확인하고, 1분마다 worker를 설정하여 wifi 연결 여부를 확인한다. 그리고 wifi가 연결이 되어있을 경우 wifi의 정보를 받아온다. 이후 wifi가 연결이 되어있다면 지속적으로 화면에서 연겨되어 있는 wifi 정보를 업데이트 한다.
그리고 user delete에 관한 시퀀스 다이어그램이다

사용자가 user_delete를 요청하게 되면 datastrore(기기내)에 저장되어 있는 user_id를 삭제하고, 해당하는 user_id를 서버에 보낸다
이후 서버에서 해당되는 user_id를 삭제하게 된다(이때 log도 함께 삭제된다)
다음은 새로운 Wifi를 등록하는 시퀀스 다이어그램이다

새로운 wifi를 등록하게 되면 wifi에 대한 정보를 불러오게되고, 해당하는 wifi 정보에 맞춰 새로운 user를 등록하게 된다 그리고 반환 받은 user_id를 datastore(기기 내)에 저장하게 된다
다음은 통계확인 시퀀스다이어그램이다

사용자가 가지고 있는(datastore) user_id를 이용하여 해당하는 user_id의 주간 통계를 출력하게 된다
그리고 다음은 worker 시퀀스 다이어그램이다

worker에서 사용자의 현재 user_id와 현재의 log_id를 지속적으로 불러온다 이후 1분마다 wifi 연결여부를 확인한 후 연결되어 있는 wifi와 저장된 wifi의 정보가 같을 경우 체류중으로 인식하여 log/start(체류 기록 시작)을 하게 된다

하지만 wifi의 정보가 달라질 경우 체류가 종료되었다고 인지하여 저장되어 있는 wifi 정보의 log/end를 하게되어 체류를 종료하게 된다
다음과 같이 체류 시간 어플을 1차 개발 완료하였으며 이후 다양한 피드백을 받았다
1. 기술 선정이유의 부족, 개선 방향성 미흡
ORM의 사용이유, bssid를 사용한 이유, wifi를 scan할때 1분마다 scan을 한 이유
2. Kotlin에 대한 지식 부족
Kotlin부분을 대게 바이브코딩하여 작성하였기 때문에 지식이 부족
3. 배경지식 부족
DB의 동작원리, 네트워크 동작원리 등의 지식 부족
이러한 피드백을 받았으며, 이후의 개선사항은 다음과 같다
1. 기초 개발 지식 습득(cs)
2. 기존의 바이브코딩으로 제작한 Kotlin에 대해 자세한 탐구
3. 과정에 대한 중시(개발하면서 더 자세한 탐구를 할것)
이후 더 개선되어 개발하겠다
'개발일지 > 안드로이드' 카테고리의 다른 글
| [안드로이드] Wifi기반 체류 시간 앱 - 5 (4) | 2025.08.18 |
|---|---|
| [안드로이드] Wifi기반 체류 시간 앱 - 4 (2) | 2025.08.16 |
| [안드로이드] Wifi기반 체류 시간 앱 - 3 (2) | 2025.08.15 |
| [안드로이드] Wifi기반 체류 시간 앱 - 2 (2) | 2025.08.13 |
| [안드로이드] Wifi기반 체류 시간 앱 - 1 (0) | 2025.08.11 |