Repository navigation
feat: 유저 추가 정보(Additional Info) 관리 기능 - #29
Conversation
…ment and CSV export
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Analysis CompleteGenerated ECC bundle from 1 commits | Confidence: 55% View Pull Request #30Repository Profile
Changed Files (16)
Top hotspots
Top directories
Analysis Depth Readiness (commit-history, 7%)ECC Tools uses this to decide whether recommendations should stay at commit-history/setup guidance or expand into CI, security, harness, reference-set, AI-routing, and team backlog work.
Reference Set Readiness (0/7, 0%)
Likely Future Issues (3)
Suggested Follow-up Work (3)
Copy-ready bodies test: add regression coverage for apps/web/src/app/(dashboard)/profile/_Components/additionalInfo.tsx + apps/web/src/app/(dashboard)/profile/page.tsx ## Summary
- Add regression coverage for the recently touched code paths before more changes stack on top.
## Why
- Backfill regression coverage before another change set lands on the touched code paths.
## Touched paths
- `apps/web/src/app/(dashboard)/profile/_Components/additionalInfo.tsx`
- `apps/web/src/app/(dashboard)/profile/page.tsx`
## Validation
- Add or extend focused tests that exercise the touched paths.
- Run the affected test suite and verify the new coverage closes the gap.test: add data integration coverage for packages/database/prisma/migrations/20260609150257_add_user_info/migration.sql + packages/database/prisma/schema.prisma ## Summary
- Add integration coverage for the recently changed repository, query, or database-access surface.
## Why
- Backfill integration coverage before another data-layer change lands on the touched surface.
## Touched paths
- `packages/database/prisma/migrations/20260609150257_add_user_info/migration.sql`
- `packages/database/prisma/schema.prisma`
## Validation
- Add or extend integration coverage for the changed repository, query, or database-access path.
- Exercise realistic read/write flows or equivalent persistence boundary cases.test: add browser coverage for apps/web/src/app/(dashboard)/profile/page.tsx + apps/web/src/app/(sidebar)/admin/users/info/page.tsx ## Summary
- Add browser or end-to-end coverage for the recently changed user-facing surface.
## Why
- Backfill browser coverage before another user-facing UI change lands on the touched surface.
## Touched paths
- `apps/web/src/app/(dashboard)/profile/page.tsx`
- `apps/web/src/app/(sidebar)/admin/users/info/page.tsx`
## Validation
- Add or extend browser / e2e coverage for the changed component, page, or flow.
- Exercise the visible user journey that depends on the touched UI surface.Generated Instincts (16)
After merging, import with: Files
|
개요
어드민이 ESIS 동기화와 무관한 임의의 추가 정보(예: 수능 수험번호)를 학생에게 수동으로 부여하고, 학생은 본인 프로필에서 읽기 전용으로 확인할 수 있는 기능입니다.
데이터 모델
UserInfo모델 추가 (id,userId,name,data, timestamps)User.idFK +onDelete: Cascade,@@unique([userId, name])(동일 항목 재입력 시 upsert 갱신)20260609150257_add_user_info— 새 테이블만 생성(기존 데이터 손실 없음)백엔드 (
admin/users/info/actions.ts)assertAdmin()가드 + Zod 검증 + Sentry 보고previewBulkUserInfo: 엑셀 붙여넣기(탭/쉼표) 파싱 → 이름→유저 매칭(matched/ambiguous/not_found)commitBulkUserInfo: 트랜잭션 upsertloadAllUserInfo/listFieldNames/deleteUserInfoBulk/updateUserInfoById/searchUsersByName/listUserInfo/upsertUserInfo/deleteUserInfo프론트엔드
새 사이드바
/admin/users/info(탭 3개):추가 연동:
/admin/users각 유저 행에 추가 정보 관리 Sheet(📋) 버튼/profile에 추가 정보 카드(읽기 전용)기존 패턴 일치
grade/edit의 전체 로드 + TanStack Table + "필터 전체 선택" 패턴을 따름 (ConfirmActionDialog재사용)givenNameSort(@/utils/name)로 기존UserTable/grade/edit과 동일하게 이름 기준 정렬테스트 계획
/admin/users/info접근 / 비-ADMIN →/dash리다이렉트/profile노출 확인lint · tsc · build 통과 확인 완료.