/* * 원본이 준 관계 그룹 중 화면에 낼 수 있는 것만 남기는 판정. * * 조회 코드(`reference-links.ts`)와 나누어 둔다. 그쪽은 TypeORM 엔티티를 물어서 테스트 프로세스가 * 적재할 수 없다. 판정만 따로 두면 테스트가 가벼운 import 로 확인할 수 있다. */ import type { ExternalIncoming } from '../twin-model/external-resolver.js' /** * 이름(`via`)이 없으면 화면에 이름 없는 줄이 된다. `total` 이 0 이면 낼 내용이 없다 — 원본이 그 * 축을 취급하지 않는다는 뜻이고, 트윈이 선언한 관계가 비어 있는 것과 다르다. 후자는 그대로 * 표시한다(`twin-model-item-query.ts`). * * `total` 이 없는 그룹도 버린다. 목록만 보내고 전체 수를 빼면 화면이 목록 길이를 전체 수로 쓰게 * 되고, 원본이 20개만 보낸 날 실제 200건이 20건으로 표시된다. */ export function usableLinkGroups(groups: ExternalIncoming[] | undefined | null): ExternalIncoming[] { return (groups ?? []).filter( g => !!g && typeof g.via === 'string' && !!g.via.trim() && typeof g.total === 'number' && g.total > 0 ) }