Skip to main content

Overview

After processing your Auvo file, the results page displays all tasks that match your configured keywords. This page provides statistics, an interactive table, and quick export options.

Results Page Layout

The results page (/upload route, rendered as resultado.html) consists of several sections:

1. Page Header

The header includes:
  • Title: “Tarefas Encontradas” (Tasks Found)
  • Export buttons: Quick access to Excel and PDF downloads (if results exist)
  • Navigation buttons: Links to configuration and new file upload

2. Statistics Cards

Four color-coded cards display key metrics:

Total de Registros

Total number of rows in the original file (excluding the 5 skipped header rows)

Tarefas Encontradas

Number of tasks that matched your keywords

Taxa de Ocorrência

Percentage of total records that require action

Palavras Ativas

Number of keywords that found at least one match
Statistics are generated by the gerar_estatisticas() function in app.py:55.

3. Keyword Breakdown

The “Ocorrências por Palavra-chave” section shows how many matches each keyword found:
🏷️ Ocorrências por Palavra-chave

[5] quebrado
[3] solicitar peça
[2] trocar cabo
[1] orçamento
Only keywords that found matches appear in this section. If a keyword found zero matches, it won’t be listed.

4. Interactive Results Table

The main table displays filtered tasks with the following columns:
ColumnDescriptionExample
DataService order date15/03/2026
ClienteClient nameEmpresa XYZ Ltda
EnderecoService addressRua ABC, 123
OS DigitalClickable link to digital service order[Link]
RelatoService report (contains matched keywords)“Equipamento quebrado, solicitar peça”
The “OS Digital” column contains clickable links that open in a new tab, allowing you to quickly access the full service order in Auvo.

Using the Search Feature

Search Functionality

The results table includes a client-side search box (powered by JavaScript in resultado.js):
1

Locate the Search Box

The search input is positioned at the top-right of the results table.
2

Enter Search Terms

Type any text to filter the table. The search is applied across all columns.
Example searches:
- "Empresa XYZ" - Find all tasks for a specific client
- "quebrado" - Show only tasks with this keyword
- "Rua ABC" - Filter by address
3

View Filtered Results

The table updates in real-time as you type, showing only matching rows.
4

Clear the Search

Delete the search text to restore all results.
The search feature works client-side (in your browser), so it’s instant and doesn’t require re-processing the file.

No Results Message

If your search term doesn’t match any rows, a friendly message appears:
😔 Nenhum resultado encontrado
Tente um termo de busca diferente.

Handling Empty Results

If no tasks match your keywords, you’ll see:
🔍 Nenhuma tarefa encontrada

Não foram encontradas tarefas com as palavras-chave configuradas.

[Alterar Palavras-chave] [Tentar Outro Arquivo]
This happens when:
  • Your keywords don’t appear in any “Relato” entries
  • The file contains no data (after skipping 5 header rows)
  • All “Relato” entries are empty or null
If you get no results, try adjusting your keywords to be more broad or check that you uploaded the correct file.

Understanding the Statistics

Total de Registros

Calculated as the total number of rows in your file minus 5 header rows:
total = len(df_original)  # app.py:57

Tarefas Encontradas

The count of rows where the “Relato” column contains at least one configured keyword:
filtrados = len(df_filtrado)  # app.py:58

Taxa de Ocorrência

Percentage calculated as:
percentual = round((filtrados/total)*100, 1)  # app.py:59
A higher percentage doesn’t necessarily mean more problems—it depends on your keywords. If you search for common terms, you’ll get more matches.

Palavras Ativas

Count of keywords that found at least one match. Calculated by iterating through all keywords and counting those with count > 0:
for palavra in palavras_chave:
    count = int(df_filtrado['Relato'].str.contains(palavra, case=False, na=False).sum())
    if count > 0:
        stats['por_palavra'][palavra] = count  # app.py:67-71

Table Styling and Features

Visual Design

The table uses Bootstrap styling for a clean, professional appearance:
  • Striped rows: Alternating row colors for easier reading
  • Hover effect: Rows highlight when you move your mouse over them
  • Responsive design: Table scrolls horizontally on small screens
  • Clickable links: OS Digital links styled in blue with hover effects

Table Generation

The table HTML is generated server-side using pandas:
tabela_html = resultado_para_exibicao.to_html(
    classes="table table-striped table-hover",
    table_id="tabela-resultados",
    index=False,
    justify="left",
    border=0,
    escape=False  # Allows HTML links in OS Digital column
)  # app.py:162-165
escape=False is critical for rendering clickable links in the OS Digital column. The criar_links() function converts URLs to HTML anchor tags.

Results Persistence

Session Storage

Your results are stored in two ways:
  1. Temporary File: The filtered DataFrame is saved as a CSV in the server’s temp/ folder
    • Filename: UUID-based (e.g., a3f5b9c7e1d4f8a2.csv)
    • Location: Stored in session['temp_filename']
    • Purpose: Used for Excel and PDF exports
  2. Statistics: Saved in the session for display consistency
    • Key: session['last_stats']
    • Contains: total, filtrados, percentual, por_palavra
Results persist for the duration of your browser session. If the session expires or you clear cookies, you’ll need to re-upload your file.

Processing History

Each file you process is added to your session history:
salvar_historico(file.filename, stats)  # app.py:156
The history stores:
  • Original filename
  • Processing date/time
  • Number of tasks found
  • Total records processed
Access your history via the /historico route from the home page.

Quick Actions from Results Page

Export Options

Two export buttons appear when results exist:

Excel Export

Downloads a .xlsx file with two sheets: “Tarefas Encontradas” and “Estatísticas”

PDF Export

Generates a formatted PDF report with statistics and the full results table
Learn more in the Exporting Reports guide.
  • Config: Opens the keyword configuration page
  • Novo Arquivo: Returns to the home page to upload a different file

Keyword Management

At the bottom of the results page, you can:
  • View all keywords used in the current search
  • Click “Editar” to modify keywords (redirects to /config)
Changing keywords doesn’t automatically re-analyze your current file. You’ll need to re-upload the file to apply new keywords.

Troubleshooting

Results Page Won’t Load

If you’re redirected back to the home page with an error:
  • Check that your file format is supported
  • Ensure required columns (Data, Cliente, Endereco, OS Digital, Relato) exist
  • Verify the file isn’t corrupted

Search Not Working

If the search box doesn’t filter results:
  • Ensure JavaScript is enabled in your browser
  • Check the browser console for JavaScript errors
  • Verify the resultado.js script is loading correctly
If OS Digital links aren’t clickable:
  • The original data must contain valid URLs starting with http
  • The criar_links() function only converts strings starting with “http”

Results Disappeared

If you return to the results page but see “Os resultados expiraram”:
  • Your session has expired (typically after browser closure or timeout)
  • The temporary file was deleted from the temp/ folder
  • Re-upload your file to generate new results
  • POST /upload - Processes file and displays results (app.py:124)
  • GET /download/excel - Exports results to Excel (app.py:178)
  • GET /download/pdf - Exports results to PDF (app.py:206)
  • GET /config - Modifies search keywords (app.py:108)
  • GET /historico - Views processing history (app.py:118)

Next Steps

Build docs developers (and LLMs) love