@WBYeats,
Quote:-They've repaired the roads for months
is definitely wrong.
Do you think this non-native speaker is wrong?
I've been trying, by means of examples, to lead you into a more
colloquial turn of phrase.
The above sentence "They've repaired the roads for months" is not ungrammatical, but in most instances/ contexts that I can think of, a different phrase would be used. As JTT often advises, context is all.
If you are describing a continual, but intermittent process WHICH IS STILL GOING ON, you would say "They've been repairing the road for months."
(btw that would apply whether or not the repairs were intermittent.)
My examples above are an attempt to demonstrate that.