diff --git a/mysql_preview_server.py b/mysql_preview_server.py index 5d1256e..f3a3bd9 100644 --- a/mysql_preview_server.py +++ b/mysql_preview_server.py @@ -1842,10 +1842,12 @@ def _decorate_linked_code_names(linked_codes, conn=None): try: sales_code = _as_text(payload.get('salesCode')).strip() design_code = _as_text(payload.get('designCode')).strip() - if sales_code and not _as_text(payload.get('salesName')).strip(): - payload['salesName'] = get_project_alias_name(conn, sales_code, 'sales') - if design_code and not _as_text(payload.get('designName')).strip(): - payload['designName'] = get_project_alias_name(conn, design_code, 'design') + if sales_code: + # 연계코드는 페이지에서 항상 "약칭(코드번호)" 형태로 보여야 한다. + # 원본 REPORT_5가 긴 정식명을 주더라도 ERP 프로젝트 약칭 캐시를 우선 사용한다. + payload['salesName'] = get_project_alias_name(conn, sales_code, 'sales') or _as_text(payload.get('salesName')).strip() + if design_code: + payload['designName'] = get_project_alias_name(conn, design_code, 'design') or _as_text(payload.get('designName')).strip() return payload finally: if close_conn: diff --git a/project-codes.html b/project-codes.html index 6019e57..82a0380 100644 --- a/project-codes.html +++ b/project-codes.html @@ -711,9 +711,19 @@ return LINKED_CODE_BY_BUSINESS[key] || { salesCode: '', designCode: '' }; } - function formatLinkedCodeLabel(code, name) { - const cleanCode = String(code || '').trim(); + function compactLinkedCodeName(name, fallbackName) { const cleanName = String(name || '').trim(); + const cleanFallback = String(fallbackName || '').trim(); + if (!cleanName) return cleanFallback; + if (cleanFallback && (cleanName.length > 24 || cleanName.includes('[') || cleanName.includes('민간투자사업'))) { + return cleanFallback; + } + return cleanName; + } + + function formatLinkedCodeLabel(code, name, fallbackName = '') { + const cleanCode = String(code || '').trim(); + const cleanName = compactLinkedCodeName(name, fallbackName); if (!cleanCode) return '-'; if (!cleanName) return cleanCode; return `${cleanName}(${cleanCode})`; @@ -915,8 +925,8 @@ function renderDetailRows(detail) { const linkedCodes = resolveLinkedCodes(detail); const linkedCodeText = [ - formatLinkedCodeLabel(linkedCodes.salesCode, linkedCodes.salesName), - formatLinkedCodeLabel(linkedCodes.designCode, linkedCodes.designName), + formatLinkedCodeLabel(linkedCodes.salesCode, linkedCodes.salesName, detail.projectName), + formatLinkedCodeLabel(linkedCodes.designCode, linkedCodes.designName, detail.projectName), ].join(' · '); const rows = [ ['사업코드', detail.businessCode],