Descrição da tarefa
Hoje a decisão de layout de tabela (determine_table_layout) é sempre automática, baseada em número de colunas e, após a correção do achado de célula longa, também em tamanho de célula. Não existe forma de um chamador do pipeline forçar o layout de uma tabela específica quando a heurística automática erra, ou quando um periódico tem preferência editorial explícita para aquela tabela.
O padrão equivalente já existe para figura (decide_figure_layout checa figure_data.get('layout') antes de calcular), mas não estava implementado para tabela.
Subtarefas
Considerações e notas
Isso não substitui a heurística automática, só abre um canal opcional pra sobrescrevê-la por tabela específica. É a base de "customização mínima" que puder ser usada tanto por chamadas diretas da API (testes, scripts) quanto, futuramente, por uma config JSON por periódico (Fase 2 da issue #1278), que ainda não existe e não faz parte desta tarefa.
Descrição da tarefa
Hoje a decisão de layout de tabela (
determine_table_layout) é sempre automática, baseada em número de colunas e, após a correção do achado de célula longa, também em tamanho de célula. Não existe forma de um chamador do pipeline forçar o layout de uma tabela específica quando a heurística automática erra, ou quando um periódico tem preferência editorial explícita para aquela tabela.O padrão equivalente já existe para figura (
decide_figure_layoutchecafigure_data.get('layout')antes de calcular), mas não estava implementado para tabela.Subtarefas
determine_table_layoutaceita parâmetrooverrideopcional, que vence a heurística quando for um valor válido (single-column-layout/double-column-layout).extract_table_dataaceitaoverride_layoute repassa pradetermine_table_layout.extract_body_dataaceitatable_layout_overrides(dict{table_wrap_id: layout}), busca o override pelo@idde cada tabela e repassa praextract_table_data.pipeline_docxlêdata['table_layout_overrides']e repassa praextract_body_data.Considerações e notas
Isso não substitui a heurística automática, só abre um canal opcional pra sobrescrevê-la por tabela específica. É a base de "customização mínima" que puder ser usada tanto por chamadas diretas da API (testes, scripts) quanto, futuramente, por uma config JSON por periódico (Fase 2 da issue #1278), que ainda não existe e não faz parte desta tarefa.