[FAQ] 버그 · 검색·API·설계논의
Slack QA 로그(원본 129건) 중 버그 · 검색·API·설계논의 영역에서 반복 질문되거나 확정된 답변 14건을 정리했다. ⚠ 배지가 붙은 항목은 과거 오답/정정 이력이 있거나 아직 결론이 나지 않은 주제이니 답변을 그대로 신뢰하지 말고 표시된 대로 재검증할 것.
Q61. 일본 검색에서 어퍼스트로피(’)가 들어간 단어(J’adoro)가 검색이 안 돼, 왜?
섹션 제목: “Q61. 일본 검색에서 어퍼스트로피(’)가 들어간 단어(J’adoro)가 검색이 안 돼, 왜?”검색어를 공백기준 토큰분리 후 FULLTEXT(+토큰*)+LIKE fallback을 사용함. 어퍼스트로피는 FULLTEXT boolean mode의 특수문자라 이스케이프 없이 쿼리 자체가 실패할 가능성이 높음(matchSearchKeywordContext). 해결책: DB 실제저장값 확인 + 특수문자 정규화 전처리 + MySQL ngram 토크나이저 전환 검토.
출처 [[118]]
Q62. 헥토(계좌인증/출금)에서 실제로 쓰는 외부 API 경로는?
섹션 제목: “Q62. 헥토(계좌인증/출금)에서 실제로 쓰는 외부 API 경로는?”세틀뱅크(Settlebank) 사용. Base URL: 운영 npay.settlebank.co.kr / 개발 tbnpay.settlebank.co.kr. 계좌인증요청: POST /v1/api/auth/ownership/req. 계좌인증확인: POST /v1/api/auth/ownership/check. 송금(출금)요청: POST https://gw.settlebank.co.kr/pyag/v1/fxTransKrw. 출금결과조회: POST …/fxResult.
⚠최우선 주의: 초기 답변에서 존재하지 않는 것으로 강하게 의심되는 API경로(mps-api.hectofinancial.com, /api/auth/1won/*)를 구체적으로 지어내 확신있게 제시했다가 실무자의 반박으로 전부 뒤집힌 사례. 이 주제는 반드시 실제 코드/문서로 재검증할 것
출처 [[109]] · 확인 필요 시 담당자: 김유경
Q63. TPL_STYLE/TPL_MALLSTYLEBLNCINFO에 PROPERTY_08(Fit)/PROPERTY_09(Fabric) 컬럼 있어?
섹션 제목: “Q63. TPL_STYLE/TPL_MALLSTYLEBLNCINFO에 PROPERTY_08(Fit)/PROPERTY_09(Fabric) 컬럼 있어?”둘 다 있음(String타입). PROPERTY_01~20(TPL_MALLSTYLEBLNCINFO는 24까지)이 범용컬럼으로 정의되어 있고, 08/09번에 Fit/Fabric을 넣는 것은 코드가 아닌 데이터입력 운영정책임.
출처 [[77]]
Q64. S3에서 product-image 정보를 가져오는 로직은?
섹션 제목: “Q64. S3에서 product-image 정보를 가져오는 로직은?”실시간 S3접근 없음. product_image 테이블(ProductImageEntity)에 등록시점에 이미 저장된 S3 URL을 그대로 조회해서 반환함(sort 순 정렬).
출처 [[108]]
Q65. root_category_id는 무슨 역할이야?
섹션 제목: “Q65. root_category_id는 무슨 역할이야?”상위 카테고리를 가리키는 FK. null=최상위 메인카테고리, 값이 있으면 그 하위 카테고리(계층구조).
출처 [[107]]
Q66. main_category_mapping 테이블은 왜 있어? 그냥 카테고리 테이블에 enum 넣으면 안돼?
섹션 제목: “Q66. main_category_mapping 테이블은 왜 있어? 그냥 카테고리 테이블에 enum 넣으면 안돼?”카테고리ID→MainCategoryType enum(MEN/WOMEN/LIFE/BRAND 등) 매핑 전용 테이블. 기술부채로 평가됨(이상적으로는 카테고리 테이블에 컬럼 추가하고 이 테이블을 제거하는 리팩토링이 나음). 분리의 이론적 장점(불변성유지/다대다매핑/히스토리관리/권한분리/캐싱)은 있으나 현재 구조에선 실익이 의문시됨.
설계논의/의견
출처 [[74]]
Q67. Order.device 컬럼은 뭐야, User.platform과 뭐가 달라?
섹션 제목: “Q67. Order.device 컬럼은 뭐야, User.platform과 뭐가 달라?”Order.device=주문시점 구매기기(UserDevice enum: Android/iOS/Web_*, 주문마다 가변). User.platform=가입시점 채널(고정, 거의 안 변함). ※실제 버그: OrderPayStatusService.kt의 Order.new() 호출 시 device 파라미터가 누락되어 RequestContext.getDevice()로 값을 가져올 수 있음에도 저장 안 됨 - 현재 device는 전부 null로만 찍힘(None을 명시적으로 설정하는 로직도 없음).
⚠실제 버그 있음(수정 여부 미확인)
출처 [[113]] · 확인 필요 시 담당자: 유석진
Q68. SHIP_FEE 컬럼이 한국은 상품별로 차있는데 일본은 왜 비어있어?
섹션 제목: “Q68. SHIP_FEE 컬럼이 한국은 상품별로 차있는데 일본은 왜 비어있어?”미확인. 엔티티(스키마) 정의는 KR/JP 완전 동일하나, 실제 데이터 저장방식(비즈니스로직) 차이의 원인은 TebOrderProduct 생성/저장 로직을 찾지 못해 규명되지 않았음.
⚠미해결: 실제 국가간 데이터 차이가 있을 가능성이 높은데 원인 미규명 상태로 종료됨
출처 [[49]]
Q69. current_price는 ERP TPL_STYLE의 어떤 컬럼에서 동기화돼?
섹션 제목: “Q69. current_price는 ERP TPL_STYLE의 어떤 컬럼에서 동기화돼?”미확인. batch/…/task/dooson 폴더의 실제 매핑 로직 파일을 읽지 못해 결론에 도달하지 못함.
⚠미해결
출처 [[52]]
Q70. order_product.product_status가 IN_DELIVERY→DELIVERED로 바뀌는 트리거는(ERP배치/웹훅/수동 중 무엇)?
섹션 제목: “Q70. order_product.product_status가 IN_DELIVERY→DELIVERED로 바뀌는 트리거는(ERP배치/웹훅/수동 중 무엇)?”미확인. enum 정의(D/F)만 확인, 실제 트리거인 OrderSyncService 구현체를 찾지 못함.
⚠미해결
출처 [[53]]
Q71. 우리 조회 트래픽 규모를 알 수 있어?
섹션 제목: “Q71. 우리 조회 트래픽 규모를 알 수 있어?”불가. 코드저장소 접근만 가능해 CloudWatch/APM/로그집계 같은 런타임 메트릭은 확인할 수 없음. 인프라 담당(Dowon Choi)에게 문의 필요.
출처 [[128]] · 확인 필요 시 담당자: Dowon Choi
Q72. ERP DB를 직접 조회할 수 있어?
섹션 제목: “Q72. ERP DB를 직접 조회할 수 있어?”DB계정+VPN이 있으면 가능. 온라인주문(TEB_OrderInfo/TEB_OrderDtl), 매장POS판매(TSA_ShopSell/TSA_ShopSellDtl) 조회 쿼리 예시 있음(테이블/컬럼명은 실제환경과 다를 수 있어 검증 필요). 운영DB 직접조회 시 SELECT만, UPDATE/DELETE는 절대 금지.
출처 [[129]] · 확인 필요 시 담당자: 박근태
Q73. SKU 재고 발주량/입고 이력은 어느 테이블에서 봐?
섹션 제목: “Q73. SKU 재고 발주량/입고 이력은 어느 테이블에서 봐?”TSA_WareInSum(집계, Total_NorQty/Total_CnclQty)까지는 확인. 일자별(TSA_WareInDate)과 원본 트랜잭션(TSA_WareInHdr/Det 추정) 테이블은 스키마 인코딩 문제로 끝내 미확인.
⚠부분미해결: 정확한 테이블/컬럼명은 실제 DDL 확인 필요
출처 [[42]][[45]]
Q74. order_transaction 테이블의 card_company 컬럼 데이터소스는(ERP인지)?
섹션 제목: “Q74. order_transaction 테이블의 card_company 컬럼 데이터소스는(ERP인지)?”미확인. 한글 파일명 인코딩 문제로 ERP 테이블명세 직접조회가 반복적으로 실패함(이 봇/WMS봇 KB의 구조적 한계로 보임).
⚠미해결, 인프라이슈로 별도 개선 필요
출처 [[127]]