태그 선택 — 목업 구조로. 다만 없는 정보는 만들지 않는다
1080x700 3단(분류 / 결과 / 태그 정보), 큰 제목 + 부제, 검색칩, 바닥에 선택 칩과 버튼. 목업의 뼈대를 그대로 가져왔다. 가져오지 않은 것과 그 이유: · 설명 한 줄 — 384건 전부 없다. 원천(bzDataInterface)에도 주석이 0줄이라 사람이 써야 한다. LLM 으로 지어내면 안 된다: 태그가 실제로 무엇을 꺼내는지는 VB 함수 본문의 SQL 을 읽어야 알고, 틀린 설명은 없는 설명보다 나쁘다. · 예시 값 — 값은 런타임에 HIS DB 에서 환자 문맥을 받아 계산된다. '강남성심병원' 같은 더미를 넣으면 사용자가 그것을 실제 반환값으로 믿는다. 실제 조회 가능 여부는 별도 조사 중이다. · 최근 사용 일시 — 저장소가 없다. 만들어도 첫 실행에 384칸이 전부 빈다. · 태그 키 절 — 태그는 이름이 곧 키다. 같은 문자열을 두 번 그리는 대신 우측 큰 이름을 고정폭으로 두고 복사 버튼을 붙였다. · 2단 소분류(기관·문서 > 기본 정보) — 데이터는 1단이다. 억지로 가르면 1개짜리 버킷 25개가 나오고, 손으로 배당하면 새 태그가 자동 분류되지 않는 부채가 남는다. · 상단 가로 칩 필터 줄 — 좌측 분류 트리와 같은 필터를 두 번 그린다. 두 곳이 갈라지면 어느 쪽이 진실인지 알 수 없다. 필터의 단일 출처는 좌측 열이다. · ⌘K 칩 — Windows 앱이고, 창이 열리면 생성자가 이미 검색칸에 포커스를 준다. 바꿔 넣은 것: · '관련 필드' → '변형'. 없는 개념을 흉내내는 대신 지금 데이터로 계산되는 진짜 관계를 쓴다 — 마지막 밑줄 앞이 같은 태그들(PAT_주민번호 → _Dash · _Blind). TagSearch.VariantsOf 신설. 밑줄이 하나뿐이면 그건 접두어 경계라 제외한다(안 그러면 PAT_ 전체가 변형으로 딸려 온다). · '자주 사용' 배지 → '추천'. 그런 임계값은 코드에 없다. 있는 것은 컨트롤 타입별 큐레이션 (LegacyTagUsageCatalog.SuggestFor)뿐이라 '자주 사용'이라 부르면 근거를 왜곡한다. · 사용 횟수에 스냅샷 표기를 붙였다. 숫자만 크게 띄우면 실시간 집계로 읽힌다. · 상단 칩 줄 자리에는 좌측과 겹치지 않는 것 하나만 — '미사용 숨기기'. 384종 중 227종이 미사용이라 값이 크다. 분류와 겹쳐서 걸린다. 창 껍데기는 OS 크롬을 유지했다. 목업의 '오른쪽 위 X + 둥근 카드'는 WindowStyle=None 이 필요한데 이 앱 대화상자 10종이 전부 OS 크롬이라 이 창만 바꾸면 규약이 두 벌이 되고, AllowsTransparency 는 ClearType 이 꺼져 13px 한글이 뭉개져 금지돼 있다. 둥근 모서리와 그림자는 DWM 이 이미 그린다. 게이트: 테스트 267/267, --edit-smoke 0실패, --modal-check 2/2, --maxrect 10/10, --query-popup 17/17, --db-smoke 3000 diff 0·예외 0, --db-render P062 md5 8d683835f5d81e7bb41c79071d6bf954 동일, --dialog-shots 57파일. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
6ae05b73cd
commit
b2bdc7fa41
@@ -46,6 +46,28 @@ public static class TagSearch
|
||||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 같은 값을 다른 형식으로 내는 태그들 — PAT_주민번호 → _Dash · _Blind.
|
||||
/// 목업의 '관련 필드' 자리를 이것으로 채운다. 없는 개념을 흉내내는 대신
|
||||
/// 지금 데이터로 계산되는 진짜 관계를 쓴다 — 마지막 밑줄 앞까지가 같으면 한 갈래다.
|
||||
/// </summary>
|
||||
public static List<string> VariantsOf(string tag, IEnumerable<string> all)
|
||||
{
|
||||
var cut = tag.LastIndexOf('_');
|
||||
var stem = cut > 0 ? tag[..cut] : tag;
|
||||
// 밑줄이 하나뿐이면 그건 접두어 경계다(PAT_이름) — 줄기가 'PAT' 이 되어 분류 전체가 변형으로 딸려 온다
|
||||
if (stem.Length == 0 || !stem.Contains('_'))
|
||||
{
|
||||
return new List<string>();
|
||||
}
|
||||
return all
|
||||
.Where(t => !string.Equals(t, tag, StringComparison.Ordinal)
|
||||
&& (string.Equals(t, stem, StringComparison.Ordinal)
|
||||
|| t.StartsWith(stem + "_", StringComparison.Ordinal)))
|
||||
.OrderBy(t => t, StringComparer.Ordinal)
|
||||
.ToList();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 분류 안의 소분류 — 두 번째 토큰. <c>PAT_주민번호_Dash</c> → "주민번호".
|
||||
/// 같은 뿌리에서 갈라진 변형(_Dash, _Blind, _Refer)이 흩어지지 않고 붙어 보이게 한다.
|
||||
|
||||
Reference in New Issue
Block a user