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

[BE] feature/#251 최신 지도 조회 API 구현 #258

Merged
merged 29 commits into from
Aug 16, 2023

Conversation

junpakPark
Copy link
Collaborator

@junpakPark junpakPark commented Aug 10, 2023

작업 대상

  • TopicController
  • TopicQueryService
  • PinRepository

📄 작업 내용

  • 가장 최근에 핀이 추가되거나 업데이트된 순으로 지도된 지도 목록을 반환한다

🙋🏻 주의 사항

이번 PR Commit 범위

스크린샷

📎 관련 이슈

#251

closed #251

레퍼런스

@junpakPark junpakPark added BE 백엔드 관련 이슈 우선순위 : 중 feat 새로운 기능 개발 labels Aug 10, 2023
@junpakPark junpakPark self-assigned this Aug 10, 2023
@github-actions
Copy link

github-actions bot commented Aug 10, 2023

Unit Test Results

  55 files    55 suites   11s ⏱️
217 tests 217 ✔️ 0 💤 0
228 runs  228 ✔️ 0 💤 0

Results for commit 9c98f8a.

♻️ This comment has been updated with latest results.

Copy link
Collaborator

@cpot5620 cpot5620 left a comment

Choose a reason for hiding this comment

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

엄청 빠르게 구현해주셨네요 👍 👍

한 가지 궁금한 점이 있어서 코멘트 남겨두었는데 확인 부탁드려요 !

private final TopicRepository topicRepository;

public TopicQueryService(final TopicRepository topicRepository) {
Copy link
Collaborator

Choose a reason for hiding this comment

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

ㅋㅋㅋㅋㅋㅋ 먼저 발견하셨군요 !

Comment on lines 83 to 91
return pinRepository.findAllByOrderByUpdatedAtDesc()
.stream()
.map(Pin::getTopic)
.distinct()
.filter(member::canRead)
.map(TopicResponse::from)
.toList();
}
}
Copy link
Collaborator

Choose a reason for hiding this comment

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

질문이 있습니다 !

Topic에 대해서 distinct를 통해 중복을 제거하려고 하신 것 같은데, 해당 동작이 올바르게 수행 되나요 ?
Topic에 별다른 equals&hascode가 정의되어있지 않아서 여쭤봅니다 !
뭔가 될 것 같기도 한데... 잘 몰라서 ㅎㅎ..

만약, 올바르게 동작하지 않는다면
Repository에서 topicId에 대해 중복되지 않은 것들을 갖고오도록 하는 방법도 있을 것 같아요 !

Copy link
Collaborator Author

@junpakPark junpakPark Aug 10, 2023

Choose a reason for hiding this comment

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

Topic에 별다른 equals&Hashcode가 정의 되어있지 않더라도
같은 객체로 처리해주더라구요!
JPA 학습이 짧아서 왜 그런지 설명은 못하겠지만... (아마 영속성 컨텍스트에서 처리해줄 것 같습니다)
테스트 코드를 통해서 해당 동작이 정상적으로 수행되는 건 확인 완료했습니다 ㅎㅎ

Copy link
Collaborator

Choose a reason for hiding this comment

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

준팍 말씀대로, 영속성 컨텍스트에서 수행해주는 것이 맞는 것 같네요 ~

한 가지 걱정이되는 부분은, 서비스 특징상(핀 복사 등) findAll로 데이터를 가져올 경우 너무 많은 데이터를 가져오지 않을까 ? 싶습니다.
단순히 limit을 걸어두자니, 특정 토픽에 있는 핀들만 최근에 업데이트 되어 있을 경우 원하는 결과를 못가져올 것 같긴 해서..

Topic에도 updatedAt이라는 컬럼이 있다보니 위의 문제를 개선할 수 있지 않을까요 ?

처음 리뷰 당시에 이 부분을 인지하지 못했었네요 ㅠㅠ 죄송합니다 !

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

제가 알기로, Topic의 updatedAt은
TOPIC 테이블에 존재한 row가 변화할 때만 업데이트 된다고 알고 있습니다.

그래서 지금과 같은 상황에서 Topic의 updatedAt으로 해결할 경우,
Topic이 새로 생기거나, Topic의 설명이나 이름이 바뀐 경우를 기준으로 나열되게 됩니다.

저희의 도메인 요구사항은
새로운 게시글이 추가되거나, 게시글의 내용이 변경된 게시판을 찾는 게 목적이지
새로 만들어진 게시판이나, 게시판의 이름이나 내용이 변경된 게시판을 찾는게 목적이 아니라는 점에서

Topic의 updatedAt을 사용하는 건 어려울 것으로 판단되는데
혹시 제가 잘못 이해한 부분이 있을까요?

Copy link
Collaborator

Choose a reason for hiding this comment

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

현재로서는 topic 에 마지막으로 핀이 추가된 시각 등을 컬럼으로 두고, pin 을 추가할 때 해당 컬럼을 갱신한 뒤, 정렬하여 가져오는 것이 가장 부하가 적어보이긴하네용!

Copy link
Collaborator

Choose a reason for hiding this comment

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

비즈니스적인 updatedAt이 필요하다.. 정도로 결론을 내리면 될까요 허헛

Copy link
Collaborator

@yoondgu yoondgu left a comment

Choose a reason for hiding this comment

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

마찬가지로 빠르게 잘 구현해주셨네요!!
RestDocs 문서화 + P2 코멘트 하나만 반영해주시면 바로 approve하겠습니당

authHeader = Base64.encodeBase64String(
("Basic " + member.getMemberInfo().getEmail()).getBytes()
);
}
Copy link
Collaborator

Choose a reason for hiding this comment

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

테스트 리팩터링 넘 좋네요 ~~

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

개행 반영했습니다

}

@Test
@DisplayName("")
Copy link
Collaborator

Choose a reason for hiding this comment

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

P2. DisplayName 적어주세요 !!

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

추가했습니다!

Copy link
Collaborator

@kpeel5839 kpeel5839 left a comment

Choose a reason for hiding this comment

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

확실히, 이전에 얘기 나눴던 것처럼 토픽에 핀이 추가되었을 때 상태를 갱신해줘야 할 필요가 있겠네요.

깔끔한 코드 잘봤습니다 고생하셨어용~!

Comment on lines 83 to 91
return pinRepository.findAllByOrderByUpdatedAtDesc()
.stream()
.map(Pin::getTopic)
.distinct()
.filter(member::canRead)
.map(TopicResponse::from)
.toList();
}
}
Copy link
Collaborator

Choose a reason for hiding this comment

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

현재로서는 topic 에 마지막으로 핀이 추가된 시각 등을 컬럼으로 두고, pin 을 추가할 때 해당 컬럼을 갱신한 뒤, 정렬하여 가져오는 것이 가장 부하가 적어보이긴하네용!


@ServiceTest
@DataJpaTest
Copy link
Collaborator

Choose a reason for hiding this comment

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

ServiceTest 를 DataJpaTest 로 변경한 이유가 있을까용?

테스트를 더 가볍게 하기 위해서??

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

성능적인 요소는 전혀 고려하지 않았습니다.

제가 변경한 이유는 다음과 같습니다.

  1. ServiceTest란 네이밍이 지나치게 추상화되어있기 때문입니다.
    해당 어노테이션의 이름만 보았을 때, 이게 DataJpaTest인지, SpringBootTest인지 한 눈에 파악이 어렵습니다.
    어떤 역할을 하는지 확인하기 위해선 해당 어노테이션을 열어봐야한다는 단점이 있습니다.

  2. 별도의 어노테이션으로 만들어 줄 필요가 없기 때문입니다.
    @DataJpaTest 안에는 이미 @Transactional이 포함되어 있습니다.
    @ServiceTest 내에서 실질적으로 역할을 하는 어노테이션은 다음의 어노테이션 하나 뿐입니다.

@DataJpaTest(
      includeFilters = @Filter(
              type = FilterType.ANNOTATION, value = Service.class
      )
)
  1. service 객체들을 @AutoWired 해야만 하는 이유에 대해 설득 되지 않았기 때문입니다.
    @DataJpaTest를 통해서 @repository@AutoWired 해온 후
    @BeforeEach와 setUp을 통해서 충분히 Service 객체를 만들어 줄 수 있습니다.
    해당 방법보다 @ServiceTest 방법을 우선시한 이유에 대해 혼자서 추측할 수 없었기 때문에 제외하였습니다.

Copy link
Collaborator

Choose a reason for hiding this comment

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

준팍 의견에 대한 제 생각은 아래와 같습니다 !

ServiceTest란 네이밍이 지나치게 추상화되어있기 때문입니다.
해당 어노테이션의 이름만 보았을 때, 이게 DataJpaTest인지, SpringBootTest인지 한 눈에 파악이 어렵습니다.

저는 오히려 "Service계층에서 사용하는 어노테이션" 이라는 의미가 명확하게 나타난다고 생각합니다.

DataJpaTest와 SpringBootTest의 예시를 들어주셨는데, DataJpaTest의 includeFilters를 사용하였는지, SpringBootTest의 excludeFilters를 사용하였는지가 중요할까요 !?

별도의 어노테이션으로 만들어 줄 필요가 없기 때문입니다.
@DataJpaTest 안에는 이미 @transactional이 포함되어 있습니다.
@servicetest 내에서 실질적으로 역할을 하는 어노테이션은 다음의 어노테이션 하나 뿐입니다.

DataJpaTest의 경우에는 JPA 관련 컴포넌트들을(엔티티 및 레포지토리 인터페이스) 빈으로 등록하기 때문에, JPA Repository 관련 테스트를 수행할 때 사용하는 것이 적절한 것 같아요.
SpringBootTest는 사용하지 않는 여러 컴포넌트들이 모두 빈 등록이 되기 때문에, 아무래도 낭비가 있겠죠.

단순히 Service 계층에서만 테스트를 수행하기에 적절한 어노테이션이 없기 때문에, 지금과 같은 커스텀 어노테이션이 필요하다고 생각합니다 ! (물론, 중복 사용되고 있는 @Transactional 어노테이션은 제거되어야 겠지요 😃)

service 객체들을 @Autowired 해야만 하는 이유에 대해 설득 되지 않았기 때문입니다.
@DataJpaTest를 통해서 @repository@Autowired 해온 후
@beforeeach와 setUp을 통해서 충분히 Service 객체를 만들어 줄 수 있습니다.
해당 방법보다 @servicetest 방법을 우선시한 이유에 대해 혼자서 추측할 수 없었기 때문에 제외하였습니다.

모든 서비스 테스트마다 @BeforeEach에서 필드에 존재하는 Service 클래스를 초기화 해주는 것은 불필요한 작업이지 않을까요 ?
또한, 우리는 스프링 프레임워크를 통해, 싱글톤으로 관리되는 서비스 객체를 사용하고자 하는 것이잖아요 ?
실제 프로덕션 코드에서는 싱글톤으로 관리되지만, 테스트에서는 싱글톤이 아닌 아닌 객체로 테스트한다는 것은 올바른 테스트 방법이 아닌 것 같아요.

위의 커스텀 어노테이션을 사용했을때, 또 하나의 장점으로는 우리가 작성한 서비스 클래스의 어노테이션을 빠뜨렸는지, 아닌지를 확인할 수 있다는 점이 있을 것 같아요. Service 어노테이션이 붙은 클래스를 빈 등록 대상으로 넣어주었기 때문에, 테스트 코드에 있는 @Autowired가 동작하지 않겠죠 ?

어디까지나 개인적인 의견일 뿐이고, 태클 환영입니당 !

Copy link
Collaborator Author

@junpakPark junpakPark Aug 13, 2023

Choose a reason for hiding this comment

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

저는 오히려 "Service계층에서 사용하는 어노테이션" 이라는 의미가
명확하게 나타난다고 생각합니다.

쥬니 말씀대로 의미적으로는 명시적이나,
기존의 표준적인 스프링 어노테이션에 익숙한 개발자 입장에선
@ServiceTest의 내부 동작이나 포함된 어노테이션들을 모를 수 있으므로,
처음 볼 때는 헷갈릴 수 있습니다.

DataJpaTest와 SpringBootTest의 예시를 들어주셨는데,
DataJpaTest의 includeFilters를 사용하였는지,
SpringBootTest의 excludeFilters를 사용하였는지가 중요할까요 !?

저는 이 부분은 굉장히 중요하다고 생각합니다.
@DataJpaTest@SpringBootTest는 애초에 사용 목적이 확연하게 다르고,
어떤 어노테이션을 쓰느냐에 따라 테스트 환경이 확연하게 차이가 나기 때문입니다.

표준 어노테이션을 사용할 때, 어떤 어노테이션을 쓰느냐에 따라 무엇을 테스트 하고 싶은지를 명확히 표현할 수 있는데
커스텀 어노테이션을 사용하면 이러한 장점을 잃게 됩니다.
이러한 이유로 저는 커스텀 어노테이션을 최대한 지양하는 것을 선호합니다.

또한, 우리는 스프링 프레임워크를 통해, 싱글톤으로 관리되는 서비스 객체를
사용하고자 하는 것이잖아요 ?
위의 커스텀 어노테이션을 사용했을때, 또 하나의 장점으로는 우리가 작성한
서비스 클래스의 어노테이션을 빠뜨렸는지, 아닌지를 확인할 수 있다는 점이 있을 것 같아요.

우리가 서비스 테스트를 하는 목적이 해당 부분을 검증하고자 하는 것이라면,
(=실제 환경과 동일한 조건에서 테스트를 하려고 하는 것이라면)
차라리 @DataJpaTest보다는 @SpringBootTest@Transactional
함께 사용하는 것이 더 올바른 방향이라고 생각합니다.

모든 서비스 테스트마다 @beforeeach에서 필드에 존재하는
Service 클래스를 초기화 해주는 것은 불필요한 작업이지 않을까요 ?

만약에 @DataJpaTest를 계속 사용한다면 이 부분은 @BeforeAll 어노테이션으로 해결 가능할 것 같습니다.
그리고 @ServiceTest의 경우@Service가 많아질 수록 컴포넌트 스캔 비용이 늘어날 것 같은데
@BeforeAll을 쓰면 @Service의 갯수와 관계없이 테스트 당 한번의 비용만 발생하지 않을까요?

추가적으로, 새롭게 만들어질 테스트에서 새로운 설정을 요구하는 경우,
지금의 @ServiceTest 유연성이 떨어지므로,
새로운 어노테이션을 만들어야 하거나 @DataJpaTest에 기존의 설정에 새로운 설정을
추가한 어노테이션을 그대로 써야하는 경우가 발생할 수 있습니다.

Copy link
Collaborator

Choose a reason for hiding this comment

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

우리가 서비스 테스트를 하는 목적이 해당 부분을 검증하고자 하는 것이라면
차라리 @DataJpaTest보다는 @SpringBootTest@transactional를 함께
사용하는 것이 더 올바른 방향이라고 생각합니다.

@SpringBootTest 어노테이션은 너무 범위가 넓다고 생각해요.
모든 Bean들을 스캔해오기 때문에, 해당 어노테이션을 통해 Repository, Service, Controller 등 모든 계층에 대한 테스트를 수행할 수 있잖아요 ?
Service 계층을 테스트하려면, Service ~ Repository 계층까지의 빈들만 필요하기 때문에 @DataJpaTest + Service 클래스를 불러오는 지금의 커스텀 어노테이션이 적절하다고 생각했어요 ㅎㅎ

이 부분은 @BeforeAll 어노테이션으로 해결 가능할 것 같습니다.
그리고 @service가 많아질 수록 컴포넌트 스캔 비용이 늘어날 것 같은데
@BeforeAll을 쓰면 테스트 당 한번의 비용만 발생하지 않을까요?

