swsnu / swpp2019-team19 Goto Github PK
View Code? Open in Web Editor NEWChatbot related to SNU
Home Page: https:///www.snubot.me
Chatbot related to SNU
Home Page: https:///www.snubot.me
./node_modules/redux/lib/redux.js
line 370
function assertReducerShape(reducers) {
Object.keys(reducers).forEach(function (key) {
var reducer = reducers[key];
var initialState = reducer(undefined, {
type: ActionTypes.INIT
});
if (typeof initialState === 'undefined') {
throw new Error("Reducer \"" + key + "\" returned undefined during initialization. " + "If the state passed to the reducer is undefined, you must " + "explicitly return the initial state. The initial state may " + "not be undefined. If you don't want to set a value for this reducer, " + "you can use null instead of undefined.");
}
if (typeof reducer(undefined, {
type: ActionTypes.PROBE_UNKNOWN_ACTION()
}) === 'undefined') {
throw new Error("Reducer \"" + key + "\" returned undefined when probed with a random type. " + ("Don't try to handle " + ActionTypes.INIT + " or other actions in \"redux/*\" ") + "namespace. They are considered private. Instead, you must return the " + "current state for any unknown actions, unless it is undefined, " + "in which case you must return the initial state, regardless of the " + "action type. The initial state may not be undefined, but can be null.");
}
});
}
리덕스의 reducer는 기본적으로 state가 앞에, action이 뒤에 선언되어 article reducer에서도 (state=Initialstate, action) 순으로 선언해야 하는데, 이렇게 선언하면 sonarcloud의 code smell에 걸리게 됩니다.
function multiply(a = 1, b) { // Noncompliant
return a*b;
}
var x = multiply(42); // returns NaN as b is undefined
function multiply(b, a = 1) {
return a*b;
}
var x = multiply(42); // returns 42 as expected
일단 Articlereducer는 임시방편으로 쓸모없는 값을 주는 defaultAction을 인자로 넘겨줬는데, test-util에서는 해결하지 못했습니다. defaultAction을 주는 것도 굉장히 이상한 것 같아서 이 부분은 다른 분들도 같이 찾아봐 주시면 좋을 것 같습니다.
boardDetail
페이지에 sort
기능을 위한 컴포넌트가 없습니다.
Changed views.py and tests.py
Todo
views.py : changed like & dislike system
( deleted conflict response case, 4 case of user case)
tests.py : due to changes in views.py
TODO:
/:boardName
-> /boards/:boardName
)Note:
close this issue when frontend is finished
reudcer 내 alert를 react-bootstrap의 Alert로 바꿧는데 이 부분에서 Unhandled Rejection이 뜹니다.
현재 signup은 실패나 성공에 관계없이 201을 반환하는데, 만약 user가 성공적으로 만들어지지 못한 경우 409를 반환하도록 하겠습니다.
navbar
구현이 안되어있습니다.
이는 페이지 구성에서 꽤 중요한 요소이므로
이번 스프린트에 완성하는 게 최선이고, 늦더라도 중간 발표 전까지는 완성되어야 합니다.
implement, unit test except Chat
some RESTful API changed, check wiki
TODO:
boardDetail
페이지에 create button
이 없습니다.
지금의 행동은 다음과 같습니다:
like
버튼을 누른 후 dislike
버튼을 누르면 like
의 숫자가 줄어듭니다
여기에서 -> 다음으로 바뀌면 좋을 것 같습니다
like
버튼을 누른 후 다시 like
버튼을 누르는 경우 like
의 숫자가 줄어듭니다.
like
버튼과 dislike
버튼의 행동이 분리되어야 합니다.
지금은 backend DB 초기화하는게 어렵습니다
따라서 셸 스크립트를 통해서 이를 자동화하려고 합니다
새로운 브랜치 하나 팠습니다
한국어 지원을 통해 양질의 답을 얻을 수 있으면 좋을 것 같습니다.
만약 챗봇에서 한국어 지원이 되면 홈페이지 전체적으로 한국어/영어 선택할 수 있는 메뉴, 그리고 그에 따른 한글화 작업도 필요합니다.
SonarCloud
를 설정한 후로 PR올릴 때마다 test coverage
가 부족하다며 불평합니다.
sidebar와 topbar를 포함한 custom navbar가 필요합니다.
어제 frontend reducer에 게시판 이름들이 하드코딩된 문제에 대해서 말씀해주셨습니다. 그리고 backend에 views에서 baordname이 all, hot으로 하드코딩 되어있고, 지금 구현된 방식으로는 잘못된 boardname을 입력했을 때 ArticleList를 가져오는 과정에서 backend에서 제대로 된 error handling이 되어있지 않습니다. 예를 들어 url이 /boards/hoo 면 boardname이 hoo인 게시판을 찾고 404를 반환해야 하는데 지금 구현에서는 hot게시판을 내보내주는 식으로 돼있어요. 그래서
더불어 reducer에서 두 개의 리스트를 갖는 것도 하나로 바꾸자는 말씀을 하셨는데 여기에 같이 달아주시면 좋을 것 같아요.
redux에서 alert
를 사용하는 대신, 각각의 컨테이너에서 Alert
를 사용하는 방식으로 바꾸어야 합니다.
수업시간에 나온 HW2의 create
와 edit
처럼, 프로젝트에서도 component
로 나눠야 할 필요성이 있습니다.
또, 보드가 여러개지만 다른 건 거의 없으므로 이것도 component
로 분리하면 좋을 것 같습니다.
현재 사용중인 sqlite
는 개발용으로는 문제가 없으나, init.sh
실행시에도 상당히 느리고, 높은 확률로 추후에 바꾸게 될 것입니다.
mysql
등 다른 DB로 변경하는 게 바람직합니다.
(backend/SNUBot
내의 설정 두 줄만 바꿔도 충분한 걸로 생각하고있습니다)
그리고 이를 바꾼다면 init.sh
도 바꿔야합니다. (rm db.sqlite3
)
rasa 설정을 위해선 stories.md
, domain.yml
, nlu.md
세 파일을 일관성 있게 작성해야합니다. 그렇지 않으면 train도 제대로 이루어지지 않고 실행도 안됩니다.
따라서 다음과 같은 툴이 있으면 좋을 것 같습니다:
stories.md
generator (함수 기능이 없는 stories.md
의 한계를 깨기 위해)2번에 대해서는 여기에서 찾아볼 수 있는 checkpoint
를 사용해도 되나 소개하는 페이지에서도 이것을 너무 많이 사용하지 말 것을 권하고 있으므로 따로 generator 를 만드는 게 좋을 것 같습니다.
그러나 이는 시간이 오래 걸리고 완성도 또한 장담할 수 없는 것이라 만들기 전에 충분한 논의가 필요합니다.
Proxy error: Could not proxy request /api/vote/1/ from localhost:3000 to http://127.0.0.1:8000.
See https://nodejs.org/api/errors.html#errors_common_system_errors for more information (ECONNRESET).
콘솔창에서 위와 같은 에러가 납니다.
작동은 제대로 하지만 에러를 해결할 필요가 있을 것 같습니다.
signup
이 성공해도 표시되는 것이 없고 같은 페이지가 바뀌지도 않습니다.signup
, signin
페이지를 접근하는 것이 가능합니다. -> 불가능해야 합니다.다른것들은 테스트 커버리지가 높은데 signup
만 낮아서 테스트 코드 작성하고 signup
코드도 수정하겠습니다
Signup.js
에서 this.state.content
등 에러 수정하고 테스트를 쉽게 하기 위해 signup
버튼의 행동 수정하겠습니다
Signin
의 테스트 커버리지가 다른 부분들보다 낮고Signup
과 동일하게 password
대신 content
가 쓰여 있는 등의 문제가 있습니다.create article 구현하겠습니다.
frontend의 articleDetail 파일에서 like/dislike 구현이 안되어 있습니다.
#64 에서, 테스트를 작성하기가 불가능해보입니다.
하나의 테스트에서는 create
로 가고, 다른 테스트에서는 board
로 가야 하는데, history
가 mock
이 안되었는지 테스트가 불가능합니다.
이를 해결하기 위해선 테스트 양식 (템플릿)을 바꿔야 합니다.
SonarCloud
에서 빈 파일들을 지우도록 유도하고 있습니다.
이 파일들(*.css
)을 지울 필요가 있습니다.
여기에서 언급되었듯 이번 주말까지 README 에 뱃지가 달려야 합니다.
authenticate 확인하는 부분, json decode해서 parsing하는 부분이 여러번 중복되므로 메서드를 선언하고 이용하는 걸로 하면 좋을 것 같아요.
boardDetail
페이지에서 pagination
구현이 필요합니다.
rasa
에는 세 가지 파일들을 저희가 고칠 수 있습니다: stories.md
, nlu.md
, domain.yml
.
story 안에 story를 넣는게 힘든거같아서, 이를 빠르고 쉽게 만들 수 있는 코드 (아마 파이썬)를 만든다면 좋을 것 같습니다.
여기에서 checkpoint
에 대해 얘기하고는 있으나 권장하는 방식이 아니라서 직접 스크립트를 만드는 게 더 좋을 것 같습니다.
지금은 로그인되지 않은 상태에서 버튼을 누르면 아무 일도 일어나지 않습니다.
로그인되지 않은 상태라면 클릭시 로그인이 필요하다는 알림을 띄우거나 버튼을 disable
하는 식의 수정이 필요해보입니다.
Not directed properly due to missing slash
Found during editing article detail.
Could be merged quickly, since almost no change and for other who uses article actions
지금은 데모를 위해 빠르게 준비하느라 django
백엔드 서버와 rasa
백엔드 서버가 완전히 분리되어있으며 유저 정보는 default
라는 스트링으로 들어가게 됩니다.
당장 세션 하나로 동작하는데는 문제가 없겠지만 이후에 여러명이 동시에 접속하는 상황을 상정하면 문제가 생길수도 있을것같고, 더 나은 백엔드 구성을 위해서도 frontend
- django
- rasa
이런식으로 연결하는게 좋을것같습니다.
이렇게 하면 사용자가 장고로 요청을 보내면(챗을 남기면) 장고에서 사용자의 sessionid
를 사용해 rasa
에 넘길 수 있습니다. 즉, 간결하고 편리합니다.
더 나은 백엔드 구성이 의미하는것은, 추후에 rasa
부하가 커지게 되면 이를 여러 서버로 분할할 수도 있어야 할텐데, 이 때 장고 백엔드 서버에서 사용자들을 여러 rasa
서버로 분산시키는(뿌려주는) 것을 말합니다.
스프린트3 product backlog의 일부로, 검색 기능을 구현해야 합니다.
SonarCloud
에서 지금 User.js
의 반복되는 코드를 잠재적인 버그로 표현하고 있어서 이를 없앨 필요가 있습니다.
communityMain
에서 게시글을 클릭해 들어가면 항상 /all
게시판으로만 들어가집니다.
게시글에 따라 /all
또는 /hot
으로 들어가도록 바뀌어야 합니다.
코드가 많이 추가되었지만 테스트는 그만큼 추가되지 않아 커버리지가 떨어지고있습니다.
특히, Branch
커버리지는 이미 80% 이하로 떨어졌습니다.
난관은 다음과 같습니다:
action
, reducer
테스트지금은 chat
페이지에 메시지만 표시되고 입력 창, 새로 들어오는 메시지를 표시하는 창이 없습니다.
기본적인 채팅 UI를 구현해야 합니다.
/:boardName
resolves to /cha
, /boards
etc, which is not out intended behavior.
I'll fix this soon.
action, reducer, test-utils/mocks에서 순서, 중복 등에 대해 refactoring이 필요하다고 합니다. 제가 짠 코드라 제가 하는게 빠를 것 같아요.
.gitignore
에 yarn.lock
, package-lock.json
파일들을 추가하는 안건입니다.
package.json
만 필요하다면 굳이 위의 두 파일들은 공유할 필요가 없습니다.
Short guide : To let user know how to use SNUBot and regarding features (in brief)
rasa
를 설치하면 도중에 tensorflow
를 설치하는데, tensorflow
는 파이썬 3.5.x
, 3.6.x
만 지원합니다.
따라서, pyenv
등을 통해 파이썬 버전을 위와 같이 바꾸고 설치하셔야 합니다.
Article을 Sorting할 수 있어야 합니다.
Sonar cloud 형식에 맞추기 위해서 Alert 이외의 다른 방법으로 구현해야하는 부분을 변경해보도록 하겠습니다.
지금은 백엔드와 프론트엔드 사이 통신을 HTTP
로 진행하고 있어서 암호 등 서로간의 통신이 암호화되지 않은 상태로 전달됩니다.
개인정보의 안전한 처리를 위해서 HTTPS
로 변경이 필요합니다.
Adding build badge from travis-ci
오늘 실습시간에 대두된 문제입니다
특정 컴퓨터에서만 CSRF토큰이 작동하지 않았습니다.
django settings.py
에서 MIDDLEWARE 순서를 바꿔서 해결했습니다.
(MIDDLEWARE 에서 corsheaders
의 순서를 최대한 위로)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.