빅프로젝트 2주차 정리하겠습니다.
2주차로 제출해야되는 서류로 요구사항 정의서, 서비스 Flow, ERD, UIUX 설계서를 작성해서 제출해야 했습니다.
서비스 Flow와 UIUX 설계서는 피그마를 통해 팀원들과 함께 작성하였고 ERD는 ERD 클라우드라는 사이트를 통해 팀원들과 같이 만들었습니다.
시간이 제일 많이 걸렸던 것은 요구사항 정의서였던 것 같습니다. 다른 것들은 한 번씩 작성한 적이 있지만 요구사항 정의서는 처음 작성하는 거다 보니깐 어떻게 작성하는지 이해하는지 오래 걸렸고 최종 작성하는 데에도 시간이 많이 걸렸던 것 같습니다.
이번 프로젝트에 사용되는 시각지능 AI모델링을 위해 YOLO를 선택해서 사용하기로 했습니다. 이때 YOLO 사용을 위해 전처리가 필요하여 팀원들과 같이 전처리를 했습니다. bbox 스케일링과 json파일을 읽어들어 필요정보(bbox와 이름)을 추출하였고 클레스 매핑을 통해 최종 label파일을 만들었습니다.
백엔드 담당으로써 작성했던 ERD를 기반으로 장고 sqlite3을 사용해서 모델을 만들었습니다. 백엔드 작업을 하면서 ERD 작성할 때 생각하지 못한 부분이 있어서 팀원들과 많이 이야기를 하면서 수정해 나갔습니다.
장고 기본적인 틀을 만들었습니다. Templates와 views 그리고 urls을 분리하여 저희 개발에 가장 기본적인 틀을 제작하였습니다. 또 앞서 제작한 ERD를 기반으로 모델을 만들어 admin 사이트에 나오도록 진행하였습니다. 이제는 migration이 정말 쉬운거 같습니다.
개인 공부겸 가장 기본이 되는 로그인 기능과 회원가입 기능을 구현했습니다. 장고에서는 기본 User 테이블을 제공해주지만 직접 만든 테이블을 사용하고자 장고에서 제공해주는 User은 사용하지 않았습니다. 근데 사용했으면 장고에서 제공해주는 다양한 기능을 편하게 사용하지 않았을까? 라고 생각이 듭니다. 로그인한 회원은 session을 통해 어떤 회원이 로그인했는지 페이지에 띄워주는 것을 구성하였고 마지막으로 커뮤니티 글들이 보이는 기능을 구현했습니다. 근데 프론트와 데이터 전송을 RestAPI로 할 것 같아서 만들어둔 HTML은 사용하지 않을 것 같습니다.
장고에서 좋았던 것이 데이터를 넣을 때 json파일을 형태로 만들어서 한번에 만들어둔 모델에 데이터를 입력할 수 있어서 좋았습니다. 입력하고자 하는 데이터를 csv파일로 받아 csv파일을 json으로 변환해주는 사이트가 많았습니다. 해당 사이트중 하나를 이용해서 json파일로 만들었습니다. 여기서 추가작업이 하나 더 필요합니다.
import json
with open('poc.json', 'r', encoding='utf-8') as f:
poc = json.load(f)
new_list = [] # 빈 리스트 생성
for poc_d in poc:
new_data = {
"model": "poc.Prohibition_Of_Combination", # 넣고자 하는 모델의 경로
"fields": {
"제품명A": poc_d.get("제품명A"), # 필드에 맞는 값 할당
"업체명A": poc_d.get("업체명A"),
"성분명A": poc_d.get("성분명A", ""),
"성분코드A": poc_d.get("성분코드A", ""),
"제품코드A": poc_d.get("제품코드A", ""),
"제품명B": poc_d.get("제품명B"),
"업체명B": poc_d.get("업체명B"),
"성분명B": poc_d.get("성분명B", ""),
"성분코드B": poc_d.get("성분코드B", ""),
"제품코드B": poc_d.get("제품코드B", ""),
"상세정보": poc_d.get("상세정보")
}
}
new_list.append(new_data) # new_list에 전체 데이터를 추가
with open('poc_data.json', 'w', encoding='UTF-8') as f:
json.dump(new_list, f, ensure_ascii=False, indent=2) # JSON 파일로 저장
해당 코드를 통해 json파일을 아래와 같이 수정되도록 합니다.
그러면 이제 추가 작업까지 완료된 json파일을 manage.py에 같은 위치에 넣어주고
python manage.py loaddata poc_data.json
을 터미널에 입력해주면 아까 작업해둔 데이터 모델에 자동으로 데이터들이 추가됩니다.
깃에는 100MB이상 올리면 안됩니다. 100MB이상 올리는 방법이 따로 있다고 하는데 이거 해결하느라 정말 고생많았습니다...
2주차부터 프로젝트 제작을 직접 구현하니 많이 힘들었습니다. 남은 기간도 열심히 해서 좋은 프로젝트가 완성되도록 노력하겠습니다.
※공부하고 있어 다소 틀린점이 있을 수 있습니다. 언제든지 말해주시면 수정하도록 하겠습니다.
※용어에 대해 조금 공부 더 해서 수정하겠습니다.