GithubHelp home page GithubHelp logo

swsnu / swpp2019-team19 Goto Github PK

View Code? Open in Web Editor NEW
5.0 5.0 2.0 35.8 MB

Chatbot related to SNU

Home Page: https:///www.snubot.me

HTML 0.34% CSS 2.59% JavaScript 35.03% Python 61.58% Shell 0.34% Jupyter Notebook 0.11%

swpp2019-team19's People

Contributors

bgchun avatar dependabot[bot] avatar desiderare avatar lightb0x avatar sungbin92 avatar ulgal avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

sungbin92 ulgal

swpp2019-team19's Issues

[refactoring] code smell vs redux

./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에 걸리게 됩니다.

Noncompliant Code Example

function multiply(a = 1, b) {  // Noncompliant
  return a*b;
}
var x = multiply(42);  // returns NaN as b is undefined

Compliant Solution

function multiply(b, a = 1) {
  return a*b;
}
var x = multiply(42);  // returns 42 as expected

일단 Articlereducer는 임시방편으로 쓸모없는 값을 주는 defaultAction을 인자로 넘겨줬는데, test-util에서는 해결하지 못했습니다. defaultAction을 주는 것도 굉장히 이상한 것 같아서 이 부분은 다른 분들도 같이 찾아봐 주시면 좋을 것 같습니다.

[Backend] For voting

Changed views.py and tests.py

Todo

  1. views.py : changed like & dislike system
    ( deleted conflict response case, 4 case of user case)

  2. tests.py : due to changes in views.py

frontend-skeleton branch uploaded

TODO:

  1. implementation of {Actions, Reducers, Containers, Components}
  2. write tests
  3. frontend URL change (/:boardName -> /boards/:boardName)

Note:

  1. frontend URL will be redesigned: Design document should be updated

close this issue when frontend is finished

[backend] need fail sign up status

현재 signup은 실패나 성공에 관계없이 201을 반환하는데, 만약 user가 성공적으로 만들어지지 못한 경우 409를 반환하도록 하겠습니다.

missing navbar

navbar 구현이 안되어있습니다.

이는 페이지 구성에서 꽤 중요한 요소이므로
이번 스프린트에 완성하는 게 최선이고, 늦더라도 중간 발표 전까지는 완성되어야 합니다.

backend-template

implement, unit test except Chat
some RESTful API changed, check wiki

TODO:

  • chatbot app(rasa vs django app, after sprint 3)
  • testing(not enough)

[frontend] like / dislike button behavior

지금의 행동은 다음과 같습니다:

like 버튼을 누른 후 dislike 버튼을 누르면 like 의 숫자가 줄어듭니다

여기에서 -> 다음으로 바뀌면 좋을 것 같습니다

like 버튼을 누른 후 다시 like 버튼을 누르는 경우 like 의 숫자가 줄어듭니다.
like버튼과 dislike버튼의 행동이 분리되어야 합니다.

Backend init problem

지금은 backend DB 초기화하는게 어렵습니다
따라서 셸 스크립트를 통해서 이를 자동화하려고 합니다

새로운 브랜치 하나 팠습니다

[rasa challenge] 한국어 지원

한국어 지원을 통해 양질의 답을 얻을 수 있으면 좋을 것 같습니다.

만약 챗봇에서 한국어 지원이 되면 홈페이지 전체적으로 한국어/영어 선택할 수 있는 메뉴, 그리고 그에 따른 한글화 작업도 필요합니다.

[frontend & backend] regarding boardname

어제 frontend reducer에 게시판 이름들이 하드코딩된 문제에 대해서 말씀해주셨습니다. 그리고 backend에 views에서 baordname이 all, hot으로 하드코딩 되어있고, 지금 구현된 방식으로는 잘못된 boardname을 입력했을 때 ArticleList를 가져오는 과정에서 backend에서 제대로 된 error handling이 되어있지 않습니다. 예를 들어 url이 /boards/hoo 면 boardname이 hoo인 게시판을 찾고 404를 반환해야 하는데 지금 구현에서는 hot게시판을 내보내주는 식으로 돼있어요. 그래서

  1. hot 게시판으로 간 글은 all 게시판에서 볼 수 없음
  2. hot 게시판으로 간 글은 all 게시판에서 볼 수 있음
    두 경우 중 어떤 방식으로 할 것인지 먼저 결정하고, 그에 맞게 수정을 해야할 것 같습니다.
    현재 방식은 2번이고, 1번 방식이 더 맞는 방식같아요.

