[fix] negosium: 'MD → 구매담당자' 표기 통일

- 챗 봇/안내 라벨(ChatMessage·MDInformation·index.css 메뉴 제목)
- negodata 목표가 산정 문구(pricing) · 온보딩 FAQ/용어(OnboardingGuideModal)
- 견적생성 메모 라벨을 '협력사 안내 메모'로 명확화(협상방에서 협력사에게 보여줄 내용)
This commit is contained in:
Mina Choi 2026-07-29 17:29:27 +09:00
parent 9716528ce7
commit 82cca894fc
6 changed files with 10 additions and 12 deletions

View File

@ -8,7 +8,7 @@ import { Indicator } from '@/features/chat/components/templates/Indicator'
import { Summary } from '@/features/chat/components/templates/Summary'
import { BidSummary } from '@/features/chat/components/templates/BidSummary'
const AI_LABEL = '아이마켓코리아 (구매 MD)'
const AI_LABEL = '아이마켓코리아 (구매담당자)'
export function ChatMessage() {
const scrollRef = useRef<HTMLDivElement | null>(null)
@ -124,8 +124,6 @@ const BotMessage = memo(function BotMessage({ message }: { message: ChatMessageT
itemName={message.summary.item_name}
itemCode={message.summary.item_code}
bidPrice={message.summary.final_price}
deliveryType={message.summary.delivery_type || ''}
isVAT={message.summary.item_isVAT}
/>
)}
</div>

View File

@ -29,7 +29,7 @@ export function MDInformation({ isOpen, setIsOpen }: Props) {
onClick={() => setIsOpen(!isOpen)}
className="flex w-full items-center justify-between border-b border-border pb-2"
>
<span className="text-[11px] font-bold tracking-wide text-neutral-60">MD </span>
<span className="text-[11px] font-bold tracking-wide text-neutral-60"> </span>
<ChevronDown
size={16}
className={cn('text-neutral-50 transition-transform duration-300', !isOpen && '-rotate-90')}

View File

@ -199,7 +199,7 @@
.body-1-read-r { font-size: 20px; font-weight: 400; line-height: 150%; letter-spacing: -0.4px; }
.body-1-read-b { font-size: 20px; font-weight: 700; line-height: 150%; letter-spacing: -0.4px; }
.caption-1 { font-size: 13px; font-weight: 400; letter-spacing: -0.26px; }
/* 메뉴 섹션 제목 (MD안내/협상절차/이용방법) */
/* 메뉴 섹션 제목 (구매담당자 안내/협상절차/이용방법) */
.menu-title { font-size: 20px; font-weight: 700; line-height: 25px; letter-spacing: -0.4px; }
/* 재견적/재협상 폼 */
.reject { font-size: 18px; font-weight: 400; line-height: 150%; letter-spacing: -0.4px; color: var(--neutral-90); }

View File

@ -55,7 +55,7 @@ class PricingMixin:
@staticmethod
def _calc_target_price(md_price=None, internet_lowest=None, purchase=None, selling=None, fee=0.0, margin=0.0, is_new=False, hidden=None) -> int:
"""세션에 박을 목표가를 확정한다: MD 입력가가 있으면 그 값 그대로, 없으면 후보 중 가장 싼 값.
"""세션에 박을 목표가를 확정한다: 구매담당자 제시가가 있으면 그 값 그대로, 없으면 후보 중 가장 싼 값.
차감율(fee/margin) 1 이상이면 목표가가 0이나 음수가 되므로 설정 오류로 막는다.
후보를 하나도 만들면 ValueError 견적은 생성 자체가 불가능하다."""
@ -66,7 +66,7 @@ class PricingMixin:
raise ValueError(f"목표 마진율은 0 이상 1 미만이어야 합니다: margin={margin}")
cands = PricingMixin._candidates(md_price, internet_lowest, purchase, selling, fee, margin, is_new, hidden)
if not cands:
raise ValueError("목표가 계산 불가: MD 입력가·인터넷최저가" + ("" if is_new else "·매입가·판매가") + " 모두 없음")
raise ValueError("목표가 계산 불가: 구매담당자 제시가·인터넷최저가" + ("" if is_new else "·매입가·판매가") + " 모두 없음")
return int(min(v for _, v in cands))
async def _load_target_inputs(

View File

@ -196,7 +196,7 @@ const FAQS: { q: string; a: string }[] = [
},
{
q: '목표가는 어떻게 정해지나요?',
a: 'MD 제시가를 넣으면 그 값이 그대로 목표가예요. 안 넣으면 신규는 인터넷 최저가에서 수수료를 뺀 값, 재견적·재협상은 거기에 매입가와 판매가(마진 차감)까지 후보로 놓고 그중 가장 낮은 값을 써요.',
a: '구매담당자 제시가를 넣으면 그 값이 그대로 목표가예요. 안 넣으면 신규는 인터넷 최저가에서 수수료를 뺀 값, 재견적·재협상은 거기에 매입가와 판매가(마진 차감)까지 후보로 놓고 그중 가장 낮은 값을 써요.',
},
{
q: '상품·협력사를 한 번에 등록하려면?',
@ -220,7 +220,7 @@ const FAQS: { q: string; a: string }[] = [
const TERMS: { term: string; desc: string }[] = [
{ term: '목표가', desc: '상품 가격 기준으로 자동 산정되는 매입 목표 금액. "이 값이면 산다"의 기준선.' },
{ term: '앵커링가', desc: '목표가보다 조금 더 낮게 잡는 협상 완료 기준선. 제시가가 이 밑으로 오면 바로 협상 완료.' },
{ term: 'MD 제시가', desc: '견적 만들 때 직접 넣는 목표 금액. 넣으면 유형과 무관하게 목표가로 그대로 쓰여요.' },
{ term: '구매담당자 제시가', desc: '견적 만들 때 직접 넣는 목표 금액. 넣으면 유형과 무관하게 목표가로 그대로 쓰여요.' },
{ term: '투찰가', desc: '협상이 끝난 뒤 협력사가 최종 확정한 금액. 낙찰 판정의 대상이에요.' },
{ term: '협상 완료', desc: '제시가가 앵커링가 이하로 내려와 투찰이 확정된 상태. 낙찰 후보가 돼요.' },
{ term: '협상카드', desc: '봇이 인하를 요청할 때 쓰는 멘트 전략. 직접 만든 카드만 견적에 넣어 써요.' },
@ -372,7 +372,7 @@ export function OnboardingGuideModal({
))}
</div>
<Callout>
<b className="text-foreground">MD .</b> , · .
<b className="text-foreground"> .</b> , · .
</Callout>
</div>
)}

View File

@ -631,7 +631,7 @@ export function QuotationCreateModal({
</div>
<div className="space-y-1">
<Typography as="label" variant="label"> ()</Typography>
<Typography as="label" variant="label"> ()</Typography>
<textarea
id="wizard-memo"
value={memo}
@ -639,7 +639,7 @@ export function QuotationCreateModal({
rows={2}
maxLength={100}
className="w-full p-2 bg-background border border-border rounded text-xs resize-none"
placeholder="견적 관련 메모 (선택, 최대 100자)"
placeholder="협상방에서 협력사에게 보여줄 안내 내용 (선택, 최대 100자)"
/>
</div>
</div>