의견 전달에 조금 착오가 있었던 것 같네요 ㅎㅎ
제가 말씀드린 불필요한 작업이라는 것은, 성능적인 측면보다는 초기화 작업을 위한 프로그래머의 코드 작업을 의미하고자 했습니다.

@BeforeAll을 통해, 실제 초기화 비용이 한 번만 발생한다고 말씀하셨지만, 이를 싱글톤 객체로 보아도 무방할지는 조금 의문이네요 !

추가적으로, 새롭게 만들어질 테스트에서 새로운 설정을 요구하는 경우,
지금의 @servicetest 유연성이 떨어지므로,
새로운 어노테이션을 만들어야 하거나 @DataJpaTest에 기존의 설정에 새로운 설정을
추가한 어노테이션을 그대로 써야하는 경우가 발생할 수 있습니다.

빈을 등록하는 어노테이션의 새로운 설정을 요구하는 상황을 경험해본 적이 없어서, 공감이 어렵네요 ㅠ_ㅠ 가능하다면 예시 부탁드리겠습니다 !

제가 이해한 바로는, @DataJpaTest 설정에 더불어 Service 계층 뿐만 아니라 다른 Component 들을 주입받아야 하는 경우를 의미하시는 것 같아요.
서비스 계층에 대한 테스트에서 위와 같은 상황이 존재할까요 ? 존재한다면, 그건 서비스 계층 테스트가 아니지 않을까 싶어요 !

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

제 입장은 아래 3가지 입니다.

  1. Service 객체를 반드시 @Autowired로 가져와야만 하는 경우, @Transactional과 불필요한 빈들을 exclude한 @SpringBootTest를 사용하는 방식으로 가는 것이 옳다.

  2. Service 객체를 반드시 @Autowired로 가져오지 않아도 되는 경우, @DataJpaTest@BeforeAll을 통해 Service 객체를 만들어주는 방식이 옳다.

  3. 코드의 줄수를 줄이는 것보다는, 누가 봐도 이해할 수 있는 코드를 쓰는 것이 더 중요하기 때문에 @servicetest와 같은 과도한 추상화는 지양하는 것이 좋다.

다음은 쥬니의 질문에 대한 저의 생각입니다.

@SpringBootTest 어노테이션은 너무 범위가 넓다고 생각해요.
모든 Bean들을 스캔해오기 때문에, 해당 어노테이션을 통해
Repository, Service, Controller 등 모든 계층에 대한 테스트를 수행할 수 있잖아요 ?

이 부분은 쥬니가 말씀하신대로 exclude 처리하면 되지 않을까요?

@DataJpaTest에서 Repository와 Service 관련 컴포넌트만 갖고 오게 설정할 수 있듯,
@SpringBootTest에서도 동일한 설정이 가능하니까요!

이렇게 설정하면 둘의 기능이 동일한데 왜 @SpringBootTest를 더 사용하냐고 물으신다면, @DataJpaTest는 원래 JPA 엔티티와 리포지토리에 대한 테스트를 위한 어노테이션인 반면, @SpringBootTest는 통합 테스트를 위한 어노테이션이기 때문입니다.

그리고 우리는 Service 테스트를 통합 테스트로 진행하고 있습니다.
(=@Query가 없는 Repository에 대한 테스트를 진행하지 않기 때문에)

@BeforeAll을 통해, 실제 초기화 비용이 한 번만 발생한다고 말씀하셨지만,
이를 싱글톤 객체로 보아도 무방할지는 조금 의문이네요 !

  1. 우리가 검증하려고 하는 것이 Service 객체가 반드시 싱글턴이어야만 검증이 가능한가요?
  2. 설사 그렇다고하더라도 @BeforAll을 통해서 해당 테스트 클래스 내에서 한번만 생성된다면 동작 방식은 싱글턴과 동일하지 않나요?
  3. @AutoWired를 통해 가져왔을 때와 @BeforeAll을 통해 가져왔을 때는 어떤 차이가 있나요?

빈을 등록하는 어노테이션의 새로운 설정을 요구하는 상황을 경험해본 적이 없어서,
공감이 어렵네요 ㅠ_ㅠ 가능하다면 예시 부탁드리겠습니다 !

DataJpaTest에서 설정할 수 있는 항목들은 다음과 같습니다.

  1. properties
    2.showSql
    3.bootstrapMode
    4.useDefaultFilters
  2. includeFilters
  3. excludeFilters
  4. excludeAutoConfiguration

현재는 includeFilters만 사용하고 있지만,
추후 설정에 따라서 서비스별로 별도의 항목들을 설정해야할 경우가 생길 수 있습니다.
그런 경우마다 새로운 어노테이션을 만들어줄 수 없으니, 일관성을 위해서 지금부터도
커스텀 어노테이션을 만드는 것을 지양하자는 의미였습니다.

Copy link
Collaborator

Choose a reason for hiding this comment

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

이렇게까지 이야기가 길어져야 하는 부분인가 싶긴 하지만, 재밌네요 히히

Service 객체를 반드시 @Autowired로 가져와야만 하는 경우, @transactional과 불필요한 빈들을 exclude한 @SpringBootTest를 사용하는 방식으로 가는 것이 옳다.

프로젝트에 등록되어있는 빈들 중에서 exclude로 걸러내는 작업이 너무 방대하지 않을까 싶네요.
컨트롤러, 인터셉터, 컴포넌트 등 너무 많은 빈들을 걸러주어야 하지 않나요?

Service 객체를 반드시 @Autowired로 가져오지 않아도 되는 경우, @DataJpaTest와 @BeforeAll을 통해 Service 객체를 만들어주는 방식이 옳다.

@Autowired를 통해 의존성 주입을 해주지 않는다면, 우리가 굳이 스프링 프레임워크를 사용할 필요가 있을까 ? 를 고민해봐야 하지 않을까 싶어요.
프로그램 제어(의존성 주입 등)를 스프링에 위임하고, 비즈니스 로직에만 집중하기 위해 스프링을 사용하는 것 아닌가요 ?
이는 단순히, 프로덕트 코드뿐만 아니라 테스트에도 적용되는 내용이라고 생각해요.

코드의 줄수를 줄이는 것보다는, 누가 봐도 이해할 수 있는 코드를 쓰는 것이 더 중요하기 때문에 @servicetest와 같은 과도한 추상화는 지양하는 것이 좋다.

누가봐도 이해할 수 있는 코드를 쓰는 것이 더 중요하다는 말에 동의합니다 !
다만, 지금 사용하고 있는 어노테이션이 과도하게 추상화 되어있다는 것은 잘 이해가 되지 않네요.
네이밍에서도 충분히 그 의미를 나타내고 있다고 생각해서요 ! (이 부분은 사람마다 받아들이기 나름이니, 서로 이해하고 넘어가야 하는 부분인 것 같네요 !)

우리가 검증하려고 하는 것이 Service 객체가 반드시 싱글턴이어야만 검증이 가능한가요?

프로덕트 환경에서 싱글톤으로 관리된다면, 테스트에서도 싱글톤이어야 하지 않을까요 ?

설사 그렇다고하더라도 @BeforAll을 통해서 해당 테스트 클래스 내에서 한번만 생성된다면 동작 방식은 싱글턴과 동일하지 않나요?

맞습니다 ! 해당 테스트 클래스 내에서는 그렇겠지요.
다만, 해당 서비스 클래스가 다른 테스트에서 쓰이지 않느냐 ?를 고민해보아야 할 것 같아요.
서비스 클래스를 사용하는 모든 곳에서는 각 테스트 클래스 내에서만 싱글톤으로 관리되는 객체를 사용하는 것이니까요.

@Autowired를 통해 가져왔을 때와 @BeforeAll을 통해 가져왔을 때는 어떤 차이가 있나요?

해당 테스트 클래스 내부에서는 싱글톤으로 관리되겠지만, 다른 클래스에서 사용하는 해당 서비스 객체와는 별개의 객체 아닐까요 ?

현재는 includeFilters만 사용하고 있지만,
추후 설정에 따라서 서비스별로 별도의 항목들을 설정해야할 경우가 생길 수 있습니다.

위 옵션들을 서비스별로 다르게 설정해야할 경우가 발생하여, 설정 환경에 따라 다르게 동작한다면 그것은 더이상 서비스 테스트가 아니지 않을까요 ?

Copy link
Collaborator

Choose a reason for hiding this comment

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

너무 이야기가 길어지는 것 같으면, 월요일에 매튜 도이랑 함께 이야기해서 정해봐도 좋을 것 같아요 ㅎㅎ

정말 만사능통한 말이지만, '정답은 없다'의 영역이니까요 !!!!!

Copy link
Collaborator

Choose a reason for hiding this comment

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

아니 저 이거 지금 봤네요 ㅋㅋㅋㅋ

@junpakPark junpakPark merged commit 63d7964 into develop Aug 16, 2023
3 checks passed
@junpakPark junpakPark deleted the feature/#251-updatedTopic branch August 16, 2023 02:25
yoondgu added a commit that referenced this pull request Aug 17, 2023
* [FE]Chore/#9 프론트엔드 개발 환경 초기 설정 (#11)

* chore: frontend 세팅 초기 설정

* chore: eslint validate 수정

