주간 보고페이지에 있는

업무 요약, 내 주간 보고서에게 날짜 필터를 적용시킬 예정
수정사항은 어떤 새로운 기능을 만들때보다 더 세세하게 들어가야한다
1. 프론트엔드 (cursor)에게 현재 상황을 먼저 받아옴
"업무 요약 카드와 내 주간보고서 카드에서 호출하는 조회 api가 뭔지 알려줘 "
[cursor 에게 받은 응답]
📋 업무 요약 카드와 내 주간 보고서에서 호출하는 조회 API 정리
이미지에서 보이는 두 섹션에서 호출하는 API들을 정리해드리겠습니다:
🔍 1. "업무 요약" 카드 (MyTasksSummary 컴포넌트)
호출하는 API:
백엔드 엔드포인트: GET /api/tasks
프론트엔드 서비스: taskService.getTasksByProject('')
위치: src/services/taskService.ts (36-63번째 줄)
API 호출 방식:
실제 요청 URL:
데이터 처리:
모든 업무를 가져온 후 프론트엔드에서 현재 사용자의 업무만 필터링
task.assignedTo === currentUserId 조건으로 필터링
📊 2. "내 주간 보고서" 카드 (MyPlanTable 컴포넌트)
호출하는 API:
백엔드 엔드포인트: GET /api/weekly-plans
프론트엔드 서비스: getWeeklyPlans()
위치: src/api/weeklyPlansApi.ts (41-47번째 줄)
API 호출 방식:
실제 요청 URL:
데이터 처리:
프로젝트 정보와 매핑하여 projectName 추가
availableProjects.find(p => p.id === plan.projectId)?.name 로 프로젝트명 설정
🔗 관련 API들
프로젝트 목록 조회:
백엔드 엔드포인트: GET /api/projects
프론트엔드 서비스: getProjects()
위치: src/services/projectService.ts (13-61번째 줄)
사용자 목록 조회:
백엔드 엔드포인트: GET /api/users
위치: src/hooks/useWeeklyReports.ts (90번째 줄)
주간 보고서 목록 조회:
백엔드 엔드포인트: GET /api/weekly-reports
쿼리 파라미터: startDate, endDate, project_id, assignee_id
위치: src/api/weeklyReportsApi.ts (39-76번째 줄)
📝 요약
업무 요약: /api/tasks → 모든 업무 조회 후 사용자별 필터링
내 주간 보고서: /api/weekly-plans → 주간 계획 데이터 조회
프로젝트 정보: /api/projects → 프로젝트명 매핑용
사용자 정보: /api/users → 사용자 목록 조회
이 API들이 이미지에서 보이는 테이블 데이터를 구성하는 핵심 데이터 소스입니다!
2. 프롬프트를 넘겨서 gpt에게 전달하고 내가 구현하고 싶은 기능과 함께 요청하며 백엔드 (copilot) 에게 넘길 프롬프트 요청
[GPT에게 받은 응답]
[목표]
"업무 요약"과 "내 주간업무 보고서"에서 사용할 기간별 필터 기능을 백엔드 레벨에서 지원하도록 개선해줘.
현재 프론트 구조
----------------------------------------------------
1️⃣ 업무 요약 (MyTasksSummary)
- API: GET /api/tasks
- 호출 위치: src/services/taskService.ts (36~63)
- 필터 방식: 프론트에서 전체 업무를 가져온 후
task.assignedTo === currentUserId 로 필터링함.
2️⃣ 내 주간업무 보고서 (MyPlanTable)
- API: GET /api/weekly-plans
- 호출 위치: src/api/weeklyPlansApi.ts (41~47)
- 필터 방식: 주간 계획 전체를 가져온 후
availableProjects.find(p => p.id === plan.projectId)?.name 으로 프로젝트명 매핑함.
----------------------------------------------------
[요구사항]
1. 두 API 모두 기간 필터(startDate, endDate)를 쿼리 파라미터로 받을 수 있도록 수정.
예:
- GET /api/tasks?startDate=2025-10-20&endDate=2025-10-26
- GET /api/weekly-plans?startDate=2025-10-20&endDate=2025-10-26
2. startDate와 endDate가 제공된 경우,
- `/api/tasks` → task.start_date, task.due_date 기준으로 필터링
(`WHERE start_date >= :startDate AND due_date <= :endDate`)
- `/api/weekly-plans` → week_start_date, week_end_date 기준으로 필터링
(`WHERE week_start_date >= :startDate AND week_end_date <= :endDate`)
- 파라미터가 없을 경우 기존 전체 조회 로직 유지.
3. Controller, Service, Mapper 각각 수정해줘.
- Controller: @RequestParam("startDate") @RequestParam("endDate") optional 로 추가
- Service: 기간이 존재하면 Mapper 쿼리 호출 시 map에 조건 추가
- Mapper: SQL WHERE 절에 조건 추가 (동적 <if test> 문 사용)
4. 반환 데이터 포맷은 기존 ApiResponse 유지.
[추가 참고]
- WeeklyPlanController.java: list() 메서드 참고
- TaskController.java: getTasks() 또는 listTasks() 참고
- 테이블 구조:
- tb_task(start_date, due_date)
- tb_weekly_plan(week_start_date, week_end_date)
[출력 형태]
- 수정된 Controller / Service / Mapper 코드 전체
- 수정된 SQL 예시
- startDate, endDate 없이 호출 시 전체 조회 유지되는 부분 명시
3. copilot에게 위 프롬프트를 전달
'work' 카테고리의 다른 글
| 사내 프로젝트 툴 제작기 : AI 다써보기 (0) | 2025.11.27 |
|---|---|
| 팀 멤버 추가 api 구현 (gpt, copilot) (0) | 2025.10.27 |
| 프론트 페이지 리팩토링 (0) | 2025.10.27 |
| Copilot으로 만드는 댓글 관리 API (0) | 2025.10.20 |
| 백엔드(copilot) 을 사용한 후 프론트엔드 (cusor) 로 연결 (0) | 2025.10.20 |