Builds the PRO100 sync diff/report: matched rows become per-field change sets (base_price, materials unit) plus a data["pro100"] round-trip blob; unmatched/ambiguous rows go to :skipped for the report. Pure — no DB.
base_price
unit
data["pro100"]
:skipped
@spec build([map()], map()) :: %{updates: [map()], skipped: [map()], stats: map()}