Overview

RAG Chatbot — Supported prompts

What you can ask the <wuic-rag-chatbot> assistant depending on the page you are on, and

which operations it can perform on each one.

This page answers the user's question ("what can I ask here?"); the

tool catalog answers the developer's one ("which kind is emitted

and which metadata does it touch").

The prompts in blockquotes are the ones used by the end-to-end tests: a prompt listed

here has been verified against the real chatbot — prompt, proposal, confirmation, effect

on the page. They are kept in Italian because that is the exact text the tests send; if a

prompt changes in the test but not here (or vice versa), the parity test fails.

How a request works

1. You type the request in plain language in the chatbot panel.

2. Along with the prompt, the model receives a summary of the current page: this is

what lets it understand that "add the column X" means something different on

/pivot-builder than on a list.

3. If the request maps to an executable operation, a card with Apply appears. Nothing

changes before the click, and the click asks for confirmation.

4. If the request is ambiguous or refers to something that does not exist, the chatbot

does not propose: it replies explaining, and lists the real values available.

Pivot builder — <route>/pivot-builder

Building the view (View Builder canvas) and configuring the pivot.

User prompt:

> Aggiungi la tabella <route> al view builder e mettine una colonna nelle righe del pivot.

On this page "table", "column" and "row" refer to the view and the pivot, never to SQL

tables or columns: asking to add a column does not create a column in the database. If the

request is ambiguous the chatbot asks instead of proceeding.

OperationWhat it does
injectAdds several tables and their joins at once (e.g. "join orders and customers on customer_id")
add_table / remove_tableAdds or removes a table from the canvas
join / unjoinCreates or removes a join. Only allowed towards a key column and with compatible types: otherwise the operation is rejected with the reason
select_columnsEnables or disables columns of the view
add_aggregation / remove_aggregationSUM, COUNT, COUNT_DISTINCT, AVG, MIN, MAX on a column
set_group_bySets the grouping columns
set_column_formulaComputed column with a formula
pivot_set_axisFills the pivot rows, columns or values
pivot_removeRemoves a column from an axis
pivot_set_value_optionsAggregation and caption of a column in values
pivot_set_date_groupGroups an axis by year, quarter, month, week, day...
pivot_set_top_rowsRow limit of the preview

Canvas operations automatically bring the View Builder tab to the front, so the change

happens in front of the user and not in a hidden tab.

Deliberately left out: creating the SQL view, saving the configuration and deleting. Those

stay with the page buttons.

Application settings — /appsettings-editor

User prompt:

> Imposta <key> a <value>.

The chatbot stages the changes: they show up as pending changes and saving remains an

explicit click on Save & Apply. The summary states whether any of the keys requires a

backend restart.

OperationWhat it does
setStages one or more settings
resetDiscards the pending changes

Not editable by the assistant: connection strings, passwords, API keys, licence, database

type. If you ask for them, the chatbot explains they must be set by hand in the matching

field. Their values never appear in the context sent to the model.

A value outside the allowed list is rejected showing the valid ones; a non-existent key is

rejected suggesting similar ones.

Report designer — <route>/report-designer

User prompt:

> Genera un report tabellare con le colonne principali di questa route.

A new file is created, with a timestamped name: the open report is not overwritten.

Unlike the other pages the effect is immediate on the server, so clicking Apply is the

final confirmation.

TemplateWhen to use it
bandsTabular list, with optional nested details
crosstabCross table (rows × column, with aggregation)
crossgroupGrouping with totals

Allowed aggregations: Sum, Avg, Count, Min, Max. A non-existent column makes the request

fail, listing the available ones.

Application structure (scaffolding)

Available everywhere, for users with administration rights.

OperationWhat it does
db_table_createCreates a new table and registers it in the application (SQL Server and MySQL)
metadata_scaffold_tableImports a table that already exists in the database. Repeatable: it is also the way to realign a route after a schema change
metadata_scaffold_viewImports a view (read-only route)
metadata_scaffold_columnMaps a column added to the database outside the application
menu_entry_moveMoves or reorders a menu entry

Before proposing, the chatbot reads the real database structure (available connections,

tables, columns) and the menu tree: it does not invent names. Of the connections it only

knows the names, never the connection strings.

Operations that remove data

Removing a column or a menu entry is irreversible and handled separately: it must be

requested naming the object explicitly, and confirmation requires **typing its exact

name**. A generic request ("clean this up", "drop the useless columns") produces no

proposal at all.

Tables and routes cannot be removed from the chat.

Visual designers

Dashboard designer, workflow designer and 3D scene have their own prompts, documented in

the tool catalog: designer_inject, workflow_inject and

scene3d_inject respectively.

When the chatbot does not propose

This is not a failure: it is the expected behaviour when

  • the request is ambiguous and could map to different operations;
  • a column, route or key is mentioned that does not exist — the real ones are listed

instead;

  • the requested operation is not available on that page.

In all these cases the chatbot answers in words, with no Apply card.

References

proposal fields and the metadata it changes.