refactor(modelling): group domain/modelling into generators/scoring/optimisation

domain/modelling/ had grown to 15 flat modules. Group the behavioural ones into
subpackages — generators/ (wall/roof/floor Recommendation Generators), scoring/
(overlay applicator, package scorer, role-1/3 scoring), optimisation/ (optimiser
+ measure dependency) — and leave the shared value-object vocabulary
(recommendation, plan, scenario, product, contingencies, simulation) flat at the
top, since it is imported everywhere. Pure move + import-path rewrite across 89
import sites; no behaviour change. 136 pass, pyright strict clean.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Khalim Conn-Kowlessar 2026-06-03 13:48:36 +00:00
parent 90387c4a36
commit 84ec6da032
24 changed files with 35 additions and 35 deletions

View file

View file

@ -18,7 +18,7 @@ dwelling is not already mechanically ventilated (legacy `has_ventilation`).
from typing import Optional
from datatypes.epc.domain.epc_property_data import EpcPropertyData
from domain.modelling.optimiser import MeasureDependency, ScoredOption
from domain.modelling.optimisation.optimiser import MeasureDependency, ScoredOption
from domain.modelling.recommendation import Cost, MeasureOption
from domain.modelling.simulation import EpcSimulation, VentilationOverlay
from repositories.product.product_repository import ProductRepository

View file

@ -24,7 +24,7 @@ from dataclasses import dataclass
from typing import Optional, Protocol, Sequence
from datatypes.epc.domain.epc_property_data import EpcPropertyData
from domain.modelling.package_scorer import Score
from domain.modelling.scoring.package_scorer import Score
from domain.modelling.recommendation import MeasureOption
from domain.modelling.simulation import EpcSimulation

View file

@ -13,9 +13,9 @@ and its final-package (role-3) attributed **impact**. See CONTEXT.md.
from dataclasses import dataclass
from datatypes.epc.domain.epc import Epc
from domain.modelling.package_scorer import Score
from domain.modelling.scoring.package_scorer import Score
from domain.modelling.recommendation import Cost
from domain.modelling.scoring import MeasureImpact
from domain.modelling.scoring.scoring import MeasureImpact
@dataclass(frozen=True)

View file

View file

@ -11,7 +11,7 @@ from dataclasses import dataclass
from typing import Sequence
from datatypes.epc.domain.epc_property_data import EpcPropertyData
from domain.modelling.overlay_applicator import apply_simulations
from domain.modelling.scoring.overlay_applicator import apply_simulations
from domain.modelling.simulation import EpcSimulation
from domain.sap10_calculator.calculator import SapCalculator, SapResult

View file

@ -18,7 +18,7 @@ from dataclasses import dataclass
from typing import Sequence
from datatypes.epc.domain.epc_property_data import EpcPropertyData
from domain.modelling.package_scorer import PackageScorer, Score
from domain.modelling.scoring.package_scorer import PackageScorer, Score
from domain.modelling.recommendation import MeasureOption
from domain.modelling.simulation import EpcSimulation

View file

