Наивный SUM по purchase удваивает выручку там, где обновленная страница
подтверждения прислала второй purchase с новым WatchID и тем же purchaseID. ReplacingMergeTree дубль не съедает и не должен: техническую
дедупликацию делает движок, бизнес-дедупликацию пишут руками — по purchaseID, а не по строкам. Материал: класс duplicate_event, сравнение
наивной и дедуплицированной выручки. Появляется с этапом 6 (#8).
Наивный `SUM` по `purchase` удваивает выручку там, где обновленная страница
подтверждения прислала второй `purchase` с новым `WatchID` и тем же
`purchaseID`. ReplacingMergeTree дубль не съедает и не должен: техническую
дедупликацию делает движок, бизнес-дедупликацию пишут руками — по
`purchaseID`, а не по строкам. Материал: класс `duplicate_event`, сравнение
наивной и дедуплицированной выручки. Появляется с этапом 6 (#8).
Резолюция спеки программы лаб: вошла в ветку «Сверка и деньги» как расследование «Бизнес-дубль и наивная выручка». docs/specs/2026-09-01-labs-program.md (спека принята владельцем, #202, PR #205)
Резолюция спеки программы лаб: вошла в ветку «Сверка и деньги» как расследование «Бизнес-дубль и наивная выручка». docs/specs/2026-09-01-labs-program.md (спека принята владельцем, #202, PR #205)
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Наивный
SUMпоpurchaseудваивает выручку там, где обновленная страницаподтверждения прислала второй
purchaseс новымWatchIDи тем жеpurchaseID. ReplacingMergeTree дубль не съедает и не должен: техническуюдедупликацию делает движок, бизнес-дедупликацию пишут руками — по
purchaseID, а не по строкам. Материал: классduplicate_event, сравнениенаивной и дедуплицированной выручки. Появляется с этапом 6 (#8).
Резолюция спеки программы лаб: вошла в ветку «Сверка и деньги» как расследование «Бизнес-дубль и наивная выручка». docs/specs/2026-09-01-labs-program.md (спека принята владельцем, #202, PR #205)