No seguinte trecho, do passo 12:
def recupera_imagem(id):
for nome_arquivo in os.listdir(app.config['UPLOAD_PATH']):
if f'capa{id}' in nome_arquivo:
return nome_arquivo
deveríamos fazer o if da seguinte forma:
if f'capa{id}-' in nome_arquivo:
ou seja, com o traço no final, pois a busca do jeito que está poderá confundir nomes de arquivos com IDs iniciados pelo mesmo número. Por ex.: capa1.jpg, capa11.jpg, capa111.jpg ... Retornará sempre o primeiro.
Seria isso mesmo?