* chore: 초기 환경 설정 (#15)

* chore: 모듈 시스템 및 ts-parser 오류 해결 (#26)

* design: ThemeProvider와 GlobalStyle 공통 스타일 속성 지정 (#27)

* 토픽, 핀에 대한 Entity 및 뼈대코드 작성 (#28)

* chore: 초기 환경 설정

* feat: 토픽, 핀에 대한 Entity 및 뼈대코드 작성

Co-authored-by: yoondgu <[email protected]>
Co-authored-by: cpot5620 <[email protected]>
Co-authored-by: junpakPark <[email protected]>

---------

Co-authored-by: yoondgu <[email protected]>
Co-authored-by: cpot5620 <[email protected]>
Co-authored-by: junpakPark <[email protected]>

* [FE]Feat/#16 공통 컴포넌트 구현 (#30)

* feat: Button 컴포넌트 구현

* feat: Input 컴포넌트 구현

* feat: Box 컴포넌트 구현

* feat: Flex 컴포넌트 구현

* feat: Layout 컴포넌트 구현

* refactor: Box 컴포넌트 min-height 속성 추가

* feat: Text 컴포넌트 구현

* refactor: Button 컴포넌트 box-sizing 속성 추가

* refactor: App 컴포넌트 화살표 함수로 변경

* feat: 페이지 폴더 생성

* feat: Spacing 컴포넌트 구현 (#34)

* [BE] 토픽, 핀에 대한 Entity 구조 변경 (#36)

* chore: 초기 환경 설정

* feat: 토픽, 핀에 대한 Entity 및 뼈대코드 작성

Co-authored-by: yoondgu <[email protected]>
Co-authored-by: cpot5620 <[email protected]>
Co-authored-by: junpakPark <[email protected]>

* refactor: Getter 추가 및, Coordinate BaseEntity 상속 제거

Co-authored-by: yoondgu <[email protected]>
Co-authored-by: cpot5620 <[email protected]>
Co-authored-by: junpakPark <[email protected]>

* refactor: 외래키에 Not Null 조건 추가

Co-authored-by: yoondgu <[email protected]>
Co-authored-by: cpot5620 <[email protected]>
Co-authored-by: junpakPark <[email protected]>

* feat: Repository 추가

Co-authored-by: yoondgu <[email protected]>
Co-authored-by: cpot5620 <[email protected]>
Co-authored-by: junpakPark <[email protected]>

* chore: gradlew 업데이트

Co-authored-by: yoondgu <[email protected]>
Co-authored-by: cpot5620 <[email protected]>
Co-authored-by: junpakPark <[email protected]>

* refactor: Entity 구조 변경

Co-authored-by: yoondgu <[email protected]>
Co-authored-by: cpot5620 <[email protected]>
Co-authored-by: junpakPark <[email protected]>

* remove: 주소 관련 entity 삭제

* docs: 백엔드 기능 목록 작성

* feat: soft delete를 위한 삭제 상태 추가

---------

Co-authored-by: jaeyeon kim <[email protected]>
Co-authored-by: cpot5620 <[email protected]>
Co-authored-by: junpakPark <[email protected]>
Co-authored-by: kpeel5839 <[email protected]>

* feat: React Router 기능 구현 (#50)

* feat: MSW 초기 설정 및 구동 (#51)

* feat: PinDetail 페이지 컴포넌트 구현 (#53)

* refactor: 공통 컴포넌트 속성 변경 (#54)

* [FE]Feat/#31 �토픽 및 핀 생성 페이지 구현 (#55)

* feat: NewPin 페이지 컴포넌트 구현

* feat: NewTopic 페이지 컴포넌트 구현

* feat: Textarea 컴포넌트 구현

* refactor: Input 컴포넌트 font-size theme 적용 및 값 수정

* [FE]Feat/#35 토픽 목록 및 핀 목록 페이지 구현 (#60)

* feat: 토픽 카드 컴포넌트 구현

* feat: 토픽 목록 페이지 구현

* refactor: 공통 컴포넌트 속성 수정

* feat: 핀 목록 페이지 구현

* [FE]Refactor#61 페이지 컴포넌트 머지 후 싱크 작업 (#62)

* refactor: 페이지 컴포넌트 명 수정 (Topics -> Pins)

* refactor: 이모지 오타 수정

* fix: key props 에러 해결

* remove: 스토리북 기본 asset 파일 삭제

* refactor: 스타일드 컴포넌트 CSS 카멜 케이스 prop 에러 해결

* rename: 컴포넌트 디렉토리 위치 변경

* design: 공통 컴포넌트에서 필요없는 속성 제거

* style: TODO 주석 추가

* feat: 페이지 컴포넌트 Route 추가

* rename: 페이지 컴포넌트 및 컴포넌트 명 변경

* [FE]Feat/#64 라우터 지정 및 상태 관리 (#66)

* refactor: RouterProvider 정의 및 라우팅 관심사 분리

추가로 index.tsx에 React.StrictMode를 추가한다.

* feat: 토픽 카드를 클릭하면 SelectedTopic 페이지로 이동하는 라우팅 기능 추가

* refactor: 버튼 명 변경 (TopicCardButton -> MultiSelectButton)

* refactor(Button): as 키워드 대신 타입 명시 변환

* feat(Home): 토픽 추가하기 버튼을 누르면 토픽 추가 페이지로 이동하는 기능 추가

* feat: 사용자가 입력한 토픽 정보를 POST 하고 토픽 선택 페이지로 이동 하는 기능 추가

* style(NewTopic): 스타일 컴포넌트 로직 하단으로 배치

* refactor: Box 컴포넌트 cursor 속성 추가

* feat: 토픽 및 핀 타입 추가

* refactor: 토픽 다중 선택 버튼 수정 및 토픽 클릭 범위 수정

* feat: 핀 추가버튼을 눌렀을 때 핀 추가 페이지로 이동하는 기능 추가

* refactor: Layout 스크롤 가능토록 변경

* feat: 사이드바 확장하여 PinDetail 표시하는 기능 추가

* refactor: 개행 및 불필요한 console.log 제거, catch문 리팩토링

* feat: Logo 컴포넌트 추가

* rename: Layout 디렉토리 위치 변경

* refactor: PinPreview에 cursor pointer 효과 추가

* [FE]Feat/#65 MSW get, post 및 Api 구현 (#67)

* feat: msw 토픽 목록 조회 기능 구현

* feat: msw 토픽 디테일 보기 기능 구현

* feat: msw 토픽 생성 기능 구현

* feat: msw 핀 생성 기능 구현

* [BE} 핀 관련 기능 구현 완료 (테스트 제외) #63 (#68)

* chore: 초기 환경 설정

* feat: 토픽, 핀에 대한 Entity 및 뼈대코드 작성

Co-authored-by: yoondgu <[email protected]>
Co-authored-by: cpot5620 <[email protected]>
Co-authored-by: junpakPark <[email protected]>

* refactor: Getter 추가 및, Coordinate BaseEntity 상속 제거

Co-authored-by: yoondgu <[email protected]>
Co-authored-by: cpot5620 <[email protected]>
Co-authored-by: junpakPark <[email protected]>

* refactor: 외래키에 Not Null 조건 추가

Co-authored-by: yoondgu <[email protected]>
Co-authored-by: cpot5620 <[email protected]>
Co-authored-by: junpakPark <[email protected]>

* feat: Repository 추가

Co-authored-by: yoondgu <[email protected]>
Co-authored-by: cpot5620 <[email protected]>
Co-authored-by: junpakPark <[email protected]>

* chore: gradlew 업데이트

Co-authored-by: yoondgu <[email protected]>
Co-authored-by: cpot5620 <[email protected]>
Co-authored-by: junpakPark <[email protected]>

* refactor: Entity 구조 변경

Co-authored-by: yoondgu <[email protected]>
Co-authored-by: cpot5620 <[email protected]>
Co-authored-by: junpakPark <[email protected]>

* refactor: Builder 패턴 추가

Co-authored-by: cpot5620 <[email protected]>

* refactor: BigDecimal 소수점 범위 변경

Co-authored-by: cpot5620 <[email protected]>

* feat: 범위 내 핀 조회 기능 구현

Co-authored-by: cpot5620 <[email protected]>

* refactor: Entity 구조 변경

Co-authored-by: cpot5620 <[email protected]>

* feat: 좌표간의 거리 계산 기능 구현

Co-authored-by: cpot5620 <[email protected]>

* refactor: 생성자 파라미터 변경

Co-authored-by: cpot5620 <[email protected]>

* feat: 핀 생성 서비스 구현 [#41]

Co-authored-by: cpot5620 <[email protected]>

* feat: 핀 생성 API 구현 [#41]

Co-authored-by: cpot5620 <[email protected]>

* refactor: 좌표간의 거리 계산 로직 변경

Co-authored-by: cpot5620 <[email protected]>

* feat: 핀 수정 서비스 구현 [#42]

Co-authored-by: cpot5620 <[email protected]>

* feat: 핀 수정 API 구현 [#42]

Co-authored-by: cpot5620 <[email protected]>

* feat: 핀 삭제 서비스 구현 [#43]

Co-authored-by: cpot5620 <[email protected]>

* feat: 핀 삭제 API 구현 [#43]

Co-authored-by: cpot5620 <[email protected]>

* feat: 핀 목록 조회 서비스 구현 [#38]

Co-authored-by: cpot5620 <[email protected]>

* feat: 핀 목록 조회 API 구현 [#38]

Co-authored-by: cpot5620 <[email protected]>

* feat: 핀 상세 조회 서비스 구현 [#40]

Co-authored-by: cpot5620 <[email protected]>

* feat: 핀 상세 조회 API 구현 [#40]

Co-authored-by: cpot5620 <[email protected]>

* fix: 핀 삭제 로직 오류 수정 [#43]

Co-authored-by: cpot5620 <[email protected]>

* rename: PinRepositoryTest -> LocationRepositoryTest

Co-authored-by: cpot5620 <[email protected]>

---------

Co-authored-by: yoondgu <[email protected]>
Co-authored-by: cpot5620 <[email protected]>
Co-authored-by: junpakPark <[email protected]>

* [BE] 토픽 관련 기능 구현 (#69)

* feat: 새로운 토픽 생성 기능 구현

Co-authored-by: yoondgu <[email protected]>

* feat: 토픽 병합 기능 구현

Co-authored-by: yoondgu <[email protected]>

* refactor: Location, Pin 불필요한 테이블 분리 병합

Co-authored-by: yoondgu <[email protected]>

* feat: Topic 수정 및 삭제 기능 구현

Co-authored-by: yoondgu <[email protected]>

* feat: Topic 목록 조회 및 상세 조회 기능 구현

Co-authored-by: yoondgu <[email protected]>

* feat: Coordinate의 위,경도가 대한민국 내에 있는 지 검증 기능 구현

Co-authored-by: yoondgu <[email protected]>

* feat: Coordinate의 위,경도가 대한민국 내에 있는 지 검증 기능 구현

Co-authored-by: yoondgu <[email protected]>

* refactor: 핀 생성 및 복제 시 연관관계 편의 메서드 사용

Co-authored-by: yoondgu <[email protected]>

* test: 테스트 데이터 추가 및 테스트 코드 리팩터링

Co-authored-by: yoondgu <[email protected]>

* style: 코드 컨벤션 통일을 위한 final 키워드 삭제

Co-authored-by: yoondgu <[email protected]>

* refactor: 토픽 삭제 soft delete로 변경

Co-authored-by: yoondgu <[email protected]>

* chore: DB 환경설정 파일 변경

- SpringBoot 버전 이슈로 인한 data.sql 실행 오류 발생
- 이에 대한 환경 설정 파일 변경

Co-authored-by: yoondgu <[email protected]>

* refactor: 토픽에 대한 모든 핀 삭제 기능 변경

- 쿼리 실행 성능 개선을 위해 JPQL 적용

Co-authored-by: yoondgu <[email protected]>

* refactor: 코드 컨벤션 정리 및 테스트 케이스 리팩터

Co-authored-by: yoondgu <[email protected]>
Co-authored-by: cpot5620 <[email protected]>
Co-authored-by: kpeel5839 <[email protected]>

---------

Co-authored-by: yoondgu <[email protected]>
Co-authored-by: cpot5620 <[email protected]>
Co-authored-by: kpeel5839 <[email protected]>

* [FE]Refactor/#70 MSW 및 기능 머지 후 싱크 작업 (#71)

* refactor: 토픽 카드 Props 명 수정 및 Type 분리

* fix: 새로운 토픽 생성 시 navigate 오류 해결

* refactor: 오타 일괄 수정

* style: 들여쓰기 및 공백 수정

* refactor: 핀 추가 시 쿼리스트링 수정

* refactor: NewPin 컴포넌트 라우터 설정 및 이벤트 핸들러 수정

* refactor: 목 데이터를 JSON에서 자바스크립트 형식으로 변경

* refactor: 사용자가 입력한 값으로 토픽 생성하도록 변경

* style: trailing comma 설정 문제 해결

* refactor: 사용자가 입력한 값으로 핀을 추가하도록 변경

* refactor: PinType updatedAt 속성 추가

* refactor: 핀 ID에 맞게 PinDetail 페이지를 출력하도록 수정

* refactor: MockData 추가 및 핸들러 로직 일부 수정

* test: 공통 컴포넌트 스토리북 구현 (#73)

* [BE] 현재 위치 인기 토픽 조회 기능 구현 (#74)

* feat: Topic validate 추가

Co-authored-by: yoondgu <[email protected]>

* feat: Topic soft Delete 기능 구현

Co-authored-by: yoondgu <[email protected]>

* feat: Topic 및 TopicCommandService validation 추가

Co-authored-by: yoondgu <[email protected]>

* feat: 현재 위치 인기 토픽 조회 기능 구현

Co-authored-by: yoondgu <[email protected]>

* test: 테스트 data.sql 대신 픽스쳐 사용으로 변경

- 쉬운 테스트 격리를 위한 픽스쳐 적용

Co-authored-by: junpakPark <[email protected]>

* test: data.sql 파일명 변경으로 도메인 간 테스트 격리

Co-authored-by: junpakPark <[email protected]>

---------

Co-authored-by: yoondgu <[email protected]>
Co-authored-by: yoondgu <[email protected]>

* [BE] 핀 기능 관련 테스트 구현 (#75)

* chore: 초기 환경 설정

* feat: 토픽, 핀에 대한 Entity 및 뼈대코드 작성

Co-authored-by: yoondgu <[email protected]>
Co-authored-by: cpot5620 <[email protected]>
Co-authored-by: junpakPark <[email protected]>

* refactor: Getter 추가 및, Coordinate BaseEntity 상속 제거

Co-authored-by: yoondgu <[email protected]>
Co-authored-by: cpot5620 <[email protected]>
Co-authored-by: junpakPark <[email protected]>

* refactor: 외래키에 Not Null 조건 추가

Co-authored-by: yoondgu <[email protected]>
Co-authored-by: cpot5620 <[email protected]>
Co-authored-by: junpakPark <[email protected]>

* feat: Repository 추가

Co-authored-by: yoondgu <[email protected]>
Co-authored-by: cpot5620 <[email protected]>
Co-authored-by: junpakPark <[email protected]>

* chore: gradlew 업데이트

Co-authored-by: yoondgu <[email protected]>
Co-authored-by: cpot5620 <[email protected]>
Co-authored-by: junpakPark <[email protected]>

* refactor: Entity 구조 변경

Co-authored-by: yoondgu <[email protected]>
Co-authored-by: cpot5620 <[email protected]>
Co-authored-by: junpakPark <[email protected]>

* test: PinRepository 테스트 구현

Co-authored-by: kpeel5839 <[email protected]>

* refactor: 디미터 법칙 적용

Co-authored-by: kpeel5839 <[email protected]>

* refactor: PinCreateRequest 변수 순서 변경

Co-authored-by: kpeel5839 <[email protected]>

* test: PinService 핀 생성 테스트 구현

Co-authored-by: kpeel5839 <[email protected]>

* test: PinService 핀 수정 및 삭제 테스트 구현

Co-authored-by: kpeel5839 <[email protected]>

* refactor: 개행 조정 및 접근 제어자 조정

* test: 핀 목록 조회 서비스 기능 테스트

* test: 핀 단일 조회 서비스 테스트

* test: Pin Entity Validation 테스트

---------

Co-authored-by: jaeyeon kim <[email protected]>
Co-authored-by: yoondgu <[email protected]>
Co-authored-by: junpakPark <[email protected]>
Co-authored-by: kpeel5839 <[email protected]>

* chore: 불필요 파일 제거

* [FE]Feat/#77 핀 디테일 수정하기 페이지 구현  (#78)

* feat: 핀 상세보기 수정 기능 구현

* fix: msw 에러 해결

* chore: msw 다운그레이드 적용

* refactor: PinDetail 수정하기 UI 변경

* Fix: emoji 아이콘 선택시 발생했던 에러 해결

* refactor: 불필요한 console 코드 삭제

---------

Co-authored-by: Patrick <[email protected]>

* feat: cors를 위한 WebMvcConfig 구현 (#80)

Co-authored-by: cpot5620 <[email protected]>

* [BE] 핀 생성 요청 DTO 수정 (#93)

* refactor: Coordinate 정적팩토리 메서드 추가

* refactor: PinCreateRequest 요청 타입 수정

* [BE] RestDocs API 문서화 (#91)

* feat: rest docs 를 이용한 문서화

Co-authored-by: yoondgu <[email protected]>

* feat: rest docs를 이용한 ControllerTest

Co-authored-by: yoondgu <[email protected]>

* docs: adoc toc 추가 및 문서 정렬

Co-authored-by: yoondgu <[email protected]>

---------

Co-authored-by: yoondgu <[email protected]>

* refactor: PinCreateRequest 변경에 따른 테스트 코드 수정 (#94)

* [BE] Controller RequestBody 누락으로 인한 코드 수정 (#96)

* [Docs] GitHub Issue 및 PR Template 설정 (#37)

* chore: .gitignore 추가

* chore: GitHub PR 및 Issue Template

* Revert "chore: GitHub PR 및 Issue Template"

This reverts commit 65915f72740bbf22899ef7ac52fefa99cde96a8b.

* Revert "chore: .gitignore 추가"

This reverts commit 1e1865a1cb7f0a279b4e74c12cd0f66631809ff3.

* chore: .gitignore 추가

* chore: GitHub Issue 및 PR Template 추가

* [Docs] GitHub Issue Template 파일명 오류 수정 (#39)

* chore: .gitignore 추가

* chore: GitHub PR 및 Issue Template

* Revert "chore: GitHub PR 및 Issue Template"

This reverts commit 65915f72740bbf22899ef7ac52fefa99cde96a8b.

* Revert "chore: .gitignore 추가"

This reverts commit 1e1865a1cb7f0a279b4e74c12cd0f66631809ff3.

* chore: .gitignore 추가

* chore: GitHub Issue 및 PR Template 추가

* chore: GitHub Issue 및 PR Template 추가

* fix: Controller RequestBody 추가

---------

Co-authored-by: 준팍(junpak) <[email protected]>

* feat: 시맨틱 태그 적용 (#98)

* [FE]Test/#102  공통 컴포넌트 이외의 컴포넌트 스토리북 코드 작성  (#103)

* chore: 프로젝트 환경에 맞게 스토리북 세팅

* test: 공통 컴포넌트를 조합한 컴포넌트 스토리북 코드 작성

* test: 페이지 단위 스토리북 코드 작성

* [FE]Refactor/#104 스프린트 2 이후 전반적인 코드 리팩토링 (#105)

* refactor: 검색창 input에 placeholder 추가

* refactor: overflow 속성을 scroll에서 auto로 변경

윈도우 OS 에서 scroll 속성은 내용이 overflow 되지 않아도 기본값으로 가로 및 세로에 모든 스크롤이 기본으로 생긴다.
맥 OS 에서 scroll 기본 값은 overflow 되었을 때만이다.
즉 OS간 보이는 화면이 다르므로 auto 속성으로 변경한다.

* refactor: useNavigator hook 으로 분리 및 재사용

* design: 중복 태그 제거와 CSS 값 수정 및 잘못된 레이아웃 수정

* refactor: PinDetail 페이지에서 Update 관련 로직 분리

UpdatedPinDetail 페이지 컴포넌트로 분리한다.

* refactor: 코드 컨벤션에 따라 이벤트 헨들러 메서드 명 수정

* refactor: form 제어 방식 변경 및 중복 코드 제거

onChangeInput 메서드 방식으로 일괄 수정한다.

* refactor: 중복되는 타입을 타입 파일로 분리

* refactor: form 값 제어 중복 로직 useFormValues 훅으로 분리

* rename: useNavigator 잘못된 확장자 명 변경

* refactor: 가독성을 위한 변수명 수정 및 불필요한 로직 제거

* design: 디자인 시안과 다른 부분 수정

* feat: 깃허브 액션 설정 (#108)

* [BE] API 명세 수정에 따른 Image 구현 (#110)

* [Docs] GitHub Issue 및 PR Template 설정 (#37)

* chore: .gitignore 추가

* chore: GitHub PR 및 Issue Template

* Revert "chore: GitHub PR 및 Issue Template"

This reverts commit 65915f72740bbf22899ef7ac52fefa99cde96a8b.

* Revert "chore: .gitignore 추가"

This reverts commit 1e1865a1cb7f0a279b4e74c12cd0f66631809ff3.

* chore: .gitignore 추가

* chore: GitHub Issue 및 PR Template 추가

* [Docs] GitHub Issue Template 파일명 오류 수정 (#39)

* chore: .gitignore 추가

* chore: GitHub PR 및 Issue Template

* Revert "chore: GitHub PR 및 Issue Template"

This reverts commit 65915f72740bbf22899ef7ac52fefa99cde96a8b.

* Revert "chore: .gitignore 추가"

This reverts commit 1e1865a1cb7f0a279b4e74c12cd0f66631809ff3.

* chore: .gitignore 추가

* chore: GitHub Issue 및 PR Template 추가

* chore: GitHub Issue 및 PR Template 추가

* feat: Topic Image 추가

* refactor: Topic 에 Image 컬럼 추가로 인한 RestDocs 수정

* feat: PinImage 추가

* test: PinController 테스트 구현 (#101)

* refactor: PinImage 추가에 따른 dto 수정

* test: 테스트 격리를 위한 sql 작성

---------

Co-authored-by: 준팍(junpak) <[email protected]>
Co-authored-by: jaeyeon kim <[email protected]>

* [BE] 핀 관련 기능 코드 리팩토링 #90 (#106)

* refactor: PinCreateRequest 변경에 따른 테스트 코드 수정

* refactor: Coordinate 매직 넘버 제거 및 메서드 분리(#84)

* test: Coordinate 테스트 중첩 클래스 제거(#84)

* style: LocationRepository 테스트 개행 수정 (#85)

* style: Coordinate 개행 추가 (#84)

* refactor: Pin 불필요한 `this` 키워드 제거 (#86)

* refactor: PinService 주석 제거 및 메서드 분리 (#87)

* refactor: PinController 변수 분리 (#88)

* test: Pin 관련 테스트 개행 및 메서드 순서 변경 (#89)

* refactor: 가독성을 위한 메서드명 변경 (duplicate -> copy)

* refactor: 메서드명 변경 (From -> from)

* refactor: 상수 접근 제어자 변경

* test: 좌표 거리 계산 테스트 ParameterizedTest 적용

* style: import * 제거

* test: 검증 테스트 메서드 명 수정

* chore: conflict 해결

* [BE] API 명세 수정에 따른 Image 구현 - 토픽 수정 관련 누락 보완 (#112)

* remove: 사용하지 않는 토픽 수정 DTO 삭제

* feat: Topic 수정 로직 및 테스트에 image 필드 추가 반영

* feat: workflows CD 추가 (#120)

* refactor: Location Header 접근 허용 설정 (#114)

* [FE]Refactor/#109 수정된 API 명세 맞추기 및 백엔드와 연결 (#115)

* refactor: 바뀐 api 명세로 코드 수정

* refactor: msw 연결을 백엔드와 연결하도록 코드 수정

* refactor: env파일 end of line 추가

* [BE] Github Action workflows CD refactoring (#122)

* feat: workflows CD 추가

* refactor: 빌드 옵션 변경 및 주석 제거

* refactor: 빌드 결과물 파일명 변경

* refactor: 빌드 옵션 변경 (bootJar -> build)

* refactor: worflows 파일 분리 (PR)

* refactor: worflows 파일 분리 (CI/CD)

* refactor: workflows CI/CD 동작 옵션 수정

* feat: 개발 서버 배포 자동화 쉘 스크립트 작성 (#130)

* [BE] 개발서버 DB H2에서 MySQL로 이관 (#132)

* feat: 개발 서버 구성 파일 작성

* feat: 개발 서버 구성 파일 DDL-auto 옵션 변경

* [FE] Feature/#116 토픽 및 핀 병합할 때 태그 추가되는 기능 구현 (#128)

* feat: tag, 병합 및 같이보기 컴포넌트 생성

* feat: 토픽이나 핀 카드에서 버튼 클릭 시 태그 추가되거나 삭제되는 기능 구현

* refactor: tag가 없을 때 early return 하도록 수정

* refactor: tag의 padding값을 space 값으로 삽입

* refactor: selectedTopic에서 삼항연산자를 early return으로 변경

* refactor: early return 조건값 변경

* [FE] Feature/#129 토픽, 핀 병합 및 같이보기 기능 구현 (#137)

* feat: tag, 병합 및 같이보기 컴포넌트 생성

* feat: 토픽이나 핀 카드에서 버튼 클릭 시 태그 추가되거나 삭제되는 기능 구현

* feat: 같이보기 및 병합 기능 구현

* feat: context api를 이용해 전역변수 사용

* refactor: api 명세에 맞게 type 변경

* refactor: navigator에 값을 보내도록 수정

* refactor: 서버와 통신하기 위해 base url을 서버 url로 변경

* [FE] 지도 UI 적용 (#138)

* feat: tmap 지도 ui 추가

* feat: map 레이아웃 수정 및 에러 수정

* chore: tmap api 버전 변경

* chore: webpack 개발 환경 설정 변경

* refactor: Map 컴포넌트 렌더링 로직 변경

* feat: 토픽 클릭 시 지도 핀 변경 기능 구현

* refactor: context Api 적용 선택된 토픽 핀 표시

* feat: 선택한 토픽 기준으로 지도 표시 범위 이동

* feat: 특정 핀 클릭 이벤트 추가

* feat: 현재 클릭한 핀 애니메이션 적용

* feat: tag 표시 변경

* feat: 지도 클릭시 도로명 주소 가져오기

* feat: 핀 추가하기 페이지로 이동 시 애니메이션 제거

* refactor: 마커 애니메션 제거 로직 위치 변경

* feat: 선택한 좌표 핀 생성시 input에 적용

* feat: 현재 클릭된 마커 표시 기능 구현

* feat: daum post api 적용

* [FE]Refactor/#139 머지 후 싱크 및 에러 해결 작업 (#140)

* feat: get fetch api 추가 및 적용

* refactor: 생략된 코드 추가 및 필요없는 코드 삭제

* [BE] 개발 및 운영 서버 구성 파일 및 CI/CD 설정 분리 (#135)

* docs: merge workflow 개발서버 전용으로 변경

* �운영 서버 전용 merge workflow 작성.yml

* docs: pull-request workflow 운영 브랜치에도 적용

* feat: 운영 서버 구성 파일 작성

* rename: 백엔드 CI/CD workflow 분리를 위한 파일명 변경

* refactor: 백엔드 workflow name 수정, 배포스크립트 경로 수정

- CI, CD workflow가 분리되어있으므로 name을 수정함
- 배포 스크립트 경로 프론트엔드와 백엔드 통일

* [�FE] 프론트엔드 Github Action workflows CD 추가 (#136)

* feat: 프론트엔드 CI/CD workflow 파일 작성

* feat: 프론트엔드 CI/CD workflow 파일 수정

- 빌드 권한 부여

* refactor: Artifact 업로드 파일 수정

* refactor: 업로드 및 다운로드 파일 경로 수정

* refactor: 업로드 및 다운로드 파일 경로 수정

* rename: workflow name 수정

- 현재 테스트 실행하지 않으므로 CI/CD가 아닌 CD로 이름 변경

---------

Co-authored-by: zun <[email protected]>

* [BE] Truncate 를 위한 DatabaseCleanup 구현 (#118)

* [Docs] GitHub Issue 및 PR Template 설정 (#37)

* chore: .gitignore 추가

* chore: GitHub PR 및 Issue Template

* Revert "chore: GitHub PR 및 Issue Template"

This reverts commit 65915f72740bbf22899ef7ac52fefa99cde96a8b.

* Revert "chore: .gitignore 추가"

This reverts commit 1e1865a1cb7f0a279b4e74c12cd0f66631809ff3.

* chore: .gitignore 추가

* chore: GitHub Issue 및 PR Template 추가

* [Docs] GitHub Issue Template 파일명 오류 수정 (#39)

* chore: .gitignore 추가

* chore: GitHub PR 및 Issue Template

* Revert "chore: GitHub PR 및 Issue Template"

This reverts commit 65915f72740bbf22899ef7ac52fefa99cde96a8b.

* Revert "chore: .gitignore 추가"

This reverts commit 1e1865a1cb7f0a279b4e74c12cd0f66631809ff3.

* chore: .gitignore 추가

* chore: GitHub Issue 및 PR Template 추가

* chore: GitHub Issue 및 PR Template 추가

* test : Database Truncate 위한 DatabaseCleanup 구현

* style : 코드 컨벤션으로 인한 개행 추가

* refactor : @Service -> @Component 및 guava 의존성 제거

* fix: guava import 문 제거

* refactor: 메서드, 변수 분리

* refactor: disable/enable Referential query 상수로 변환

---------

Co-authored-by: 준팍(junpak) <[email protected]>

* feat: topicId 배열로 get 요청 시, 해당 토픽들 상세 조회 API 구현 (#142)

* [FE]Refactor/#143 토픽 같이보기 기능 추가된 명세에 맞게 수정 및 context 코드 변경 (#144)

* refactor: 필요없는 context api 삭제

* refactor: context 초기값 위치 변경

* refactor: 같이보기 기능 명세대로 get 요청 url 수정

* refactor: coordinate.id 타입 string으로 변경

* refactor: event에 element 추가

* refactor: 구조할당으로 변경

* refactor: 프론트 workflows 수정 (#146)

* refactor: 토픽 카드에 이미지 적용 및 blur처리 (#148)

* [FE] CI/CD workflows 코드 재수정  (#149)

* refactor: 프론트 workflows 수정

* refactor: 프론트 workflows 수정(cache 적용)

* Revert "refactor: 토픽 카드에 이미지 적용 및 blur처리 (#148)" (#150)

This reverts commit a22bf36ecd1146975efb3c3d5c5ce929b5abe837.

* Revert "[FE] CI/CD workflows 코드 재수정  (#149)" (#152)

This reverts commit eadeac78e3c3741a2a6e4ec648bd8f13d026edbd.

* Revert "[FE] CI/CD workflows 코드 재수정  (#149)" (#153)

This reverts commit eadeac78e3c3741a2a6e4ec648bd8f13d026edbd.

* refactor: 토픽 카드에 이미지 적용 및 blur처리 구현 (#154)

* Revert "Revert "[FE] CI/CD workflows 코드 재수정  (#149)" (#153)" (#155)

This reverts commit b26e127d194736c4e57cd435c14c6f263f79ff6e.

* [FE] CICD 코드 working directory 수정 (#156)

* refactor: 프론트 workflows 수정

* refactor: 프론트 workflows 수정(cache 적용)

* refactor: 프론트 workflows 수정(working directory 수정)

* Revert "refactor: 토픽 카드에 이미지 적용 및 blur처리 구현 (#154)" (#158)

This reverts commit b3d4aed7fa8a8e7e86dddb6c9633aa62d6d664c2.

* refactor: 토픽 카드 이미지 적용 및 blur 처리 구현 (#159)

* [FE] CI/CD workflows 코드 수정 (#160)

* refactor: 프론트 workflows 수정

* refactor: 프론트 workflows 수정(cache 적용)

* refactor: 프론트 workflows 수정(working directory 수정)

* refactor: 프론트 workflows 수정(npm 권한 삭제)

* Revert "refactor: 토픽 카드 이미지 적용 및 blur 처리 구현 (#159)" (#162)

This reverts commit ee755edb66365eca452da8b53c204a7d2b2c464f.

* feat: 토픽 카드 이미지 적용 및 blur처리 구현 (#163)

* Revert "feat: 토픽 카드 이미지 적용 및 blur처리 구현 (#163)" (#164)

This reverts commit 34bd8a44f0df59eefaa3f1ef1ea3897a645454b6.

* [FE] CI/CD workflows 코드 수정 (#165)

* refactor: 프론트 workflows 수정

* refactor: 프론트 workflows 수정(cache 적용)

* refactor: 프론트 workflows 수정(working directory 수정)

* refactor: 프론트 workflows 수정(npm 권한 삭제)

* refactor: 프론트 workflows 수정(브랜치 범위 변경)

* refactor: 프론트 workflows 수정(배포 코드 수정)

* refactor: 토픽 카드에 이미지 추가 및 blur 처리 구현 (#166)

* fix: CORS 허용 Origin에 개발서버, 운영서버 도메인 추가 (#171)

* fix: CORS 허용 여러 Origin 모두 설정하도록 수정 (#174)

* [FE] Refactor/#168 전반적인 레이아웃 및 UI 오류 수정 (#179)

* refactor: 피그마 시안과 맞지 않는 UI 수정

* refactor: 레이아웃 컴포넌트 오류 (width) 수정 , 스크롤 위치 수정

* refactor: PinPreview 체크 박스 클릭 이벤트 오류 수정

* refactor: 핀 링크 공유 버튼 클릭 시 alert 표시하기

* refactor: prettier 적용

* [FE]Refactor/#169 불필요한 코드, 컨텍스트 제거  (#178)

* refactor: tagId Context 제거 후 Router state로 대체

* refactor: 불필요한 import 제거

* fix: li 태그 내부 li 태그 오류 수정

* [FE]Fix/#167  전반적인 지도 오류 수정 및 개선 (#181)

* refactor: 선택된 마커 애니메이션 변경

* fix: 핀 클릭 시 중복 생성 에러 해결

* feat: 같이 보기 기능 각 토픽 별 마커 구분 기능 구현

* fix: 마커 변경

* [FE]Refactor/#145 UI 조정 및 머지 후 자잘한 오류 수정 (#183)

* fix: 지도를 클릭하여 핀 추가 시 주소 정보가 입력되지 않던 오류 수정

* refactor: 핀 미리보기 상세내용을 3줄까지만 보여주고 ellipsis 하도록 변경

* refactor: PinDetail 페이지 및 PinPreview space 수정

* refactor: 전반적인 space 수정 및 임시 토픽 생성자명 수정

* refactor: 토픽카드 띠 어둡게 처리하여 가독성 개선

* design: 태그 컴포넌트 크기 및 글자크기 조정

* refactor: 확인 버튼 우측으로 이동 및 기본 이미지 삽입

* refactor: 핀 수정하기 페이지 저장 버튼 우측으로 이동

* feat: 각 첫 input 태그에 autoFocus 기능 추가

* refactor: 핀 주소 입력시 keyDown 이벤트를 감지하여 검색창 띄울 수 있도록 변경

* refactor: tabIndex 적용하여 우측 확인버튼 선택 편리성 고려

* refactor: 토픽 공유 기능 추가 및 불필요한 코드 제거

* refactor: 불필요한 import 제거

* refactor: 토픽 추가하기 버튼 포지션 조정

* refactor: 토픽 카드 그림자 추가 및 띠 투명도 조절

* rename: Tag 디렉토리 위치 변경

* refactor: 링크 복사 alert 메세지 수정

* design: 불필요한 코드 제거

* design: 피그마 시안과 맞지 않는 부분 수정

* fix: 같이보기 취소 시에 체크 박스가 해제되지 않던 오류 수정

* refactor: 사용하지 않는 함수 제거 및 멘트 수정

* design: 누락된 height 값 추가 및 클릭 영역 확대

* design: 대체 이미지 기능 구현 및 여백 수정

* [FE]Refactor/#186 map api 리팩토링 (#187)

* refactor: 맵 클릭 이벤트 분리

* refactor: 클릭한 위치 관련 관심사 분리

* refactor: 마커 업데이트 로직 관심사 분리

* refactor: 불필요한 의존성 제거

* refactor: 지도 위 마커 적용 로직 분리

* refactor: 도로명 주소 가져오는 로직 분리

* refactor: 불필요한 코드 제거

* feat: pin 이미지 변경

* fix: 초기 핀 생성 에러 수정

* refactor: 보여지는 마커 변경하는 로직 수정

* refactor: 핀 클릭 시 로직 수정

* Merge branch 'develop' of https://github.com/woowacourse-teams/2023-map-befine into refactor/map-api

* feat: 토픽 같이 보기 기능 웹 접근성 개선 (#188)

* refactor: 핀 관련 에러 수정 (#190)

* fix: 같이보기 상태에서 핀 추가시 발생하는 오류 수정 (#192)

1. 토픽이 undefined로 잡히던 오류를 수정한다.
2. 토픽이 오름차순으로 정렬되어 체크박스로 선택한 순서와 화면에 보이는 토픽의 순서가 다른 문제를 해결한다.
3. 핀을 추가한 후에 해당 핀 페이지로 이동하던 오류를 수정한다. 따라서 이전의 같이보기 페이지로 이동한다.

* fix: 같이 보기에서 핀 클릭 시 같이 보기가 풀리는 오류 수정 (#193)

* fix: 핀 색깔 마지막 타입 에러 수정 (#195)

* refactor: 줌 레벨 및 애니메이션 수정 (#197)

* [FE]Test/#185 useFormValues 커스텀 훅 테스트 (#198)

* chore: testing library 세팅 초기화 (임시)

* chore: testing library 세팅 완료

* test: useFormValues 훅 테스트

* test: 불필요한 테스트 코드 제거

* chore: 잘못된 의존성 설치 수정

* [FE]Feature/#184 웹 접근성  개선 (#199)

* feat: 웹 접근성 input enter 추가

* refactor: 웹 접근성 적용 안된 부분 적용

* refactor: 토픽 인기 목록에 tab index 추가

* [FE]Feature/#205 Toast 컴포넌트 구현 및 기존 alert 대체 (#206)

* feat: Toast 컴포넌트 구현 및 기존 alert 대체

* feat: 토픽 생성, 병합 또는 핀 생성, 뽑아오기 시 토스트 알림 적용

* refactor: 사용하지 않는 변수 _ 처리

* refactor: React. 대신 구조분해 할당으로 import

* [FE]Refactor/#207 전반적인 코드 리팩토링 및 추상화 (#208)

* rename: api 관련 디렉토리 폴더명 변경

* rename: 상수 폴더명 변경 (const -> constants)

* refactor: getApi 중복 로직 제거 및 적용

* refactor: Text 컴포넌트 불필요한 interface 제거

* refactor: Input 컴포넌트 불필요한 속성 제거 및 GlobalStyles로 분리

* style: Textarea 컴포넌트 고정 속성 상위 배치

* style: Button 컴포넌트 고정 속성 상위 배치

* style: Flex 컴포넌트 스타일 선언 방식 일괄 수정

* refactor: Box 컴포넌트 불필요한 interface 제거 및 Image 컴포넌트로 분리

이미지와 관련된 로직은 Image 컴포넌트로 위임한다.

* refactor: 잘못된 type 선언 방식 수정 (type -> interface)

* refactor: Tag 컴포넌트 리액트 컴포넌트로 변경

* rename: Map 컴포넌트 디렉토리 변경

* refactor: Tag 컴포넌트에 tabIndex 속성 부여

* refactor: isCollapsed DOM 에러 대응

* refactor: 잘못된 스타일드 컴포넌트 명 수정

* design: pinDetail 스크롤 기능 추가

* refactor: Space 컴포넌트가 부모 크기에 의해 사이즈가 변경되는 오류 수정

* [BE] Location 패키지 코드 리팩터링 (#182)

* [Docs] GitHub Issue 및 PR Template 설정 (#37)

* chore: .gitignore 추가

* chore: GitHub PR 및 Issue Template

* Revert "chore: GitHub PR 및 Issue Template"

This reverts commit 65915f72740bbf22899ef7ac52fefa99cde96a8b.

* Revert "chore: .gitignore 추가"

This reverts commit 1e1865a1cb7f0a279b4e74c12cd0f66631809ff3.

* chore: .gitignore 추가

* chore: GitHub Issue 및 PR Template 추가

* [Docs] GitHub Issue Template 파일명 오류 수정 (#39)

* chore: .gitignore 추가

* chore: GitHub PR 및 Issue Template

* Revert "chore: GitHub PR 및 Issue Template"

This reverts commit 65915f72740bbf22899ef7ac52fefa99cde96a8b.

* Revert "chore: .gitignore 추가"

This reverts commit 1e1865a1cb7f0a279b4e74c12cd0f66631809ff3.

* chore: .gitignore 추가

* chore: GitHub Issue 및 PR Template 추가

* chore: GitHub Issue 및 PR Template 추가

* feat: member 구현 중

Co-authored-by: jaeyeon kim <[email protected]>

* feat: 패키지 분리, AuthMember 구현

Co-authored-by: jaeyeon kim <[email protected]>

* feat: MemberArgumentResolver 구현

* feat: AuthTopic 구현

* refactor: API 명세 수정을 위한 임의 커밋

Co-authored-by: jaeyeon kim <[email protected]>

* feat: Publicity, Permission 정적 팩토리 및 Converter 추가

* refactor: Topic 에 Publicity, Permission 추가로 인한 테스트 수정

* refactor: 모든 테스트가 통과하도록 수정

* refactor: 모든 테스트가 통과하도록 수정

* feat: Topic 에 관한 CRUD 에 권한 적용 완료

* fix: Converter 반환값 이상으로 인한 오류 해결

* feat: Pin 기능에 권한 설정 추가

* style: 사용하지 않는 import 문 제거 및 접근 제어자 조정

* refactor: .. 지송;;^^

- 패키지 재분배
- AUTH 관련 기능 구현
- TopicController 및 LocationController 분리

Co-authored-by: jaeyeon kim <[email protected]>

* refactor: TopicStatus 로직 오류 수정 LocationController 오타 수정

* refactor: 불필요 상수 제거

* refactor: PinResponse 자료형 변경

* feat: Image 클래스 구현

* feat: LocationRepository에 하버사인을 이용한 find 메서드 구현

* refactor: LocationController의 메서드명 변경

* refactor: getTopicsWithPermission의 반환값 변경

* style: 불필요 공백 제거

* refactor: 로직 오류 수정 및 테스트 추가

* test: Topic 패키지 테스트 추가

* refactor: Auth 관련 리팩터링 및 TopicIntegrationTest

* refactor: auth 어노테이션 제거

* test: AddressTest 추가

* test: Pin 관련 테스트 추가

* refactor: Coordinate BigDecimal -> Double 로 수정

* refactor: 모든 테스트가 성공하도록 수정

* refactor: LocationRepositoryTest 수정

* refactor: 핀 위치 중복 처리 조회 쿼리 변경

* test: Address 테스트 추가

* refactor: Coordinate 불필요 상수 정리 및 테스트 추가

* refactor: Location 불필요 메서드 정리 및 테스트 추가

* refactor: LocationRepository 불필요 메서드 정리 및 테스트 코드 리팩터링

* refactor: LocationQueryService 메서드 네이밍 수정 및 상수 추가

* test: LocationFixture 작성 및 적용

* refactor: LocationQueryService 및 테스트 리팩터링

* refactor: AuthTopic 객체 제거

* refactor: 오타 수정 및 불필요 메서드 제거

* refactor: git conflict 해결

* style: 불필요 공백 및 import 구문 삭제

* refactor: RestDocs를 위한 Interceptor 조건문 추가

* test: LocationControllerTest 추가

* test: LocationIntegrationTest 추가

* chore: 패키지 네이밍 오타 수정

* refactor: 상수화 및 메서드 분리

* refactor: 불필요 메서드 삭제

* style: 컨벤션 준수

* refactor: URI의 자원 표기 복수형으로 수정 및 불필요 상수 제거

* style: 네이밍 변경 및 공백 추가

* test: authHeader 생성 로직 수정

* refactor: requestBody를 requestParam으로 수정 및 컨벤션 통일

---------

Co-authored-by: jaeyeon kim <[email protected]>
Co-authored-by: yoondgu <[email protected]>

* refactor: 지도 버전을 변경한다. (#242)

* [FE] Refactor/#241 PinDetail 페이지 UI 및 관련 로직 수정, 공용 모달 구현 (#244)

* feat: 공용 모달 context 생성

* feat: PinDetail UI 변경 및 모달 추가

* refactor: ModalPortal props 이름 변경

* refactor: 수정하기 기능 수정하기 버튼에 적용

* [FE] Refactor/#245 하단 바 및 선택된 토픽 UI 수정 (#246)

* feat: 하단 바 구현

* feat: 바뀐 UI 적용

* refactor: 하단 바 색깔 변경

* [FE]Feature/#236 홈 UI 재배치 및 같이보기 페이지 구현 (#243)

* design: 스프린트 4 피그마 시안에 맞게 UI 배치 변경

* refactor: 컴포넌트 레이어 분리

* refactor: 컴포넌트 명을 파일 명과 동일시 변경

* feat: Layout Width 컨텍스트 생성 및 적용

* refactor: 사이드바 확장 기능 보류 (관심사 분리 차원)

* feat: TopicCard 컴포넌트의 형태를 두 가지로 구현

* feat: 주제와 관련된 토픽 별로 전체보기 기능 추가

* fix: horizontal router 기능 누락 및 오류 수정

* feat: 모아 보기 기능 및 버튼 추가

* refactor: 토픽 모양을 결정하는 prop명 변경

* refactor: 모아보기 컴포넌트 버튼으로 변경 및 위치 조정

* feat: 각 토픽 컨테이너의 설명문 추가

* fix: 머지 과정에서 누락된 import 추가 (#247)

* [BE] Member 관련 기능 개발 (#237)

* [Docs] GitHub Issue 및 PR Template 설정 (#37)

* chore: .gitignore 추가

* chore: GitHub PR 및 Issue Template

* Revert "chore: GitHub PR 및 Issue Template"

This reverts commit 65915f72740bbf22899ef7ac52fefa99cde96a8b.

* Revert "chore: .gitignore 추가"

This reverts commit 1e1865a1cb7f0a279b4e74c12cd0f66631809ff3.

* chore: .gitignore 추가

* chore: GitHub Issue 및 PR Template 추가

* [Docs] GitHub Issue Template 파일명 오류 수정 (#39)

* chore: .gitignore 추가

* chore: GitHub PR 및 Issue Template

* Revert "chore: GitHub PR 및 Issue Template"

This reverts commit 65915f72740bbf22899ef7ac52fefa99cde96a8b.

* Revert "chore: .gitignore 추가"

This reverts commit 1e1865a1cb7f0a279b4e74c12cd0f66631809ff3.

* chore: .gitignore 추가

* chore: GitHub Issue 및 PR Template 추가

* chore: GitHub Issue 및 PR Template 추가

* feat: member 구현 중

Co-authored-by: jaeyeon kim <[email protected]>

* feat: 패키지 분리, AuthMember 구현

Co-authored-by: jaeyeon kim <[email protected]>

* feat: MemberArgumentResolver 구현

* feat: AuthTopic 구현

* refactor: API 명세 수정을 위한 임의 커밋

Co-authored-by: jaeyeon kim <[email protected]>

* feat: Publicity, Permission 정적 팩토리 및 Converter 추가

* refactor: Topic 에 Publicity, Permission 추가로 인한 테스트 수정

* refactor: 모든 테스트가 통과하도록 수정

* refactor: 모든 테스트가 통과하도록 수정

* feat: Topic 에 관한 CRUD 에 권한 적용 완료

* fix: Converter 반환값 이상으로 인한 오류 해결

* feat: Pin 기능에 권한 설정 추가

* style: 사용하지 않는 import 문 제거 및 접근 제어자 조정

* refactor: .. 지송;;^^

- 패키지 재분배
- AUTH 관련 기능 구현
- TopicController 및 LocationController 분리

Co-authored-by: jaeyeon kim <[email protected]>

* refactor: TopicStatus 로직 오류 수정 LocationController 오타 수정

* refactor: 불필요 상수 제거

* refactor: PinResponse 자료형 변경

* feat: Image 클래스 구현

* feat: LocationRepository에 하버사인을 이용한 find 메서드 구현

* refactor: LocationController의 메서드명 변경

* refactor: getTopicsWithPermission의 반환값 변경

* style: 불필요 공백 제거

* refactor: 로직 오류 수정 및 테스트 추가

* test: Topic 패키지 테스트 추가

* refactor: Auth 관련 리팩터링 및 TopicIntegrationTest

* refactor: auth 어노테이션 제거

* test: AddressTest 추가

* test: Pin 관련 테스트 추가

* refactor: Coordinate BigDecimal -> Double 로 수정

* refactor: 모든 테스트가 성공하도록 수정

* refactor: LocationRepositoryTest 수정

* feat: 멤버 단일 조회 기능 추가

* feat: 멤버 목록 조회 기능 구현

* feat : Member 를 Create 하는 기능 추가

* feat : Member 가 만든 Topic 들을 조회하는 기능 추가

* feat : Member 가 본인이 만든 Pin 을 조회하는 기능 추가

* feat : 토픽을 생성한 자가 특정 멤버에게 권한을 주는 기능 추가

* feat : 토픽을 생성한자가 특정 멤버의 권한을 삭제하는 기능 추가

* feat : 해당 토픽에 권한을 가진 모든 유저를 조회

* feat : 권한을 가진 유저를 ID 로 조회하는 기능 추가

* refactor: AuthTopic 객체 제거

* feat : Topic, Pin, Member 에 연관관계 편의 메서드 추가

* refactor: RestDocs를 위한 Interceptor 조건문 추가

* test : Permission 추가와 관련된 Domain Test 작성

* test : 다른 유저에게 권한을 주는 기능 테스트 추가

* test : 권한 부여 인수테스트 추가

* docs : 권한 부여 API 명세 작성

* test : 권한 삭제 Service Test 작성

* test : 권한 삭제 인수테스트 작성

* docs : 권한 삭제 API 명세 작성

* test : memberResponse 정적 팩토리 메서드 테스트 작성

* test : 권한이 있는 멤버 전체를 조회하는 기능 Service Test 작성

* test : 해당 토픽에 권한을 가진 자들을 모두 조회하는 기능 인수테스트 작성

* docs : 해당 토픽에 권한을 가진 유저의 목록을 조회하는 API 명세 작성

* test : MemberDetailResponse 생성 테스트 추가

* test : 권한을 가진 유저를 조회하는 기능 Service Test 추가

* test : 권한을 가진 유저를 조회하는 기능 인수테스트 추가

* docs : 권한을 가진 유저를 조회하는 기능 API 명세 추가

* test : 유저를 저장하는 기능 Service Test 작성

* test : 유저를 저장하는 기능 인수테스트 작성

* docs : 유저를 저장하는 기능 API 명세 작성

* test : 유저를 목록 조회하는 기능 Service Test 작성

* test : 유저를 목록 조회하는 기능 인수테스트 작성

* docs : 유저를 목록 조회하는 기능 API 명세 작성

* refactor : AuthInterceptor mocking 을 RestDocs 에서 실행

* test : 유저 단일 조회 Service Test 작성

* test : 유저 단일 조회 인수테스트 작성

* docs : 유저 단일 조회 API 명세 작성

* test : 유저가 만든 토픽, 핀 조회 Service Test 작성

* test : 유저가 만든 토픽, 핀 조회 인수테스트 작성

* docs : 유저가 만든 토픽, 핀 조회 API 명세 작성

* refactor : MemberInfoTest Role 검증 수정

* refactor : MemberTest 수정

* refactor : ServiceTest 내에서 데이터 준비과정을 Repository 로만 하도록 수정

* refactor : Integeration 테스트에서도 Repository 를 통해 데이터를 준비할 수 있도록 수정

* style : 개행 및 사용하지 않는 import 문 제거

* refactor : 권한 조회시 권한에 대한 ID 값도 반환할 수 있도록 수정

* fix : ignoringFields 에 createdAt, updatedAt 추가

* fix : github action test 에서 깨지는 테스트 수정

* refactor : MemberDetailResponse updateAt -> updatedAt 로 수정

* refactor : Member name -> nickName 으로 수정

* style : 개행 수정

* refactor : Objects.isNull 을 사용하여 null 을 검사하도록 통일 및 Repository 매개변수 수정

* refactor : 부정 조건문 수정

* refactor : MemberInfo Update 삭제

* style : 개행 조정

---------

Co-authored-by: 준팍(junpak) <[email protected]>
Co-authored-by: junpakPark <[email protected]>

* [FE]Refactor/#248 지도 버전 변경 반영 (#249)

* fix: 마커 이벤트 추가

* fix : 지도 검색 팝업 갯수 제한

* fix: 클릭 시 위경도 미출력 에러 해결

* [BE] 핀(Pin) 패키지 코드 리팩터링(PinImage 기능 구현 포함) (#240)

* [Docs] GitHub Issue 및 PR Template 설정 (#37)

* chore: .gitignore 추가

* chore: GitHub PR 및 Issue Template

* Revert "chore: GitHub PR 및 Issue Template"

This reverts commit 65915f72740bbf22899ef7ac52fefa99cde96a8b.

* Revert "chore: .gitignore 추가"

This reverts commit 1e1865a1cb7f0a279b4e74c12cd0f66631809ff3.

* chore: .gitignore 추가

* chore: GitHub Issue 및 PR Template 추가

* [Docs] GitHub Issue Template 파일명 오류 수정 (#39)

* chore: .gitignore 추가

* chore: GitHub PR 및 Issue Template

* Revert "chore: GitHub PR 및 Issue Template"

This reverts commit 65915f72740bbf22899ef7ac52fefa99cde96a8b.

* Revert "chore: .gitignore 추가"

This reverts commit 1e1865a1cb7f0a279b4e74c12cd0f66631809ff3.

* chore: .gitignore 추가

* chore: GitHub Issue 및 PR Template 추가

* chore: GitHub Issue 및 PR Template 추가

* feat: member 구현 중

Co-authored-by: jaeyeon kim <[email protected]>

* feat: 패키지 분리, AuthMember 구현

Co-authored-by: jaeyeon kim <[email protected]>

* feat: MemberArgumentResolver 구현

* feat: AuthTopic 구현

* refactor: API 명세 수정을 위한 임의 커밋

Co-authored-by: jaeyeon kim <[email protected]>

* feat: Publicity, Permission 정적 팩토리 및 Converter 추가

* refactor: Topic 에 Publicity, Permission 추가로 인한 테스트 수정

* refactor: 모든 테스트가 통과하도록 수정

* refactor: 모든 테스트가 통과하도록 수정

* feat: Topic 에 관한 CRUD 에 권한 적용 완료

* fix: Converter 반환값 이상으로 인한 오류 해결

* feat: Pin 기능에 권한 설정 추가

* style: 사용하지 않는 import 문 제거 및 접근 제어자 조정

* refactor: .. 지송;;^^

- 패키지 재분배
- AUTH 관련 기능 구현
- TopicController 및 LocationController 분리

Co-authored-by: jaeyeon kim <[email protected]>

* refactor: TopicStatus 로직 오류 수정 LocationController 오타 수정

* refactor: 불필요 상수 제거

* refactor: PinResponse 자료형 변경

* feat: Image 클래스 구현

* feat: LocationRepository에 하버사인을 이용한 find 메서드 구현

* refactor: LocationController의 메서드명 변경

* refactor: getTopicsWithPermission의 반환값 변경

* style: 불필요 공백 제거

* refactor: 로직 오류 수정 및 테스트 추가

* test: Topic 패키지 테스트 추가

* refactor: Auth 관련 리팩터링 및 TopicIntegrationTest

* refactor: auth 어노테이션 제거

* test: AddressTest 추가

* test: Pin 관련 테스트 추가

* refactor: Coordinate BigDecimal -> Double 로 수정

* refactor: 모든 테스트가 성공하도록 수정

* refactor: LocationRepositoryTest 수정

* feat: 멤버 단일 조회 기능 추가

* feat: 멤버 목록 조회 기능 구현

* feat : Member 를 Create 하는 기능 추가

* feat : Member 가 만든 Topic 들을 조회하는 기능 추가

* feat : Member 가 본인이 만든 Pin 을 조회하는 기능 추가

* feat : 토픽을 생성한 자가 특정 멤버에게 권한을 주는 기능 추가

* feat : 토픽을 생성한자가 특정 멤버의 권한을 삭제하는 기능 추가

* feat : 해당 토픽에 권한을 가진 모든 유저를 조회

* feat : 권한을 가진 유저를 ID 로 조회하는 기능 추가

* refactor: AuthTopic 객체 제거

* chore: AuthToic 변경 사항 반영을 위한 merge

* chore: AuthToic 변경 사항 반영을 위한 merge 추가

* refactor: Pin 예외 메시지 수정

- #127 과 내용 통일

* chore: AuthToic 변경 사항 반영을 위한 merge 추가

* feat : Topic, Pin, Member 에 연관관계 편의 메서드 추가

* refactor: RestDocs를 위한 Interceptor 조건문 추가

* refactor: 핀 조회 관련 API 문서화에 인증 헤더 추가

* test : Permission 추가와 관련된 Domain Test 작성

* test : 다른 유저에게 권한을 주는 기능 테스트 추가

* test : 권한 부여 인수테스트 추가

* docs : 권한 부여 API 명세 작성

* test : 권한 삭제 Service Test 작성

* test : 권한 삭제 인수테스트 작성

* docs : 권한 삭제 API 명세 작성

* test : memberResponse 정적 팩토리 메서드 테스트 작성

* test : 권한이 있는 멤버 전체를 조회하는 기능 Service Test 작성

* test : 해당 토픽에 권한을 가진 자들을 모두 조회하는 기능 인수테스트 작성

* docs : 해당 토픽에 권한을 가진 유저의 목록을 조회하는 API 명세 작성

* test : MemberDetailResponse 생성 테스트 추가

* test : 권한을 가진 유저를 조회하는 기능 Service Test 추가

* test : 권한을 가진 유저를 조회하는 기능 인수테스트 추가

* docs : 권한을 가진 유저를 조회하는 기능 API 명세 추가

* test : 유저를 저장하는 기능 Service Test 작성

* test : 유저를 저장하는 기능 인수테스트 작성

* docs : 유저를 저장하는 기능 API 명세 작성

* test : 유저를 목록 조회하는 기능 Service Test 작성

* test : 유저를 목록 조회하는 기능 인수테스트 작성

* docs : 유저를 목록 조회하는 기능 API 명세 작성

* refactor : AuthInterceptor mocking 을 RestDocs 에서 실행

* test : 유저 단일 조회 Service Test 작성

* test : 유저 단일 조회 인수테스트 작성

* docs : 유저 단일 조회 API 명세 작성

* test : 유저가 만든 토픽, 핀 조회 Service Test 작성

* test : 유저가 만든 토픽, 핀 조회 인수테스트 작성

* docs : 유저가 만든 토픽, 핀 조회 API 명세 작성

* refactor: Pin 생성 시 PinInfo를 묶어서 받도록 수정, 중복 테스트 제거

- PinInfo의 필드인 name, description을 직접 받는 대신 PinInfo를 받도록 함.
- PinInfo의 필드가 추가될 경우에 Pin의 생성자도 수정할 필요가 없도록 함.
- PinTest에서 PinInfoTest와 중복되는 테스트 제거
- PinInfo 업데이트 시 새 객체 할당하도록 하여 검증이 필요한 로직 최소화 (update 관련 테스트 삭제)

* refactor: Pin 생성 시 권한 예외처리 추가

* test: 테스트 코드 컨벤션 통일, 도메인 계층 간 테스트 내용 분리, fixture 사용

* refactor: PinImage 생성 시 Image 객체를 전달받도록 수정, getter 추가

- Pin 리팩터링과 마찬가지로, Image의 필드 추가 시에도 생성 메서드 시그니처 변경할 필요 없도록 함.
- imageUrl에 어떤 검증 로직이 있는지 명시적으로 보여줄 수 있음.

* refactor: 회원 조회 로직 권한 확인 후 수행하도록 변경, 상수 처리

* test: 테스트 클래스 내 픽스쳐 사용 방식 통일, 메서드 순서 변경

* test: Pin copy 테스트 추가

* test: Pin 통합테스트 request 객체 멤버변수로 관리

* feat: PinImage 추가 API 작성, 기존 Pin 생성 및 수정 명세 변경

* test: 중복되는 내용의 PinCommandServiceTest 테스트 삭제

- 하위 계층에서 테스트하는 내용에 대해 테스트하는 메서드 삭제

* feat: 핀 삭제 시 핀 이미지 삭제 구현

* test: 핀 삭제 테스트에서 핀 이미지도 삭제되는지 확인하도록 수정

* refactor: 핀 이미지 추가 시 location 응답헤더 반환하도록 수정

* feat: 핀 이미지 삭제 기능 구현

* feat: 핀 상세 조회 시 이미지 id 반환하도록 수정

* docs: RestDocs 문서화 설정에 새 API 추가

* feat: 핀 복사 시 핀 이미지도 복사하도록 수정

* chore: 불필요한 주석 삭제, 코드 리뷰를 위한 주석 추가

* fix: updatedAt 관련 테스트 실패 해결

* refactor: 중복 거리 상수 단위 표기

* fix: 핀 이미지 삭제 메서드명 수정

* fix: 핀 이미지 관련 핸들러메서드에 LoginRequired 추가

* refactor: 사용하지 않는 Location 헤더값 전달 삭제

* feat: 핀 이미지 삭제 hard delete에서 soft delete으로 변경

* refactor: null 검증 메서드 통일

* test: Pin, PinImage RepositoryTest setUp 메서드 처리

* refactor: Pin 서비스 클래스 메서드 분리

- 조회 및 예외처리 로직 메서드 분리
- 검증 로직 메서드 분리 (TopicCommandService 와 분리 방식 통일)

* test: Pin, PinImage RepositoryTest 픽스쳐 적용

* refactor: Pin 조회 서비스 메서드 네이밍 구체화

* refactor: PinQueryServiceTest 픽스쳐 적용

* refactor: Pin 변수명, 개행 수정

* fix: 864b851e 충돌 해결 시 주석 처리 실수 해제, 테스트 실패 해결

* refactor: PinCommandServiceTest 픽스쳐 적용, 테스트 단순화

* test: Pin 서비스 계층 권한 관련 테스트 작성

* refactor: 핀 이미지 제거 메서드명 구체화

* test: 불필요한 객체 생성 삭제

* refactor: 정적 팩터리 메서드 내부에서 객체 생성하도록 변경

- 정적 팩터리 메서드를 의미있게 사용하기 위함
- 다른 도메인에서의 코드와의 통일성을 위해 변경함

---------

Co-authored-by: 준팍(junpak) <[email protected]>
Co-authored-by: jaeyeon kim <[email protected]>
Co-authored-by: junpakPark <[email protected]>

* [BE] Topic 패키지 관련 코드 리팩토링 (#238)

* [Docs] GitHub Issue 및 PR Template 설정 (#37)

* chore: .gitignore 추가

* chore: GitHub PR 및 Issue Template

* Revert "chore: GitHub PR 및 Issue Template"

This reverts commit 65915f72740bbf22899ef7ac52fefa99cde96a8b.

* Revert "chore: .gitignore 추가"

This reverts commit 1e1865a1cb7f0a279b4e74c12cd0f66631809ff3.

* chore: .gitignore 추가

* chore: GitHub Issue 및 PR Template 추가

* [Docs] GitHub Issue Template 파일명 오류 수정 (#39)

* chore: .gitignore 추가

* chore: GitHub PR 및 Issue Template

* Revert "chore: GitHub PR 및 Issue Template"

This reverts commit 65915f72740bbf22899ef7ac52fefa99cde96a8b.

* Revert "chore: .gitignore 추가"

This reverts commit 1e1865a1cb7f0a279b4e74c12cd0f66631809ff3.

* chore: .gitignore 추가

* chore: GitHub Issue 및 PR Template 추가

* chore: GitHub Issue 및 PR Template 추가

* feat: member 구현 중

Co-authored-by: jaeyeon kim <[email protected]>

* feat: 패키지 분리, AuthMember 구현

Co-authored-by: jaeyeon kim <[email protected]>

* feat: MemberArgumentResolver 구현

* feat: AuthTopic 구현

* refactor: API 명세 수정을 위한 임의 커밋

Co-authored-by: jaeyeon kim <[email protected]>

* feat: Publicity, Permission 정적 팩토리 및 Converter 추가

* refactor: Topic 에 Publicity, Permission 추가로 인한 테스트 수정

* refactor: 모든 테스트가 통과하도록 수정

* refactor: 모든 테스트가 통과하도록 수정

* feat: Topic 에 관한 CRUD 에 권한 적용 완료

* fix: Converter 반환값 이상으로 인한 오류 해결

* feat: Pin 기능에 권한 설정 추가

* style: 사용하지 않는 import 문 제거 및 접근 제어자 조정

* refactor: .. 지송;;^^

- 패키지 재분배
- AUTH 관련 기능 구현
- TopicController 및 LocationController 분리

Co-authored-by: jaeyeon kim <[email protected]>

* refactor: TopicStatus 로직 오류 수정 LocationController 오타 수정

* refactor: 불필요 상수 제거

* refactor: PinResponse 자료형 변경

* feat: Image 클래스 구현

* feat: LocationRepository에 하버사인을 이용한 find 메서드 구현

* refactor: LocationController의 메서드명 변경

* refactor: getTopicsWithPermission의 반환값 변경

* style: 불필요 공백 제거

* refactor: 로직 오류 수정 및 테스트 추가

* test: Topic 패키지 테스트 추가

* refactor: Auth 관련 리팩터링 및 TopicIntegrationTest

* refactor: auth 어노테이션 제거

* test: AddressTest 추가

* test: Pin 관련 테스트 추가

* refactor: Coordinate BigDecimal -> Double 로 수정

* refactor: 모든 테스트가 성공하도록 수정

* refactor: LocationRepositoryTest 수정

* refactor: AuthTopic 객체 제거

* refactor: RestDocs를 위한 Interceptor 조건문 추가

* refactor: DTO 변수 타입 수정 (primitive -> wrapper)

* refactor: Image 정적 팩토리 메서드 명 변경 (of -> from)

* refactor: Image 검증 메서드 부정 조건문 수정

* refactor: enum 클래스 변수명 변경 (title -> value)

* refactor: Topic 메서드 내 변수 분리

* refactor: TopicInfo 검증 메서드 수정

* refactor: TopicQueryService 메서드 명 수정

* refactor: 토픽 생성 및 병합 메서드 분리

* refactor: Topic 조회시 검증 로직 추가

* test: TopicRepository soft-deleting 테스트 구현

* test: Topic 권한에 따른 조회 테스트 구현

* test: Topic 권한에 따른 생성 및 병합 수정 삭제 테스트 구현

* test: TopicController 다중 조회 및 핀 병합 테스트 구현

* refactor: 토픽 다중 조회 검증 로직 추가

* refactor: 예외 메세지 수정 및 null 검증 방식 수정

* refactor: 요청에 따른 토픽 생성 분기 시점 변경

* refactor: 토픽 권한 수정 메서드 추가

* refactor: TopicController 변수 명 통일

* style: 예외 메세지 오탈자 수정

* refactor: TopicInfo 불변 객체로 수정

* refactor: TopicStatus 검증 로직 추가

* style: 주석 제거

* refactor: 핀 복사 메서드 수정

* refactor: 핀 조회 메서드 분리

---------

Co-authored-by: 준팍(junpak) <[email protected]>
Co-authored-by: jaeyeon kim <[email protected]>
Co-authored-by: junpakPark <[email protected]>

* [FE]Feature/#201 프론트 테스트 자동화 (#202)

* feat: github action 추가

* refactor : 우분투 버전 변경

* [FE] Feature/#204 입력 폼 유효성 검사 (#256)

* design: Input 및 Textarea 컴포넌트의 outline 속성 추가

* feat: 유효성 검사 로직 추가

욕설 및 비방어 데이터 셋은 추후 추가한다.

* refactor: React DOM 에러 해결 및 옵셔널 부여

* feat: 유효성 검사 form 적용 및 input Container 분리

* refactor: 핀 주소 input 값이 채워져있을 때 입력창 모달을 띄우지 않도록 변경

* feat: maxLength 지정하여 최대 글자 수 제한하는 기능 추가

* refactor: 타입 명 일괄 수정

* feat: 빈 값 유효성 검사 추가 및 유효성 검사 로직 분리

* feat: 현재 입력 글자 수 및 최대 입력 글자 수 표시

* refactor: maxLength 가 넘어가면 입력이 불가하도록 변경

* design: 사용자 입력 값과 maxLength 표시 위치 이격

* fix: 주소를 수정하려고 input 태그를 눌렀을 때 입력창이 뜨지 않는 오류 수정

* refactor: 잘못된 placeholder 수정

* refactor: pinDetail Update 관련 컴포넌트에 유효성 검사 적용

* fix: pinDetail 수정 시 기존 에러 메세지 상태가 유지되는 오류 수정

* fix: 입력 모달창을 통해 주소값을 입력해도 유효성 검사에 걸리는 오류 수정

* refactor: 욕설 및 비방어 데이터셋 업데이트

* chore: github test 오류 수정

* [FE] feature/#266 이미지, 툴팁 공통 컴포넌트 구현 (#268)

* feat: 이미지 컴포넌트 구현

* feat: 툴팁 컴포넌트 구현

* [BE] env/#272 CI/CD 테스트를 위한 환경변수 설정 추가 (#273)

* chore: 테스트를 위한 환경변수 설정 추가

* chore: 테스트를 위한 환경변수 설정 추가, 배포 전에도 포함

* chore: workflow 간 step name 통일

* [FE] feature/#267 Suspense, ErrorBoundary, ErrorHandling 작업 구현 (#278)

* chore: tsconfig 동적 임포트 수행을 위해 module esnext로 변경

* feat: topic 관련 suspense 구현

* refactor: selectedTopic 토픽과 핀 화면 컴포넌트로 따로 분리

* feat: 핀 suspense 구현 및 적용

* feat: 에러 바운더리 코드 작성

* feat: react router로 에러 처리 및 에러 페이지 구현

* refactor: 지도 맵 get api 분리

* fix: 지도에서 좌표 없는 곳 클릭 시 에러 해결 및 toast 메시지 출력

* refactor: error 처리 버튼 내용 변경

* refactor: skeleton 필요없는 타입 삭제

* [FE] feature/#259 로그인 버튼 구현 (관련 리다이렉트 설정), 토큰 관련 작업 (#281)

* refactor: getApi 헤더 권한 옵션 추가

* feat: 카카오 로그인 기능 구현

* feat: 로그인 요청 페이지 구현

* feat: 에러 페이지 구현

* feat: 페이지별 권한 부여

* refactor: 하단 바 메뉴 변경

* refactor: 하단 바 메뉴 변경 및 로그인 버튼 클릭 기능 구현

* feat: 로그인 정보 로컬스토리지 저장

* feat: 새로운 지도 생성 페이지 권한 기능 추가

---------

Co-authored-by: ParkGeunCheol <[email protected]>

* [BE] feature/#255 소셜로그인 구현 (#277)

* [Docs] GitHub Issue 및 PR Template 설정 (#37)

* chore: .gitignore 추가

* chore: GitHub PR 및 Issue Template

* Revert "chore: GitHub PR 및 Issue Template"

This reverts commit 65915f72740bbf22899ef7ac52fefa99cde96a8b.

* Revert "chore: .gitignore 추가"

This reverts commit 1e1865a1cb7f0a279b4e74c12cd0f66631809ff3.

* chore: .gitignore 추가

* chore: GitHub Issue 및 PR Template 추가

* [Docs] GitHub Issue Template 파일명 오류 수정 (#39)

* chore: .gitignore 추가

* chore: GitHub PR 및 Issue Template

* Revert "chore: GitHub PR 및 Issue Template"

This reverts commit 65915f72740bbf22899ef7ac52fefa99cde96a8b.

* Revert "chore: .gitignore 추가"

This reverts commit 1e1865a1cb7f0a279b4e74c12cd0f66631809ff3.

* chore: .gitignore 추가

* chore: GitHub Issue 및 PR Template 추가

* chore: GitHub Issue 및 PR Template 추가

* feat : Oauth 작업중

* feat: 소셜 로그인 및 회원가입 기능 구현

- 민감 정보 환경변수 관리가 아직 진행되지 않아 해당 상수 삭제 후 커밋

Co-authored-by: kpeel5839 <[email protected]>

* feat: 사용자 인가를 위한 JWT 토큰 적용

Co-authored-by: kpeel5839 <[email protected]>

* refactor : 소셜로그인 플랫폼 확장에 유연하도록 구조 리팩토링

* fix: Location 테스트 간 상수 공유로 인한 격리 문제 해결

* test: 소셜 로그인 적용, 인가 방식 변경으로 인한 테스트 코드 수정

- 소셜 로그인 적용으로 인해 생긴 OauthService를 다른 서비스 테스트에서는 Mock으로 주입함
- 인수 테스트에서 사용하는 AuthHeader 를 변경된 JWT 토큰 방식으로 적용함

* chore: 구성 파일에 인증 인가 관련 환경변수 작성

Co-authored-by: kpeel5839 <[email protected]>

* refactor: 소셜 회원가입 시 닉네임 랜덤 생성하도록 변경, 관련 추상화

- KakaoMemberResponse 이전에 OauthServerType을 추상화한 OauthMember 계층 추가
- OauthMember에 필요한 정보만 받아와서, 새로 가입할 Member 객체 생성
- Member 객체 생성 시 닉네임 랜덤 생성
- 이를 통해 Service의 로직을 줄이면서 다른 소셜 로그인 타입에서도 똑같이 닉네임 랜덤 생성 가능하도록 함
- 이를 통해 member 패키지와의 참조 최소화

Co-authored-by: kpeel5839 <[email protected]>

* rename: 클래스명 오기 수정

Co-authored-by: kpeel5839 <[email protected]>

* rename: oauth 패키지 클래스 정리

- OauthServerTypeConverter common 패키지로 이동
- kakao 구현체, dto 패키지 분리

Co-authored-by: kpeel5839 <[email protected]>

* rename: kakao oauth 관련 속성값 클래스명 변경

- 다른 Configuration 클래스들 이름과 겹쳐 혼동의 여지가 있어 수정함

Co-authored-by: kpeel5839 <[email protected]>

* rename: 테스트 전용 authHeader 생성 클래스명 변경

Co-authored-by: kpeel5839 <[email protected]>

* refactor: 테스트 전용 jwt secret key 환경변수 처리

Co-authored-by: kpeel5839 <[email protected]>

* chore : cherry pick 으로 반여잉 되지 않는 사항들을 반영

* test : Kakao Redirect Url 반환을 테스트

* test : OauthService 의 Login 을 테스트

* docs : /oauth/{oauthServerType} API 명세서 작성

* docs : /oauth/login/{oauthServerType} API 명세서 작성

* test : 회원가입이 중복으로 일어나지 않음을 테스트

* chore : 패키지 분리

* docs : oauth.adoc 작성 및 다른 adoc 파일 경로 수정

* refactor : 재 로그인 테스트 보완 및 필요없는 검증 제거

* refactor: 불필요한 메서드 분리 제거

* refactor: stream 사용으로 인덴트 수정

* refactor: null 여부 확인 메서드 통일

* refactor: BearerAuthorizationExtractor 메서드 분리

* refactor : @ConfigurationPropertiesScan 위치 변경

* refactor : /oauth/{oauthServerType} 반환 코드 변경

* refactor : 테스트 실패 원인 파악

---------

Co-authored-by: 준팍(junpak) <[email protected]>
Co-authored-by: yoondgu <[email protected]>

* [BE] refactor/#279 permission 패키지 분리 (#280)

* refactor: Permission Enum 네이밍 변경(PermissionType)

* refactor: MemberTopicPermission 네이밍 변경(Permission) 및 패키지 분리

* refactor: Service 및 Controller 분리

* test: 테스트 오류 수정

* refactor: 메서드 네임 수정

* docs: restDocs 추가

* refactor: 메서드 네이밍 변경

* refactor: 서버 주소 변경 (#284)

* fix: https (#286)

* fix: redirect-url (#287)

* fix: get Code (#288)

* fix/function-async (#289)

* fix: routepage 제거 (#290)

* [BE] feature/#264 토픽에 대한 즐겨찾기 API (#275)

* feat: Bookmark Entity 구현

* feat: 즐겨찾기 추가 기능 구현

* feat: 즐겨찾기 추가 API 구현

* feat: 즐겨찾기 조회 API 구현

* test: 즐겨찾기 토픽 추가 및 조회 API 테스트 구현

* feat: 즐겨찾기 토픽 단일 및 전체 삭제 기능 구현

* test: 즐겨찾기 토픽 단일 및 전체 삭제 기능 테스트 구현

* feat: 즐겨찾기 토픽 단일 및 전체 삭제 API 구현

* test: 즐겨찾기 토픽 단일 및 전체 삭제 API 테스트 구현

* chore: Bookmark 패키지 분리

* refactor: 메서드 순서 변경

* test: 통합 테스트 @DisplayName 변경

* feat: 토픽에 대한 즐겨찾기 여부 반환 JPQL 구현

* feat: 토픽 조회시, 즐겨찾기 여부 반환 기능 구현

* test: 토픽 조회시, 즐겨찾기 여부 반환 테스트 구현

* style: 개행 수정

* refactor: 즐겨 찾기 삭제 로직 수정

* refactor: 즐겨 찾기 등록시, 검증 로직 추가

* refactor: TopicResponse 매개변수 통일

* refactor: 변수명 수정

* refactor: BookmarkResponse 삭제

* refactor: 사용하지 않는 변수 삭제

* style: restdocs 오탈자 수정

* fix: 데이터 로그 확인 (#291)

* fix: url에 api 추가 (#292)

* fix: data-shape (#293)

* fix : seperate login (#295)

* fix: login-error (#296)

* [FE] Refactor/#269 reloaction UI (#276)

* refactor: Space 컴포넌트 레이아웃간 여백 값 추가

* design: TopicCard UI 변경

* refactor: Home 레이아웃 재배치 및 확장 기능 추가

* design: TopicCard 핀 및 즐겨찾기 UI 여백 수정

* design: 피그마 시안에 따른 전체보기 UI 변경

* refactor: layout size를 변경하는 로직 커스텀 훅으로 분리 및 상수화

* refactor: 모바일 사이즈를 고려하여 sidebar 크기 조정

* refactor: navbar 위치 조정 및 선택 시 하이라이트 기능 추가

* refactor: 토픽 카드 디폴트 이미지 상수화

* design: 잘못된 속성 재배치

* refactor: 불필요한 svg 제거 및 topicInfo UI 재배치

* design: 핀 디테일 및 업데이트 관련 UI 재배치

* design: TopicInfo title size 수정

* fix: 핀 수정이 되지 않던 오류 수정

* refactor: 전체보기 각 항목마다 router 분리

url 공유 대응한다.

* feat: 모아보기 페이지 추가

* feat: 즐겨찾기 페이지 추가

* feat: 마이페이지 추가

* refactor: 불필요한 console.log 제거

* fix: router 변경된 url 적용

* design: PinPreview 외 2 UI 재배치

* design: Tag 컴포넌트 다중 선택 일정개수 이상 시 '외' 형식으로 변경

* refactor: Div 모달 생성 및 context 적용

* refactor: 불필요한 import 제거 및 개행 처리

* refactor: Layout Width 값 별로 모달 위치 변경 가능토록 수정

* refactor: navbar 하이라이트 기능이 페이지 이동에 따라 변동되도록 변경

* fix: useEffect 의존성 배열 추가 안되어 발생한 오류 수정

* fix: layoutWidth DOM 에러 수정

* fix: dimmedColor DOM 에러 수정

* feat: NewPin 토픽 id가 없을 때 토픽 선택 모달 띄우는 기능

* design: 핀 뽑아오는 컴포넌트명 수정 및 fixed 부여

* refactor: modal 상태 분리로 인한 수정

* rename: 이미지 컴포넌트 변경

* refactor: 누락된 모달 상태 분리 커밋 기록

* refactor: SVG 컴포넌트를 감싸는 헤드리스 컴포넌트 생성 및 적용

* refactor: 잘못된 타입 수정

* design: 토픽카드 SVG 배치 순서 변경

* design: 핀 상세보기 하단 여백 수정

* design: 토픽인포 여백 수정

* rename: SVG 이미지 파일 변경

* design: 아이콘 버튼 호버링 시 효과 추가

* refactor: 임시 타입 지정

* refactor: 머지 충돌 해결 시 누락된 부분 보완 (#297)

* refactor: 인증 인가 관련 수정 (#299)

- 액세스 토큰 요청 및 응답 형식 통일
- RestDocs 수정

* [FE] feature/#282 내 정보 관련 컴포넌트 구현 및 getApi 타입 지정 (#303)

* feat: 닉네임, 이메일 들 내 정보 관련 컴포넌트 구현

* refactor: getApi 제네릭 타입 지정 및 변경 필요한 타입 수정

* [BE] feature/#250 지도 같이보기 기능 구현 (#257)

* feat: 모아보기 기능 구현

* refactor: controller 필드 final 추가

* refactor: URI 및 메서드 네이밍 변경

* test: atlas 테스트 추가

* test: 테스트 코드 리팩터링

* test: 테스트 코드 로직 오류 수정

* refactor: null값 validate 추가 및 개행 추가

* test: 개행 및 DisplayName 수정

* refactor: 메서드 순서 변경

* feat: Response에 isInAtlas 추가

* refactor: convert 로직 간소화

* refactor: 메서드 분리 및 정리

* doc: restDocs 적용

* refactor: MemberController 내 토픽 및 핀 조회 메서드 분리

* [BE] feature/#251 최신 지도 조회 API 구현 (#258)

* feat: 최신 토픽 조회 기능 구현

* test: 테스트 추가 및 리팩터링

* test: 테스트 코드 로직 오류 수정

* refactor: null값 validate 추가 및 개행 추가

* test: 개행 및 DisplayName 수정

* test: 개행 및 DisplayName 수정

* docs: restDocs snippets 추가

* refactor: 메서드 순서 변경

* feat: Response에 isInAtlas 추가

* refactor: convert 로직 간소화

* refactor: 메서드 분리 및 정리

* doc: restDocs 적용

* refactor: 메서드 네이밍 수정

* refactor: MemberController 내 토픽 및 핀 조회 메서드 분리

* refactor: 코드 리뷰 반영

* refactor: 코드 리뷰 반영

* refactor: DTO에 작성자 이름 추가

* chore: git conflict 해결

* [BE] hotfix/#311 일부 API 명세 변경, 개발서버 구성환경 수정, 인가 관련 예외 처리 (#312)

* [Docs] GitHub Issue 및 PR Template 설정 (#37)

* chore: .gitignore 추가

* chore: GitHub PR 및 Issue Template

* Revert "chore: GitHub PR 및 Issue Template"

This reverts commit 65915f72740bbf22899ef7ac52fefa99cde96a8b.

* Revert "chore: .gitignore 추가"

This reverts commit 1e1865a1cb7f0a279b4e74c12cd0f66631809ff3.

* chore: .gitignore 추가

* chore: GitHub Issue 및 PR Template 추가

* [Docs] GitHub Issue Template 파일명 오류 수정 (#39)

* chore: .gitignore 추가

* chore: GitHub PR 및 Issue Template

* Revert "chore: GitHub PR 및 Issue Template"

This reverts commit 65915f72740bbf22899ef7ac52fefa99cde96a8b.

* Revert "chore: .gitignore 추가"

This reverts commit 1e1865a1cb7f0a279b4e74c12cd0f66631809ff3.

* chore: .gitignore 추가

* chore: GitHub Issue 및 PR Template 추가

* chore: GitHub Issue 및 PR Template 추가

* refactor: 권한 부여 API 명세 변경

- 여러 회원에 대한 권한을 한번에 부여할 수 있도록 변경
- 불필요한 권한 id 반환하지 않도록 변경
- 변경 사항 RestDocs 반영
- 관련 테스트코드 수정

* fix: 권한 부여 API 응답코드 201로 변경

* chore : 개발환경에서는 ddl-auto = update 로 설정

* fix : 파라미터 형식 통일

* fix : RestDocs 문서 수정

* refactor : validateMember 수정

---------

Co-authored-by: 준팍(junpak) <[email protected]>
Co-authored-by: jaeyeon kim <[email protected]>

* [BE] feature/#253 특정 핀에 대해 내 지도에 저장하기 API  (#270)

* [Docs] GitHub Issue 및 PR Template 설정 (#37)

* chore: .gitignore 추가

* chore: GitHub PR 및 Issue Template

* Revert "chore: GitHub PR 및 Issue Template"

This reverts commit 65915f72740bbf22899ef7ac52fefa99cde96a8b.

* Revert "chore: .gitignore 추가"

This reverts commit 1e1865a1cb7f0a279b4e74c12cd0f66631809ff3.

* chore: .gitignore 추가

* chore: GitHub Issue 및 PR Template 추가

* [Docs] GitHub Issue Template 파일명 오류 수정 (#39)

* chore: .gitignore 추가

* chore: GitHub PR 및 Issue Template

* Revert "chore: GitHub PR 및 Issue Template"

This reverts commit 65915f72740bbf22899ef7ac52fefa99cde96a8b.

* Revert "chore: .gitignore 추가"

This reverts commit 1e1865a1cb7f0a279b4e74c12cd0f66631809ff3.

* chore: .gitignore 추가

* chore: GitHub Issue 및 PR Template 추가

* chore: GitHub Issue 및 PR Template 추가

* feat: 모아보기 기능 구현

* refactor: controller 필드 final 추가

* refactor: URI 및 메서드 네이밍 변경

* test: atlas 테스트 추가

* test: 테스트 코드 리팩터링

* feat: 최신 토픽 조회 기능 구현

* test: 테스트 추가 및 리팩터링

* test: 테스트 코드 로직 오류 수정

* test: 개행 및 DisplayName 수정

* docs: restDocs snippets 추가

* feat: 핀을 나의 토픽들에 복사하는 기능 구현 완료

* test: copyPin 테스트 케이스 및 restDocs 추가

* refactor: 메서드 분리 및 불필요한 개행 삭제

* refactor: 메서드 네이밍 변경

* refactor: 권한 부여 API 명세 변경

- 여러 회원에 대한 권한을 한번에 부여할 수 있도록 변경
- 불필요한 권한 id 반환하지 않도록 변경
- 변경 사항 RestDocs 반영
- 관련 테스트코드 수정

* fix: 권한 부여 API 응답코드 201로 변경

* chore : 개발환경에서는 ddl-auto = update 로 설정

* fix : 파라미터 형식 통일

* fix : RestDocs 문서 수정

* refactor : validateMember 수정

---------

Co-authored-by: jaeyeon kim <[email protected]>
Co-authored-by: yoondgu <[email protected]>
Co-authored-by: zun <[email protected]>

* [BE] feature/#298 인기 (급상승) 토픽 조회 API  (#306)

* feat: 모아보기 기능 구현

* refactor: controller 필드 final 추가

* refactor: URI 및 메서드 네이밍 변경

* test: atlas 테스트 추가

* test: 테스트 코드 리팩터링

* test: 테스트 코드 로직 오류 수정

* refactor: null값 validate 추가 및 개행 추가

* test: 개행 및 DisplayName 수정

* refactor: 메서드 순서 변경

* feat: Response에 isInAtlas 추가

* refactor: convert 로직 간소화

* refactor: 메서드 분리 및 정리

* doc: restDocs 적용

* refactor: MemberController 내 토픽 및 핀 조회 메서드 분리

* feat: 인기 토픽 조회 기능 구현

* feat: 인기 토픽 조회 기능 API 구현

* test: 인기 토픽 조회 기능 API 테스트 수정

* style: 코드 라인 길이 포맷 수정

* fix: @Transactional 어노테이션 수정

* test: Atlas RestDocs 테스트 코드 수정

---------

Co-authored-by: junpakPark <[email protected]>
Co-authored-by: junpakPark <[email protected]>

* [FE] feature/#300 즐겨찾기 페이지 구현 (#308)

* feat: 즐겨찾기 페이지 구현

* refactor: Bookmark 페이지 이름 변경

* refactor: 즐겨찾기 서버 요청 후 즐겨찾기 데이터 받아오도록 수정

* [FE] feature/#302 내가 만든 지도 목록 모달에 띄우기 (#310)

* feat: 내 지도 토픽 목록 list 컴포넌트 구현 및 모달 창에 적용

* fix: 내 지도 저장 모달 띄웠을 때 PinDetail 포커스 제거

* refactor: 내 지도 목록 모달 서버 요청 후 데이터 받도록 수정

* [FE] feature/#301 내 정보 페이지 구현 (#309)

* feat: 내 정보 페이지 구현

* refactor: early return 위치 변경

* refactor: 에러 페이지 width 변경

* refactor: MyInfoPage 이름 수정

* refactor: Profile 내 토픽 get 요청 받아 데이터 받도록 수정

* refactor: 프로필 사진 로그인 됐을 시 카카오 프로필 사진으로 변경

* refactor: MyInfo 수정 버튼 삭제

* [FE] Feature/#304 모아보기 구현 (#307)

* refactor: 태그 전역상태 생성 및 핀 이름이 같을 경우 동시 삭제되던 오류 수정

* feat: SeveralSelectedTopics 페이지 구현

제 야무진 뻘짓을 기록합니다.... 혹시나 나중에 이 방식으로 쓰인다면 참고자료가 되길....

* refactor: 모아보기 API 명세에 맞게 GET 기능 구현

제 뻘짓을 만회합니다

* remove: 사용하지 않는 페이지 제거

* feat: 모아보기 버튼 클릭 시 모아보기에 추가 및 상태 표시 아이콘 추가

* design: 모아보기 카운터 UI 재배치

* feat: 모아보기 정책에 맞게 7개까지만 모아볼 수 있도록 변경

* feat: 모아보기 및 즐겨찾기 not focused 버튼 SVG 추가

* refactor: props drilling 으로 인한 불필요한 interface 제거

* remove: 불필요한 페이지 컴포넌트 제거

* design: 모아보기 추가 카운터 애니메이션 구현

* refactor: 불필요한 console.log 제거

* fix: id 타입 에러 수정

* refactor: 불필요한 fragment 제거

* style: 불필요한 개행 제거

* feat: 모아보기 토픽을 한번에 삭제하는 기능 추가

* design: 토스트 위치 수정 및 애니메이션 변경

* rename: SVG 파일 변경

* feat: delete API 추가

* refactor: 토픽 타입 변경으로 인한 수정 및 기능 추가

* refactor: post content type 추가

* refactor: 불필요한 console.log 제거

* refactor: 중복 로직 제거 및 메서드명 변경

* refactor: 기존 메서트 사용 및 불필요한 import 제거

* fix: topicCard 타입 변경된 인터페이스 적용

* feat: 로그인 오류 발생 시 toast 띄우는 에러핸들링 추가

* [FE] Feature/#317 권한 관련 기능 구현 (#318)

* refactor :불필요한 페이지 삭제

* refactor: 헤더에 토큰 추가 방식 변경

* feat: 기능 요구사항 구현

* feat: 추가 기능 구현

* fix: 버그 일괄 수정 (#320)

* fix: 에러 수정 (#321)

* refactor: 리다이렉트 페이지 라우트 (#322)

* refactor: 머지 후 모든 오류 및 에러핸들링 수정 (#323)

* [BE] feature/#319 커스텀 예외 적용 및 예외 처리 구현 (#329)

* feat : Exception 처리 뼈대 코드 구현

* refactor : 토픽의 ID 를 통해서 조회하는 경우의 Exception 을 CustomException 으로 교체

* feat: common 및 member 패키지 커스텀 예외 적용

* feat: topic 패키지 커스텀 예외 적용

Co-authored-by: yoondgu <[email protected]>

* feat: pin 패키지 커스텀 예외 적용

Co-authored-by: yoondgu <[email protected]>

* feat: Location 및 Atlas 패키지 커스텀 예외 적용

Co-authored-by: yoondgu <[email protected]>

* feat: Bookmark 및 Permission 패키지 커스텀 예외 적용

Co-authored-by: yoondgu <[email protected]>

* feat: AuthInterceptor 커스텀 예외 적용 및 검증 보완

- 로그인이 필요하지 않은 요청에 대해, 비로그인 유저 id 검증 로직 추가

Co-authored-by: yoondgu <[email protected]>

* feat: Auth 및 Oauth 커스텀 예외 적용 및 검증 보완

Co-authored-by: yoondgu <[email protected]>

* feat: common ArgumentResolver 예외 메시지 보완

Co-authored-by: yoondgu <[email protected]>

* feat: GlobalException 및 GlobalExceptionHandler 적용

Co-authored-by: yoondgu <[email protected]>

* refactor: image 검증 정규표현식 수정

Co-authored-by: yoondgu <[email protected]>

* feat: 500번대 ExceptionHandler 구현

Co-authored-by: yoondgu <[email protected]>

* refactor: 불필요 개행 수정

Co-authored-by: yoondgu <[email protected]>

* refactor: 불필요 Getter 어노테이션 제거

Co-authored-by: yoondgu <[email protected]>

* refactor: exceptionSource 로깅 개행 추가

Co-authored-by: yoondgu <[email protected]>

* refactor: ErrorCode record로 변경 및 ErrorResponse 제거

Co-authored-by: yoondgu <[email protected]>

---------

Co-authored-by: yoondgu <[email protected]>

* [FE] feature/#331 권한있는 토픽 접근 가능 기능 구현 (#332)

* feat: infowindow 삭제 추가

* refactor: postApi 수정

* feat: 지도 선택 기능 추가

* Feat: 내 지도에 추가하기 기능 구현

* refactor: 권한 부여 기능 수정

* [FE] feature/#325 웹 접근성 적용 (#327)

* feat: 웹 접근성 적용

* refactor: toast 나올 때 리더기가 읽도록 수정

* refactor: 지도 이미지 label 적용

* [FE] Refactor/#324 (#333)

* fix: 상태코드 로직 오류 수정

* refactor: API 잘못된 로직 수정

* refactor: 즐겨찾기 버튼 및 id idx 로직 수정

* refactor: 불필요한 권한 로직 제거

* feat: 에러핸들링 로직 추가

* refactor: 즐겨찾기 및 모아보기 관련 idx 로직 수정

* design: 여백 수정

* feat: 즐겨찾기가 없을 경우 대체페이지 추가

* design: 모든 UI 오류 재배치

* design: UI 재배치

* refactor: Map 핀 이름 기능 추가 홈에서 각 토픽 별로 GET

* refactor: 각 페이지에서 항목별로 토픽 카드 보이도록 변경

* feat: 내 현재위치 받아오는 util 함수 작성

* design: 윈도우 오류 대응

* refactor: 누락된 suspense 모두 지정

* refactor: 지도 리스트가 비어있을 경우 대체 페이지 수정

* remove: 불필요한 페이지 제거

* refactor: 파비콘 추가 및 홈 GET url 수정

* design: 버튼 네이밍 변경

* fix: 즐겨찾기 버튼 오류 수정

* fix: 오류 수정 (#336)

* [BE] feature/#330 로깅 적용 (#334)

* feat: 로깅 적용

Co-authored-by: yoondgu <[email protected]>

* feat: JVM 시간 서울로 설정

Co-authored-by: yoondgu <[email protected]>

* fix: 이미지 검증 정규표현식 수정

Co-authored-by: yoondgu <[email protected]>

* fix: 로그인 사용자 검증 오류 수정

Co-authored-by: yoondgu <[email protected]>

* test: 로깅 테스트 환경 분리

Co-authored-by: yoondgu <[email protected]>

---------

Co-authored-by: yoondgu <[email protected]>

* [BE] hotfix/log 로그인 버그로 인한 인터셉터 수정 및 로그백 일부 수정 (#337)

* fix: 인터셉터 로직 수정 및 log-back 수정

Co-authored-by: yoondgu <[email protected]>

* fix: log-back 추가encoder

Co-authored-by: yoondgu <[email protected]>

* fix: 로그 파일 저장 위치 변경

Co-authored-by: yoondgu <[email protected]>

---------

Co-authored-by: yoondgu <[email protected]>

* [FE] Fix/all (#339)

* design: 여백오류 수정

* fix: 지도 줌 아웃 리미트 지정

* refactor: 핀 추가 플로우 여러 상황 대응

* design: 임시 커밋

* fix: 배포 페이지와 마크업이 다른 오류 슈정

* refactor: 임시 커밋

* fix: 배포 페이지와 마크업이 다른 오류 수정

* refactor: 라우터 및 에러페이지 및 디자인 시안 문제 모두 수정

* design: 디자인 시안과 다르지 않던 부분 수정

* refactor: 디자인 정책 및 시안과 맞지 않는 부분 수정 진행

* refactor: 불필요한 console.log 제거 및 타입가드

* fix: 뽑아오기 상태 초기화

* [FE] Fix/all (#340)

* refactor: 핀추가 거절 멘트 지정

* design: 배포페이지와 로컬이 다른 오류 수정

* chore: 프로젝트 상세설명 추가

* [BE] hotfix/guest 게스트 조회시 발생하던 버그 해결 (#341)

* [Docs] GitHub Issue 및 PR Template 설정 (#37)

* chore: .gitignore 추가

* chore: GitHub PR 및 Issue Template

* Revert "chore: GitHub PR 및 Issue Template"

This reverts commit 65915f72740bbf22899ef7ac52fefa99cde96a8b.

* Revert "chore: .gitignore 추가"

This reverts commit 1e1865a1cb7f0a279b4e74c12cd0f66631809ff3.

* chore: .gitignore 추가

* chore: GitHub Issue 및 PR Template 추가

* [Docs] GitHub Issue Template 파일명 오류 수정 (#39)

* chore: .gitignore 추가

* chore: GitHub PR 및 Issue Template

* Revert "chore: GitHub PR 및 Issue Template"

This reverts commit 65915f72740bbf22899ef7ac52fefa99cde96a8b.

* Revert "chore: .gitignore 추가"

This reverts commit 1e1865a1cb7f0a279b4e74c12cd0f66631809ff3.

* chore: .g…
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
BE 백엔드 관련 이슈 feat 새로운 기능 개발 우선순위 : 중
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

[BE] 최신토픽 조회 API
4 participants