- AssistantService теперь принимает ForecastService в конструкторе
(раньше создавал new ForecastService() внутри analyze/advice)
- infrastructure/cli/main.py: _build_services() — composition root,
собирает граф ForecastService, ScenarioService, AssistantService, CurrencyConverter
- Все CLI-команды используют _build_services(model) вместо прямого new
- test_ai.py: обновлён под новый контракт AssistantService
Tests: 67/67 pass.
- application/repositories/model_repository.py: ModelRepository Protocol
with load(path) and save(model, path)
- infrastructure/repositories/json_file_repository.py: JsonFileRepository
(вынесен из FinancialModel.save/load)
- infrastructure/repositories/excel_repository.py: ExcelRepository
(бывший ExcelSync, переименован)
- FinancialModel.save/load удалены — теперь только данные
- infrastructure/sync/ удалён (ExcelSync перенесён в repositories/)
- infrastructure/cli/main.py и config.py используют JsonFileRepository +
ExcelRepository через локальные singletons
- test_excel_sync.py переименован в test для ExcelRepository
- Новый test_repositories.py: 5 тестов для JsonFileRepository + протокол
- test_model.py: использован JsonFileRepository
Tests: 68/68 pass (было 63 + 5 новых).