Merge pull request 'fix(mera/b2c): подсказка дублировала адрес, а числа в результате спорили' (#3138) from fix/3xxx-mera-b2c-copy into main
All checks were successful
Deploy Trade-In / changes (push) Successful in 14s
Deploy Trade-In / test (push) Has been skipped
Deploy Trade-In / build-browser (push) Has been skipped
Deploy Trade-In / build-backend (push) Has been skipped
Deploy Trade-In / build-frontend (push) Successful in 2m31s
Deploy Trade-In / deploy (push) Successful in 58s
Deploy Trade-In / deploy-status (push) Successful in 2s
Deploy Trade-In / perimeter-smoke (push) Successful in 12s
All checks were successful
Deploy Trade-In / changes (push) Successful in 14s
Deploy Trade-In / test (push) Has been skipped
Deploy Trade-In / build-browser (push) Has been skipped
Deploy Trade-In / build-backend (push) Has been skipped
Deploy Trade-In / build-frontend (push) Successful in 2m31s
Deploy Trade-In / deploy (push) Successful in 58s
Deploy Trade-In / deploy-status (push) Successful in 2s
Deploy Trade-In / perimeter-smoke (push) Successful in 12s
This commit is contained in:
commit
92547d7440
3 changed files with 35 additions and 2 deletions
|
|
@ -45,6 +45,24 @@ describe("describeCoverage", () => {
|
||||||
expect(ageTile.label).not.toMatch(/продаётся|продаются|срок продажи|уходят/i);
|
expect(ageTile.label).not.toMatch(/продаётся|продаются|срок продажи|уходят/i);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("подпись под возрастом не показывает число, спорящее с плиткой выше", () => {
|
||||||
|
// На проде 27.08: сверху «30 похожих квартир», под ней «из этих 6».
|
||||||
|
// Слово «этих» указывало на 30, и человек читал два разных числа об
|
||||||
|
// одном и том же. Долю называем явно — либо не называем вовсе.
|
||||||
|
const [cohortTile, ageTile] = describeCoverage(
|
||||||
|
probe({ n_listings: 30, n_with_age: 6 }),
|
||||||
|
).tiles;
|
||||||
|
expect(cohortTile.value).toBe("30");
|
||||||
|
expect(ageTile.label).toContain("6 из 30");
|
||||||
|
expect(ageTile.label).not.toMatch(/этих/);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("когда дата известна у всех — доля не упоминается вовсе", () => {
|
||||||
|
// «дата известна у 30 из 30» — шум: доля есть, но она ничего не сообщает.
|
||||||
|
const [, ageTile] = describeCoverage(probe({ n_listings: 30, n_with_age: 30 })).tiles;
|
||||||
|
expect(ageTile.label).toBe("столько в среднем висит объявление");
|
||||||
|
});
|
||||||
|
|
||||||
it("город вне покрытия — говорим прямо и не предлагаем платный шаг", () => {
|
it("город вне покрытия — говорим прямо и не предлагаем платный шаг", () => {
|
||||||
const verdict = describeCoverage(probe({ status: "not_covered", city: "", n_listings: 0 }));
|
const verdict = describeCoverage(probe({ status: "not_covered", city: "", n_listings: 0 }));
|
||||||
expect(verdict.offerPaidStep).toBe(false);
|
expect(verdict.offerPaidStep).toBe(false);
|
||||||
|
|
|
||||||
|
|
@ -345,7 +345,14 @@ export function EstimateFlow() {
|
||||||
onClick={() => choose(item)}
|
onClick={() => choose(item)}
|
||||||
>
|
>
|
||||||
<span className={styles.estSuggestMain}>{item.label}</span>
|
<span className={styles.estSuggestMain}>{item.label}</span>
|
||||||
<span className={styles.estSuggestSub}>{item.full_address}</span>
|
{/* Вторая строка — только когда она что-то добавляет.
|
||||||
|
Подсказчик отдаёт `label` и `full_address` порознь,
|
||||||
|
но для дома они сплошь и рядом совпадают буква в
|
||||||
|
букву, и человек видел один и тот же адрес дважды в
|
||||||
|
каждой строке списка. Найдено на проде 27.08. */}
|
||||||
|
{item.full_address !== item.label && (
|
||||||
|
<span className={styles.estSuggestSub}>{item.full_address}</span>
|
||||||
|
)}
|
||||||
</button>
|
</button>
|
||||||
</li>
|
</li>
|
||||||
))}
|
))}
|
||||||
|
|
|
||||||
|
|
@ -64,10 +64,18 @@ function tilesFor(probe: CoverageProbe): CoverageTile[] {
|
||||||
];
|
];
|
||||||
|
|
||||||
if (probe.median_listing_age_days !== null) {
|
if (probe.median_listing_age_days !== null) {
|
||||||
|
// Медиана считается НЕ по всей когорте, а только по тем объявлениям, у
|
||||||
|
// которых известна дата публикации. Прежняя подпись — «из этих N» —
|
||||||
|
// указывала словом «этих» на число в плитке выше (в проде: 30 квартир,
|
||||||
|
// а рядом «из этих 6»), и человек читал два спорящих числа. Называем
|
||||||
|
// долю явно, когда она меньше целого. Найдено на проде 27.08.
|
||||||
|
const partial = probe.n_with_age < probe.n_listings;
|
||||||
tiles.push({
|
tiles.push({
|
||||||
value: `${probe.median_listing_age_days} дн.`,
|
value: `${probe.median_listing_age_days} дн.`,
|
||||||
// Формулировка запинена тестом — см. шапку модуля.
|
// Формулировка запинена тестом — см. шапку модуля.
|
||||||
label: `столько в среднем висит объявление из этих ${probe.n_with_age}`,
|
label: partial
|
||||||
|
? `столько в среднем висит объявление; дата известна у ${probe.n_with_age} из ${probe.n_listings}`
|
||||||
|
: "столько в среднем висит объявление",
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue