Your enemy general is the AI. Thus he will NOT do what a sound battle commander would do, but do outright crazy things. If you guide him into these things.
1) Baits
The bomber bait - place an artillery in view of the AI, place a fighter or an AA outside this view just behind
The AT bait - place a weak unit directly adjacent to a towed AT and place a strong artillery just behind
The AA bait - place a strong air unit just outside of range of an entrenched enemy AA but still in view of another enemy unit
The entrenched unit bait - give an entrenched enemy tank covered by AA and artillery the chance to get destroyed and give him an infantry in reach. Make sure the infantry is covered by 2 artillery and there is only one hex for an attacking unit
The Victory Hex bait - give enemy armour the chance to settle in a victory hex you deliberately leave open for it. The enemy tank will happily occupy said hex even if adjacent to multiple infantry, artillery and tanks
The infantry bait - place a tank preferred with defensive heroes for the better CD in city hexes in reach (but not adjacent to) of enemy infantry, which should only be able to attack ovber open terrain. Place a strong artillery behind your tank but out of enemy sight. Same can be acheived with an exposed artillery covered by especially rocket artillery behind
The artillery bait - place an AA unit in reach of enemy artillery and have it happily fire away at it saving more precious units on your side preparing e.g. an attack on an entrenched position
All of these work reliable as in "always". Note the usual AI movement - Air, then tanks, last AT and artillery
2) Coverage
Never allow a gap between 2 battle groups wider than 2 hexes where the enemy, especially the pesky 6 move T34, can move through and get in your rear. Cover an eventual gap even if it´s sacrifical (infantry or AA), an experienced unit survives ONE attack in the open and often there is only ONE hex the enemy tanks can reach.
3) Staged movement
Make it a habit to always move your battlegroups in a staged process: AA and artillery first into positions where you are sure you can cover them later. Then the most rear fighting units. Then the former frontline units again in frontline (or flanksaving) positions. Last your own air, no matter if attacking enemy air or just covering your own units. This way you always ensure best air coverage, even attacking enemy air, as you decide from which angle to attack this enemy best while still providing cover afterwards.
4) Limiting enemy movement options
You just violated rule number 3 in order to finish this stubborn, pesky and

And place a single, but strong, unit at its own blocking as many advance paths as possible, even if said unit is w/o coverage for one full turn. It should and will survive still protecting more valuable or weaker assets.
5) What the AI can't do
So you fear to park your infantry in the open in front of entrenched AT because if the AT moves 1 hex this nasty JS 1 tank could attack your infantry full strength under best conditions? Fear not. The AI can't do that. For several reasons, the first one is simple - it moves tanks first. First as always first.
6) The request of Soviet fighters to be shot down
A side effect of a well intended AI behaviour is very much in your favour. If any enemy bomber runs into AA fire, always, always as always an enemy fighter will rush to its side. Which is extremely beneficial, as said fighter does not attack ground itself AND the AI takes whatever is available. Which is often enough an already weakened fighter from a previous attack. Thus your AA, which caused the whole chain and is much more effective against fighters than against bombers, gets another free shot on a Soviet fighter next turn, making it much easier to shot it down. At least it dies together with the "protected" bomber - farewell, heroes of the Red Eagle.
Regards,
Thorsten