더불어 reducer에서 두 개의 리스트를 갖는 것도 하나로 바꾸자는 말씀을 하셨는데 여기에 같이 달아주시면 좋을 것 같아요.

  1. { [], [] } (dic 안에 list)
  2. [ [], [] ] (list 안에 list)
    어떤 방식으로 하면 좋을 지 말씀해주세요. 이 경우는 기존 방식을 이용하는게 아니라 하나의 요청으로 2개의 리스트를 받아올 수 있도록 새로운 url로 post를 보내는 방식으로 해결하면 좋을 것 같아요.
    CommunityMain을 위한 backend view, frontend action들을 만든다는 의미입니다.

[refactoring] duplicate items

수업시간에 나온 HW2의 createedit처럼, 프로젝트에서도 component 로 나눠야 할 필요성이 있습니다.

또, 보드가 여러개지만 다른 건 거의 없으므로 이것도 component 로 분리하면 좋을 것 같습니다.

[backend] DB change

현재 사용중인 sqlite는 개발용으로는 문제가 없으나, init.sh 실행시에도 상당히 느리고, 높은 확률로 추후에 바꾸게 될 것입니다.

mysql 등 다른 DB로 변경하는 게 바람직합니다.

(backend/SNUBot 내의 설정 두 줄만 바꿔도 충분한 걸로 생각하고있습니다)

그리고 이를 바꾼다면 init.sh도 바꿔야합니다. (rm db.sqlite3)

[rasa challenge] design tool

rasa 설정을 위해선 stories.md, domain.yml, nlu.md 세 파일을 일관성 있게 작성해야합니다. 그렇지 않으면 train도 제대로 이루어지지 않고 실행도 안됩니다.

따라서 다음과 같은 툴이 있으면 좋을 것 같습니다:

  1. dependency checker 또는 generator (위 세 파일 사이에 유지해야 하는 dependency 확인 또는 생성)
  2. stories.md generator (함수 기능이 없는 stories.md의 한계를 깨기 위해)

2번에 대해서는 여기에서 찾아볼 수 있는 checkpoint를 사용해도 되나 소개하는 페이지에서도 이것을 너무 많이 사용하지 말 것을 권하고 있으므로 따로 generator 를 만드는 게 좋을 것 같습니다.

그러나 이는 시간이 오래 걸리고 완성도 또한 장담할 수 없는 것이라 만들기 전에 충분한 논의가 필요합니다.

[frontend] proxy error in console

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).

콘솔창에서 위와 같은 에러가 납니다.
작동은 제대로 하지만 에러를 해결할 필요가 있을 것 같습니다.

signin, signup behavior issue

  1. signup이 성공해도 표시되는 것이 없고 같은 페이지가 바뀌지도 않습니다.
  2. 로그인 된 상태에서 signup, signin 페이지를 접근하는 것이 가능합니다. -> 불가능해야 합니다.

Signup test coverage issue

다른것들은 테스트 커버리지가 높은데 signup만 낮아서 테스트 코드 작성하고 signup 코드도 수정하겠습니다

Signup.js 에서 this.state.content 등 에러 수정하고 테스트를 쉽게 하기 위해 signup 버튼의 행동 수정하겠습니다

Signin low test coverage && bug

  1. Signin 의 테스트 커버리지가 다른 부분들보다 낮고
  2. Signup과 동일하게 password 대신 content 가 쓰여 있는 등의 문제가 있습니다.

ArticleDetail like/dislike button

frontend의 articleDetail 파일에서 like/dislike 구현이 안되어 있습니다.

  1. ArticleDeatil.js
  • Voting action management
    2.ArticleDetail.test.js
  • Testing for changes => might need help...

[refactoring] no more alert!

SonarCloud에서 alert 를 사용하지 말도록 추천하고 있기 때문에, alert 들을 모두 바꿔야 합니다.

예시)
네이버
다음

다음 예시를 따라가는 게 좋을것같습니다

