[BE] Part2 개발디자인문서

학생정보를 CRM user를 사용하게된 히스토리

데이터베이스 구조

현재 시스템은 두 개의 독립적인 RDB(Relational Database)로 구성되어 있습니다:
1.
CRM Database
2.
SA Database

테이블 구조 및 관계

CRM Database

User 테이블: 사용자 기본 정보
Contract 테이블: 계약 정보
teacher_id 포함
Team 테이블: 팀 정보
Member 테이블: 계층 구조 관리용
Team과 Member 테이블은 조직의 계층 구조를 관리하기 위한 데이터 모델로 구현되어 있습니다.

SA Database

User 테이블: 사용자 정보 (CRM과 별도 관리)

사용자 조회 프로세스

특이사항

1.
사용자 정보가 두 개의 DB에 분산되어 있음
2.
Team name을 기준으로 한 필터링이 필요한 경우 반드시 CRM DB 조회 필요

제약사항

현재 구조에서는 team name 기반 필터링을 위해 CRM DB 조회가 필수적
User DB가 통합되기 전까지는 이 구조로 학생 정보 조회 수행 필요

향후 고려사항

1.
User DB 통합 검토 필요
2.
데이터 정합성 관리 방안 수립 필요
이 문서는 현재 시스템 구조를 이해하고 운영하는데 필요한 정보를 제공하기 위해 작성되었습니다.

학생정보 조회 SQL 쿼리

SELECT s.name, s.mildang_id, u.name, u.email, t.name FROM students s JOIN contracts c ON s.id = c.student_id JOIN users u ON c.manager_id = u.id JOIN teams_users tu ON u.id = tu.user_id JOIN teams t ON tu.team_id = t.id WHERE c.contract_status = '관리진행';
SQL
복사
contract_status

수강 과목

CRM DB > contract.subject 컬럼에 string으로 저장되어있음
과목은 테이블로 정제되어있지 않기 때문에 수강과목 셀렉트박스를 위해서는 조회해서 내려줘야함

유저 상세정보

이메일, 학생 연락처, 학부모 연락처 까지는 SA에서 가져오기
학생 이메일 기반으로 매칭할 수 있다.
student.mildang_id

CRM DB > team name 조회해서 내려줌

선생님 배정

경데에서 만든 행정 요청중 “선생님 변경” 기능에
백엔드 API 호출하여, 선생님 변경에 필요한 정보를 받아서 저장하도록 유도해야함
관계자: 정채은님
과목명: 상품테이블에 있음
배정 히스토리 기능
crm에 테이블 추가
학생_id, 과목, 변경전_선생님_id, 변경후_선생님_id, 배정사유, 배정시작일(YYYY_MM_DD)

선생님 신규 배정

기존의 버튼에 연동된 DML을 API로 수정하고,
추가기능을 API에 붙이자

원생등록지

기존에는 판매상담 테이블을 만들었고, SalesCounseling StudendRecord를 확장했음
기록, 메모 나눠져있고, 둘다 StudentRecord를 확장하였음
SalesCounseling도 메모의 한 종류이고, 여기에 추가로 들어올수 있는데 원생등록지, 진단요청사항있음
얘네들도 다 메모입니다.
원생등록지(메모)도 StudentRecord 확장해야함
진단요청사항(메모)도 StudentRecord 확장해야함
학생메모, 학생상담(기록분류 선택가능)도 StudentRecord 확장해야함
카테고리 중요, 보관, 참고 는 기존 StudentRecord에 없었음

결제정보

payment, contract테이블에 있음,

진단고사

커리큘럼, 진단고사 리포트 는 assessment
registration_card_id contract 에서 과목정보, 상품명 조회
Q. 학생 메모와 상담 기록을 합쳐서 학생 기록이라고 한다.
기록에는 학부모, 학생 상담이 공통으로 들어가는것인가?
상담유형 ← 신경안씀
Q.상담 기록은 뭐고, 학생 메모는 뭔가요?
큰 의미가 없음 그냥 정하면 됩니다.
Q. 요약
제외
Q. 상담 유형 > 위계가 판매, 원생등록지, 진단요청사항, 학생기록
으로 생각했음, 그런데 기획은 다름
Q. 상담자 > team 찾아갈수 있음 > 생성자
작성자는 한명이어야 한다.
카테고리
일정 계산
Search
level
task
스토리포인트
특이사항
우선순위
CRM API 서버 구축 - CRM DB 연동
6
1
CRM DB 엔티티 구축, Repository 구축
12
1
학생정보 검색 API graphql query
6
1
학생기록 검색 기능
0
요약은 빠졌는데, UI에 그대로 노출 내용으로 검색하고 싶다면 elastic search 추가 설계
학생상담 통계
0
학생상담 통계 테이블 및 DB 결정
18
학생상담 통계방식 결정
12
통계 계산방식
학생상담 통계파이프라인 구축
18
kafka, scheduling
학생상담 통계조회 API graphql query
6
학생 기록 조회 API
6
학생 내용기능 검색 개발 (검색엔진 적용 구축)
12
학생 기록 생성시 검색엔진 적재 파이프라인 구성
12
학생 기록 조회 graphql query
6
필터기능 있음
학생 정보 조회 API
0
학생 정보 조회 graphql query
6
배정정보
0
배정정보 DB 테이블 설계
6
1
배정정보 ACRM > CRM > 선생님 이관 기능 재개발
12
선생님 이관 DB로 직접 호출하는 방식을API 호출방식으로 수정
1
배정정보 조회 graphql query
6
1
결제정보
0
1
결제정보 목록 조회 graphql query
6
계약상태가 관리진행인것만 볼것인가? 그냥 다 보여주기
1
결제정보 상세 조회 graphql query
6
1
학습리포트
0
학습리포트 목록 조회 graphql query
6
1
학생 기록 작성
0
학생 기록 작성 graphql mutation
6
첨부파일기능도 있고,파일 업로드 기능 있음
상담 유형 DB 테이블 설계
3
1
상담 유형 조회 graphql query
3
1
학생 기록 상세 조회 graphql query
3
1
수강 과목 조회 graphql query
3
1
1차 개발된 상담 기록 재개발
6
상담 생성시 상담일자, 상담시간, 상담방식 추가, 과목
상담 엔티티 리모델링
6
1
상담 엔티티 DB 엔티티 수정, migration
6
1
판매팀 상담기록 graphql query, type 재개발
6
1
신규배정시 학생메모 적재
0
ACRM 신규 배정기능 재개발
12
DB로 데이터 업데이트하는 기능 API로 분리 + 학생메모 적재 + 배정정보 업데이트
1
SUM216