@ -5,25 +5,25 @@ from typing import Final, Optional
from datatypes.epc.domain.epc import Epc
from datatypes.epc.domain.epc_property_data import EpcPropertyData
from domain.modelling.floor_recommendation import recommend_floor_insulation
from domain.modelling.measure_dependency import ventilation_dependency
from domain.modelling.optimiser import (
from domain.modelling.generators.floor_recommendation import recommend_floor_insulation
from domain.modelling.optimisation.measure_dependency import ventilation_dependency
from domain.modelling.optimisation.optimiser import (
MeasureDependency,
OptimisedPackage,
ScoredOption,
optimise_package,
)
from domain.modelling.package_scorer import PackageScorer, Score
from domain.modelling.scoring.package_scorer import PackageScorer, Score
from domain.modelling.plan import Plan, PlanMeasure
from domain.modelling.recommendation import MeasureOption, Recommendation
from domain.modelling.roof_recommendation import recommend_loft_insulation
from domain.modelling.generators.roof_recommendation import recommend_loft_insulation
from domain.modelling.scenario import Scenario
from domain.modelling.scoring import (
from domain.modelling.scoring.scoring import (
MeasureImpact,
independent_option_impacts,
marginal_impacts,
)
from domain.modelling.wall_recommendation import recommend_cavity_wall
from domain.modelling.generators.wall_recommendation import recommend_cavity_wall
from domain.sap10_calculator.calculator import SapCalculator
from repositories.product.product_repository import ProductRepository
from repositories.unit_of_work import UnitOfWork

View file

@ -17,13 +17,13 @@ from __future__ import annotations
from typing import Final
from datatypes.epc.domain.epc_property_data import EpcPropertyData
from domain.modelling.package_scorer import PackageScorer, Score
from domain.modelling.scoring.package_scorer import PackageScorer, Score
from domain.modelling.product import Product
from domain.modelling.recommendation import Recommendation
from domain.modelling.floor_recommendation import recommend_floor_insulation
from domain.modelling.roof_recommendation import recommend_loft_insulation
from domain.modelling.generators.floor_recommendation import recommend_floor_insulation
from domain.modelling.generators.roof_recommendation import recommend_loft_insulation
from domain.modelling.simulation import EpcSimulation
from domain.modelling.wall_recommendation import recommend_cavity_wall
from domain.modelling.generators.wall_recommendation import recommend_cavity_wall
from domain.sap10_calculator.calculator import Sap10Calculator, SapResult
from repositories.product.product_repository import ProductRepository
from tests.domain.modelling._elmhurst_recommendation import (

View file

@ -9,10 +9,10 @@ from datatypes.epc.domain.epc_property_data import (
EpcPropertyData,
SapBuildingPart,
)
from domain.modelling.overlay_applicator import apply_simulations
from domain.modelling.scoring.overlay_applicator import apply_simulations
from domain.modelling.product import Product
from domain.modelling.recommendation import Recommendation
from domain.modelling.floor_recommendation import recommend_floor_insulation
from domain.modelling.generators.floor_recommendation import recommend_floor_insulation
from repositories.product.product_repository import ProductRepository
from tests.domain.sap10_calculator.worksheet._elmhurst_worksheet_000490 import (
build_epc,

View file

@ -6,11 +6,11 @@ dwelling's existing ventilation. See CONTEXT.md (Measure Dependency) / ADR-0016.
from typing import Optional
from datatypes.epc.domain.epc_property_data import EpcPropertyData
from domain.modelling.measure_dependency import (
from domain.modelling.optimisation.measure_dependency import (
MEASURES_NEEDING_VENTILATION,
ventilation_dependency,
)
from domain.modelling.optimiser import MeasureDependency
from domain.modelling.optimisation.optimiser import MeasureDependency
from domain.modelling.product import Product
from domain.modelling.simulation import EpcSimulation, VentilationOverlay
from repositories.product.product_repository import ProductRepository

View file

@ -14,14 +14,14 @@ from datatypes.epc.domain.epc_property_data import (
BuildingPartIdentifier,
EpcPropertyData,
)
from domain.modelling.optimiser import (
from domain.modelling.optimisation.optimiser import (
MeasureDependency,
OptimisedPackage,
ScoredOption,
optimise,
optimise_package,
)
from domain.modelling.package_scorer import Score
from domain.modelling.scoring.package_scorer import Score
from domain.modelling.recommendation import Cost, MeasureOption
from domain.modelling.simulation import (
BuildingPartOverlay,

View file

@ -14,7 +14,7 @@ from domain.modelling.simulation import (
EpcSimulation,
VentilationOverlay,
)
from domain.modelling.overlay_applicator import apply_simulations
from domain.modelling.scoring.overlay_applicator import apply_simulations
from tests.domain.sap10_calculator.worksheet._elmhurst_worksheet_000490 import (
build_epc,
)

View file

@ -9,7 +9,7 @@ from datatypes.epc.domain.epc_property_data import (
BuildingPartIdentifier,
EpcPropertyData,
)
from domain.modelling.package_scorer import PackageScorer, Score
from domain.modelling.scoring.package_scorer import PackageScorer, Score
from domain.modelling.simulation import BuildingPartOverlay, EpcSimulation
from domain.sap10_calculator.calculator import Sap10Calculator, SapResult
from tests.domain.sap10_calculator.worksheet._elmhurst_worksheet_000490 import (

View file

@ -8,10 +8,10 @@ band). Single-phase, flat post-retrofit figures (ADR-0005 / ADR-0017).
from __future__ import annotations
from datatypes.epc.domain.epc import Epc
from domain.modelling.package_scorer import Score
from domain.modelling.scoring.package_scorer import Score
from domain.modelling.plan import Plan, PlanMeasure
from domain.modelling.recommendation import Cost
from domain.modelling.scoring import MeasureImpact
from domain.modelling.scoring.scoring import MeasureImpact
def _measure(measure_type: str, total: float, rate: float) -> PlanMeasure:

View file

@ -8,10 +8,10 @@ from datatypes.epc.domain.epc_property_data import (
EpcPropertyData,
SapBuildingPart,
)
from domain.modelling.overlay_applicator import apply_simulations
from domain.modelling.scoring.overlay_applicator import apply_simulations
from domain.modelling.product import Product
from domain.modelling.recommendation import Recommendation
from domain.modelling.roof_recommendation import recommend_loft_insulation
from domain.modelling.generators.roof_recommendation import recommend_loft_insulation
from repositories.product.product_repository import ProductRepository
from tests.domain.sap10_calculator.worksheet._elmhurst_worksheet_000490 import (
build_epc,

View file

@ -10,9 +10,9 @@ from datatypes.epc.domain.epc_property_data import (
BuildingPartIdentifier,
EpcPropertyData,
)
from domain.modelling.package_scorer import PackageScorer, Score
from domain.modelling.scoring.package_scorer import PackageScorer, Score
from domain.modelling.recommendation import MeasureOption
from domain.modelling.scoring import (
from domain.modelling.scoring.scoring import (
MeasureImpact,
independent_option_impacts,
marginal_impacts,

View file

@ -8,10 +8,10 @@ from datatypes.epc.domain.epc_property_data import (
EpcPropertyData,
SapBuildingPart,
)
from domain.modelling.overlay_applicator import apply_simulations
from domain.modelling.scoring.overlay_applicator import apply_simulations
from domain.modelling.product import Product
from domain.modelling.recommendation import Recommendation
from domain.modelling.wall_recommendation import recommend_cavity_wall
from domain.modelling.generators.wall_recommendation import recommend_cavity_wall
from repositories.product.product_repository import ProductRepository
from tests.domain.sap10_calculator.worksheet._elmhurst_worksheet_000490 import (
build_epc,

View file

@ -14,10 +14,10 @@ from sqlalchemy import Engine
from sqlmodel import Session, col, select
from datatypes.epc.domain.epc import Epc
from domain.modelling.package_scorer import Score
from domain.modelling.scoring.package_scorer import Score
from domain.modelling.plan import Plan, PlanMeasure
from domain.modelling.recommendation import Cost
from domain.modelling.scoring import MeasureImpact
from domain.modelling.scoring.scoring import MeasureImpact
from infrastructure.postgres.plan_table import PlanRow, RecommendationRow
from repositories.plan.plan_postgres_repository import PlanPostgresRepository