Please CA, this game relies on capable AI opponents to have any form of challenge and diversity in games and you've been neglecting this issue since day 1. The AI (cant even call those 50 lines of code "AI") is atrocious!!!
Please hire a 3rd party service to tweak it, make it competitive and follow the same rules as the player because obviously you can't do it by yourselves.
You can get your creativity from successful titles like Crusader Kings II where the AI follows the same rules as the player and subject to the same events and outcomes as human players. AI doesn't need to cheat to beat the player, it needs to effectively make decisions and react to events and other variables. Right now you have basic "AI" that does "X" when "Y" happens and relies heavily on cheats to success. The flowchart needs to have a lot more depth and variaty in it.
Let me give you a great tip - randomness can be very useful when creating AI and you seem to be ignoring it in Warhammer although it existed in Rome II and previous titles.
For example - the AI always make it's decision to attack based on it's chance to win. If you add some dice roll wether to attack or not and make the result influence the decision of the AI to attack or not then the AI might attack your army or castle even if it's chances to win are not greater than X. It will most likely lose but you gave the player a chance to enjoy a balanced fight once in a while.
I'll also address AI wargoals in wars against players or other AI factions:
Right now the AI will just throw all of it's army stacks together and attack you with 4-5 armies against 1 army or town. this creates very unbalanced wars against the attacking AI and most of the times results in the player quitting the game or loading a previous save game.
A player shouldn't cheese the game to win against unfair wars and the AI shouldn't attack the player with such massive forces all bunched together. This issue forces the player to either retreat, autoresolve and lose, load a previous save game or cheese the fight (abusing the non-existant AI) in order to win. NOT FUN FOR ANYONE and this behaviour shouldn't exist. the AI can and should react to the player having more than 1 army stacked together with bringing reinforcements but using forced march with 4 armies and then initiating combat with the 5th is just abuse of game mechanics and it creates frustration.
Instead, the AI can split it's armies (stacks) between multiple fronts and provide a strategic challenge to the player or god forbid actually reserve some troops to defend it's own towns against other AI factions or the player.
I won't address the battle AI because I think the campaign AI is way more urgent to provide a fluid and fun experience for the players.
To sum things up: AI should follow the same rules as the players, have the same events as the player and use it's armies in a smarter way and in general have a major goal for each campaign (based on faction alignment for example) and also minor goals that can shuffle every time you start a new campaign (like AI personalities). This can be achieved by rewriting the flowcharts for each event and decision the AI encounters while adding some RNG calculation to replicate the mistakes a human player might do once in a while and add tons of replay value to the grand campaign.
Please don't underestimate the importance of AI logic in grand strategy games. It has a huge impact on the game and it looks like you totally missed that area in Warhammer: Total War titles.