swpp2019-team12's People
Forkers
imchaeminswpp2019-team12's Issues
[FE/BE]Google Auth 추가
Git Commit
깃 커밋 작성 규칙
구조
[TYPE] 제목
- 내용
- 내용
- 내용
Resolved #이슈
See alos #이슈
---
TYPE = [ FE, BE, DB, DOCS, PKG, SETTING ... ]
작성 예시
[FE] 50자 또는 그 이하로 변경 사항을 요약
- 필요하다면 더 자세한 설명을 서술한다. 맥락에 따라서 첫 행이 커밋의 제목처럼, 나머지 내용이 본문처럼 다뤄지는 경우도 있다.
첫 행의 요약과 본문 사이에 빈 행을 넣는 것은 중요하다.
이 규칙을 지키지 않은 경우에는 `log` 또는 `shortlog`, `rebase`와 같은 도구를 사용할 때 혼란스러울 수 있다.
- 이 커밋이 해결한 문제에 관해 설명한다. 어떻게 문제를 해결했는지 설명하기 보다는 왜 이런 변화를 만들었는가에 집중한다. ("어떻게"는 코드가 설명한다.)
이 변경으로 인해 나타나는 부작용이나 직관적이지 않은 결과가 나타나는가? 이 내용을 여기에서 설명한다.
- 개조식 서술도 괜찮음
- 블릿(bullet)으로 하이픈(-)이나 별표(*)를 사용하고, 한 칸의 공간을
띄고 시작하며, 각 항목 사이 빈 행을 넣는 방식이 일반적이나 다양한
관례가 있음
Resolves: #123
See also: #456, #789
참고문헌
[FE/BE]label 단위 검색 기능 구현
Login authentication 방식
Login authentication을 Frontend와 Backend 중 어디서 처리해야 하는지에 관한 논의 필요
Frontend에서 로그인이 되지 않은 유저는 초기 페이지로 라우팅하므로 Backend에서 is_authenticated 을 통해 확인할 필요가 없을 것 같은데, 그럼에도 더블체크를 하는 것이 옳을지, 아니면 하지 않아도 될지에 대해 논의해야 할 것 같습니다.
Proposal
Team12 - Proposal
Service Name:
Smart Metting Note
Members:
- Taeyoung Jang <2012-12506> [email protected]
- Sangyeon Na <2012-12477> [email protected]
- Chaemin Im <2013-10138> [email protected]
- Yeji Ahn <2015-15838> [email protected]
Overall Description:
Smart Work Proceeding is a web service supporting organized documentation and maintenance of work proceedings.
Target Customer:
Every team that:
-
Holds meetings frequently.
-
Creating fabulous ideas.
-
Desires organized management on work proceedings conveniently.
ML Features**:**
Speech to Text
- Automatically create a text organized by speakers through recognizing speakers' voice.
- Select which part of text to include into the document or exclude from it sentence by sentence.
Essential Functions:
- Work proceedings managed by workspace unit
- Provide templates and customize easily
- Tag the speaker
- Upload and download reference files
- GOOOOOD User Experience
Description:
What is important for Projects? Idea? Business model? Yes, but without Management, nothing can be accomplished successfully. During the team meeting, all the members speak a lot and documenting all the ideas and issues is critical for a further progress. However, using 'Google Docs' as a documentation tool never can satisfy users.
'Google Docs' does not support file upload within the document and its workspace is complicated to manage. Our service SWP, however, solves these problems of inconvenience and helps writing and managing work proceedings in a more organized way by providing powerful functionalities.
SWP manages work proceedings with a workspace as a unit, and provides work proceeding templates. Users can customize these templates. SWP also provides a function that helps assign a user to each paragraph to specify the speaker of proposer, and a function that helps download or upload files within the meeting proceeding. A.I. voice recognition function is one of the essential function SWP provides; it transforms recognized voice into text thus allowing unconstrained communication between users. Users can use hash tags to search for specific topics.
Test & Demo:
Back-end will be stested with the Django test code, and front-end will be tested with React test library. Final demo will cover whole procedure of writing work proceeding from making workspace to write out meeting proceeding with voice recognition AI.
Reference Services:
- Google Docs
- Notion
[FE] Note Right (Unfocused)
Note Right Unfocus 된 상황의 Container 개발 필요
[FE] Create Note Modal
노트 생성시 기본 정보 넣는 컴포넌트 필요
[ML]ML Feature 개선안
현재는 회의 전체를 녹음해서 full-script 를 사후에 맥락 파악용으로만 제공하는 상황.
문제점
- Full script의 길이가 굉장히 길 것인데, 과연 유용하게 사용 가능할 것인가? 필요한 부분을
- 회의록 작성에 거의 도움이 되지 않는 feature이기 때문에 좋지 않은 피드백을 받았음
개선안
- TextBlock, 혹은 Agenda를 생성한 경우에만 녹음 활성화
- 녹음을 하면서 실시간으로 STT를 함
- Drag & Drop 가능한 말뭉치로 Text를 제공
TODO
- Google STT API 성능 체크
- 얼마나 딜레이가 큰지
- 얼마나 정확한지
- 얼마가 드는지
- 얼마나 긴 녹음까지 가능한지
- 말뭉치 단위에 대한 설정
- Drag&Drop 기능
[BE] Model Seeding Function
시딩해주는 함수 구현
[FE]Note left와 Note right 컴포넌트 병합
Note right가 사라짐에 따라 Note left로 모든 기능이 옮겨가야 함
[FE]Dashboard UI 변경
[BE] 블록 CRUD 구현
[UI] Github Projects 연구
UI 부분에서 참고가 될 것 같으니 한 번 Github에서 제공하는 Projects 를 사용해보는 것도 좋을 것 같습니다.
[BE] Test Coverage
[BE] API 수정해야 할 부분.
-
UserSerializer에서 create는 그냥 objects.create()와 동일하여 user model에 대해선 password를 제대로 설정하지 못하는 부분.
-
/api/signup/ POST에서 정상적으로 가입된 후에, response로 해당 user의 id를 반환해야하는데
username과 password가 반환된다. (그리고 이거 password 같은 경우에는 해싱되서 나오는거라 뭐 잘은 모르겠지만, 안보여주는게 맞는 것 같음)
[ML] MS Azure STT test
[BE]SSL 설정
[FE/BE]String match 검색 구현 (기본 검색)
- 검색 UI 논의 필요
[BE] Agenda, Todo, TextBlock 관련 crud API
Agenda, Todo, TextBlock 관련 crud API 구현 필요
[GIT]브랜치 전략 변경
Git flow 활용
http://woowabros.github.io/experience/2017/10/30/baemin-mobile-git-branch-strategy.html 참고
- Develop 브랜치 대신 Demo 브랜치를 활용
- 기존 feature에 대한 테스트코드는 직접 Demo 브랜치로 머지
- 새로운 feature에 대한 테스트코드는 해당 feature 브랜치에서 함께 개발 후 PR
- 만약 기존 feature에 대한 테스트코드 코드리뷰가 필요하다면 임시로 test/[해당 feature] 로 PR
- 따로 release 브랜치는 사용하지 않음 (Demo 브랜치가 완성되었다면 팀원 합의 후 Master로 푸시)
[FE]Note Drag and Drop 기능 구현
필요 사항
- 노트를 다시 열었을 때 원래의 순서대로 렌더링 되어야함
- 가로, 세로방향 모두로 DnD 가능
Project Requirements and Specification
Project Requirements and Specification
Team 12
Services Name: Smart Meeting Note
Member
- Taeyoung Jang <2012-12506> [email protected]
- Sangyeon Na <2012-12477> [email protected]
- Chaemin Im <2013-10138> [email protected]
- Yeji Ahn <2015-15838> [email protected]
Version 1.0
Project Abstraction
During the team meeting, all the members speak a lot and documenting all the ideas and issues is critical for a further progress. However, some tools as a documentation tool never can satisfy users. So our service Smart Meeting Note, solves these problems of inconvenience and helps writing and managing meeting note in a more organized way by providing powerful functionalities.
Competitive Analysis
There are two competitors in documention tool service: 'Google Docs' and 'Notion'.
-
Google Docs
-
Pros: Participants of the meeting can easily share documents.
-
Cons: Managing documents by the unit of workspace is complicated, and users cannot upload files inside the document.
-
-
Notion
- Pros: Users also can easily share documents, and users can easily manage documents by the unit of workspace.
- Cons: But because notion is not specialized in meeting notes, users cannot check the flow or the progress of meetings easily.
Customer Needs
- Having a meeting is inevitable for any group. (e.g. team project in school, many types of meetings in company, etc.)
- Meeting participants would want to keep a record of their meeting and share it together simultaneously.
- It will be more useful to keep track of continuous meetings about the same subject.
- Meeting participants would not only want to get a gist of the overall meetings, but also want to see their assigned TODOs at a glance.
User Stories
Story#1: Create Meeting Note
Feature: Create a Meeting Note
Actors: Participants of any kinds of meeting.
Precondition: User needs to be logged in, and also be participated in a specific workspace.
Trigger: Click "Create Meeting Note" button.
Scenario:
- After logging in to a participating workspace, user can create a new meeting note.
- In creating a meeting note page, user can add or delete or modify the components of template(ex. agenda block/graph/calender/image) freely.
- User can create agenda blocks per each agenda, and inside the agenda block, user can write details of the meeting and Todos.
- User can assign workspace participants to each Todos.
- User can tag important keywords to each meeting and save the meeting note by clicking Completed button.
Exception:
- The meeting note must include at least one agenda block.
- If user puts no input to the meeting note, the save button should be deactivated.
Acceptance Test:
- When clicking 'create meeting note' button in the workspace, the screen displays selectable template options.
- User can select appropriate meeting note template and create new meeting note.
- When clicking the + button located at the right bottom side of creating new meeting note page, addable elements appears.
- User can change the position of the component by drag and drop.
- If the agenda block is focused, the block is expanded on the right panel.
- User can create new Todos by + button inside the agenda block.
- When creating new Todos, the screen displays the participants of the workspace who can be assigned.
- User can save the meeting note by clicking the complete button.
Story#2: Overview Previouse Meeting Note
Feature: Overview previous meeting notes.
Actors: Those who want to check their TODOs and previous meeting notes
Precondition: User has to be logged in, and previous meeting notes should exist.
Trigger: Enter the specific workspace
Scenario:
- Workspace home webpage displays the progress of agendas, Todos assigned to each user, and the flow of the previous meeting notes.
- If user want to see the detailed content, user can choose the meeting note of a specific date.
- When clicking Todo, user can see the meeting note containing corresponding Todo.
- After completing Todo, user clicks 'Done' button.
Acceptance Test:
- After logging in the main page of workspace renders the progress of agendas, Todos assigned to each user and the flow of the previous meeting notes.
- If there is completed Todo, user can click 'Done' checkbox. That Todo moves to the list of completed Todos.
- Clicking specific agenda leads to the meeting note of that agenda.
- Selecting specific date leads to the meeting note of that date.
- User can modify the meeting note by clicking the modifying button.
Story#3: Using Auto Typing
Feature: Providing STT(Speech to Text) Feature (ML)
Actors: Those who want to check context of the meeting afterwards
Precondition: User should be on the creating meeting note page. Users' voices should be registered in the ML and there is no identical voice.
Trigger: Click the 'Start STT' button.
**Exception:**Service should prevent a situation which users create several speedwritings by clicking 'Start STT' button and 'Stop' button repeatedly.
Scenario:
- Users keep participate in the meeting.
- User can terminate the recording by clicking Stop button or quitting writing the meeting note.
- The service automatically save the speedwriting of the meeting sorted by each participant's voice.
- User can check the speedwriting of the meeting by clicking 'voice recording' button.
Acceptance Test:
- User clicks 'STT' button inside the meeting note.
- Space which renders text pops up in the right side of the screen, and processed text is stacked in the space.
- STT를 사용한 회의록을 선택하면, 화면 우측에 녹음 기록 보기 버튼이 생긴다. Meeting note which had used the STT feature, the note displays 'Speedwriting' button on the right side of the screen.
- 버튼을 선택하면 저장된 텍스트가 나타난다. When clicking the 'Speedwriting' button, the voice record processed text is displayed.
User Interface Description
(The numbers in mockup is mapped to description numbers)
- If a user clicks New Meeting button, *'Template Select'*page pops up. In this page, the user can add or emit template blocks(components) by checkbox. At least one *'Agenda'block should be selected, or the 'Confirm'*button will be disabled.
- After clicking the confirm button in the Template Select pop-up page, the user will be redirected to a Meeting Note page. This page consists of several blocks selected in the previous stage. The user can fill in these blocks freely. Also, any block can be deleted by pressing *'Delete'*button.
- The user can add additional blocks by pressing *'Add Blocks'*button. A pop-up page similar with the *'Template Select'*page will appear. Blocks that cannot be added more will be disabled.
- The user will be redirected to the *'Meeting Note'*page after selecting the *'Confirm'*button in the *'Add blocks'*page.
- As the user click any block in the *'Meeting Note'*page, a detail about selected block appears in the right section of the browser. Here, the user can write down contents and add 'TODOs'. There are *'Assign to ...'*button in a *'TODO'*block, which shows every assignable participants' list when clicked. The user can choose multiple assignees. The block can be deleted by pressing *'Delete'*button.
- The user can finish creating or editing the meeting page by pressing *'Complete Meeting'*button, and will be redirected to the *'Dashboard'*page. Agendas and TODOs discussed in the meeting is going to be added automatically. Also, new 'Meeting Note' will be also added in the 'Meeting Note Overview' section.
- While creating a new 'Meeting Note', the user can press the 'Auto Typing' button and activate the 'Speech to Text' feature. Every speech of meeting participants' will be translated into text, tagged by the speakers line by line automatically through the AI. This text will be attached to the 'Meeting Note' so that the user can take a look at it afterward.
- Selecting one of the Meeting Notes or TODOs in the Dashboard, the user will be redirected to the specific 'Meeting Note' page and check the details.
Ducks 구조
Ducks 구조
[FE]STT 스크립트 띄울 오른쪽 사이드바 생성
[FE] Agenda Container, TextBlock & Todo Component
Agenda, TextBlock, Todo 개발 필요
[FE] Route와 history 관련
원래 코드에서는
<Route exact path="~">
<SignUp>
</Route>
의 형태로 되어있었는데,
SignUp Component에서 this.props.history.push() 등의 메서드 호출할 때 오류가 발생해서, 찍어보니까 this.props에 history가 비어있는 형태로 오는 것 같습니다.
위의 코드를
<Route exact path="~" component={SignUp} />
으로 바꿔도 될까요?
아니면 혹시 저렇게 해야하는 이유가 있는건가요~?
Model들에 대한 추가 고려사항
-
Image 모델에서 이미지 설명을 위한 caption field를 추가하는 것이 어떨까요?
-
File 모델의 경우 FileField를 사용해서 파일을 저장할 수 있습니다. 따로 url field를 만들기로 했었는데, 그냥 content field를 FileField로 저장하고 url field는 삭제하는 것이 어떤가요?
-
Calendar, Table 모델의 content field를 어떻게 저장해야 하는지에 대해 논의할 필요가 있습니다.
[BE] Agenda 모델에 is_done field 추가
Dashboard에 진행중, 종료된 Agenda 보여주기 위해 필요한 필드
[BE/API] User search / Workspace Search API 구현 필요
- 현재 workspace에서 새로운 member를 추가할 때
- 새로운 workspace 생성시 member를 추가할 때
두 경우에서 입력하는 email 에 따라 해당되는 유저를 찾아주는 filter 기능이 필요할 것 같습니다.
세부 스펙은 아래와 같으면 되지 않을까 싶습니다
- API
GET user/:email
- Response
- Req에서 보내는 email에 일치하는 부분이 있는 유저들
- 예시
- Req : "test"
- Res :
[ {id: 1, email: [email protected], ...}, ... ]
마찬가지로 workspace 모두를 가져오는 것도 필요할 것 같습니다
[COM] Supplement the details of the pages
시간이 남을경우만!
[FE] Test Coverage
[FE]Note 내부 블락을 눌렀을 때 UI 개선안
기존
- Note Left의 블락을 누르면 Note Right에 Detail page가 뜨고 수정 가능
- 블락을 누르지 않는다면 Note Right Unfocused에서 다른 노트들의 정보 제공
개선안
- Note를 통합하고, 블락을 누르면 그 블락이 확대되고 곧바로 수정 가능
- 화면을 넓게 쓸 수 있으므로 왼편과 오른편에 추가적인 사이드바 구현
- 우측: ML feature가 켜진 경우, Text script가 생성
- 좌측: 블락 생성하는 창
TODO
[FE/BE]Image, url, calendar, table, todo block 구현
Backend
- Image, url, calendar, table, todo 저장 방식 확정 (Field 수정)
Frontend
- Note 에서 추가 가능하도록 구현
[FE] Refine Agenda Flow UI
[ML] Google STT API Test
SASS / SCSS
SASS / SCSS
SASS / SCSS 는 CSS 전처리기(preprocessor).
CSS와 기본적인 문법은 동일하나 변수 설정, 함수, mixin 등 여러 추가적인 기능을 제공해준다.
가장 강력한 기능은 다음과 같다!
위 세 기능만 가지고도 충분히 좋다고 느낄거 같은데 적용해보는거 어떤가요?
(사실 이미 적용하고있습니다..)
Reference
[FE] Note Left Container 개발
Note Left Container, Note Left component 개발 필요
[FE] Refine Note Flow UI
[FE] Note Right (Focused)
Note Right Focus 된 상황의 Container 개발 필요
[COM] Supplement the details of the pages
시간이 남을 경우 디테일 챙기기
[FE]Textblock 동시 편집 기능 구현
[FE/BE]사용자들에게 Note 수정 정보 실시간 반영 기능 구현
소켓 통신 구현 필요
[FE/BE]Labeling 기능 추가
TODO
기존 계획
- 해쉬 태그 설정
해쉬태그의 실용성에 대한 의문
개선안
- 라벨링으로 변경 (깃헙 이슈처럼)
- 어젠다 제목을 대체하자는 의견
각 유저의 모든 Todo 를 호출하는 API
현재 각 유저의 모든 Todo list를 호출하는 API url이 다음과 같이 작성되어있습니다.
workspace/w_id/user/u_id/todos
여기서 유저의 id의 경우 request.user.id로 가져올 수 있기 때문에 굳이 /user/u_id/
부분이 필요 없어보입니다.
단순하게 workspace/:id/todos
로 가져와도 될 것으로 보이는데, 의견 부탁드립니다.
[FE] Member 추가 component
Dashboard에서 member 추가하는 component 필요
[FE/BE] Synchronize Modification by Multi Users
API 수정사항
1. /profile/:id/
추가
- GET: 특정 프로필 반환
- PATCH: 특정 프로필 정보 수정
2. /user/:id/
삭제
/profile/:id/
로 통합
3. 모든 블록 수정사항
- 각 블록별로
/workspace/:w_id/notes/n_id/[block]/
로 접근해서 해당 workspace와 note에 속하는 모든 블록을 불러오도록 url이 짜여져 있습니다. 하지만 다음과 같은 문제점이 있습니다.
(1) workspace와 상관없이 notes들은 고유 id가 있기 때문에 workspace의 id가 필요하지 않음
(2) 현재 이 api를 호출하는 component가 note인지 agenda인지에 대한 정보가 없음 (is_parent_note를 특정할 수 없음)
그러므로/parent/p_id/[block]/is_parent_note/
로 api url을 변경하는 것을 건의합니다. 여기에서 is_parent_note는 String으로 True/False를 넣으면 될 것 같습니다.
-
예를 들어 Frontend에서 id=2인 Note Container에 속한 id=3인 Agenda Container에서 Calendar Component를 가져와야한다면,
/parent/3/calendar/False/
로 호출하고, 다른 예시로 id=1인 Note Container에서 직접 Todo Component를 가져와야한다면,/parent/1/todo/True/
로 호출하면 됩니다. -
다른 대안으로, 위의 예시를 각각
/agenda/3/calendar/
와/note/1/todo/
로 나누어 호출하는 것도 생각해볼 수 있습니다. 즉,/agenda/:id/[block]/
과/note/:id/[block]
의 두 API로 나누어 구현하는 것입니다. 이 경우 자동적으로 agenda가 url의 시작이라면 is_parent_note = False로 필터링할 수 있고, 반대도 가능합니다.
- 역시 각 블록별로
/workspace/:w_id/notes/:n_id/[block]/:id/
로 접근해서 해당 workspace와 note에 속하는 특정 블록을 찾아올 수 있도록 url이 짜여있습니다. 역시 다음과 같은 문제점이 있습니다.
(1) workspace와 상관없이 notes들은 고유 id가 있기 때문에 workspace의 id가 필요하지 않음
(2) 나아가 각 블록별 id 역시 고유하므로 note의 id가 필요하지 않음
그러므로/[block]/:id/
로 api url을 변경하는 것을 건의합니다.
의견 부탁드려요!
[SETTING] Requirement.txt / Pylint 설정
[FE/BE]User Auth 개선
문제점
- 로그인 실패시 로그인 실패와 관련된 alert가 없음 (FE)
- 로그인 성공 후, 현재 로그인 된 user 에 대해 알 수 없음 (상태바 추가할 필요성) (FE)
- 로그아웃 구현이 안되어있음 (FE)
- 로그인하지 않은 상태에서도 url로 모든 리소스에 접근 가능함 (FE/BE)
- 가입시 비밀번호 공개 기능 없음 (optional)
- 닉네임 수정기능 없음 (optional)
[FE] Note Wrapping Container
Left Note와 Right Note를 Wrapping 해주는 container 개발 필요
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.