You seem to be ignoring how eager Dany was to just kill all of the innocents in King's Landing again. If we aren't supposed to believe that she is slipping, the writers should have at least written it as a difficult moral choice. They didn't. They did not depict Dany struggling to make these difficult decisions, they depicted those around her temporarily reigning her in from doing the things that she wants to do (ie Kill the Innocents).
The way she is behaving has demonstrated that she no longer cares about her moral high ground. Luckily she has people around her who are able to reign her in so she has yet to act on these impulses, but someone else's moral platform is not a substitute for your own.
And you're overstating her eagerness. She followed Tyrion's disastrous plans last season to try and spare King's Landing. The people of Highgarden paid the price and Cercei is now stronger than she was back then. She followed Tyrion's bafflingly stupid advise to try and convince Cercei to follow them up north. She lost a dragon in that folly and provided the Night King with his means for breaching the Wall. She followed Tyrion's advise about the blockade/siege that is not feasible. And she gave Tyrion one more chance to try and reason with Cercei even though she knew in advance that it was a waste of her time.
Like I said, I'm sure another way will present itself. But from where they're standing now, her options are basically to attack or lose and allow the tyrant to continue spreading pain and misery. Hoping for a bloodless war free of moral considerations is kind of fruitless.
Anyway, we're really talking about a modern construct of war morality. It's kind of out of place in this story. But that's another problem for the writers. But to put it in perspective, I personally think General Grant was one of the greatest men the United States has ever produced. I have deep respect for him. He and his top lieutenants burned parts of the South so deeply that it's still in their culture today. His reputation as an ogre that just threw armies at his enemies is unfounded as he was a very able tactician, but there's also no doubt that he attacked where his predecessors would have retreated. But he didn't lose his humanity in employing these tactics.
Basically, Grant decided that the best method for saving lives was ending the damn war.
Letting Cercei live and scheme and hurt people for the sake of hurting people does nothing to help anyone, including the hostages she has within the walls. If Daenerys had simply marched to King's Landing at the beginning of the 7th season when she was at the height of her power, many lives would have been spared, they would have had more support for the Battle of Winterfell, and the realm would be in a much better place.