From 489a53f25f632a22fb8d1da8a92f436bbc01863e Mon Sep 17 00:00:00 2001 From: umsangdon Date: Sun, 6 Sep 2026 17:49:37 +0900 Subject: [PATCH] =?UTF-8?q?feat(B02):=20=ED=94=84=EB=A1=9C=EC=A0=9D?= =?UTF-8?q?=ED=8A=B8=20=EB=93=B1=EB=A1=9D=EC=97=90=EC=84=9C=20=ED=9A=8C?= =?UTF-8?q?=EC=82=AC=20=EB=A1=9C=EA=B3=A0=20=EC=B9=B8=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 프로젝트가 이미 회사에 매여 있어 따로 고를 이유가 없음 — 도면 표제란은 `COALESCE(프로젝트 로고, 회사 로고)` 로 조회하므로 회사 로고가 그대로 쓰임. Co-Authored-By: Claude Opus 5 (1M context) --- B02_ProjRegister/B02_ProjRegister_UI_Page.ts | 38 +++----------------- 1 file changed, 5 insertions(+), 33 deletions(-) diff --git a/B02_ProjRegister/B02_ProjRegister_UI_Page.ts b/B02_ProjRegister/B02_ProjRegister_UI_Page.ts index 5ec4ca18..83e89830 100644 --- a/B02_ProjRegister/B02_ProjRegister_UI_Page.ts +++ b/B02_ProjRegister/B02_ProjRegister_UI_Page.ts @@ -20,13 +20,7 @@ import { showToast, } from "@ui/ui_template_elements"; import { isBlank } from "@util/common_util_validate"; -import { - fetchCompanyAssets, - fetchCompanyMembers, - fetchDashboardMe, - fetchUserCompany, -} from "../B01_Dashboard/B01_Dashboard_Api_Fetch"; -import { createAssetField } from "../B01_Dashboard/B01_Dashboard_UI_AssetPicker"; +import { fetchCompanyMembers, fetchDashboardMe } from "../B01_Dashboard/B01_Dashboard_Api_Fetch"; import { navigateTo } from "../A00_Common/router"; import { API_BASE_URL, CURRENT_PROJECT_ID_KEY, ROUTES } from "@config/config_frontend"; import "./B02_ProjRegister_UI_Style.css"; @@ -119,19 +113,12 @@ export function renderB02ProjRegister(root: HTMLElement): void { const fieldLeadField = person("분야별책임자 (도면 표제란)"); const designerField = person("설계자 (도면 표제란)"); const personSelects = [pmField.select, fieldLeadField.select, designerField.select]; - // 로고 칸은 회사 자산을 받아야 세울 수 있어 자리만 먼저 잡는다. - const logoSlot = document.createElement("div"); - let logoValue: () => number | null = () => null; + // 로고 칸은 두지 않는다 (2026-09-06 사용자 지시) — 프로젝트가 이미 회사에 매여 있어 + // 도면은 회사 로고를 그대로 쓴다(표제란 조회가 `COALESCE(프로젝트, 회사)`). void (async () => { - const [me, company] = await Promise.all([ - fetchDashboardMe(), - fetchUserCompany().catch(() => null), - ]); - const [members, assets] = await Promise.all([ - fetchCompanyMembers().catch(() => []), - fetchCompanyAssets().catch(() => []), - ]); + const me = await fetchDashboardMe(); + const members = await fetchCompanyMembers().catch(() => []); const memberText = (member: (typeof members)[number]) => member.position ? `${member.name} (${member.position})` : member.name; const addOption = (select: HTMLSelectElement, value: string, text: string) => { @@ -146,19 +133,6 @@ export function renderB02ProjRegister(root: HTMLElement): void { // 「신규 등록…」은 없앴다 — 팀원으로 등록한 뒤 고른다. if (members.some((member) => member.id === me.id)) select.value = String(me.id); } - if (company) { - // 회사 대표 로고가 기본값 — 프로젝트마다 다른 로고를 쓰면 여기서 바꾼다. - const logo = createAssetField( - "회사 로고 (도면 표제란)", - "LOGO", - assets, - company.logo_asset_id ?? null, - company.id, - me, - ); - logoValue = logo.value; - logoSlot.append(logo.root); - } })(); const roadTypeText = (): string => @@ -309,7 +283,6 @@ export function renderB02ProjRegister(root: HTMLElement): void { pm_user_id: idOrNull(pmField.select), field_lead_user_id: idOrNull(fieldLeadField.select), designer_user_id: idOrNull(designerField.select), - logo_asset_id: logoValue(), }), }); @@ -352,7 +325,6 @@ export function renderB02ProjRegister(root: HTMLElement): void { pmField.root, fieldLeadField.root, designerField.root, - logoSlot, ); const actions = document.createElement("div");