Skip to content

Comments

feat: 아티클 조회 response에 메타데이터 포함#136

Merged
ose0221 merged 9 commits intodevfrom
feat/#127
Feb 14, 2026
Merged

feat: 아티클 조회 response에 메타데이터 포함#136
ose0221 merged 9 commits intodevfrom
feat/#127

Conversation

@ose0221
Copy link
Contributor

@ose0221 ose0221 commented Feb 14, 2026

🚀 PR 요약

목적이 무엇인가요? - 지우고 작성

✨ PR 상세 내용

어떤 부분이 어떻게 변경이 되었나요? - 지우고 작성

🚨 주의 사항

주의할 부분이 무엇인가요? - 지우고 작성

✅ 체크 리스트

  • 리뷰어 설정했나요?
  • Label 설정했나요?
  • 제목 양식 맞췄나요? (ex. feat: 기능 추가)
  • 변경 사항에 대한 테스트를 진행했나요?

Summary by CodeRabbit

Release Notes

  • New Features

    • Enhanced article browsing with API v3, including detailed article views, filtering by read status, and pagination support
    • Added article reminder functionality with customizable reminder times and metadata
    • Introduced category privacy settings for organizing articles
    • Improved user signup with job profile selection during onboarding
    • Enhanced Google authentication with streamlined user onboarding flow
  • Bug Fixes

    • Corrected typo in Google authentication controller class name
  • Tests

    • Updated test fixtures for article and category functionality
  • Chores

    • Extended security configuration to support new API v3 endpoints

@ose0221 ose0221 changed the base branch from main to dev February 14, 2026 08:00
@coderabbitai
Copy link

coderabbitai bot commented Feb 14, 2026

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

This PR introduces comprehensive V3 API endpoints across the application stack, including article retrieval with filtering and pagination, Google authentication flows, category management with visibility control, and user job management. Supporting infrastructure spans controllers, DTOs, port interfaces, business logic usecases, repository implementations, and domain model enhancements.

Changes

Cohort / File(s) Summary
V3 Article Controller
api/src/main/java/com/pinback/api/article/controller/ArticleControllerV3.java
Added 7 new endpoints for article retrieval: detail, remind articles, all articles, and category-filtered articles with pagination and count info, delegating to GetArticlePort.
V3 Category Controller
api/src/main/java/com/pinback/api/category/controller/CategoryControllerV3.java
New controller with POST and PATCH endpoints for creating and updating categories with public/private visibility, using CreateCategoryPort and UpdateCategoryPort.
V3 Auth & User Controllers
api/src/main/java/com/pinback/api/google/controller/GoogleLoginControllerV3.java, api/src/main/java/com/pinback/api/user/controller/UserControllerV3.java, api/src/main/java/com/pinback/api/google/controller/GoogleLoginController.java
Added GoogleLoginControllerV3 with Google login and signup V3 endpoints; new UserControllerV3 with job update endpoint; fixed typo in GoogleLoginController class name.
API Request DTOs (V3)
api/src/main/java/com/pinback/api/auth/dto/request/SignUpRequestV3.java, api/src/main/java/com/pinback/api/category/dto/request/CreateCategoryRequestV3.java, api/src/main/java/com/pinback/api/category/dto/request/UpdateCategoryRequestV3.java, api/src/main/java/com/pinback/api/user/dto/request/UpdateUserJobRequest.java
New request DTOs with validation annotations and toCommand() converters for API input mapping.
Article Response DTOs (Application)
application/src/main/java/com/pinback/application/article/dto/response/ArticleDetailResponseV3.java, ...ArticleResponseV3.java, ...ArticlesPageResponseV3.java, ...CategoryArticleResponseV3.java, ...GetAllArticlesResponseV3.java, ...RemindArticleResponseV3.java, ...TodayRemindResponseV3.java
7 new response record DTOs for article retrieval with factory methods to map from domain Article entities, supporting various contexts (detail, remind, by category).
Article Count & Metadata DTOs
application/src/main/java/com/pinback/application/article/dto/ArticleCountInfoDtoV3.java, ...ArticlesWithCountDto.java, application/src/main/java/com/pinback/application/article/dto/response/ArticleCountInfoResponse.java
New DTOs aggregating article counts (total, read, unread) and paginated results with counts for response composition.
Category Command & Response DTOs
application/src/main/java/com/pinback/application/category/dto/command/CreateCategoryCommandV3.java, ...UpdateCategoryCommandV3.java, application/src/main/java/com/pinback/application/category/dto/response/CreateCategoryResponseV3.java, ...UpdateCategoryResponseV3.java
Command and response records for V3 category operations with factory methods; supports isPublic visibility flag.
User & Auth Command/Response DTOs
application/src/main/java/com/pinback/application/user/dto/command/UpdateUserJobCommand.java, application/src/main/java/com/pinback/application/user/dto/response/UserJobInfoResponse.java, application/src/main/java/com/pinback/application/auth/dto/SignUpCommandV3.java, application/src/main/java/com/pinback/application/google/dto/response/GoogleLoginResponseV3.java
Command/response DTOs for job updates and Google login V3, with factory methods for response construction.
Port Interface Expansions
application/src/main/java/com/pinback/application/article/port/in/GetArticlePort.java, application/src/main/java/com/pinback/application/article/port/out/ArticleGetServicePort.java, application/src/main/java/com/pinback/application/category/port/in/CreateCategoryPort.java, ...UpdateCategoryPort.java, application/src/main/java/com/pinback/application/user/port/in/UserManagementPort.java, application/src/main/java/com/pinback/application/user/port/out/UserUpdateServicePort.java
Added 13 new port methods across article, category, and user ports for V3 operations with count and filtering support.
Article Usecase Logic
application/src/main/java/com/pinback/application/article/usecase/query/GetArticleUsecase.java
Implemented 7 new V3 methods (detail, remind, all articles, by category) with metadata transformation; added validation for invalid readStatus; integrates ArticleResponseV3, RemindArticleResponseV3, and TodayRemindResponseV3 DTOs.
Auth & User Usecases
application/src/main/java/com/pinback/application/auth/usecase/AuthUsecase.java, application/src/main/java/com/pinback/application/user/usecase/UserManagementUsecase.java
AuthUsecase: added signUpV3 and getInfoAndTokenV3 methods with job assignment and user onboarding logic. UserManagementUsecase: added updateUserJobInfo with per-method transactional decorators and logging.
Category Usecases
application/src/main/java/com/pinback/application/category/usecase/command/CreateCategoryUsecase.java, ...UpdateCategoryUsecase.java
Implemented createCategoryV3 and updateCategoryV3 methods with validation; CreateCategoryUsecase added validateCategoryCreationV3 and color assignment logic.
Domain Models
domain/src/main/java/com/pinback/domain/category/entity/Category.java, domain/src/main/java/com/pinback/domain/user/entity/User.java, domain/src/main/java/com/pinback/domain/user/enums/Job.java
Added isPublic field to Category with createWithIsPublic factory and updateIsPublic method. Added Job enum with 4 constants (PLAN, DESIGN, FRONTEND, BACKEND) with from(String) lookup. Added job field to User with updateJob and hasJob methods.
Domain Exceptions
domain/src/main/java/com/pinback/domain/user/exception/JobNotFoundException.java, application/src/main/java/com/pinback/application/common/exception/InvalidReadStatusException.java
New domain exception JobNotFoundException for invalid job lookups; new application exception InvalidReadStatusException for read-status validation failures.
Repository & Service - Article
infrastructure/src/main/java/com/pinback/infrastructure/article/repository/ArticleRepositoryCustom.java, ...ArticleRepositoryCustomImpl.java, infrastructure/src/main/java/com/pinback/infrastructure/article/service/ArticleGetService.java
ArticleRepositoryCustom: 5 new method signatures for count/filter queries. ArticleRepositoryCustomImpl: 159 LOC of Querydsl queries for today-remind counts, read-status filtering, category filtering with pagination. ArticleGetService: 5 new methods delegating to repository with DTO mapping; changed exception type in findByUserAndId to ArticleNotOwnedException.
Repository & Service - Article Infrastructure DTOs
infrastructure/src/main/java/com/pinback/infrastructure/article/repository/dto/ArticleCountInfoV3.java, ...ArticleInfoV3.java, ...ArticleWithCountV3.java
Infrastructure-layer projection DTOs for Querydsl query results capturing counts and paginated articles.
Repository & Service - User
infrastructure/src/main/java/com/pinback/infrastructure/user/repository/UserRepository.java, infrastructure/src/main/java/com/pinback/infrastructure/user/service/UserUpdateService.java
Added updateJob method to repository with @Modifying query and to UserUpdateService for job persistence.
Security Configuration
api/src/main/java/com/pinback/api/config/filter/JwtAuthenticationFilter.java, api/src/main/java/com/pinback/api/config/security/SecurityConfig.java
Extended JwtAuthenticationFilter and SecurityConfig to permit unauthenticated access to /api/v3/auth/signup and /api/v3/auth/google endpoints.
Exception Codes
shared/src/main/java/com/pinback/shared/constant/ExceptionCode.java
Added two new exception codes: INVALID_READSTATUS (400, c40006) and JOB_NOT_FOUND (404, c40405).
Tests & Fixtures
infrastructure/src/test/java/com/pinback/infrastructure/article/service/ArticleDeleteServiceTest.java, ...ArticleGetServiceTest.java, ...ArticleSaveServiceTest.java, infrastructure/src/test/java/com/pinback/infrastructure/category/service/CategoryColorServiceTest.java, ...CategorySaveServiceTest.java, infrastructure/src/test/java/com/pinback/infrastructure/fixture/TestFixture.java
Updated tests to use Category.createWithIsPublic(..., true) for public category fixtures; added categoryWithIsPublic(User) test fixture helper.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~65 minutes

Possibly related PRs

Suggested labels

FEAT, API

Suggested reviewers

  • rootTiket

Poem

🐰 Whiskers twitch with glee so bright,
V3 endpoints dancing through the night,
Articles hop, categories leap,
Jobs are set in stacks so deep,
Auth flows swift on Google's flight!

🚥 Pre-merge checks | ❌ 4
❌ Failed checks (3 warnings, 1 inconclusive)
Check name Status Explanation Resolution
Description check ⚠️ Warning The PR description is entirely boilerplate template text with no concrete information filled in. All required sections (PR summary, detailed content, cautions, and checklist items) remain as empty placeholders marked 'delete and write'. Complete the PR description: summarize V3 API implementation goals, document category isPublic/naming changes, user job feature additions, and infrastructure updates; add testing and review notes.
Docstring Coverage ⚠️ Warning Docstring coverage is 0.92% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Merge Conflict Detection ⚠️ Warning ⚠️ Unable to check for merge conflicts: Invalid branch name format
Title check ❓ Inconclusive The title 'feat: 아티클 조회 response에 메타데이터 포함' directly describes the main objective—adding metadata to article query responses. However, the actual changeset is significantly broader, including V3 API endpoints, category visibility (isPublic), user job management, Google login updates, and extensive infrastructure changes beyond article response metadata. The title is partially related but undersells the scope. Consider revising to capture the full V3 API implementation or breaking into multiple focused PRs.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/#127

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@ose0221 ose0221 merged commit fc552d5 into dev Feb 14, 2026
5 checks passed
@ose0221 ose0221 deleted the feat/#127 branch February 14, 2026 08:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant