diff --git a/backend/src/database/repositories/memberRepository.ts b/backend/src/database/repositories/memberRepository.ts index 6346a9e56e..5969e9a493 100644 --- a/backend/src/database/repositories/memberRepository.ts +++ b/backend/src/database/repositories/memberRepository.ts @@ -294,11 +294,9 @@ class MemberRepository { const HIGH_CONFIDENCE_LOWER_BOUND = 0.9 const MEDIUM_CONFIDENCE_LOWER_BOUND = 0.7 - const currentSegments = SequelizeRepository.getSegmentIds(options) - - const segmentIds = ( - await new SegmentRepository(options).getSegmentSubprojects(currentSegments) - ).map((s) => s.id) + // Member segments are aggregated at each hierarchy level (group -> project -> subproject). + // Match the selected segment ID directly; do not expand to leaf subprojects. + const segmentIds = SequelizeRepository.getSegmentIds(options) if (segmentIds.length === 0) { return args.countOnly diff --git a/backend/src/database/repositories/organizationRepository.ts b/backend/src/database/repositories/organizationRepository.ts index c4c948c5c2..fd44c28dcf 100644 --- a/backend/src/database/repositories/organizationRepository.ts +++ b/backend/src/database/repositories/organizationRepository.ts @@ -842,10 +842,9 @@ class OrganizationRepository { const HIGH_CONFIDENCE_LOWER_BOUND = 0.9 const MEDIUM_CONFIDENCE_LOWER_BOUND = 0.7 - const currentSegments = SequelizeRepository.getSegmentIds(options) - const segmentIds = ( - await new SegmentRepository(options).getSegmentSubprojects(currentSegments) - ).map((s) => s.id) + // Organization segments are aggregated at each hierarchy level (group -> project -> subproject). + // Match the selected segment ID(s) directly; do not expand to leaf subprojects. + const segmentIds = SequelizeRepository.getSegmentIds(options) let similarityFilter = '' const similarityConditions = [] diff --git a/frontend/src/modules/data-quality/components/member/data-quality-member-merge-suggestions.vue b/frontend/src/modules/data-quality/components/member/data-quality-member-merge-suggestions.vue index 60e12a1df3..b63d52486b 100644 --- a/frontend/src/modules/data-quality/components/member/data-quality-member-merge-suggestions.vue +++ b/frontend/src/modules/data-quality/components/member/data-quality-member-merge-suggestions.vue @@ -62,8 +62,6 @@ import LfSpinner from '@/ui-kit/spinner/Spinner.vue'; import LfButton from '@/ui-kit/button/Button.vue'; import LfIcon from '@/ui-kit/icon/Icon.vue'; import AppMemberMergeSuggestionsDialog from '@/modules/member/components/member-merge-suggestions-dialog.vue'; -import { storeToRefs } from 'pinia'; -import { useLfSegmentsStore } from '@/modules/lf/segments/store'; import LfMemberMergeSuggestionDropdown from '@/modules/member/components/suggestions/member-merge-suggestion-dropdown.vue'; import LfScrollBodyControll from '@/ui-kit/scrollcontroll/ScrollBodyControll.vue'; @@ -81,23 +79,7 @@ const mergeSuggestions = ref([]); const isModalOpen = ref(false); const detailsOffset = ref(0); -const { selectedProjectGroup } = storeToRefs(useLfSegmentsStore()); - -const segments = computed(() => (selectedProjectGroup.value?.id === props.projectGroup - ? [ - selectedProjectGroup.value?.id, - ...selectedProjectGroup.value.projects.map((p) => [ - ...p.subprojects.map((sp) => sp.id), - ]).flat(), - ] - : [ - props.projectGroup, - ...selectedProjectGroup.value.projects - .filter((p) => p.id === props.projectGroup) - .map((p) => [ - ...p.subprojects.map((sp) => sp.id), - ]).flat(), - ])); +const segments = computed(() => [props.projectGroup]); const loadMergeSuggestions = () => { loading.value = true; diff --git a/frontend/src/modules/data-quality/components/organization/data-quality-organization-merge-suggestions.vue b/frontend/src/modules/data-quality/components/organization/data-quality-organization-merge-suggestions.vue index cd70044fff..6e42332e16 100644 --- a/frontend/src/modules/data-quality/components/organization/data-quality-organization-merge-suggestions.vue +++ b/frontend/src/modules/data-quality/components/organization/data-quality-organization-merge-suggestions.vue @@ -58,8 +58,6 @@ import LfDataQualityOrganizationMergeSuggestionsItem from '@/modules/data-quality/components/organization/data-quality-organization-merge-suggestions-item.vue'; import AppOrganizationMergeSuggestionsDialog from '@/modules/organization/components/organization-merge-suggestions-dialog.vue'; -import { storeToRefs } from 'pinia'; -import { useLfSegmentsStore } from '@/modules/lf/segments/store'; import LfScrollBodyControll from '@/ui-kit/scrollcontroll/ScrollBodyControll.vue'; const props = defineProps<{ @@ -75,23 +73,7 @@ const mergeSuggestions = ref([]); const isModalOpen = ref(false); const detailsOffset = ref(0); -const { selectedProjectGroup } = storeToRefs(useLfSegmentsStore()); - -const segments = computed(() => (selectedProjectGroup.value?.id === props.projectGroup - ? [ - selectedProjectGroup.value?.id, - ...selectedProjectGroup.value.projects.map((p) => [ - ...p.subprojects.map((sp) => sp.id), - ]).flat(), - ] - : [ - props.projectGroup, - ...selectedProjectGroup.value.projects - .filter((p) => p.id === props.projectGroup) - .map((p) => [ - ...p.subprojects.map((sp) => sp.id), - ]).flat(), - ])); +const segments = computed(() => [props.projectGroup]); const loadMergeSuggestions = () => { loading.value = true; diff --git a/frontend/src/modules/organization/organization-service.js b/frontend/src/modules/organization/organization-service.js index 526bca3a25..bfcbdeecf3 100644 --- a/frontend/src/modules/organization/organization-service.js +++ b/frontend/src/modules/organization/organization-service.js @@ -1,7 +1,6 @@ import authAxios from '@/shared/axios/auth-axios'; import { AuthService } from '@/modules/auth/services/auth.service'; import { storeToRefs } from 'pinia'; import { useLfSegmentsStore } from '@/modules/lf/segments/store'; -import { getSegmentsFromProjectGroup } from '@/utils/segments'; const getSelectedProjectGroup = () => { const lsSegmentsStore = useLfSegmentsStore(); @@ -216,10 +215,7 @@ export class OrganizationService { } static async fetchMergeSuggestions(limit, offset, query) { - const segments = [ - ...getSegmentsFromProjectGroup(getSelectedProjectGroup()), - getSelectedProjectGroup().id, - ]; + const segments = [getSelectedProjectGroup().id]; const data = { limit, diff --git a/frontend/src/modules/organization/services/organization.api.service.ts b/frontend/src/modules/organization/services/organization.api.service.ts index 92964ecdbd..66cac7ce85 100644 --- a/frontend/src/modules/organization/services/organization.api.service.ts +++ b/frontend/src/modules/organization/services/organization.api.service.ts @@ -1,6 +1,5 @@ import authAxios from '@/shared/axios/auth-axios'; import { Organization } from '@/modules/organization/types/Organization'; -import { getSegmentsFromProjectGroup } from '@/utils/segments'; import { useLfSegmentsStore } from '@/modules/lf/segments/store'; import { storeToRefs } from 'pinia'; @@ -33,10 +32,7 @@ export class OrganizationApiService { const lsSegmentsStore = useLfSegmentsStore(); const { selectedProjectGroup } = storeToRefs(lsSegmentsStore); - const segments = [ - ...getSegmentsFromProjectGroup(selectedProjectGroup.value), - selectedProjectGroup.value?.id, - ]; + const segments = [selectedProjectGroup.value?.id]; const data = { limit,