내일 배움 캠프 머신 러닝 프로젝트 발제
토큰 로그인 기반으로 개발 → 소셜로그인
어떤 서비스를 만들 것이냐를 슬슬 주어진대로 구현하고서 같다 붙일게 아니라 슬슬 이제 명확한 주제의식을 가져야해요.
오늘 할 일 : 팀 회의 발제,주제 정하기,개발환경.버전환경 관리 정하기,포맷터 정하기,GIT관리 규칙 정하기
독스트링 정하기,주석 컨벤션 정하기,역할분담 정하기,UI와이어프레임 작성,ERD작성,API명세서,openia python version 확인 후 버전 선택,팀 전원 환경 구성하기
주제명: angry cat
인식된 사람 얼굴 옆에 화가나 때릴려고 하는 고양이 이미지를 넣어주고 해당 이미지를 공유하는 커뮤니티 서비스
4주제: angry cat - 인식된 사람 얼굴 옆에 화가나 때릴려고 하는 고양이 이미지를 넣어주고 해당 이미지를 공유하는 커뮤니티 서비스
구현 방법: 기본적으로 이전 프로젝트에서 구현한 커뮤니티 사이트 + 글 작성시 이미지 업로드 - 업로드 된 이미지에 대해 화난 고양이 추가하기 기능
화난 고양이 추가: 사물인식(사람 얼굴의 location) → 얼굴의 위치 주변에 고양이 이미지 합성
심화 구현 0: 얼굴이 안보이는 사람 이미지의 경우에도 적절한 위치에 고양이를 넣을 수 있다.
심화 구현 1: 고양이의 위치를 벡터 수식에 따라 동적으로 변화시킬 수 있다.
심화 구현 2: 적절한 고양이의 위치 찾기를 머신러닝을 통해 수행할 수 있다?
깃. 병합규칙. 브랜치작명, 커밋메세지 컨벤션. 계승.
독스트링, 주석 컨벤션 정하면 좋겠다.
역할분배: 기능 구현 및 메인으로 GIT관리자(기능구현이 주가 맞지만 팀에서 메인 관리자 1명은 필요해서 Git 관리는 내가 하기로 했다.)
내일 할 거 : 댓글 만들었던 곳에 수정,삭제 버튼을 추가 계획
개발규칙
- 아침 회의 및 퇴실 전, 식사시간 전후로 진행상황 공유
- 코드컨벤션 : 변수명-파스칼 표기법, 클래스명-파스칼 표기법
- 포맷터 : python-black formatter, html-prettier
- 객체에 docs로 설명 작성
- 깃 운영규칙 : 브랜치 작명규칙, 커밋메세지 규칙(https://doublesprogramming.tistory.com/256).
- 개발 환경 관리 : requirements.txt로 관리.
- 독스트링, 주석 컨벤션 - https://engineer-mole.tistory.com/136
- 매일 저녁8시~9시: SA 수정, README 수정
Angry cat WireFrame
ERD
API 명세
이름 | Method | 주소 | Request | Response |
회원가입 | POST | /user/sign | username, password, password2, email | 201, {”message”:회원가입 성공} |
탈퇴 | PUT | /user/sign | password | |
유저정보조회 | GET | /user/sign | - | 200, { ”username”:<varchar>, ”email”:<varchar>, ”bio”:<text>, ”article_count”:<int>, ”comment_count”:<int> } |
유저정보수정 | PUT | /user/sign | - | 200, {”message”:”수정완료”} |
로그인 | POST | /user/token | username, password | 200, { ”access”:<token>, ”refresh”:<token> } |
토큰 재발급 | POST | /user/refresh | refresh token | 200, { ”access”:<token> } |
토큰 검증 | POST | /user/verify | access token | |
게시글 목록조회 | GET | /article /article/(쿼리시) ?page=<int:pagenum> ?user=<int:userid> ?bookmark=<bool> ?trending=<bool> | - | 200, { ”count”:”” ”next”:”” ”previous”:”” ”results”:[{ "id":<int>, "author": <varchar>, "title" : <varchar(30)>, ”image”:<File>, "created_at" : <DateTime>, "author_id": <int>, ”likes_count”:<int>, ”comment_count”:<int>, }]} |
글상세조회 | GET | /article/<int:article_id> | - | 200, { "id":<int>, "author": <varchar>, "title" : varchar(30), ”description”:text, ”image”:<File>, ”cat_says”:<text> "created_at" : DateTime, ”updated_at”:DateTime, "author_name" varchar, ”likes_count”:int, ”comment_count”:int } |
글 작성 | POST | /article | title, description, image, cat_says | 201, {”message”:”작성완료”} |
글 삭제 | DELETE | /article/<int:article_id> | - | 204, {”message”:”삭제완료”} |
글 수정 | PUT | /article/<int:article_id> | title, description, cat_says | 200, {”message”:”수정완료”} |
좋아요 | POST | /article/<int:article_id>/like | - | 200,{”message”:”like했습니다.”} |
북마크 | POST | /article/<int:article_id>/bookmark | - | 200,{”message”:”북마크 추가되었습니다.”} |
댓글 작성 | POST | /article/<int:article_id>/comment | content | 200, {"message": "작성완료"} |
댓글 조회 | GET | /article/<int:article_id>/comment /(쿼리시)/page=<int:pagenum> | - | 200, { author:<varchar>, content:<text>, created_at:<DateTime>, updated_at:<DateTime> } |
댓글 수정 | PUT | /article/comment/<int:comment_id> | content | 200, {”message”:”수정완료”} |
댓글 삭제 | DELETE | /article/comment/<int:comment_id> | - | 204, {”message”:”삭제완료”} |
GPT 요청 | POST | /article/mentgen | description | 200,{”cat_says”:”text”} |
사진수정 | POST | /article/picgen | image | 200,{”image”:imagefile} |