Skip to content

Резолюция конфликта PR #71 и PR #90: Новый калькулятор FOB fee + deposit #92

@dapi

Description

@dapi

Резолюция конфликта PR #71 и PR #90: Калькулятор FOB fee + deposit

Сводка

PR #71 содержит проверенную в бою реализацию нового калькулятора с FOB fee + deposit (19 файлов). PR #90 является дублирующей попыткой адаптации #71 под ветку manul (28 файлов), что создает риски потери багфиксов и неявных расхождений в логике.

Контекст проблемы

PR #71: feature/calculator-fob-fee-deposit

  • Статус: Проверен в бою, готов к слиянию
  • Изменения: 19 файлов
  • Ключевые компоненты:
    • RateCompositor модель
    • RateCompositorHistory для аудита
    • Интеграция с ExchangeRate, PSB и другими платёжными системами
    • Миграции, тесты, контроллеры, вьюхи

PR #90: feature/calculator-fob-fee-deposit-manul

Риски текущего подхода

  1. Потеря багфиксов: Исправления в feat: Улучшить алгоритм автокурса - занимать позицию в диапазоне #71 не попадут в feat: Add autorate calculators with Manul API support #90
  2. Неявные расхождения: Новые баги при переписывании
  3. Дублирование effort: Повторная работа вместо переиспользования
  4. Сложность слежения: Невозможно отследить отличия
  5. Риск production: Внесение непроверенных изменений вместо боевого кода

Решение

Рекомендация: Отменить PR #90 и корректно обновить #71

Использовать проверенный боевой код из #71 и адаптировать его под manul через rebase/merge, а не переписывание.

План реализации

Шаг 1: Резервное копирование (на всякий случай)

cd ~/code/alfagen/gera
git checkout feature/calculator-fob-fee-deposit-manul
git checkout -b backup/feature/calculator-fob-fee-deposit-manul-$(date +%Y%m%d)
git push origin backup/feature/calculator-fob-fee-deposit-manul-$(date +%Y%m%d)

Шаг 2: Закрыть PR #90 без слияния

# В репозитории gera
gh pr close 90 --comment "Закрыт в пользу обновления PR #71 через rebase. Подробности в issue #<ISSUE_NUMBER>"

git push origin --delete feature/calculator-fob-fee-deposit-manul
git branch -D feature/calculator-fob-fee-deposit-manul

Шаг 3: Обновить PR #71 под актуальный manul

Опция A: Rebase (предпочтительно)

git checkout feature/calculator-fob-fee-deposit
git fetch origin
git rebase origin/manul

# При конфликтах: разрешить в пользу логики из #71
# git rebase --continue

git push origin feature/calculator-fob-fee-deposit --force-with-lease

Опция B: Merge (если rebase слишком сложен)

git checkout feature/calculator-fob-fee-deposit
git fetch origin
git merge origin/manul --no-ff
git push origin feature/calculator-fob-fee-deposit

Шаг 4: Изменить целевую ветку PR #71 с master на manul

gh pr edit 71 --base manul

Шаг 5: Проверка результата

# Проверить diff между обновленной веткой и manul
gh pr diff 71 | head -100

# Проверить, что все тесты проходят
bundle exec rspec spec/models/gera/rate_compositor_spec.rb
bundle exec rspec spec/services/gera/rate_compositor_calculator_spec.rb

# Проверить миграции
bundle exec rails db:migrate RAILS_ENV=test

Критерии успеха

Альтернативные варианты (если основной план не сработает)

Вариант 2: Детальное сравнение с созданием аудит-отчета

Если PR #90 уже нельзя отменить, создать детальный diff и провести ручной аудит.

Вариант 3: Cherry-pick коммитов

Если ветки сильно разошлись - перенести коммиты из #71 в новую ветку.

Сроки

  • Подготовка: 1 час
  • Rebase/merge: 2-4 часа (зависит от конфликтов)
  • Тестирование: 2 часа
  • Итого: 1 рабочий день

Ответственные

  • Технический лид: @Tech-lead
  • Разработчик: @developer
  • Reviewer: @Reviewer

Дополнительные материалы

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions