@g1cloud/bpmn-modeler-next 5.0.0-alpha.40 → 5.0.0-alpha.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -169,6 +169,28 @@ export type GeometryFinding =
169
169
  kind: 'group-overlap-unintended';
170
170
  groups: [string, string];
171
171
  }
172
+ /**
173
+ * 두 그룹이 겹치면서 멤버를 공유해 **겹침 자체는 의도로 읽히는데**(그래서 `group-overlap-unintended`
174
+ * 가 침묵한다), 그 겹친 영역 안에 **어느 그룹의 멤버도 아닌 흐름 노드**가 놓여 있다(B-60). 공유 멤버는
175
+ * *두 상자의 관계*만 설명할 뿐 **영역 안 제3의 노드가 어느 단계인지는 말하지 않는다** — 사람은 그
176
+ * 노드를 읽을 근거가 없다. 표본 47 에서 사용자가 **손대지도 않고 포기**했다("그룹겹침은 여전해서
177
+ * 수정할 품이 많이 들어갈것 같아").
178
+ *
179
+ * 🔴 **비율로 가르지 말 것** — B-52 에서 실측 기각됐다(표본 32 에서 사용자가 **72%** 겹침을 그대로
180
+ * 저장했고, 포기한 표본 44·47 은 **70%** 다). 판별자는 비율이 아니라 **영역 안에 든 무소속 노드**다:
181
+ * 수용된 72% 케이스는 영역 안 5개가 **전부 어느 그룹의 멤버**였다(무소속 0).
182
+ *
183
+ * 근거(오탐): 실무 16문서에는 멤버 공유 겹침 쌍 자체가 **0**. 사용자 저장본 36종의 침묵 쌍 24 중
184
+ * **1건**, fixture 48종의 침묵 쌍 30 중 **2건**이고 그 3건이 전부 **사용자가 포기한 회차**(표본 44·45)의
185
+ * 산출물이다. 수용된 49쌍은 **전량 무소속 0**.
186
+ *
187
+ * `groups` = 겹친 두 그룹(id 오름차순) · `shapes` = 영역 안의 무소속 흐름 노드(id 오름차순).
188
+ */
189
+ | {
190
+ kind: 'group-overlap-unreadable';
191
+ groups: [string, string];
192
+ shapes: string[];
193
+ }
172
194
  /**
173
195
  * 그룹의 테두리가 컨테이너(풀·확장 서브프로세스) 경계선과 **한 선으로 그려진다** — 두 선이 겹쳐
174
196
  * 그룹 영역이 풀 테두리와 구분되지 않는다(표본 30 에서 사용자가 지목: "그룹이 레인선에 겹쳐서
@@ -303,6 +325,23 @@ export declare function crossingCost(edge: GeometryEdge, others: readonly Geomet
303
325
  export declare function sceneCrossingCost(scene: GeometryScene): number;
304
326
  /** 장면 전체의 교차 쌍(id 오름차순 정렬, 결정론적). 길이가 곧 교차 수다. */
305
327
  export declare function edgeCrossingPairsOf(scene: GeometryScene): Array<[string, string]>;
328
+ /**
329
+ * 교차 쌍을 **에이전트가 판단할 수 있는 재료로 분해**한다(B-43). 개수만으로는 "이 정도가 정상인가" 를
330
+ * 가릴 수 없고, 지금까지 세 회차에서 같은 마찰이 났다(표본 34·36 은 재료 없이도 결론이 맞았으나
331
+ * 표본 47 에서는 에이전트가 **판정을 보류**했다). 산출 비용은 0 이다 — 종류는 이미 `type` 에 있다.
332
+ *
333
+ * - `sameKind` / `mixedKind` — 실선끼리(시퀀스×시퀀스 등) vs 실선×점선. 뒤엣것은 풀을 건너는 메시지가
334
+ * 시퀀스를 지나는 정상 형상이 대부분이라 **같은 총량이라도 뜻이 다르다**.
335
+ * - `crossPoolMessages` — 두 끝점 사이에 **다른 풀이 끼어 있는** 메시지플로우 수. 인접 풀끼리 주고받는
336
+ * 메시지는 아무것도 건너지 않지만 이것들은 지나가는 풀의 시퀀스와 **구조적으로** 만난다.
337
+ * playbook §6 의 "풀 횡단 메시지 1개당 교차 1" 감을 실제로 계산할 수 있게 하는 분모다.
338
+ */
339
+ export declare function edgeCrossingStatsOf(scene: GeometryScene): {
340
+ pairs: Array<[string, string]>;
341
+ sameKind: number;
342
+ mixedKind: number;
343
+ crossPoolMessages: number;
344
+ };
306
345
  export declare const auditTargetsOf: (scene: GeometryScene) => GeometryShape[];
307
346
  /** 도형의 외부 이름 라벨을 가로지르는 선 — 간선 구간(id 순) → 컨테이너 경계선(id 순). 첫 것의 id, 없으면 `null`. */
308
347
  export declare function lineThroughShapeLabel(shape: GeometryShape, scene: GeometryScene): string | null;
@@ -36,6 +36,20 @@ export interface ApplyBpmnOpsResult {
36
36
  * 쌍을 보면 한 메시지가 여러 시퀀스를 건너는 것인지(풀 횡단 = 정상) 배치가 엉킨 것인지 갈린다.
37
37
  */
38
38
  pairs: Array<[string, string]>;
39
+ /**
40
+ * 실선끼리 교차한 쌍 수(B-43) — 시퀀스×시퀀스가 전형이라 **대개 배치가 엉킨 것**이다.
41
+ */
42
+ sameKind: number;
43
+ /**
44
+ * 실선×점선 교차 쌍 수(B-43) — 풀을 건너는 메시지가 시퀀스를 지나는 정상 형상이 대부분이다.
45
+ * `sameKind` 와 나눠 주지 않으면 같은 총량이 전혀 다른 두 상태를 뜻하게 된다.
46
+ */
47
+ mixedKind: number;
48
+ /**
49
+ * 두 끝점 사이에 **다른 풀이 끼어 있는** 메시지플로우 수(B-43) — 그런 메시지는 지나가는 풀의
50
+ * 시퀀스와 구조적으로 만난다. playbook §6 의 "풀 횡단 메시지 1개당 교차 1" 감의 **분모**다.
51
+ */
52
+ crossPoolMessages: number;
39
53
  };
40
54
  };
41
55
  }