You can do it with relays. The first computers used relays only. When an insect sat on a set of contacts and the relay flipped their squished body caused a fault. This fault was called a bug.
All you need is a flip flop which can be done with two relays. The line failing flips it and your push button flops it.
For safety purposes a third relay would be across the ac mains and used to indicate that condition to your circuit.
I think you can do it with just two relays.
One with mains AC coil and one with 12V DC coil.
The first trigers the second wich is connected in self retained mode. A pushbutton can be used to de-enegize this coil in the classic Start-Stop manner
hope this helps
regards
In theory the two relay method should work. This is a sequential circuit with three states, (power on no buzzing no lamp) (power off buzzing and lamp) (power off lamp and no buzzing) Two relays can have four states between them. It is all a matter of using the multiple relay contacts to form AND and OR cirucits to control the relay coils.
The three relay method is easier to synthesize with fewer AND/OR contact circuits.
If you want to save power drain on the battery and some money, use the ac mains relay to control the lamp and CD4000 logic sequential circuit to control the buzzer. One input to the logic comes from the mains relay and the other from the pusbutton.