|
|
@@ -2385,7 +2385,13 @@ export function Dashboard({ pendingNode, onPendingConsumed }: { pendingNode?: st
|
|
|
});
|
|
|
reqPlanBData.requirements.forEach((req: any) => {
|
|
|
const reqId = req.requirement_id;
|
|
|
+ const sourceNodes = new Set<string>((req.source_nodes || []).map((sn: any) =>
|
|
|
+ typeof sn === 'object' ? (sn.node_name || sn.name || '') : sn
|
|
|
+ ));
|
|
|
(req.patterns || []).forEach((pattern: any) => {
|
|
|
+ const hasValidRepresents = (pattern.judgments || []).some((j: any) => j.represents && sourceNodes.has(j.node));
|
|
|
+ if (!hasValidRepresents) return;
|
|
|
+
|
|
|
const patternId = String(pattern.pattern_id);
|
|
|
if (!map.has(patternId)) map.set(patternId, new Set<string>());
|
|
|
map.get(patternId)!.add(reqId);
|
|
|
@@ -2459,13 +2465,21 @@ export function Dashboard({ pendingNode, onPendingConsumed }: { pendingNode?: st
|
|
|
const reqInfo = reqPlanBData.requirements.find((r: any) => r.requirement_id === selectedReqId);
|
|
|
if (!reqInfo) return undefined;
|
|
|
|
|
|
+ const sourceNodes = new Set<string>((reqInfo.source_nodes || []).map((sn: any) =>
|
|
|
+ typeof sn === 'object' ? (sn.node_name || sn.name || '') : sn
|
|
|
+ ));
|
|
|
+
|
|
|
const map: Record<string, Set<string>> = {};
|
|
|
(reqInfo.patterns || []).forEach((pattern: any) => {
|
|
|
const set = new Set<string>();
|
|
|
- (pattern.represents || []).forEach((name: string) => {
|
|
|
- if (name) set.add(name);
|
|
|
+ (pattern.judgments || []).forEach((j: any) => {
|
|
|
+ if (j.represents && sourceNodes.has(j.node)) {
|
|
|
+ set.add(j.node);
|
|
|
+ }
|
|
|
});
|
|
|
- map[String(pattern.pattern_id)] = set;
|
|
|
+ if (set.size > 0) {
|
|
|
+ map[String(pattern.pattern_id)] = set;
|
|
|
+ }
|
|
|
});
|
|
|
return map;
|
|
|
}, [reqPlanBData, selectedReqId]);
|