testing history is not available [#64]

#64 에서, 테스트를 작성하기가 불가능해보입니다.

하나의 테스트에서는 create 로 가고, 다른 테스트에서는 board로 가야 하는데, historymock이 안되었는지 테스트가 불가능합니다.

이를 해결하기 위해선 테스트 양식 (템플릿)을 바꿔야 합니다.

[rasa] automating information configuration

rasa에는 세 가지 파일들을 저희가 고칠 수 있습니다: stories.md, nlu.md, domain.yml.

story 안에 story를 넣는게 힘든거같아서, 이를 빠르고 쉽게 만들 수 있는 코드 (아마 파이썬)를 만든다면 좋을 것 같습니다.

여기에서 checkpoint에 대해 얘기하고는 있으나 권장하는 방식이 아니라서 직접 스크립트를 만드는 게 더 좋을 것 같습니다.

[frontend] like & dislike button behavioral issue

지금은 로그인되지 않은 상태에서 버튼을 누르면 아무 일도 일어나지 않습니다.

로그인되지 않은 상태라면 클릭시 로그인이 필요하다는 알림을 띄우거나 버튼을 disable 하는 식의 수정이 필요해보입니다.

Missing slash in url in article action

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

[rasa] backend configuration

지금은 데모를 위해 빠르게 준비하느라 django 백엔드 서버와 rasa 백엔드 서버가 완전히 분리되어있으며 유저 정보는 default라는 스트링으로 들어가게 됩니다.

당장 세션 하나로 동작하는데는 문제가 없겠지만 이후에 여러명이 동시에 접속하는 상황을 상정하면 문제가 생길수도 있을것같고, 더 나은 백엔드 구성을 위해서도 frontend - django - rasa 이런식으로 연결하는게 좋을것같습니다.

이렇게 하면 사용자가 장고로 요청을 보내면(챗을 남기면) 장고에서 사용자의 sessionid를 사용해 rasa에 넘길 수 있습니다. 즉, 간결하고 편리합니다.

더 나은 백엔드 구성이 의미하는것은, 추후에 rasa 부하가 커지게 되면 이를 여러 서버로 분할할 수도 있어야 할텐데, 이 때 장고 백엔드 서버에서 사용자들을 여러 rasa 서버로 분산시키는(뿌려주는) 것을 말합니다.

SonarCloud suggested bug

SonarCloud에서 지금 User.js의 반복되는 코드를 잠재적인 버그로 표현하고 있어서 이를 없앨 필요가 있습니다.

[frontend & backend?] missing good tests

코드가 많이 추가되었지만 테스트는 그만큼 추가되지 않아 커버리지가 떨어지고있습니다.

특히, Branch 커버리지는 이미 80% 이하로 떨어졌습니다.

난관은 다음과 같습니다:

  1. dropdown 선택하기
  2. action, reducer 테스트
    등등

[frontend] basic chat UI implementation

지금은 chat페이지에 메시지만 표시되고 입력 창, 새로 들어오는 메시지를 표시하는 창이 없습니다.

기본적인 채팅 UI를 구현해야 합니다.

[refactoring] code smell in test(redux)

action, reducer, test-utils/mocks에서 순서, 중복 등에 대해 refactoring이 필요하다고 합니다. 제가 짠 코드라 제가 하는게 빠를 것 같아요.

[frontend] .gitignore packages files

.gitignoreyarn.lock, package-lock.json 파일들을 추가하는 안건입니다.

package.json 만 필요하다면 굳이 위의 두 파일들은 공유할 필요가 없습니다.

[RASA] while install

rasa를 설치하면 도중에 tensorflow를 설치하는데, tensorflow는 파이썬 3.5.x, 3.6.x 만 지원합니다.

따라서, pyenv 등을 통해 파이썬 버전을 위와 같이 바꾸고 설치하셔야 합니다.

fix vulnerability code

Sonar cloud 형식에 맞추기 위해서 Alert 이외의 다른 방법으로 구현해야하는 부분을 변경해보도록 하겠습니다.

[frontend & backend] https configuration

지금은 백엔드와 프론트엔드 사이 통신을 HTTP 로 진행하고 있어서 암호 등 서로간의 통신이 암호화되지 않은 상태로 전달됩니다.

개인정보의 안전한 처리를 위해서 HTTPS로 변경이 필요합니다.

django settings bug

오늘 실습시간에 대두된 문제입니다

특정 컴퓨터에서만 CSRF토큰이 작동하지 않았습니다.

django settings.py 에서 MIDDLEWARE 순서를 바꿔서 해결했습니다.
(MIDDLEWARE 에서 corsheaders의 순서를 최대한 위로)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.