fix(completeness): evaluate all available attributes proportionally when no attributes are explicitly required

This commit is contained in:
Inamul-hasan-tec
2026-08-19 15:43:03 +05:30
parent cc0491939c
commit 4d419dcd36
@@ -121,6 +121,7 @@ export class CompletenessService {
const allAttributes = Array.from(attributesMap.values());
const requiredAttributes = allAttributes.filter(attr => attr.is_required);
const evaluatedAttributes = requiredAttributes.length > 0 ? requiredAttributes : allAttributes;
// Resolve required asset types dynamically across all assigned asset families
const requiredAssetTypes = [];
@@ -156,7 +157,7 @@ export class CompletenessService {
// 1. Validate required attributes
const filledAttrIds = (product.attributeValues || []).map(av => av.attribute_id);
for (const attr of requiredAttributes) {
for (const attr of evaluatedAttributes) {
if (filledAttrIds.includes(attr.id)) {
fulfilledCount++;
} else {
@@ -199,7 +200,7 @@ export class CompletenessService {
}
}
const totalCount = requiredAttributes.length + uniqueRequiredAssetTypes.length + requiredChannels.length + requiredGeneral.length;
const totalCount = evaluatedAttributes.length + uniqueRequiredAssetTypes.length + requiredChannels.length + requiredGeneral.length;
const percentage = totalCount > 0 ? Math.round((fulfilledCount / totalCount) * 100) : 100;
// Upsert generic default completeness