Is this homebrew ‘Envision’ spell balanced?

I am making a Divination Wizard, and looking to try and create a combat useful Divination spell for each level. Envision is my attempt at a level 3 spell.

ENVISION

3rd-level Divination
Casting Time: 1 action
Range: 30ft
Components: V, S, M
Duration: Concentration, up to 1 minute

Choose a willing creature that you can see within range. Until the spell ends the target gains the ability to see events just before they happen. It gains a +2 bonus to AC, has advantage on saving throws vs effects it can see, and gains advantage on all attack rolls.

When the spell ends, the disorientation of losing the visions causes the target to suffer a -2 penalty to AC, have disadvantage on saving throws vs effects it can see, and gain disadvantage on attack rolls until the end of its next turn.

As you can probably see I have tried to balance it around haste.

The questions I foresee are the unusual wording around ‘effects they can see’ and to head that off I mean any effect that has a visible effect of any sort, regardless of save. EG: Fireball, grease, cloudkill. The intention is that if they have the potential to see something coming they can just not be there anymore. I have a DM who can happily work with this kind of language, and we both understand that many spells don’t have visible effects (Hold person etc).

As for my own balance calculations I think this is slightly more powerful than haste in terms of damage output (although less so on a rogue), less useful in terms of utility, and has a pretty balanced downside. Overall I think it is balanced but want to ensure I haven’t missed any possible interactions with other spells or features that may change that balance.

My general consideration for balance is "Would I always cast it" and the answer is no, especially when Slow is still a 3rd level spell.