After more than 10 days of continuous work, I finally finished the animation of the entire mirror.

I unpacked some of the storyboards halfway through to reinforce the narrative.
My strict naming conventions have helped tremendously in project management. Because the editor let me know clearly which sub-mirror corresponds to which file. What I do is save a project with no keyframes at all and name it 00 before starting the animation.
I will make a clone of 00 for every additional storyboard that follows. Like 01, 02, 03, etc., on the basis of 00.
The whole animation went very smoothly, just like the basics of animation in my first semester. The entire process is not worth describing.
BUT
I ran into a problem that I couldn’t entirely solve until the end: gun animations.

In this scene, hands A and B’s Ik are parented to the rifle. In this case, hands move when the rifle moves.

But when I key this parent attributes to release constraints to let the hand do other animation like slapping the rifle. The keyframe that slaps the rifle will affect the keys before I release the constraints to break parenting.
My solution was to add moving keyframes to the firearm for the entire firearm animation as a first step. Then bake keyframes for the hands that follow the movement of the gun. Finally, delete some of the baked keyframes you started with and replace them with keyframes slapping the rifle.
But it’s really not a good approach because once I bake the keyframes, it means I can no longer animate the movement of the gun.
The result of my search on google is that the solution of fps game companies is to rig the guns.
But anyway, all the character animation is done.