학생 기록 조회 타임라인

@12/30/2024
from: @요셉 노
허브 도메인 변경건
태구님 요청으로 허브 gateway 도메인 변경이 필요합니다. 관련해서 담당자 지정이 필요합니다. 백엔드는 제가 진행합니다.
@12/30/2024, 5:27:00 PM
from: @요셉 노
상담유형
""" 상담 유형 """ enum CounselingType { "행정 문의" AdministrativeInquiry "학습 문의" LearningInquiry "컴플레인" Complaint "수업시간 조정" ClassScheduleAdjustment "아웃바운드" Outbound "서비스 안내" ServiceGuidance "학생정보 전달" StudentInformationTransfer "수업내용 조정" ClassContentAdjustment "긍정적 피드백" PositiveFeedback "수업중단 요청" ClassDiscontinuationRequest "특강" SpecialLecture "컨텐츠 관련 요청" ContentRequest "기타" Others "판매팀 상담" SalesCounseling }
GraphQL
복사
@1/2/2025, 5:27:00 PM
from: @규민 심
1.
salesCounseling type non-nullable로 변경 요청. @요셉 노
type PaginatedSalesCounselings { items: [SalesCounselingRecord!]! @deprecated(reason: "더 이상 사용하지 않습니다. 'counselingType' 필드를 사용해주세요.") limit: Int! offset: Int! salesCounseling: [SalesCounseling!] totalCount: Int! }
GraphQL
복사
2.
네이밍 변경 요청 드립니다. @요셉 노
a.
상담, 메모 관련
i.
type
1.
Counseling → StudentCounselingRecord
2.
Memo → StudentMemoRecord
3.
위 네이밍을 사용중인 곳 모두 변경 필요합니다.
ii.
사유
1.
일반화된 네이밍이므로 컨텍스트를 묻혀서 범위를 좁힐 필요가 있습니다.
iii.
논의 참고
4.
Mutation 변경 제안 드립니다. @요셉 노
a.
네이밍 변경(위 네이밍 변경요청 관련)
i.
각각 해당하는 input type의 네이밍도 변경
ii.
mutation
1.
createCounseling → createStudentCounselingRecord
2.
updateCounseling → updateStudentCounselingRecord
3.
createCounselingMemo → createStudentMemoRecord
4.
updateCounselingMemo → updateStudentMemoRecord
b.
제거
i.
해당 Mutation
1.
deleteCounseling
2.
deleteCounselingMemo
ii.
사유
1.
deleteStudentRecord 한 개로 사용
c.
추가
i.
studentRecord의 recordDisplayPriority를 update 하는 mutation이 따로 필요합니다.
1.
생성/수정 페이지 뿐만 아니라 상세 페이지에서도 간단하게 변경이 가능 해야 합니다.
2.
상담, 메모를 update 하는 mutation을 위 case에서 사용하기에는 변경하지 않는 필드를 요청 시 보내야해서 따로 필요합니다.
d.
기타
i.
createCounselingInput, updateCounselingInput의 recordType 필드 제거
ii.
quickMemo type에 제거할 필드가 있습니다.
1.
content
2.
counselingTarget
3.
counselingType
4.
type → 요거는 기존 StudentRecord 호환성 유지를 위해 그대로 두겠습니다.
iii.
StudentRegistrationInfoItemFilter 변경
""" 학생 등록 정보 조회를 위한 필터 """ input StudentRegistrationInfoItemFilter { "검색어" searchText: String "소속 팀" teamIds: [ID!] "수강 과목" courses: [String!] }
GraphQL
복사
e.
주석 변경 (우선순위 낮음)
i.
주석이 잘못들어가 있는 것들이 조금 있는 것 같습니다. 눈으로 체크된 type만 우선 명시 해놓겠습니다.
1.
CreateCommentReplyInput
2.
CreateCounselingInput
3.
CreateCounselingMemoInput
@1/2/2025, 5:04:00 PM
StudentRegistrationInfoItemFilter 수정사항
""" 학생 등록 정보 조회를 위한 필터 """ input StudentRegistrationInfoItemFilter { """학생 이름""" name: String """팀 ID""" teamId: ID """수강과목""" subject: String # AS-IS course: String """학생 이메일""" email: String """학생 전화번호""" studentPhone: String """학생 부모 전화번호""" parentPhone: String }
GraphQL
복사
StudentRegistrationInfoItem 수정사항
""" 학생 등록 정보 항목 """ type StudentRegistrationInfoItem { id: ID! name: String! teamName: [String!]! subjects: [String!]! # AS-IS courses: [String!]! managers: [User!]! # AS-IS teachers: [String!]! email: String! studentPhone: String! parentPhone: String! }
GraphQL
복사
@1/2/2025, 5:36:00 PM
학생 등록 정보에 아래 필드 추가
@1/8/2025
기존에 타입으로 생각했던 상담타입들이 전부 1개인 것으로 고정되면서 아래와 같이 스키마 변경이 필요할 듯 합니다. 확인한번 부탁드립니다 @규민 심 from: @원우 조
# SalesCounseling 및 10몇개 타입 있던 것 전부 제거 type DefaultCounseling implements StudentRecord & Counseling { id: ID! type: StudentRecordType! @deprecated(reason: "더이상 사용하지 않습니다. 'counselingType' 필드를 사용해주세요.") "기록 유형 (상담/메모)" recordType: RecordType! "수강 과목" subject: String! counselingType: CounselingType! "화면 표시 중요도" recordDisplayPriority: RecordDisplayPriority! counselingTarget: CounselingTarget! "상담 일자" counselingDate: DateTime! "상담 시간" counselingTime: Duration! "상담 방식 (유선 상담/카카오톡)" counselingMethod: CounselingMethod! proseMirrorContent: ProseMirrorContent attachedFiles: [Files!]! content: String author: User! createdAt: DateTime! tags: [CounselingTag!]! # 추가 -> 상담 유형으로 분류하던 것들을 태그로 붙이는 것으로 변경 } interface StudentRecord { id: ID! type: StudentRecordType! @deprecated(reason: "더이상 사용하지 않습니다.") author: User! "수강 과목" subject: String! "기록 유형 (상담/메모)" recordType: RecordType! "화면 표시 중요도" recordDisplayPriority: RecordDisplayPriority! createdAt: DateTime! tags: [CounselingTag!]! # 추가 -> 상담 유형으로 분류하던 것들을 태그로 붙이는 것으로 변경 } type Query { studentRecords(studentId: ID!, filter: StudentRecordsFilterInput): [StudentRecord!]! } # CounselingType 은 DEFAULT 하나만 있는 것으로 수정 enum CounselingType { DEFAULT } # CounselingType 이었던 것이 실제로는 태그이므로 Counseling Tag 로 수정이 필요합니다. enum CounselingTag { "행정 문의" AdministrativeInquiry "학습 문의" LearningInquiry "컴플레인" Complaint "수업시간 조정" ClassScheduleAdjustment "아웃바운드" Outbound "서비스 안내" ServiceGuidance "학생정보 전달" StudentInformationTransfer "수업내용 조정" ClassContentAdjustment "긍정적 피드백" PositiveFeedback "수업중단 요청" ClassDiscontinuationRequest "특강" SpecialLecture "컨텐츠 관련 요청" ContentRequest "기타" Others "판매팀 상담" SalesCounseling }
GraphQL
복사
@1/9/2025
학생 기록 스키마 관련 요청사항 정리 해놓겠습니다.  @원우 조 @요셉 노 from: @규민 심
2.
StudentRecord interface에 title이 추가되어야 할 듯 합니다.
a.
상담, 메모 모두 title을 가져야하는데, 각각 추가하는게 좋을까요? 아니면 StudentRecord에 추가하는게 좋을까요?
b.
상담, 메모 하위타입에 각각 추가하는걸로 해두겠습니다 (@원우 조)
3.
상담을 등록 할 때 createCounseling mutation을 사용할 텐데, Figma 시안에서는 수강 과목을 선택할 수 있어야 하는데 따로 조회하는 query가 있을까요?
a.
그리고 이 경우면 enum으로 관리 안해도 괜찮겟죠?
b.
→ 요거는 욥스가 담당하시는 부분이긴한데 저 휴가전에 얘기했을 때 전체과목 내리는 쿼리를 만들어야 하는걸로 얘기했었습니다. 욥스 한번 확인부탁드립니다. (@요셉 노)
밀당 Hub - 학생 정보 시스템