Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[FEAT] 문의하기 이메일 및 구글 스프레드시트 요청 구현 #851

Open
zeus6768 opened this issue Oct 22, 2024 · 4 comments
Open
Assignees
Labels
BE 백엔드 feature 기능 추가

Comments

@zeus6768
Copy link
Contributor

📌 어떤 기능인가요?

현재 프론트엔드에서만 문의하기 기능이 구현되어 있는데, 스프레드시트에 요청할 때 CORS 관련 설정 문제로 완료 여부를 알 수 없습니다.

📜 작업 상세 내용

  • 코드잽 공식 메일로 문의 본문 전송
  • 스프레드시트로 문의 본문 전송

⏳ 예상 소요 시간 (예상 해결 날짜)

24시간

@zeus6768 zeus6768 added feature 기능 추가 BE 백엔드 labels Oct 22, 2024
@zeus6768 zeus6768 self-assigned this Nov 7, 2024
@zeus6768 zeus6768 added this to the 7차 스프린트 💭 milestone Nov 7, 2024
@zeus6768
Copy link
Contributor Author

zeus6768 commented Nov 16, 2024

기능 명세

  • 구글 스프레드시트에 문의 내용을 저장 요청한다.
  • 저장이 완료되면 상태 코드를 받아 반환한다.
  • (하면좋고 아님말고) 비동기로 처리한다.

현재

프론트엔드에서 다음과 같이 api를 요청해 엑셀에 문의 데이터를 저장한다.

const sendData = () => {
  const URL = process.env.GOOGLE_URL || '';

  return fetch(URL, {
    method: 'POST',
    mode: 'no-cors',
    body: JSON.stringify({ message, email, name, memberId }),
    headers: {
      'Content-Type': 'application/json',
    },
  });
};

구현

문의 형식 검증

문의 내용은 최대 10,000 글자까지 입력할 수 있습니다.

  • 너무 적게 입력하면 충분한 정보가 아닐 가능성이 높기 때문에 20자 이상 입력하게 했다.
  • 굳이 너무 많이 입력할 필요가 없고, 저장 공간은 아껴야 하는 리소스이므로 최대 10,000자로 제한했다.

@zeus6768
Copy link
Contributor Author

zeus6768 commented Nov 16, 2024

고민 적어놓기

모듈 분리

  • 문의하기 기능을 위해 템플릿, 소스코드 등의 주요 도메인 관련 빈이 모두 로드되어야 하는 게 어색하다고 생각해요.
  • 그래서 별도의 모듈로 분리하고 싶어요.
    • 별도의 모듈로 분리한다면, 빌드와 배포 과정이 어떻게 변화할지 생각해야 해요.

#907 로 갈음.

외부 API 사용

RestClient 재사용 가능성

OAuth 로그인에서도 RestClient를 사용할 수 있을 것 같아요.

RestClient.Builder와 관련 설정을 분리할 것을 고민해볼 필요가 있어요.

근데 지금 생각으로는, OAuth의 RestClient와 문의하기의 RestClient는 공통된 설정이 없을 것 같아요.

그래서 굳이 공통 로직을 추출할 필요가 있나 싶네요.

Google Apps Script의 문제점

문제1. API 예외 처리의 어려움

문의하기 요청을 보내면 VOC 구글 sheets에 행을 추가해요.

이때 voc sheets와 연결된 구글 Apps Script를 사용해요.

스크린샷 2024-11-16 오후 12 13 34

그런데 구글 apps script api에서 어떤 예외가 발생하고 어떤 형식으로 메시지를 주는지 알려주는 문서를 아직 찾지 못했어요.

문제2. 자격 증명 문제

현재 누구든 해당 url로 post 요청을 보내면 voc 스프레드시트에 데이터를 추가할 수 있어요.

스크린샷 2024-11-16 오후 12 23 17

HTTP Client에서 요청을 보낼 때 자격 증명을 추가해서 검증할 수 있게 개선해야 해요.

또는, 문의하기 내용을 자체 DB에 저장하는 방식으로 변경한다면 괜찮아요.

그래서 추후 관리자 기능을 만들 때, 문의하기를 해당 기능에 포함시켜서 개발해야 한다고 생각해요.

@zeus6768
Copy link
Contributor Author

zeus6768 commented Nov 16, 2024

오류 발견

테스트에서 다음과 같이 request 의 문의 내용을 20자 미만으로 입력하면 오류가 발생해요
스크린샷 2024-11-16 오전 11 31 40

그런데, 한글 인코딩이 제대로 되지 않아요. 디버그에 문제가 있으므로 해결해야 할듯.
스크린샷 2024-11-16 오전 11 32 56

@zeus6768
Copy link
Contributor Author

개선 사항

현재 회원가입 시 아이디 길이의 최솟값을 제약이 없어요.

0글자 이상이면 회원가입을 할 수 있어요.

스크린샷 2024-11-17 오후 10 32 20

문의하기 요청을 할 때 해당 이름을 dto에 함께 전달하는데, 여기서도 동일한 검증을 하고 있어요.

아이디 길이의 최솟값을 검증하도록 개선하면 좋겠어요.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
BE 백엔드 feature 기능 추가
Projects
Status: Todo
Development

No branches or pull requests

1 participant