관리자 화면 — 상담원 입사일 입력란 (J-5 근속)
장민석이 09-22 서버 API 를 만들며 요청으로 올린 티켓이다. 담당은 «제안»이다 — 확인하고 맞으면 착수, 아니면 옮긴다.
무엇을
관리자 화면에서 상담원마다 입사일을 보고 고칠 수 있게 한다. 서버는 준비됐다(decisions/321).
- 목록:
GET /admin/agents응답의 각 상담원에hired_on("YYYY-MM-DD"또는null)이 생겼다 - 저장:
PUT /admin/agents/{agent_id}/hired-on본문{"hired_on": "2019-03-02"}—null이면 지운다- 404 없는 상담원 · 422 오늘보다 뒤 · 401 로그인 없음 · 응답은 목록 한 줄과 같은 모양
왜
J-5 베테랑 판정이 입사일로 근속을 센다. 넣는 길이 없어 운영의 모든 상담원이 근속 0년이었다 — 설정 탭의 「근속 연차 N년 이상이면 베테랑」 기준을 바꿔도 아무도 해당하지 않는다.
완료 조건
- 상담원 목록(또는 토큰 발급 화면)에 입사일 표시 · 입력 · 저장
- 입사일이 없으면 「근속 0년으로 계산됩니다」처럼 없다는 사실을 보인다 — 빈칸으로 두면 조용히 틀린다
- 위험도·점수 표현 없음(부록 A-1)
2026-09-23 — 구현 (조서희)
SettingsTab.tsx(토큰 발급 화면)에 「상담원 입사일 (J-5 근속)」카드를 새로 추가했다 —
상담원 목록을 따로 만들지 않고 이미 있는 화면에 얹었다(완료 조건 1번의 “또는”).
hubClient.ts:AgentSummary·AgentSummaryWire에hiredOn/hired_on추가,updateAgentHiredOn()(PUT /admin/agents/{id}/hired-on) 신설.hiredOn이 빈 문자열이면null로 보내 서버가 지우게 한다.AgentHiredOnList(목록) +AgentHiredOnRow(행) — 이름은 기존 발급 목록과 같은 규칙으로 가린다(maskAgentName).dateinputmax를 오늘로 막아 422를 미리 줄인다(서버가 최종 판정). 값이 안 바뀌었으면 저장 버튼이 비활성화된다. 카드 맨 위에 “입사일이 없으면 근속 0년으로 계산됩니다“를 항상 보이는 안내로 못 박았다(빈칸 방치 방지). 행마다 “입사일 없음 (근속 0년)” 또는 실제 날짜를 그대로 보여 — 위험도·점수 표현은 들어갈 자리 자체가 없다.- 새로 발급한 상담원은
hiredOn: null로 목록에 즉시 반영(서버 재조회 없이).
검증은 tsc --noEmit·vite build뿐이다 — 서버 API는 server/apps/agent_auth/tests/에
테스트가 있는 걸 확인했지만, 화면에서 실제로 저장·404·422 오류를 받아 본 적은 없다
(로컬에 붙는 서버가 없다). 그래서 done이 아니라 in-progress로 둔다 — 운영에서 상담원
한 명 골라 입사일을 실제로 넣어 보고 목록이 갱신되는지 확인해야 완료다.
2026-09-30 — 넘겨받음 · 남은 것 하나 (정성윤)
정성윤이 넘겨받았다(decisions/137 — 마감까지 apps/ 도 정성윤이 고친다. §4 대로 assignee 를 옮기고 여기 적는다). 남은 것은 운영에서 상담원 한 명의 입사일을 넣고 목록이 갱신되는지(관리자 설정 탭, 1분). 수동 QA 2회차(_logs/2026-09-30-01-seongyun, 운영 server 0.1.43 · call-mediator 0.2.11 · call index-sR-v0E8Y) 의 Q-68 은 근속 연차 기준값이지 입사일 입력이 아니라 이 조건을 채우지 못했다.
2026-10-01 — 운영 확인 · done (정성윤)
QA 3회차: 설정 탭에서 입사일 저장 → 목록 반영 확인. 「근속 연차가 안 바뀐다」는 표시 문제 — 날짜만 보였다. 입사일 옆에 근속 연차(소수 한 자리, 365.25일 = 1년, 서버 판정과 같은 셈)를 같이 보이게 했다(두 번째 배포).