@g1cloud/bpmn-modeler-next 5.0.0-beta.20 → 5.0.0-beta.22

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.
@@ -613,6 +613,8 @@ export declare function segmentShapeClearance(a: GeometryPoint, b: GeometryPoint
613
613
  /**
614
614
  * 한 간선(또는 그 후보 경로)이 다른 간선들과 교차하는 수. **끝점을 공유하는 간선은 제외**한다 —
615
615
  * 같은 노드에서 나가는 팬아웃·같은 노드로 드는 합류는 꺾이는 자리가 겹쳐 보여도 교차가 아니다.
616
+ * ⚠ `segmentsCross` 가 이미 접촉을 안 세므로 이 제외가 실제로 막는 것은 **내부 진성 교차**뿐이다(B-146) —
617
+ * 그쪽은 `sharedEndpointCrossingPairsOf` 가 따로 센다. 이 제외를 풀지 말 것: 위에 라우팅 채택 게이트가 선다.
616
618
  */
617
619
  export declare function edgeCrossCount(edge: GeometryEdge, others: readonly GeometryEdge[]): number;
618
620
  /**
@@ -625,6 +627,18 @@ export declare function crossingCost(edge: GeometryEdge, others: readonly Geomet
625
627
  export declare function sceneCrossingCost(scene: GeometryScene): number;
626
628
  /** 장면 전체의 교차 쌍(id 오름차순 정렬, 결정론적). 길이가 곧 교차 수다. */
627
629
  export declare function edgeCrossingPairsOf(scene: GeometryScene): Array<[string, string]>;
630
+ /**
631
+ * **끝점을 공유하는** 쌍의 진성 교차(B-146 ⓐ′ · 관측 전용) — `edgeCrossingPairsOf` 가 통째로 빼는 쌍 중
632
+ * 간선 **내부**에서 가로지르는 것. 둘을 합치면 장면의 진성 교차 전량이고 겹치는 쌍은 없다.
633
+ *
634
+ * 표본 98 에서 사람이 고친 교차가 이것이었다 — 게이트웨이 → 오류 노드 갈래와 오류 노드 → 상류 되돌아감이
635
+ * 오류 노드를 함께 끝점으로 가져 판정·계수가 모두 침묵했다(사람은 두 간선의 출입 변을 맞바꿨다).
636
+ * 🔴 **라우팅·채택 게이트의 입력이 아니다** — `edgeCrossCount` 의 제외를 바꾸면 그 위의 우회 채택·교차 보정과
637
+ * `--check` 기대값이 함께 움직인다. 이 함수는 보이게만 한다.
638
+ * ⚠ 「공유」는 각 어댑터의 `endpoints` 를 따른다 — 데이터 연관은 두 어댑터가 다르게 담는다(저장본 = 저장소만 ·
639
+ * 캔버스 = 활동 + 저장소).
640
+ */
641
+ export declare function sharedEndpointCrossingPairsOf(scene: GeometryScene): Array<[string, string]>;
628
642
  /**
629
643
  * 교차 쌍을 **에이전트가 판단할 수 있는 재료로 분해**한다(B-43). 개수만으로는 "이 정도가 정상인가" 를
630
644
  * 가릴 수 없고, 지금까지 세 회차에서 같은 마찰이 났다(표본 34·36 은 재료 없이도 결론이 맞았으나
@@ -58,6 +58,17 @@ export interface ApplyBpmnOpsResult {
58
58
  */
59
59
  crossPoolMessages: number;
60
60
  };
61
+ /**
62
+ * **끝점을 공유하는** 간선끼리의 내부 진성 교차(B-146 ⓐ′) — 위 `edgeCrossings` 가 세지 않는 쌍이다(둘을 합치면
63
+ * 진성 교차 전량 · 겹치는 쌍 없음). 표본 98 에서 사람이 고친 교차가 이것이었다(게이트웨이 → 오류 노드 갈래 ×
64
+ * 오류 노드 → 상류 되돌아감). **관측 전용** — 보정 단계의 채택 게이트는 이 값을 보지 않는다.
65
+ */
66
+ sharedEndpointCrossings: {
67
+ before: number;
68
+ after: number;
69
+ /** 하강 뒤 남은 쌍(간선 id, 오름차순). */
70
+ pairs: Array<[string, string]>;
71
+ };
61
72
  };
