-
Notifications
You must be signed in to change notification settings - Fork 0
참여한/생성한 프로젝트의 "평가완료" 추가 ( issue #316 ) #326
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
Changes from 14 commits
fb8d35e
de51069
56e054c
5b73b26
603f8e6
b1f903c
58af55f
84125c1
b8e5abe
62f90a5
405cbab
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,41 @@ | ||||||||||||||||
| import { Link } from 'react-router-dom'; | ||||||||||||||||
| import styled from 'styled-components'; | ||||||||||||||||
|
|
||||||||||||||||
| export const Container = styled.div` | ||||||||||||||||
| display: flex; | ||||||||||||||||
| flex-direction: column; | ||||||||||||||||
| border: 1px solid #ccc; | ||||||||||||||||
| border-radius: ${({ theme }) => theme.borderRadius.primary}; | ||||||||||||||||
| `; | ||||||||||||||||
|
|
||||||||||||||||
| export const CardHeader = styled.div` | ||||||||||||||||
| min-height: 50px; | ||||||||||||||||
| display: flex; | ||||||||||||||||
| justify-content: space-between; | ||||||||||||||||
| align-items: center; | ||||||||||||||||
| `; | ||||||||||||||||
|
|
||||||||||||||||
| export const Title = styled.h3` | ||||||||||||||||
| margin-left: 20px; | ||||||||||||||||
| `; | ||||||||||||||||
|
|
||||||||||||||||
| export const ShowAllArea = styled(Link)` | ||||||||||||||||
| display: flex; | ||||||||||||||||
| margin-left: 10px; | ||||||||||||||||
| margin-right: 10px; | ||||||||||||||||
| `; | ||||||||||||||||
|
|
||||||||||||||||
| export const ShowAllButton = styled.button` | ||||||||||||||||
| font-size: 13px; | ||||||||||||||||
| margin-right: 6px; | ||||||||||||||||
| `; | ||||||||||||||||
layout-SY marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||||||||||||
|
|
||||||||||||||||
| export const ArrowRight = styled.img` | ||||||||||||||||
| font-size: 13px; | ||||||||||||||||
| `; | ||||||||||||||||
|
||||||||||||||||
| export const ArrowRight = styled.img` | |
| font-size: 13px; | |
| `; | |
| export const ArrowRight = styled.img` | |
| width: 13px; | |
| height: auto; | |
| `; |
🤖 Prompt for AI Agents
In src/components/admin/mainCard/MainCard.styled.ts around lines 33 to 35, the
ArrowRight styled component applies font-size to an img element, which has no
effect. Replace font-size with appropriate width and height properties to
control the image size. Additionally, ensure that when using this component, an
alt attribute with meaningful or empty text is provided for accessibility.
Consider using an SVG component for better scalability and styling control.
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,31 @@ | ||
| import * as S from './MainCard.styled'; | ||
| import arrowRight from '../../../assets/ArrowRight.svg'; | ||
| import React from 'react'; | ||
|
|
||
| interface MainCardProps { | ||
| title: string; | ||
| moreLink?: string; | ||
| children: React.ReactNode; | ||
| } | ||
|
|
||
| const MainCard = ({ title, moreLink, children }: MainCardProps) => { | ||
| return ( | ||
| <S.Container> | ||
| <S.CardHeader> | ||
| <S.Title>{title}</S.Title> | ||
| {moreLink && ( | ||
| <S.ShowAllArea to={moreLink}> | ||
| <S.ShowAllButton>전체 보기</S.ShowAllButton> | ||
| <S.ArrowRight src={arrowRight} /> | ||
| </S.ShowAllArea> | ||
| )} | ||
| </S.CardHeader> | ||
| <S.Line /> | ||
| <S.Wrapper> | ||
| <S.MainContent>{children}</S.MainContent> | ||
| </S.Wrapper> | ||
| </S.Container> | ||
| ); | ||
| }; | ||
|
|
||
| export default MainCard; |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,3 @@ | ||
| import styled from 'styled-components'; | ||
|
|
||
| export const Container = styled.div``; |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,8 @@ | ||
| import React from 'react'; | ||
| import * as S from './GraphCard.styled'; | ||
|
|
||
| const GraphCard = () => { | ||
| return <S.Container>GraphCard Component</S.Container>; | ||
| }; | ||
|
|
||
| export default GraphCard; |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,3 @@ | ||
| import styled from 'styled-components'; | ||
|
|
||
| export const Container = styled.div``; |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,8 @@ | ||
| import React from 'react'; | ||
| import * as S from './AllUserPreview.styled'; | ||
|
|
||
| const AllUserPreview = () => { | ||
| return <S.Container>AllUserPreview Component</S.Container>; | ||
| }; | ||
|
|
||
| export default AllUserPreview; |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,3 @@ | ||
| import styled from 'styled-components'; | ||
|
|
||
| export const Container = styled.div``; |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,8 @@ | ||
| import React from 'react'; | ||
| import * as S from './InquiresPreview.styled'; | ||
|
|
||
| const InquiresPreview = () => { | ||
| return <S.Container>InquiresPreview Component</S.Container>; | ||
| }; | ||
|
|
||
| export default InquiresPreview; |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,22 @@ | ||
| import styled from 'styled-components'; | ||
|
|
||
| export const Container = styled.div` | ||
| display: flex; | ||
| flex-direction: column; | ||
| padding: 20px; | ||
| `; | ||
|
|
||
| export const Wrapper = styled.div` | ||
| display: flex; | ||
| `; | ||
|
|
||
| export const Dot = styled.img` | ||
| margin-right: 7px; | ||
| `; | ||
|
|
||
| export const NoticeTitle = styled.p` | ||
| font-size: 18px; | ||
| white-space: nowrap; | ||
| overflow: hidden; | ||
| text-overflow: ellipsis; | ||
| `; |
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,21 @@ | ||||||||||||||||||||||||||
| import React from 'react'; | ||||||||||||||||||||||||||
| import * as S from './NoticePreview.styled'; | ||||||||||||||||||||||||||
| import { useGetNotice } from '../../../../hooks/user/useGetNotice'; | ||||||||||||||||||||||||||
| import line from '../../../../assets/line.svg'; | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| const NoticePreview = () => { | ||||||||||||||||||||||||||
| const { noticeData } = useGetNotice({ keyword: '', page: 1 }); | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| return ( | ||||||||||||||||||||||||||
| <S.Container> | ||||||||||||||||||||||||||
| {noticeData?.notices.map((notice) => ( | ||||||||||||||||||||||||||
| <S.Wrapper> | ||||||||||||||||||||||||||
| <S.Dot src={line} /> | ||||||||||||||||||||||||||
| <S.NoticeTitle>{notice.title}</S.NoticeTitle> | ||||||||||||||||||||||||||
| </S.Wrapper> | ||||||||||||||||||||||||||
| ))} | ||||||||||||||||||||||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. React key prop 누락 및 안전한 렌더링 개선이 필요합니다. 정적 분석 도구에서 지적한 대로 map 함수에서 key prop이 누락되었고, 안전한 렌더링을 위한 개선이 필요합니다. 다음 수정사항을 적용해주세요: - {noticeData?.notices.map((notice) => (
- <S.Wrapper>
+ {noticeData?.notices?.map((notice) => (
+ <S.Wrapper key={notice.id || notice.title}>
<S.Dot src={line} />
<S.NoticeTitle>{notice.title}</S.NoticeTitle>
</S.Wrapper>
))}📝 Committable suggestion
Suggested change
🧰 Tools🪛 Biome (1.9.4)[error] 12-12: Missing key property for this element in iterable. The order of the items may change, and having a key can help React identify which item was moved. (lint/correctness/useJsxKeyInIterable) 🤖 Prompt for AI Agents |
||||||||||||||||||||||||||
| </S.Container> | ||||||||||||||||||||||||||
| ); | ||||||||||||||||||||||||||
| }; | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| export default NoticePreview; | ||||||||||||||||||||||||||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,3 @@ | ||
| import styled from 'styled-components'; | ||
|
|
||
| export const Container = styled.div``; |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,8 @@ | ||
| import React from 'react'; | ||
| import * as S from './ReportsPreview.styled'; | ||
|
|
||
| const ReportsPreview = () => { | ||
| return <S.Container>ReportsPreview Component</S.Container>; | ||
| }; | ||
|
|
||
| export default ReportsPreview; |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -11,12 +11,13 @@ import loadingImg from '../../../assets/loadingImg.svg'; | |
| import { useModal } from '../../../hooks/useModal'; | ||
| import Modal from '../modal/Modal'; | ||
| import { formatImgPath } from '../../../util/formatImgPath'; | ||
| // import bell from '../../../assets/bell.svg'; | ||
| // import Notification from './Notification/Notification'; | ||
| // import bellLogined from '../../../assets/bellLogined.svg'; | ||
| // import { useEffect } from 'react'; | ||
| // import { testLiveAlarm } from '../../../api/alarm.api'; | ||
| import bell from '../../../assets/bell.svg'; | ||
| import Notification from './Notification/Notification'; | ||
| import bellLogined from '../../../assets/bellLogined.svg'; | ||
| import { useMyProfileInfo } from '../../../hooks/user/useMyInfo'; | ||
| import { useNotificationContext } from '../../../context/SseContext'; | ||
| import { useEffect } from 'react'; | ||
| import { testLiveAlarm } from '../../../api/alarm.api'; | ||
| import { ROUTES } from '../../../constants/routes'; | ||
|
|
||
| function Header() { | ||
|
|
@@ -26,24 +27,26 @@ function Header() { | |
| const isLoggedIn = useAuthStore((state) => state.isLoggedIn); | ||
| const { myData, isLoading } = useMyProfileInfo(); | ||
|
|
||
| const { signalData, clearSignal } = useNotificationContext(); | ||
|
|
||
| const handleClickLogout = () => { | ||
| userLogout(); | ||
| useAuthStore.persist.clearStorage(); | ||
| localStorage.clear(); | ||
| }; | ||
|
|
||
| // const { signalData, setSignalData } = useNotification(); | ||
|
|
||
| // useEffect(() => { | ||
| // testLiveAlarm(); | ||
| // }, []); | ||
|
|
||
| const profileImg = myData?.profileImg | ||
| ? `${import.meta.env.VITE_APP_IMAGE_CDN_URL}/${formatImgPath( | ||
| myData.profileImg | ||
| )}?w=86&h=86&fit=crop&crop=entropy&auto=format,enhance&q=60` | ||
| : DefaultImg; | ||
|
|
||
| useEffect(() => { | ||
| if (process.env.NODE_ENV === 'deployment') { | ||
| testLiveAlarm(); | ||
| } | ||
| }, []); | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 💡 Verification agent 🧩 Analysis chain환경 조건 확인 필요
일반적으로 Node.js 환경에서는 만약 🏁 Script executed: #!/bin/bash
# 프로젝트에서 사용하는 NODE_ENV 값들 확인
echo "=== package.json의 scripts 확인 ==="
cat package.json | jq '.scripts'
echo "=== 빌드/배포 설정 파일들에서 NODE_ENV 사용 확인 ==="
rg "NODE_ENV" --type json --type js --type ts -A 2 -B 2Length of output: 1096 환경 변수 현재
🤖 Prompt for AI Agents |
||
|
|
||
| return ( | ||
| <S.HeaderContainer> | ||
| <Link to={ROUTES.main}> | ||
|
|
@@ -58,26 +61,23 @@ function Header() { | |
| <S.HeaderLink>공지사항</S.HeaderLink> | ||
| </Link> | ||
| </S.HeaderLinkContainer> | ||
| {/* <S.Alarm role='button' tabIndex={0} aria-label='알림 메세지'> | ||
| <S.Alarm role='button' tabIndex={0} aria-label='알림 메세지'> | ||
| {isLoggedIn ? ( | ||
| <DropDown | ||
| toggleButton={ | ||
| signalData ? ( | ||
| <S.BellButton onClick={() => setSignalData(null)}> | ||
| <img src={bellLogined} alt='알림' /> | ||
| {signalData && <S.Dot />} | ||
| </S.BellButton> | ||
| ) : ( | ||
| <S.BellButton onClick={clearSignal}> | ||
| <img src={bellLogined} alt='알림' /> | ||
| ) | ||
| {signalData && <S.Dot />} | ||
| </S.BellButton> | ||
| } | ||
| comment={false} | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 💡 Verification agent 🧩 Analysis chainDropDown 컴포넌트에 comment prop 추가
DropDown 컴포넌트의 이 prop이 필수인지, 기본값은 무엇인지 확인하여 일관성을 맞춰주세요. Also applies to: 92-92 🏁 Script executed: #!/bin/bash
# DropDown 컴포넌트에서 comment prop 사용 확인
echo "=== DropDown 컴포넌트의 comment prop 정의 확인 ==="
ast-grep --pattern 'interface $_ {
$$$
comment$_: $_
$$$
}'
echo "=== comment prop 사용 예시 확인 ==="
rg "comment.*=" src/components/common/dropDown/ -A 3 -B 3Length of output: 1286 DropDown 컴포넌트에 comment prop 정의 및 기본값 지정 필요 DropDown.tsx에서
🤖 Prompt for AI Agents |
||
| > | ||
| <Notification /> | ||
| </DropDown> | ||
| ) : ( | ||
| <img src={bell} alt='알림' /> | ||
| )} | ||
| </S.Alarm> */} | ||
| </S.Alarm> | ||
| <DropDown | ||
| aria-label='프로필 드롭다운' | ||
| toggleButton={ | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -16,7 +16,7 @@ const NotificationItem = ({ item }: NotificationItemProps) => { | |
| return ( | ||
| <Link to={route} onClick={close}> | ||
| <S.Container> | ||
| <S.ItemContent>{item.content}</S.ItemContent> | ||
| <S.ItemContent>{item.content} | </S.ItemContent> | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🛠️ Refactor suggestion 구분자 추가 목적은 이해하지만 더 나은 방법을 고려해보세요. 알림 내용 뒤에 구분자를 추가한 목적은 이해하지만, 하드코딩된 문자열 대신 CSS나 스타일드 컴포넌트를 통해 시각적 구분을 구현하는 것을 권장합니다. CSS pseudo-element를 활용한 대안: - <S.ItemContent>{item.content} | </S.ItemContent>
+ <S.ItemContent>{item.content}</S.ItemContent>그리고 styled 컴포넌트에서: export const ItemContent = styled.div`
&::after {
content: ' | ';
color: ${({ theme }) => theme.colors.gray};
}
`;이 방법의 장점:
🤖 Prompt for AI Agents |
||
| <S.TypeArea> | ||
| <S.Time>{timeAgo(item.createdAt)}</S.Time> | ||
| <S.TypeFilter> | ||
|
|
||
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
|
|
@@ -177,10 +177,10 @@ export const CompletedButton = styled.button<{ $active?: boolean }>` | |||||
| color: ${({ $active }) => ($active ? '#fff' : '#999')}; | ||||||
| border: none; | ||||||
| border-radius: 4px; | ||||||
| cursor: ${({ $active }) => ($active ? 'pointer' : 'default')}; | ||||||
| cursor: pointer; | ||||||
| transition: background-color 0.2s; | ||||||
|
|
||||||
| &:hover { | ||||||
| background-color: ${({ $active }) => ($active ? '#2f4a6b' : '#e0e0e0')}; | ||||||
| background-color: '#e0e0e0'}; | ||||||
|
||||||
| background-color: '#e0e0e0'}; | |
| background-color: #e0e0e0; |
🤖 Prompt for AI Agents
In src/components/user/evaluation/EvaluationContent.styled.ts at line 184, there
is a CSS syntax error in the hover style where the background-color property
value is incorrectly enclosed in quotes and followed by a stray semicolon inside
the braces. Remove the quotes around the color value and ensure the line ends
properly without extra characters to fix the syntax and prevent compilation
failure.
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
@@ -7,19 +7,23 @@ interface EvaluationContentProps { | |||||||||||||||||||||||||||||||||||||
| projectId: number; | ||||||||||||||||||||||||||||||||||||||
| projectName: string; | ||||||||||||||||||||||||||||||||||||||
| memberList: MemberList[]; | ||||||||||||||||||||||||||||||||||||||
| isAllEvaluated: boolean; | ||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| const EvaluationContent = ({ | ||||||||||||||||||||||||||||||||||||||
| projectId, | ||||||||||||||||||||||||||||||||||||||
| projectName, | ||||||||||||||||||||||||||||||||||||||
| memberList, | ||||||||||||||||||||||||||||||||||||||
| isAllEvaluated, | ||||||||||||||||||||||||||||||||||||||
| }: EvaluationContentProps) => { | ||||||||||||||||||||||||||||||||||||||
| const { | ||||||||||||||||||||||||||||||||||||||
| step, | ||||||||||||||||||||||||||||||||||||||
| notDone, | ||||||||||||||||||||||||||||||||||||||
| completedMember, | ||||||||||||||||||||||||||||||||||||||
| handleClickLeftUser, | ||||||||||||||||||||||||||||||||||||||
| handleClickOption, | ||||||||||||||||||||||||||||||||||||||
| handleNextStep, | ||||||||||||||||||||||||||||||||||||||
| handleCompletedMember, | ||||||||||||||||||||||||||||||||||||||
| currentScores, | ||||||||||||||||||||||||||||||||||||||
| isNotFill, | ||||||||||||||||||||||||||||||||||||||
| } = useEvaluationStep({ projectId, memberList }); | ||||||||||||||||||||||||||||||||||||||
|
|
@@ -42,18 +46,26 @@ const EvaluationContent = ({ | |||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
| <S.MainContent> | ||||||||||||||||||||||||||||||||||||||
| <S.Header> | ||||||||||||||||||||||||||||||||||||||
| <S.Title>{notDone[step]?.nickname}님 평가하기</S.Title> | ||||||||||||||||||||||||||||||||||||||
| <S.SubmitButton | ||||||||||||||||||||||||||||||||||||||
| size='primary' | ||||||||||||||||||||||||||||||||||||||
| schema='primary' | ||||||||||||||||||||||||||||||||||||||
| radius='primary' | ||||||||||||||||||||||||||||||||||||||
| onClick={handleNextStep} | ||||||||||||||||||||||||||||||||||||||
| > | ||||||||||||||||||||||||||||||||||||||
| 제출하기 | ||||||||||||||||||||||||||||||||||||||
| </S.SubmitButton> | ||||||||||||||||||||||||||||||||||||||
| <S.Title> | ||||||||||||||||||||||||||||||||||||||
| {isAllEvaluated | ||||||||||||||||||||||||||||||||||||||
| ? '평가가 완료 되었습니다. ' | ||||||||||||||||||||||||||||||||||||||
| : completedMember | ||||||||||||||||||||||||||||||||||||||
| ? `${completedMember.nickname}님 평가 결과` | ||||||||||||||||||||||||||||||||||||||
| : `${notDone[step]?.nickname}님 평가하기`} | ||||||||||||||||||||||||||||||||||||||
| </S.Title> | ||||||||||||||||||||||||||||||||||||||
|
Comment on lines
+49
to
+55
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🛠️ Refactor suggestion 조건부 제목 렌더링 로직 개선 필요 현재 조건부 렌더링 로직이 복잡하고 우선순위가 명확하지 않습니다. <S.Title>
- {isAllEvaluated
- ? '평가가 완료 되었습니다. '
- : completedMember
- ? `${completedMember.nickname}님 평가 결과`
- : `${notDone[step]?.nickname}님 평가하기`}
+ {(() => {
+ if (completedMember) {
+ return `${completedMember.nickname}님 평가 결과`;
+ }
+ if (isAllEvaluated) {
+ return '평가가 완료되었습니다.';
+ }
+ return `${notDone[step]?.nickname}님 평가하기`;
+ })()}
</S.Title>이렇게 하면 우선순위가 명확해집니다: 완료된 멤버 선택 > 전체 평가 완료 > 일반 평가 진행 📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||||||||||||||||||||||||||||
| {!completedMember && ( | ||||||||||||||||||||||||||||||||||||||
| <S.SubmitButton | ||||||||||||||||||||||||||||||||||||||
| size='primary' | ||||||||||||||||||||||||||||||||||||||
| schema='primary' | ||||||||||||||||||||||||||||||||||||||
| radius='primary' | ||||||||||||||||||||||||||||||||||||||
| onClick={handleNextStep} | ||||||||||||||||||||||||||||||||||||||
| > | ||||||||||||||||||||||||||||||||||||||
| 제출하기 | ||||||||||||||||||||||||||||||||||||||
| </S.SubmitButton> | ||||||||||||||||||||||||||||||||||||||
| )} | ||||||||||||||||||||||||||||||||||||||
| </S.Header> | ||||||||||||||||||||||||||||||||||||||
| <S.MessageContainer> | ||||||||||||||||||||||||||||||||||||||
| {isNotFill && ( | ||||||||||||||||||||||||||||||||||||||
| {isNotFill && completedMember && ( | ||||||||||||||||||||||||||||||||||||||
| <S.ErrorMessage>모든 질문에 답변해주세요.</S.ErrorMessage> | ||||||||||||||||||||||||||||||||||||||
| )} | ||||||||||||||||||||||||||||||||||||||
coderabbitai[bot] marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||||||||||||||||||||||||||||||||||||||
| </S.MessageContainer> | ||||||||||||||||||||||||||||||||||||||
|
|
@@ -78,6 +90,7 @@ const EvaluationContent = ({ | |||||||||||||||||||||||||||||||||||||
| handleClickOption(questionNumber, optionValue) | ||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||
| value={optionValue + 1} | ||||||||||||||||||||||||||||||||||||||
| disabled={!!completedMember} | ||||||||||||||||||||||||||||||||||||||
| /> | ||||||||||||||||||||||||||||||||||||||
| <S.RadioLabel>{optionValue + 1}</S.RadioLabel> | ||||||||||||||||||||||||||||||||||||||
| <S.OptionLabel>{label}</S.OptionLabel> | ||||||||||||||||||||||||||||||||||||||
|
|
@@ -94,7 +107,16 @@ const EvaluationContent = ({ | |||||||||||||||||||||||||||||||||||||
| {memberList | ||||||||||||||||||||||||||||||||||||||
| .filter((memberData) => memberData.evaluated) | ||||||||||||||||||||||||||||||||||||||
| .map((memberData) => ( | ||||||||||||||||||||||||||||||||||||||
| <S.CompletedButton key={memberData.userId}> | ||||||||||||||||||||||||||||||||||||||
| <S.CompletedButton | ||||||||||||||||||||||||||||||||||||||
| key={memberData.userId} | ||||||||||||||||||||||||||||||||||||||
| onClick={() => | ||||||||||||||||||||||||||||||||||||||
| handleCompletedMember( | ||||||||||||||||||||||||||||||||||||||
| memberData.userId, | ||||||||||||||||||||||||||||||||||||||
| memberData.nickname, | ||||||||||||||||||||||||||||||||||||||
| memberData.scores | ||||||||||||||||||||||||||||||||||||||
| ) | ||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||
| > | ||||||||||||||||||||||||||||||||||||||
| {memberData.nickname} | ||||||||||||||||||||||||||||||||||||||
| </S.CompletedButton> | ||||||||||||||||||||||||||||||||||||||
| ))} | ||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Verification agent
🧩 Analysis chain
API 엔드포인트 변경을 확인했습니다.
엔드포인트가
/project/my에서/user/project로 변경되었습니다. 백엔드 API 구조 변경에 따른 것으로 보입니다.다른 파일에서 기존 엔드포인트를 사용하는 곳이 있는지 확인해보겠습니다:
🏁 Script executed:
Length of output: 65
기존
/project/my엔드포인트 사용처를 다시 한 번 전체 파일(.ts, .tsx)에서 확인합니다:🏁 Script executed:
Length of output: 128
/project/my엔드포인트 교체 및 디버깅 로그 제거 필요다음 두 군데를 수정해주세요:
console.log(response)제거${import.meta.env.VITE_API_BASE_URL}/project/my→${import.meta.env.VITE_API_BASE_URL}/user/project로 엔드포인트 변경🤖 Prompt for AI Agents