{"running":null,"status":"tracked","retry":null,"issue_id":"fdd583ae-8322-40d2-a57c-4bfbeb3ee17d","workspace":{"path":"/Users/julian/.codex/worktrees/symphony/TEC-50","host":null},"attempts":{"current_retry_attempt":0,"restart_count":0},"issue_identifier":"TEC-50","last_error":null,"logs":{"codex_session_logs":[]},"recent_events":[],"tracked":{"priority":"Low","state":"Ready for Verify","title":"모든 화면을 ml 코드 오름차순으로 정렬","url":"https://linear.app/tonextchapter/issue/TEC-50/모든-화면을-ml-코드-오름차순으로-정렬","updated_at":"2026-04-08 08:47 UTC","detail":{"ready_for_verify":"### 2026-04-08\n\n* self-review result summary: 현재 diff랑 주변 코드 같이 봤는데 이번 변경 범위에서 크게 걸리는 건 없었어요. 1단계/2단계/임시저장 복원 경로 모두 같은 정렬 기준으로 맞춰져 있어요.\n* screenshot: 없음 (로컬 서버 미기동)\n* test urls:\n  * `http://localhost:3000/po-dashboard-products`\n* verify focus:\n  * 발주 생성 모달 1단계에서 SKU를 순서 다르게 선택해도 하단 발주 목록이 `SKU코드(itemCode)` 오름차순으로 보이는지 확인\n  * `전체 선택` 후에도 목록이 클릭 순서가 아니라 `itemCode` 오름차순으로 유지되는지 확인\n  * 임시저장 후 다시 불러왔을 때 1단계 목록과 2단계 공급처별 발주 항목 순서가 같은 기준으로 유지되는지 확인","agent_analysis":"### 요청 요약\n\n* 발주/상품 관련 화면에서 `ml 코드=itemCode`가 기본 정렬 기준으로 유지되길 원하는 요청이에요.\n* 확인된 재현 지점은 `po-dashboard-products`의 발주 생성 모달이고, 선택 순서나 임시저장 복원 순서에 따라 SKU코드 표시 순서가 흔들리고 있었어요.\n\n### 기대 동작\n\n* `po-dashboard-products` 발주 생성 모달 안에서는 사용자가 어떤 순서로 항목을 선택해도 `SKU코드(itemCode)` 오름차순으로 보이면 돼요.\n* 1단계 발주 목록, 2단계 공급처 단위 발주, 임시저장 복원 후 목록까지 같은 기준으로 유지되면 돼요.\n* 서버에서 이미 `itemCode ASC`로 내려오는 목록은 그대로 두고, 모달 내부 상태 배열도 같은 기준으로 맞추면 돼요.\n\n### 관련 화면/경로\n\n* 화면: `/po-dashboard-products`\n* 클라이언트: `web/src/app/(pages)/(nextcentury)/(century)/po-dashboard-products/component/modal/PoDashboardCreatePoModal.tsx`\n* 서버 조회: `web/src/server/services/nextcentury/century/century-po-dashboard.repo.server.ts`\n* 커맨드 라우트: `web/src/app/api/nextcentury/screens/century/po-dashboard/commands/route.ts`\n\n### 재현 방법 또는 근거\n\n* 첨부 스크린샷 기준으로 상단 선택 목록은 `MSTG2026-998`, `MSTG2026-999` 순인데, 하단 발주 목록은 `MSTG2026-999`, `MSTG2026-998` 순으로 뒤집혀 있어요.\n* 서버 쪽 `getStagedPoGroups()`와 메인 상품 목록 조회는 이미 `itemCode ASC`로 정렬하고 있어서, 최초 조회 정렬 자체가 깨진 건 아니에요.\n* 반대로 모달 내부 `handleSelectGroup()`은 새로 가져온 rows를 기존 rows 앞에 붙이고 있고, `handleLoadTemp()`도 저장된 배열 순서를 그대로 복원해서 화면 기본 정렬이 클릭/복원 순서를 따라가고 있었어요.\n* `buildStandByGroupsFromSelection()`도 `compCode` 우선 정렬을 쓰고 있어서 2단계 공급처 묶음 화면에서는 `itemCode` 기준 기본 정렬과 어긋날 여지가 있어요.\n\n### 완료 조건\n\n* `po-dashboard-products` 발주 생성 모달의 단계별 테이블 기본 순서가 `itemCode ASC`로 통일돼야 해요.\n* 수동 선택, 전체 선택, 임시저장 불러오기 후에도 같은 순서가 유지돼야 해요.\n* 기존 공급처 묶기, 중복 병합, 수량 수정 같은 기능은 그대로 동작해야 해요.\n\n### 애매한 지점\n\n* 요청 문구만 보면 NextCentury/RMS 전체 화면을 한 번에 다 바꾸자는 뜻으로도 읽힐 수 있었어요. 그런데 첨부 화면과 실제 코드 흐름을 같이 보면, 지금 당장 재현되고 원인이 명확한 곳은 `po-dashboard-products` 발주 생성 모달 내부 단계들이에요.\n* 관련 서버 목록 쿼리들은 이미 `itemCode ASC`를 쓰는 경우가 많아서, 이번 건은 공용 컴포넌트나 전역 유틸을 건드리는 큰 작업보다 이 모달 내부 상태 정렬을 통일하는 쪽이 더 정확하고 안전하다고 봤어요. 그래서 이번 수정 범위는 여기까지로 잡는 게 충분하다고 판단했어요. 다만 이후 다른 화면에서도 같은 증거가 확인되면 그 화면은 같은 기준으로 이어서 맞추면 됩니다.","decision_needed":"없음","human_notes":"* 없음","human_review_entry":null,"ready_for_verify_test_urls":[],"release":"없음","review_updates":"### 2026-04-08\n\n* 이번 리뷰에서는 크게 손볼 건 없어서 그대로 마무리했어요.\n* 선택, 전체 선택, 임시저장 불러오기 흐름에서 ml 코드 정렬 helper가 다 타는 것만 다시 확인해뒀어요.","rework_request":"없음","slack_request":"기본적으로 모든 화면에서 ml 코드 기준 오름차순 정렬이 되도록 요청됨.\n\n![image.png](https://uploads.linear.app/7c52ab50-7609-4512-9c46-3c8e24ee8e67/179c524e-6ace-4737-8376-155cda841075/c27fda25-2245-4a1d-9e43-bfbe166f3fce?signature=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJwYXRoIjoiLzdjNTJhYjUwLTc2MDktNDUxMi05YzQ2LTNjOGUyNGVlOGU2Ny8xNzljNTI0ZS02YWNlLTQ3MzctODM3Ni0xNTVjZGE4NDEwNzUvYzI3ZmRhMjUtMjI0NS00YTFkLTllNDMtYmZiZTE2NmYzZmNlIiwiaWF0IjoxNzc1NDUyMzczLCJleHAiOjE3NzU0NTI2NzN9.Lvh3FfZum81XiAtbm-vzAs-xwutGRNbwPSgbBm0i8WA)\n\n* 요청자: Susan Sujeong Yoon\n* 요청일: 2026-03-25\n* Slack 링크: [https://nextchapter-inc.slack.com/archives/C04EFJG5MA7/p1774401218057979?thread_ts=1774401218.057979&cid=C04EFJG5MA7](<https://nextchapter-inc.slack.com/archives/C04EFJG5MA7/p1774401218057979?thread_ts=1774401218.057979&cid=C04EFJG5MA7>)","verify_history":"### 2026-04-08 17:47\n\n* 리뷰에서 반영한 것: 이번 리뷰에서는 크게 손볼 건 없어서 그대로 마무리했어요. 선택, 전체 선택, 임시저장 불러오기 흐름에서 ml 코드 정렬 helper가 다 타는 것도 다시 확인했어요.\n* Ready for Verify: 현재 diff랑 주변 코드 같이 봤는데 이번 변경 범위에서 크게 걸리는 건 없었어요. `web/src/app/(pages)/(nextcentury)/(century)/po-dashboard-products/component/modal/PoDashboardCreatePoModal.tsx` 기준으로 Biome lint와 `pnpm typecheck` 통과했고, 스크린샷은 로컬 서버 미기동으로 남기지 못했어요."}}}