test(extractEntityCityId): prioritize address over top-level city in entity extraction

This commit is contained in:
hamed
2026-07-19 08:54:00 +03:30
parent 21f5f07bc6
commit 88782e70c2
2 changed files with 22 additions and 1 deletions
+6 -1
View File
@@ -46,10 +46,15 @@ export function resolveCityDisplayName(cityInfo) {
export function extractEntityCityId(entity) {
if (!entity) return null;
// ترتیب مهم است: آدرس قبل از فیلد city سطح‌بالا.
// پاسخ جزئیات پزشک هر دو را دارد و می‌توانند اختلاف داشته باشند — city سطح‌بالا از
// یک رابطهٔ ManyToMany قدیمی می‌آید، ولی هم فیلتر city_id بک‌اند و هم فیلد city در
// پاسخ لیست بر پایهٔ آدرس‌اند. اگر اینجا فیلد قدیمی برنده شود، canonical پزشک به
// شهری می‌رود که sitemap او را آنجا نگذاشته است.
const candidates = [
entity.city_id,
...(Array.isArray(entity.city) ? entity.city.map((c) => c?.id) : [entity.city?.id]),
...(Array.isArray(entity.address) ? entity.address.map((a) => a?.city?.id) : []),
...(Array.isArray(entity.city) ? entity.city.map((c) => c?.id) : [entity.city?.id]),
].filter((id) => id != null);
const withDomain = candidates.find((id) => findDomainByCityId(id));