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/65 #70

Open
wants to merge 6 commits into
base: main
Choose a base branch
from
Open

feat/65 #70

wants to merge 6 commits into from

Conversation

tkdtn4657
Copy link
Collaborator

@tkdtn4657 tkdtn4657 commented Dec 15, 2024

✨ 작업 내용

  • 신고 CRUD
  • 게시글 신고
  • 댓글 신고
  • 리뷰 신고 - 리뷰 완료된 후 pull 하여 추가 예정
  • 유저 블럭
  • 예외 처리

✨ 코멘트

  • 각 게시글, 댓글, 리뷰, 유저의 신고횟수 누적에 따라 삭제 및 제재처리 되도록 구현하였습니다.
  • data.sql에 오타있는 부분 같이 수정했습니다!(,가 없던 부분)
  • 제재되었을 때 카운트를 기록하는 컬럼을 추가하였습니다.
alter table `users` add column `report_sanction_count` INT NOT NULL DEFAULT 0;
alter table `post` add column `report_sanction_count` INT NOT NULL DEFAULT 0;
alter table `post_comment` add column `report_sanction_count` INT NOT NULL DEFAULT 0;
alter table `review` add column `report_sanction_count` INT NOT NULL DEFAULT 0;

Git Close

@tkdtn4657 tkdtn4657 added the 🔥 Feat 새로운 기능 추가 label Dec 15, 2024
@tkdtn4657 tkdtn4657 self-assigned this Dec 15, 2024
Copy link
Contributor

@LeeYulhee LeeYulhee left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

신고 테이블의 값을 JOIN해서 COUNT 값으로 5회 이상 누적인지 확인하는 게 아니고 post, commet, review 쪽에 컬럼을 추가하는 방식으로 구현하셨네요! 혹시 이유를 알 수 있을까요?
그리고 유저 Block 처리는 어드민이 수동으로 하는 형태로 구현하신 게 맞을까요?

Copy link
Collaborator

@leebuwon leebuwon left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

고생하셨습니다!

@tkdtn4657
Copy link
Collaborator Author

신고 테이블의 값을 JOIN해서 COUNT 값으로 5회 이상 누적인지 확인하는 게 아니고 post, commet, review 쪽에 컬럼을 추가하는 방식으로 구현하셨네요! 혹시 이유를 알 수 있을까요? 그리고 유저 Block 처리는 어드민이 수동으로 하는 형태로 구현하신 게 맞을까요?

@LeeYulhee

설명 드리기에 앞서, 신고 flow부터 말씀 드리겠습니다.

  • 신고 테이블은 신고 데이터를 기록하며, 신고처리가 되었을 때는 visible 값이 바뀌도록
  1. 리뷰, 게시글, 댓글 등 최초 신고
  2. 신고된 테이블 기준으로 어드민이 신고처리
  3. 신고처리 될 때 누적 카운트를 보고 일정 수 이상 신고 시 차단
    의 순서로 진행되는 상태이며,
    신고처리를 반드시 거쳐야만 블록된다고 생각했었습니다.

그런데, 얘기해주신 것을 다시 생각해보니, 신고 처리가 된 것 외에도 일반 신고 누적횟수로도 정지가 되는 게 맞았던 것 같습니다.
이번 로직은 어드민 기준 신고처리를 진행한 것으로 봐주시고,
추후 기능 추가(신고 누적에 따른 block)를 같이 하는 것으로 진행하겠습니다!

하기 내용은 질문 주셨던 것의 답변입니다.

  1. 각 컬럼에 카운트를 추가하는 방식
    신고 자체가 누적될 때마다, 카운트 조회 처리를 시행하는 것이 비효율적으로 느껴졌습니다.
  • 신고 트랜잭션이 동작할 때 엔티티를 최초 조회
  • 컬럼 추가 시
    • 조회된 엔티티에서 컬럼 하나만을 비교
  • 컬럼 미 추가 시
    • 조회된 엔티티에서 해당 신고ID 기준으로 쿼리 추가동작

두 가능성 중 컬럼 하나만을 비교하는 것이 select 쿼리가 적게 들어가기에 효율적이라 판단하고 구현했습니다.

  1. 유저 Block 처리
    신고된 게시글이나, 댓글, 리뷰의 작성유저의 누적 여부를 확인, 일정 횟수 신고처리 누적될 시 정지

입니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🔥 Feat 새로운 기능 추가
Projects
None yet
Development

Successfully merging this pull request may close these issues.

신고기능 추가
3 participants