{"id":19982889,"url":"https://github.com/osamhack2020/infra_meditact_meditact","last_synced_at":"2025-05-04T05:32:37.041Z","repository":{"id":56576546,"uuid":"301730618","full_name":"osamhack2020/Infra_Meditact_Meditact","owner":"osamhack2020","description":"국군 장병을 위한 AI 기반 비대면 의료 서비스 Meditact💊","archived":false,"fork":false,"pushed_at":"2021-05-31T14:29:19.000Z","size":63516,"stargazers_count":8,"open_issues_count":2,"forks_count":6,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-08T04:34:12.947Z","etag":null,"topics":["chatbot","docker","kubernetes","react","ui","webpack"],"latest_commit_sha":null,"homepage":"http://35.224.66.230/","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/osamhack2020.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-10-06T13:10:20.000Z","updated_at":"2024-05-24T09:48:46.000Z","dependencies_parsed_at":"2022-08-15T21:20:18.602Z","dependency_job_id":null,"html_url":"https://github.com/osamhack2020/Infra_Meditact_Meditact","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/osamhack2020%2FInfra_Meditact_Meditact","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/osamhack2020%2FInfra_Meditact_Meditact/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/osamhack2020%2FInfra_Meditact_Meditact/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/osamhack2020%2FInfra_Meditact_Meditact/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/osamhack2020","download_url":"https://codeload.github.com/osamhack2020/Infra_Meditact_Meditact/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252293082,"owners_count":21724960,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["chatbot","docker","kubernetes","react","ui","webpack"],"created_at":"2024-11-13T04:13:20.800Z","updated_at":"2025-05-04T05:32:32.029Z","avatar_url":"https://github.com/osamhack2020.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Meditact\n\n국군 장병을 위한 AI 기반 비대면 의료 서비스 [**_Meditact_**](http://35.224.66.230/)\n\n[![logo](https://github.com/osamhack2020/WEB_Meditact_Meditact/blob/main/src/logo2.png)](http://35.224.66.230/)\n\n\u003cp align=\"center\"\u003e\n\t\u003ca href=\"https://github.com/osamhack2020/Infra_Meditact_Meditact/search?l=TSX\u0026type=code\"\u003e\u003cimg alt=\"GitHub language count\" src=\"https://img.shields.io/github/languages/count/osamhack2020/Infra_Meditact_Meditact\"\u003e\u003c/a\u003e\n\t\u003ca href=\"https://github.com/osamhack2020/Infra_Meditact_Meditact/graphs/contributors\"\u003e\u003cimg alt=\"GitHub contributors\" src=\"https://img.shields.io/github/contributors/osamhack2020/Infra_Meditact_Meditact?color=success\"\u003e\u003c/a\u003e\n\t\u003ca href=\"https://github.com/osamhack2020/Infra_Meditact_Meditact/stargazers\"\u003e\u003cimg alt=\"GitHub stars\" src=\"https://img.shields.io/github/stars/osamhack2020/Infra_Meditact_Meditact\"\u003e\u003c/a\u003e\n\t\u003ca href=\"https://github.com/osamhack2020/Infra_Meditact_Meditact/network\"\u003e\u003cimg alt=\"GitHub forks\" src=\"https://img.shields.io/github/forks/osamhack2020/Infra_Meditact_Meditact\"\u003e\u003c/a\u003e\n\t\u003ca href=\"https://github.com/osamhack2020/Infra_Meditact_Meditact/blob/master/LICENSE\"\u003e\u003cimg alt=\"GitHub license\" src=\"https://img.shields.io/github/license/osamhack2020/Infra_Meditact_Meditact\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n---\n\n**_Meditact_** 는 Medicine와 Untact를 합친 합성어로, 국군 의료 서비스의 편리함을 향상시키기 위해 탄생한 프로젝트입니다. 사용자들은 기존의 안내가 부족하던 병원 홈페이지에서 벗어나, 본인에게 필요한 서비스를 주도적으로 찾아 이용할 수 있습니다.\n\n#### 1. 사용자 중심형 AI 챗봇 서비스\n- 한눈에 이해하기 어려운 기존의 병원 홈페이지에서 벗어나, 환자 본인에게 필요한 서비스와 정보를 주도적으로 찾아 이용할 수 있는 환경을 제공합니다.\n- 트리형 구조를 가진 챗봇은 직관적인 UI로 사용자가 원하는 정보를 빠르게 얻을 수 있도록 도와줍니다\n\n#### 2. 딥러닝 기반 진료과 추천 시스템\n- 딥러닝을 이용한 자연어처리 기술을 바탕으로 환자가 호소하는 증상을 분석하여 어느 진료과로 가야 최상의 치료를 받을 수 있는지 판단할 수 있도록 도와줍니다.\n\n#### 3. 비대면 의료 상담 서비스\n-  GOP/GP 근무와 같은 지리적 한계와 COVID-19와 같은 시대적 상황을 극복하고, 군장병의 건강을 보장하기 위한 기본적인 건강 상담 서비스를 제공합니다.\n\n#### 4. 온라인 진료 예약 서비스\n- 진료 대기 시간을 최소화하고, 어렵게 군병원에 발걸음 하는 모든 장병들이 빠짐없이 최상의 의료서비스를 받을 수 있도록 온라인 진료 예약 서비스를 제공합니다.\n\n#### 프로젝트 설명 영상 :point_down:\n\n\u003ca href=\"https://youtu.be/rY56N51-jr8\"\u003e\u003cimg src=\"https://github.com/osamhack2020/WEB_Meditact_Meditact/blob/main/src/playbutton.jpg\" width=\"400\"\u003e\u003c/a\u003e\n\n- \u003ca href=\"https://drive.google.com/drive/folders/11_kpVcOpbCIaYFENpywC9GHO2Axen6XJ?usp=sharing\"\u003e영상 다운로드 링크\u003c/a\u003e\n\n#### 발표자료 :point_down:\n\n\u003ca href=\"https://github.com/osamhack2020/Infra_Meditact_Meditact/blob/master/Meditact_final.pdf\"\u003e\u003cimg src=\"https://github.com/osamhack2020/WEB_Meditact_Meditact/blob/main/src/pptbutton.png\" width=\"400\"\u003e\u003c/a\u003e\n\n## 기능 설계\n\n### Deep Learning\n\n#### 데이터셋 구축\n\n- [하이닥](https://www.hidoc.co.kr/)이라는 플랫폼의 질문을 스크래핑하여  11만 8008개의 데이터를 확보하였습니다.\n- 군의관이 직접 데이터 정리(cleaning) 및 라벨링(labeling)한 증상-진료과 데이터 5만 1134개 구축하였습니다.\n- [Github](https://github.com/osamhack2020/Infra_Meditact_Meditact/tree/master/data)과 [Kaggle](https://www.kaggle.com/hyeonhoonlee/classification-of-symptom)을 통해 데이터셋을 공개하였습니다.\n\n\u003cimg src=\"https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fd8b82b6e-82ed-4a56-8035-1ef46e409699%2F_2020-10-30__4.38.28.png?table=block\u0026id=cf90258b-e3dc-4ef3-80c8-60b9dfc1c035\u0026width=4090\u0026userId=\u0026cache=v2\" width=\"1000\"/\u003e\n\n\n#### 데이터 전처리\n\n\u003cimg src=\"https://github.com/osamhack2020/WEB_Meditact_Meditact/blob/main/src/konlp.png\" width=\"250\"/\u003e\n\n- python의 **re**와 **konlpy** 패키지를 이용하여 형태소를 분석하여 명사를 추출하여 데이터를 전처리하였습니다.\n\n\n#### 탐색적 데이터 분석\n\n- 진료과별 데이터 현황\n\n    \u003cimg src=\"https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F7ff9db8d-dc06-4335-92f6-8574f6e79b48%2F111.png?table=block\u0026id=d1ad8778-22a4-45c7-88f9-0930e6e8ccb1\u0026width=2350\u0026userId=\u0026cache=v2\" width=\"750\"/\u003e\n\n- 각 문장별 단어 갯수 분석\n\n    \u003cimg src=\"https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F8955d36d-5df7-4b23-8aec-09d3345219bb%2F333.png?table=block\u0026id=13c22bbb-c41c-46fa-a555-742cc81e9d36\u0026width=670\u0026userId=\u0026cache=v2\" width=\"550\"/\u003e\n\n- 워드클라우드를 통한 다빈도 단어 분석\n\n    \u003cimg src=\"https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F750d0344-c8d4-4c8f-8693-9ce7852534e7%2F222.png?table=block\u0026id=d8f7dc7c-181f-4335-b876-cacf4e51c1bf\u0026width=700\u0026userId=\u0026cache=v2\" width=\"550\"/\u003e\n\n\n#### 진료과 분류 딥러닝 모델 개발\n\n- LSTM, FastText, BERT 3가지 자연어 처리 모델 개발 및 성능 분석\n\n||\u003cimg src=\"https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F61edec61-392c-495a-a64e-24dd86f7da29%2F_2020-10-30__7.55.59.png?table=block\u0026id=bd02b5bd-79a0-4e7d-891b-d658ad05b7b3\u0026width=820\u0026userId=\u0026cache=v2\" width=\"200\"/\u003e|\u003cimg src=\"https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F244a7a6a-bb5e-4e93-b218-c5a800384724%2F_2020-10-30__7.56.02.png?table=block\u0026id=d08359bb-717f-4055-b8be-4fa413979be6\u0026width=2880\u0026userId=\u0026cache=v2\" width=\"200\"/\u003e|\u003cimg src=\"https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Ff182dc83-a064-4594-987a-89d62890a626%2F_2020-10-30__7.56.05.png?table=block\u0026id=80cd0bcd-e151-432a-9b4a-3d2f22778505\u0026width=1030\u0026userId=\u0026cache=v2\" width=\"200\"/\u003e|\n|:----:|:----:|:--------:|:-----:|\n|모델명|LSTM|FastText|BERT|\n|분류 정확도|73.52%|37.44%|76.29%|\n\n- **오픈소스 해커톤**의 취지에 맞게, 각 모델의 생성과정을 **누구나** 따라 할 수 있도록 [Github](https://github.com)에 JupyterNotebook(.ipynb) 파일을 제공하였습니다.\n\n#### 최종 배포용 모델 선정\n\n- BERT 모델이 약 2.7% 더 좋은 성능을 보였으나, 기본 사이즈의 Google cloud vm instance를 사용하는 상황에 큰 용량의 모델을 사용하는 건 위험성 높다고 판단하였습니다.\n- 따라서, 성능이 유사하면서도 가볍고 호환성이 높은 LSTM 모델을 최종적으로 선택하였습니다.\n\n\n### Web Front-end\n\n#### 디자인에 사용한 패키지와 이유\n\n| semantic ui |  styled-component|\n|:----------:| :--------: |\n| \u003cimg src=\"https://miro.medium.com/max/450/1*2RMwBa_m2kSculsGYB48uQ.png\" width=\"150\"/\u003e| \u003cimg src=\"https://blog.kakaocdn.net/dn/AMVCv/btqGbqFAeG4/VL93Ekz0y1iyALV25fAcS1/img.png\" width=\"150\"/\u003e |\n| 많은 템플릿과 객체(ex : button, table 등)을 제공해주고, 이들을 커스터마이징하기 쉽게 구현되어 있습니다. 또한 모든 객체들은 반응형으로 구성되어 반응형웹을 제작하기에도 편리하기 때문에 선택하였습니다. | 인라인 스타일을 적용하면 코드의 가독성이 떨어지고 스타일을 변경하는데도 어려움이 있습니다. styled-component는 스타일 객체를 한 데 모아 관리하기 때문에 앞에 설명한 문제점들을 해결해 줄 수 있다고 생각하여 선택하였습니다. |\n\n#### 디자인 구성 방향\n\n- 디자인을 구성할 때는 **semantic ui**에서 제공하는 템플릿을 활용하였습니다. 시간 단축에도 큰 도움이 되고, semantic ui에서 제공하는 객체들을 사용하면 반응형 웹을 제작하기에도\n  유리하기 때문입니다.\n\n- **semantic ui**에서 제공하는 템플릿을 기초로 하였기 때문에 목업이나 프로토타입을 만들 필요가 없었습니다.\n\n- [Grid](https://semantic-ui.com/examples/grid.html 'what is grid?') 레이아웃을 적용하여 페이지 레이아웃을 구성하기로 하였습니다. \n\n#### 페이지 구성\n\n- **챗봇 페이지**\n  - 챗봇 페이지의 프론트는 오픈소스 프로젝트 [Alpha](https://github.com/IcaliaLabs/alpha)를 활용하였습니다. 코드가 직관적이고 커스터마이징이 편하다는 장점이 있었습니다.\n\n- **예약하기 페이지**\n  - 핵심 기능 중 하나이기 때문에 해당 페이지로 접근할 수 있는 방법을 \"헤더에 위치한 카테고리\", \"메인 배너 위 버튼\" 이 두 가지로 제시 하였습니다.\n  - 군의관들의 정보를 카드형태로 출력하였습니다. 해당 카드를 클릭하면 선택된 군의관의 자세한 정보가 기존 페이지에서 출력될 수 있도록 구성하였습니다.\n     불필요한 리디렉션을 방지하고 디자인적으로도 깔끔해 보인다고 생각합니다.\n  - 유저(환자)들이 원하는 군의관을 빠르게 찾을 수 있게 하기위해 필터를 적용하였습니다. 자신이 희망하는 진료과를 선택하면 해당 진료과에 속해있는 군의관만\n     출력됩니다. (검색을 적용하지 않은 이유는 유저(환자)들이 군의관의 이름을 외우는 경우는 드물다고 생각하였고, 때문에 있으나 마나한 기능이 될 수 있다고 생각했기 때문입니다.)\n  \n- **공지사항 페이지**\n  - 메인 페이지에서 출력하도록 구성하였습니다. 굳이 다른 경로를 이용하여 공지사항을 출력해주는 것 보다 시간적으로 더 효율적이라고 생각했기 때문입니다.\n\n- **병원정보 페이지**\n  - **병원정보**는 국군수도병원의 정보를 바탕으로 하였습니다. 저희 페이지에서 출력 가능한 부분은 직접 구현하였고, 그렇지 못한 페이지는 국군수도병원 페이지로 리디렉션이 되도록 구현하였습니다.\n  - 네비게이션을 구현하여 원하는 정보(병원 가는 길, 시설안내 등)를 클릭하면 그에 맞는 정보가 페이지에서 출력됩니다.\n  \n- **건강관리 페이지**\n    - 자신이 속한 부대와 본인의 기본 개인정보가 포함되어 있습니다. \n    - **상담하기** 기능이 포함되어 있습니다.\n        - 자신이 상담하기 희망하는 군의관을 선택할 수 있습니다.\n        - 제목과 본문을 나누어 제목을 통해 어드민(or 군의관)이 본문을 유추할 수 있게끔 구성하였습니다.\n\n#### 각 페이지별 구성 기능\n\n- 챗봇 페이지 \u003cbr\u003e\n\u003ctable\u003e\n\t\u003ctbody\u003e\n\t\t\u003ctr\u003e\n            \u003ctd rowspan=\"6\"\u003e\u003cdiv align=\"center\"\u003e\u003cimg src=\"https://github.com/osamhack2020/WEB_Meditact_Meditact/blob/main/src/demo.gif\" width=\"40%\" height=\"40%\"\u003e\u003c/a\u003e\u003c/div\u003e\u003c/td\u003e\n            \u003ctd width=\"33%\"\u003eNLP를 이용한 진료과 분류\u003c/td\u003e\n        \u003c/tr\u003e\n\t\u003ctr\u003e\n\t    \u003ctd\u003e버튼기반의 편리한 UI/UX 제공\u003c/td\u003e\n\t\u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e병원 예약 기능\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e상담 연결 및 군 병원 정보를 출력\u003c/td\u003e\n        \u003c/tr\u003e\n    \u003c/tbody\u003e\n\u003c/table\u003e\n\n- 메인 페이지 \u003cbr\u003e\n\u003ctable\u003e\n    \u003ctbody\u003e\n        \u003ctr\u003e\n            \u003ctd rowspan=\"6\"\u003e\u003cdiv align=\"center\"\u003e\u003cimg src=\"https://github.com/osamhack2020/WEB_Meditact_Meditact/blob/client/src/images/forReadme/main.png\" width=\"40%\" height=\"40%\"\u003e\u003c/a\u003e\u003c/div\u003e\u003c/td\u003e\n            \u003ctd width=\"33%\"\u003e 헤더 출력기능 \u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e 공지사항 출력\u003c/td\u003e\n        \u003c/tr\u003e\n    \u003c/tbody\u003e\n\u003c/table\u003e\n\n- 예약 페이지(User) \u003cbr\u003e\n\u003ctable\u003e\n    \u003ctbody\u003e\n        \u003ctr\u003e\n            \u003ctd rowspan=\"6\"\u003e\u003cdiv align=\"center\"\u003e\u003cimg src=\"https://github.com/osamhack2020/WEB_Meditact_Meditact/blob/client/src/images/forReadme/reservation(user).png\" width=\"40%\" height=\"40%\"\u003e\u003c/a\u003e\u003c/div\u003e\u003c/td\u003e\n            \u003ctd width=\"33%\"\u003e 군의관 리스트 출력 \u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e군의관 필터기능\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e군의관 선택기능\u003c/td\u003e\n        \u003c/tr\u003e\n    \u003c/tbody\u003e\n\u003c/table\u003e\n\n- 예약 페이지 (User) *예약하기 클릭 시* \u003cbr\u003e\n\u003ctable\u003e\n    \u003ctbody\u003e\n        \u003ctr\u003e\n            \u003ctd rowspan=\"6\"\u003e\u003cdiv align=\"center\"\u003e\u003cimg src=\"https://github.com/osamhack2020/WEB_Meditact_Meditact/blob/client/src/images/forReadme/reservation2.png\" width=\"40%\" height=\"40%\"\u003e\u003c/a\u003e\u003c/div\u003e\u003c/td\u003e\n            \u003ctd width=\"33%\"\u003e 군의관 정보 출력\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e예약가능시간 출력\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e군의관 선택기능\u003c/td\u003e\n        \u003c/tr\u003e\n    \u003c/tbody\u003e\n\u003c/table\u003e\n\n- 예약 페이지(Admin) \u003cbr\u003e\n\u003ctable\u003e\n    \u003ctbody\u003e\n        \u003ctr\u003e\n            \u003ctd rowspan=\"6\"\u003e\u003cdiv align=\"center\"\u003e\u003cimg src=\"https://github.com/osamhack2020/WEB_Meditact_Meditact/blob/client/src/images/forReadme/reservation(admin).png\" width=\"40%\" height=\"40%\"\u003e\u003c/a\u003e\u003c/div\u003e\u003c/td\u003e\n            \u003ctd width=\"33%\"\u003e 예약현황 출력 \u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e예약 승인 / 거부 기능\u003c/td\u003e\n        \u003c/tr\u003e\n    \u003c/tbody\u003e\n\u003c/table\u003e\n\n- 예약 페이지(Medic) \u003cbr\u003e\n\u003ctable\u003e\n    \u003ctbody\u003e\n        \u003ctr\u003e\n            \u003ctd rowspan=\"6\"\u003e\u003cdiv align=\"center\"\u003e\u003cimg src=\"https://github.com/osamhack2020/WEB_Meditact_Meditact/blob/client/src/images/forReadme/reservation(medic).png\" width=\"40%\" height=\"40%\"\u003e\u003c/a\u003e\u003c/div\u003e\u003c/td\u003e\n            \u003ctd width=\"33%\"\u003e 승인된 예약 현황 \u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e등록된 상담 확인 기능\u003c/td\u003e\n        \u003c/tr\u003e\n    \u003c/tbody\u003e\n\u003c/table\u003e\n\n- 건강관리 페이지 \u003cbr\u003e\n\u003ctable\u003e\n    \u003ctbody\u003e\n        \u003ctr\u003e\n            \u003ctd rowspan=\"6\"\u003e\u003cdiv align=\"center\"\u003e\u003cimg src=\"https://github.com/osamhack2020/WEB_Meditact_Meditact/blob/client/src/images/forReadme/my_consult.png\" width=\"40%\" height=\"40%\"\u003e\u003c/a\u003e\u003c/div\u003e\u003c/td\u003e\n            \u003ctd width=\"33%\"\u003e사용자의 소속 부대 정보 출력\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e사용자의 기본 정보 출력\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e상담 게시판 사용 기능\u003c/td\u003e\n        \u003c/tr\u003e\n    \u003c/tbody\u003e\n\u003c/table\u003e\n\n- 정보 페이지 \u003cbr\u003e\n\u003ctable\u003e\n    \u003ctbody\u003e\n        \u003ctr\u003e\n            \u003ctd rowspan=\"6\"\u003e\u003cdiv align=\"center\"\u003e\u003cimg src=\"https://github.com/osamhack2020/WEB_Meditact_Meditact/blob/client/src/images/forReadme/information.png\" width=\"40%\" height=\"40%\"\u003e\u003c/a\u003e\u003c/div\u003e\u003c/td\u003e\n            \u003ctd width=\"33%\"\u003e기재된 정보가 출력된 국군수도병원 페이지로 리디렉션\u003c/td\u003e\n        \u003c/tr\u003e\n    \u003c/tbody\u003e\n\u003c/table\u003e\n\n\n### Web Back-end\n\n3가지 주요 기능별로 API의 End Point를 구별하였습니다.\n\nUser, Post, Appt ( 유저, 글쓰기, 예약 ) 3가지 API를 구성하였으며, 그에 따른 API 명세는 다음과 같습니다.\n\n- [USER API](./server/APIdocs/UserAPI.md) ( 유저 정보 관련 API )\n- [POST API](./server/APIdocs/PostAPI.md) ( 상담 글쓰기 관련 API )\n- [APPT API](./server/APIdocs/ApptAPI.md) ( 예약관련 API )\n\n### Infra Structure\n\n- Google Cloud Platform을 기반으로 채팅 앱을 컨테이너화 했습니다.\n\n- 도커로 만들어진 컨테이너는 쿠버네티스가 컨트롤 합니다.\n\n- 쿠버네티스와 로드밸런서가 24시간동안 무중단으로 챗봇이 작동하는 것을 돕습니다.\n\n- Github Repository에 소스가 push되어 수정되면, 자동으로 build하여 업데이트 되도록 세팅하였습니다.\n\n[![automated-Build.gif](https://i.postimg.cc/wvM9R1c8/automated-Build.gif)](https://postimg.cc/R3kkjVDX)\n![meditact-Infra.png](https://i.postimg.cc/yYYk4kGs/meditact-Infra.png)\n\n\n\n## 컴퓨터 구성 / 필수 조건 안내 (Prerequisites)\n\n- ECMAScript 6 지원 브라우저 사용\n\n- 브라우저 지원 버젼\n\n![\"browser img\"](https://github.com/osamhack2020/WEB_Meditact_Meditact/blob/client/src/images/forReadme/browser.png)\n\n## 기술 스택 (Technique Used)\n\n### Deep Learning\n\n\u003ctable\u003e\n\u003ctbody\u003e\n    \u003ctr\u003e\n        \u003ctd width=\"60\"\u003e\n            \u003cdiv align=\"center\"\u003e\u003ca href=\"https://www.python.org\" target=\"_blank\"\u003e \u003cimg src=\"https://www.python.org/static/img/python-logo@2x.png\" alt=\"python\" height=\"40\"/\u003e \u003c/a\u003e\u003cbr\u003ePython\u003c/br\u003e\u003c/div\u003e\n        \u003c/td\u003e\n          \u003ctd\u003e\n            \u003cdiv align=\"center\"\u003e\u003ca href=\"https://www.tensorflow.org/\" target=\"_blank\"\u003e \u003cimg src=\"https://www.gstatic.com/devrel-devsite/prod/vfe8af62599ec445552c3fb43608c37ff46463c9fce3b14d8ee63b2e71edddffd/tensorflow/images/lockup.svg?dcb_=0.6050776491075445\" alt=\"tensorflow\" height=\"40\"/\u003e \n            \u003c/a\u003e\u003cbr\u003eTensorflow\u003c/br\u003e\u003c/div\u003e\n        \u003c/td\u003e\n        \u003ctd\u003e\n            \u003cdiv align=\"center\"\u003e\u003ca href=\"https://keras.io/\" target=\"_blank\"\u003e \u003cimg src=\"https://keras.io/img/logo.png\" alt=\"keras\" height=\"40\"/\u003e \u003c/a\u003e\u003cbr\u003eKeras\u003c/br\u003e\u003c/div\u003e\n        \u003c/td\u003e\n        \u003ctd width=\"60\"\u003e\n            \u003cdiv align=\"center\"\u003e\u003ca href=\"https://github.com/huggingface/transformers\" target=\"_blank\"\u003e \u003cimg src=\"https://raw.githubusercontent.com/huggingface/transformers/master/docs/source/imgs/transformers_logo_name.png\" alt=\"transformers\" height=\"40\"/\u003e \u003c/a\u003e\u003cbr\u003eTransformers\u003c/br\u003e\u003c/div\u003e\n        \u003c/td\u003e\n    \u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\n### Web Front-end\n\n\u003ctable\u003e\n\u003ctbody\u003e\n    \u003ctr\u003e\n        \u003ctd width=\"60\"\u003e\n            \u003cdiv align=\"center\"\u003e\u003ca href=\"https://nodejs.org\" target=\"_blank\"\u003e \u003cimg src=\"https://devicons.github.io/devicon/devicon.git/icons/nodejs/nodejs-original-wordmark.svg\" alt=\"nodejs\" width=\"40\" height=\"40\"/\u003e \u003c/a\u003e\u003cbr\u003eNode.js\u003c/br\u003e\u003c/div\u003e\n        \u003c/td\u003e\n          \u003ctd\u003e\n            \u003cdiv align=\"center\"\u003e\u003ca href=\"https://babeljs.io/\" target=\"_blank\"\u003e \u003cimg src=\"https://www.vectorlogo.zone/logos/babeljs/babeljs-icon.svg\" alt=\"babel\" width=\"40\" height=\"40\"/\u003e \n            \u003c/a\u003e\u003cbr\u003eBabel\u003c/br\u003e\u003c/div\u003e\n        \u003c/td\u003e\n        \u003ctd\u003e\n            \u003cdiv align=\"center\"\u003e\u003ca href=\"https://webpack.js.org\" target=\"_blank\"\u003e \u003cimg src=\"https://devicons.github.io/devicon/devicon.git/icons/webpack/webpack-original.svg\" alt=\"webpack\" width=\"40\" height=\"40\"/\u003e \u003c/a\u003e\u003cbr\u003eWebpack\u003c/br\u003e\u003c/div\u003e\n        \u003c/td\u003e\n        \u003ctd width=\"60\"\u003e\n            \u003cdiv align=\"center\"\u003e\u003ca href=\"https://developer.mozilla.org/en-US/docs/Web/JavaScript\" target=\"_blank\"\u003e \u003cimg src=\"https://devicons.github.io/devicon/devicon.git/icons/javascript/javascript-original.svg\" alt=\"javascript\" width=\"40\" height=\"40\"/\u003e \u003c/a\u003e\u003cbr\u003eJavascript\u003c/br\u003e\u003c/div\u003e\n        \u003c/td\u003e\n        \u003ctd width=\"60\"\u003e\n            \u003cdiv align=\"center\"\u003e\u003ca href=\"https://redux.js.org/\" target=\"_blank\"\u003e \u003cimg src=\"https://e7.pngegg.com/pngimages/413/852/png-clipart-redux-react-logo-javascript-dq-purple-violet-thumbnail.png\" alt=\"redux\" width=\"40\" height=\"40\"/\u003e \u003c/a\u003e\u003cbr\u003eredux\u003c/br\u003e\u003c/div\u003e\n        \u003c/td\u003e\n        \u003ctd\u003e\n            \u003cdiv align=\"center\"\u003e\u003ca href=\"https://github.com/zalmoxisus/redux-devtools-extension\" target=\"_blank\"\u003e \u003cimg src=\"https://lh3.googleusercontent.com/vCbHTO3hh4rIPl5XPab0ZXYEY1kmwzHvbvd3CPcXxunuCSn8ouz54Kc6xuxR88RP83bErQOt4Q=w128-h128-e365\" alt=\"redux\" height=\"40\"/\u003e \u003c/a\u003e\u003cbr\u003eredux-devtool\u003c/br\u003e\u003c/div\u003e\n        \u003c/td\u003e\n    \u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\n### Web Back-end\n\n\u003ctable\u003e\n\u003ctbody\u003e\n    \u003ctr\u003e\n        \u003ctd width=\"60\"\u003e\n            \u003cdiv align=\"center\"\u003e\u003ca href=\"https://nodejs.org\" target=\"_blank\"\u003e \u003cimg src=\"https://devicons.github.io/devicon/devicon.git/icons/nodejs/nodejs-original-wordmark.svg\" alt=\"nodejs\" width=\"40\" height=\"40\"/\u003e \u003c/a\u003e\u003cbr\u003eNode.js\u003c/br\u003e\u003c/div\u003e\n        \u003c/td\u003e\n              \u003ctd width=\"60\"\u003e\n            \u003cdiv align=\"center\"\u003e\u003ca href=\"https://expressjs.com\" target=\"_blank\"\u003e \u003cimg src=\"https://expressjs.com/images/express-facebook-share.png\" alt=\"MONGODB\" width=\"40\" height=\"40\"/\u003e \u003c/a\u003e\u003cbr\u003eexpress.js\u003c/br\u003e\u003c/div\u003e\n        \u003c/td\u003e\n          \u003ctd\u003e\n            \u003cdiv align=\"center\"\u003e\u003ca href=\"https://babeljs.io/\" target=\"_blank\"\u003e \u003cimg src=\"https://www.vectorlogo.zone/logos/babeljs/babeljs-icon.svg\" alt=\"babel\" width=\"40\" height=\"40\"/\u003e \n            \u003c/a\u003e\u003cbr\u003eBabel\u003c/br\u003e\u003c/div\u003e\n        \u003c/td\u003e\n        \u003ctd width=\"60\"\u003e\n            \u003cdiv align=\"center\"\u003e\u003ca href=\"https://developer.mozilla.org/en-US/docs/Web/JavaScript\" target=\"_blank\"\u003e \u003cimg src=\"https://devicons.github.io/devicon/devicon.git/icons/javascript/javascript-original.svg\" alt=\"javascript\" width=\"40\" height=\"40\"/\u003e \u003c/a\u003e\u003cbr\u003eJavascript\u003c/br\u003e\u003c/div\u003e\n        \u003c/td\u003e\n        \u003ctd width=\"60\"\u003e\n            \u003cdiv align=\"center\"\u003e\u003ca href=\"https://www.mongodb.com/\" target=\"_blank\"\u003e \u003cimg src=\"https://nakedsecurity.sophos.com/wp-content/uploads/sites/2/2017/01/mongodb.png?w=780\u0026h=408\u0026crop=1\" alt=\"MONGODB\" width=\"40\" height=\"40\"/\u003e \u003c/a\u003e\u003cbr\u003emongoDB\u003c/br\u003e\u003c/div\u003e\n        \u003c/td\u003e\n       \u003ctd width=\"60\"\u003e\n            \u003cdiv align=\"center\"\u003e\u003ca href=\"https://mongoosejs.com/\" target=\"_blank\"\u003e \u003cimg src=\"https://cms-assets.tutsplus.com/uploads/users/34/posts/29527/preview_image/mongoose.jpg\" alt=\"MONGODB\" width=\"40\" height=\"40\"/\u003e \u003c/a\u003e\u003cbr\u003emongoose\u003c/br\u003e\u003c/div\u003e\n        \u003c/td\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\n### Infra\n\n\u003ctable\u003e\n\u003ctbody\u003e\n    \u003ctr\u003e\n        \u003ctd width=\"60\"\u003e\n            \u003cdiv align=\"center\"\u003e\u003ca href=\"https://www.docker.com/\" target=\"_blank\"\u003e \u003cimg src=\"https://media.vlpt.us/images/nickanism/post/06e649c9-fc39-406a-9c54-375bd2ab0d62/lfVWBmiW_400x400.png\" alt=\"docker\" width=\"40\" height=\"40\"/\u003e \u003c/a\u003e\u003cbr\u003eDocker\u003c/br\u003e\u003c/div\u003e\n        \u003c/td\u003e\n              \u003ctd width=\"60\"\u003e\n            \u003cdiv align=\"center\"\u003e\u003ca href=\"https://kubernetes.io/\" target=\"_blank\"\u003e \u003cimg src=\"https://miro.medium.com/max/800/1*WpKHLIDsJZgWKJe-SkOtcg.png\" alt=\"kubernetes\" width=\"40\" height=\"40\"/\u003e \u003c/a\u003e\u003cbr\u003eKubernetes\u003c/br\u003e\u003c/div\u003e\n        \u003c/td\u003e\n          \u003ctd\u003e\n            \u003cdiv align=\"center\"\u003e\u003ca href=\"https://cloud.google.com/gcp\" target=\"_blank\"\u003e \u003cimg src=\"https://cloud.google.com/images/social-icon-google-cloud-1200-630.png\" alt=\"gcp\"  height=\"40\"/\u003e \n            \u003c/a\u003e\u003cbr\u003eGoogle Cloud Platform\u003c/br\u003e\u003c/div\u003e\n        \u003c/td\u003e\n \u003c/tbody\u003e\n\u003c/table\u003e\n\n## 설치 안내 (Installation Process)\n\n### 공통 사항\n\n**git clone**\n\n```\n$ git clone https://github.com/osamhack2020/WEB_Meditact_Meditact\n```\n\n### Web Front-end\n\n**필수 의존성 설치**\n\n```\n$ yarn install ( or npm install )\n```\n\n### Web Back-end\n\n**환경 변수 설정**\n\nserver 디렉토리 최상단에 .env 파일을 만들어서 다음과 같은 세 환경 변수를 지정.\n\n```\nPORT\nSECRET_KEY\nDB_URL\n```\n\n**필수 의존성 설치**\n\n```\n$ yarn install ( or npm install )\n```\n\n## 프로젝트 사용법 (Getting Started)\n\n### Web Front-end\n\n**실행**\n\n```\n$ yarn start ( or npm start )\n```\n\n### Web Back-end\n\n**실행**\n\n서버 실행 전 Mongod이 실행 중인지 확인이 필요합니다.\n\n또한, 설정 해놓은 환경변수의 문제가 없는지도 확인이 필요합니다.\n\n```\n$ yarn start ( or npm start )\n```\n[기능설계](#기능-설계) 파트의 APIdocs를 참고하여 사용하실 수 있습니다.\n\n### Chatbot framework\n\n[**CHATBOT 설치방법 안내**](https://github.com/osamhack2020/Infra_Meditact_Meditact/tree/master/alpha)\n\n\n## 팀 정보 (Team Information)\n\n- [김성일 상병](https://github.com/kshired) E-mail : [shiroed1211@gmail.com](mailto:shiroed1211@gmail.com), **팀장 및 Web-Backend**\n\n- [강재현 상병](https://github.com/ashhyun) E-mail : [youkind98@gmail.com](mailto:youkind98@gmail.com), **Deep Learning**\n\n- [이현훈 대위(군의관)](https://github.com/hyeonhoonlee) E-mail : [jackli0373@gmail.com](mailto:jackli0373@gmail.com), **Deep Learning**\n\n- [김찬호 일병](https://github.com/chanhhoo) E-mail : [hpyho33@naver.com](mailto:hpyho33@naver.com), **Web-Frontend**\n\n- [여종현 상병](https://github.com/mindgitrwx) E-mail : [jonghyeon.rw@gmail.com](mailto:jonghyeon.rw@gmail.com), **Infra**\n\n## 저작권 및 사용권 정보 (Copyleft / End User License)\n\n- [MIT LICENSE](https://github.com/osamhack2020/Infra_Meditact_Meditact/blob/master/LICENSE.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fosamhack2020%2Finfra_meditact_meditact","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fosamhack2020%2Finfra_meditact_meditact","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fosamhack2020%2Finfra_meditact_meditact/lists"}