Kleopatra should have a configurable time when it informs you that your own key is about to expire and if keys you are using to encrypt to are about to expire. KMail does this already.
I would probably implement this in Libkleo so that the newkeyresolver in libkleo can also make use of this, as this should also work if you never open Kleopatra and only use GpgOL. Also with respect to T6198 this would be required for a feature equivalent KMail replacement of the resolver.
My suggestion would be that if we have a secret for a key that we would warn 3 Month before expiry by default and if we do not have a secret we would warn 10 Days before it.
The warning for a key with secret should offer to extend the expiry by two years with just a dialog that should offer "export" and "upload" functionality with a bit of information that this new public key needs to be given to communication partnerts.
The warning for expired public keys should just generally be "Please ask your communication partner to provide you an updated key". I think we do not need to offer the "Update" functionality for OpenPGP keys there as we will have T1235 implemented in the next feature release..