62
73
  }
63
74
  /** 배치 적용 옵션 — 문서 밖에서만 알 수 있는 입력. */
@@ -105,13 +105,22 @@ export declare function repairIntroducedAnnotationOverlaps(services: Pick<Resolv
105
105
  */
106
106
  export declare function repairIntroducedPoolOverlaps(services: Pick<ResolverServices, 'elementRegistry' | 'modeling'>, beforeKeys: ReadonlySet<string>, sceneBefore: GeometryScene): void;
107
107
  /**
108
- * 🔴 **B-120 — 문서 전체가 한 우변에 맞춰져 있던 풀들을 배치 뒤에도 한 우변으로 되돌린다.**
108
+ * 🔴 **B-120 — 배치 전 한 우변에 맞춰져 있던 풀 무리를 배치 뒤에도 한 우변으로 되돌린다.**
109
109
  *
110
110
  * 증언(표본 86) = *"레인 끝부분이 걸린건 위쪽의 세개의 레인이 정렬되있어서야"*. 배치는 두 풀만 늘렸고 **늘리는 경로가 둘인데
111
111
  * 기준이 다르다**(`shiftGroups` = 내용 우단 +150 · `createSpace` = 밀기 폭) — 한 우변이 셋으로 갈렸다.
112
- * 🔴 **판별자는 「양」이 아니라 「대상」이다** — 우변이 같은 풀이 몇 개인가가 아니라 **문서 전체가 한 우변이었나**. N20 전이 =
113
- * 전체 정렬 무리는 사람이 **3/3 반응** · 부분 무리는 **0/5**. 부분 일치는 도구 문서에서도 우연히 생긴다(저장본 부분 무리 19/69 ↔
114
- * 전체 정렬 0/69). ⇒ 발동은 **배치 전 모든 풀(≥2)의 우변이 같을 때만**이다.
112
+ *
113
+ * 무리 = 배치 전 우변이 허용 오차 안에서 같은 풀들(크기 ≥2). 범위는 두 단계로 넓어졌다:
114
+ * - **ⓐ 문서 전체가 한 우변**(2026-09-28) — N20 전이 = 전체 정렬 무리는 사람이 **3/3 반응** · 부분 무리는 **0/5**.
115
+ * - **ⓓ 부분 무리 — 블랙박스 멤버가 없을 때만**(2026-10-06 · 표본 99) — 증언 = *"끝부분이 어긋난건 보였는데 … 맞추는게
116
+ * 맞아보이긴해"*. N20 = 사람 문서(풀 ≥2) 98 중 **부분 무리 문서 25** · ⓐ 뒤 현행이 깨는 무리는 **부분 무리뿐**(계보 7/23) ·
117
+ * 합성 재고(블랙박스 없는 부분 무리 1,899) = 깨짐 376 → 복원 **312** · 판정 키 · 교차 · 끝점 공유 교차 · 흐름 간선 변화 **0**.
118
+ * 🔴 **블랙박스 멤버가 있는 부분 무리는 뺀다** — 계보 반사실에서 블랙박스 풀이 **570 → 2155** 로 늘고 그 우변에 붙던 메시지가
119
+ * 다시 그려져 끝점 공유 교차가 **1 → 3** 이 됐다(그 회차의 사람은 맞추지 않았다). ⚠ 아래 가드 ②는 그 메시지를 못 막았다 —
120
+ * 이 패스 시점엔 우변에 안 붙어 있었고 뒤 라우팅이 붙인다(추정). ⚠ 판별은 **이 패스 시점**의 모델이다(배치가 빈 풀에 노드를
121
+ * 넣었으면 더는 블랙박스가 아니다).
122
+ * ⚠ 부분 일치는 도구 문서에서도 우연히 생긴다(저장본 19/69) — 그런 무리는 대개 처음부터 같은 폭이라 되돌려도 원래 모양이다
123
+ * (계보 102 재하강에서 기하가 바뀐 문서 = 표본 99 하나).
115
124
  *
116
125
  * **목표 우변 = max(base 우변, 각 풀의 산출 내용 우단 + 150)** — 사람 값이 있는 회차(표본 85 = 2338)를 **정확히** 낸 규칙은
117
126
  * 이것 하나였다(무리 최댓값 · 풀별 base 여백 보존은 둘 다 2473). base 우변 아래로는 **안 줄인다**.
@@ -104,6 +104,28 @@ only?: ReadonlySet<string>): Set<string>;
104
104
  * 읽을 수 없는 중첩이 늘지 않을 때만 채택(🔁 「채택 조건에 대가가 없다」 클래스를 미리 막는다).
105
105
  */
106
106
  export declare function repairIntroducedEdgeCrossings(services: Pick<ResolverServices, 'elementRegistry' | 'modeling'>, beforePairs: ReadonlySet<string>, beforeEdgeIds: ReadonlySet<string>): void;
107
+ /**
108
+ * 공유 노드 `node` 쪽 끝을 네 변 중심으로 옮긴 경로 후보(순수). 반대쪽 끝은 **지금 도킹점 · 그 변 그대로** 둔다 —
109
+ * 그 끝은 이 쌍의 교차와 무관하고, 옮기면 그쪽 이웃과의 관계가 새로 생긴다. 반대쪽 도킹점이 변 위가 아니면 후보 없음.
110
+ */
111
+ export declare function redockCandidates(edge: GeometryEdge, node: GeometryShape, shapesById: ReadonlyMap<string, GeometryShape>): GeometryPoint[][];
112
+ /**
113
+ * 🔴 **이 배치가 만든 「끝점을 공유하는」 시퀀스 플로우 교차를 공유 노드의 출입 변을 바꿔 없앤다**(B-146 ⓑ).
114
+ *
115
+ * 표본 98 의 사람 수정 형태 그대로다 — 실패 갈래(게이트웨이 → 오류 노드)가 오류 노드 왼쪽 면으로, 되돌아감(오류 노드 →
116
+ * 상류)이 윗면에서 나가 서로 가로질렀고, 사람은 **실패 갈래를 윗면으로 · 되돌아감을 왼쪽 면에서** 내도록 맞바꿨다
117
+ * (도형 무이동 · 간선 직접 2). 🔴 **한 간선만 옮겨서는 안 풀린다** — 어느 쪽만 옮겨도 다른 쪽과 공선으로 마주 달린다.
118
+ * 그래서 B-90 ⓑ(한 간선씩)와 달리 **쌍을 함께** 고른다.
119
+ *
120
+ * **범위**(B-146 수단 결정) — 시퀀스 × 시퀀스(노드 루프)만 · 블랙박스 풀을 함께 끝점으로 가진 메시지는 보류(사람 기저 0 ·
121
+ * 증언 없음) · 이 배치가 만든 쌍만(`beforeSharedPairs` 밖) · **이 배치가 만든 간선만 움직인다**(B-90 ⓑ 규약 — 기존 간선은
122
+ * 지금 경로 하나만 후보다). 도형은 옮기지 않는다 — 경로로 안 풀리는 형상(g39 = 새 게이트웨이가 기존 우회선 아래)은 남는다.
123
+ *
124
+ * **대가 판정**(B-90 ⓑ 와 같은 자세 — 계산이 곧 판별) — 이 쌍이 더는 교차하지 않고 · 둘이 공선으로 겹치지 않고 · 컨테이너
125
+ * 안이고 · 끝점 공유 교차 총수가 줄고 · **종전 교차 쌍이 새로 생기지 않고** · 문서 판정에 **새 키가 0** 일 때만. 통과한
126
+ * 조합 중 **길이 + 꺾임** 이 가장 작은 것을 고른다(사람 수정본은 도구 산출과 길이가 같고 꺾임만 달랐다).
127
+ */
128
+ export declare function repairIntroducedSharedEndpointCrossings(services: Pick<ResolverServices, 'elementRegistry' | 'modeling'>, beforeSharedPairs: ReadonlySet<string>, beforeEdgeIds: ReadonlySet<string>): void;
107
129
  /**
108
130
  * 풀 횡단 메시지플로우의 6점 경로 계획(순수). `null` = 이 간선은 대상이 아니거나(중간 풀 없음 ·
109
131
  * 끝점 해소 불가) 더 나은 열이 없다.