Чем заменить Claude или Gemini после блокировки
Меня тоже заблокировали, и я пошёл разбираться, чем теперь пользоваться. Хотелось найти замену для работы с кодом и файлами и понять, сколько она будет стоить. Вот что получилось на ноябрь 2026 года.

Покупка в сентябре, возврат в октябре. Почему два отчёта показывают разные суммы
Пример: 15 сентября покупатель заплатил 1000, а 5 октября получил частичный возврат 400. Других операций нет. Какую сумму показать за сентябрь — 1000 или 600 р.? Ответ зависит от вопроса, на который отвечает отчёт.
Разберём два управленческих отчёта по платежам. Берём только успешно проведённые оплаты и возвраты, без комиссий. Срез — на начало 28 октября 2026 года. В учебной базе даты записаны в одном часовом поясе, суммы — целыми копейками.
Данные для SQLite:
CREATE TABLE payments ( id INTEGER PRIMARY KEY, paid_at TEXT, amount_kopeks INTEGER
);
CREATE TABLE refunds ( id INTEGER PRIMARY KEY, payment_id INTEGER, refunded_at TEXT, amount_kopeks INTEGER
);
INSERT INTO payments VALUES (1, '2026-09-15', 100000);
INSERT INTO refunds VALUES (1, 1, '2026-10-05', 40000);Первый вопрос: сколько поступило и сколько вернули в каждом месяце? Оплату относим к дате оплаты, возврат — к дате возврата.
SELECT substr(event_at, 1, 7) AS month, SUM(delta_kopeks) AS net_kopeks
FROM ( SELECT paid_at AS event_at, amount_kopeks AS delta_kopeks FROM payments WHERE paid_at < '2026-10-28' UNION ALL SELECT refunded_at, -amount_kopeks FROM refunds WHERE refunded_at < '2026-10-28'
)
GROUP BY month
ORDER BY month;Результат: сентябрь +100 000 копеек, октябрь −40 000. То есть +1000 ₽ и −400 ₽ соответственно.
Второй вопрос: сколько осталось от покупок каждого месяца после известных на дату среза возвратов? Здесь возврат связываем с исходной покупкой.
WITH refunded AS ( SELECT payment_id, SUM(amount_kopeks) AS returned FROM refunds WHERE refunded_at < '2026-10-28' GROUP BY payment_id
)
SELECT substr(p.paid_at, 1, 7) AS purchase_month, SUM(p.amount_kopeks - COALESCE(r.returned, 0)) AS net_kopeks
FROM payments p
LEFT JOIN refunded r ON r.payment_id = p.id
WHERE p.paid_at < '2026-10-28'
GROUP BY purchase_month
ORDER BY purchase_month;Теперь за сентябрь получается 60 000 копеек, или 600 ₽. Октябрьской строки нет: новых покупок в октябре не было.Возвраты сначала суммируются по платежу. Поэтому несколько частичных возвратов не размножат исходную сумму при соединении таблиц. Оба результата корректны для своих вопросов. Первый показывает операции по месяцам. Второй — сумму покупок месяца после возвратов, известных на дату среза. Он может измениться, если позже появится ещё один возврат.
У первого отчёта за сентябрь останется 1000, у второго — уже 600 ₽. Поэтому рядом с показателем нужны правило отнесения возвратов и дата среза. Одной подписи «продажи за месяц» здесь недостаточно.

Меня тоже заблокировали, и я пошёл разбираться, чем теперь пользоваться. Хотелось найти замену для работы с кодом и файлами и понять, сколько она будет стоить. Вот что получилось на ноябрь 2026 года.
