Fix browser crash: limit schema context + cap table rows at 200
- Schema context limited to 7 core staffing tables (was all 12+) - Results table capped at 200 rows to prevent DOM explosion - Shows "first 200 of N rows" when truncated Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
0bd753294b
commit
ed17216005
@ -109,10 +109,12 @@ async fn fetch_health(path: &str) -> Result<String, String> {
|
|||||||
resp.text().await.map_err(|e| e.to_string())
|
resp.text().await.map_err(|e| e.to_string())
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Get schema context for all datasets (used for AI SQL generation)
|
/// Get schema context for datasets (used for AI SQL generation).
|
||||||
|
/// Limits to core tables to keep prompt size reasonable.
|
||||||
async fn get_schema_context(datasets: &[Dataset]) -> String {
|
async fn get_schema_context(datasets: &[Dataset]) -> String {
|
||||||
|
let core_tables = ["candidates", "clients", "job_orders", "placements", "timesheets", "call_log", "email_log"];
|
||||||
let mut ctx = String::from("DATABASE SCHEMA:\n\n");
|
let mut ctx = String::from("DATABASE SCHEMA:\n\n");
|
||||||
for ds in datasets {
|
for ds in datasets.iter().filter(|d| core_tables.contains(&d.name.as_str())) {
|
||||||
let desc = run_sql(&format!("DESCRIBE {}", ds.name)).await;
|
let desc = run_sql(&format!("DESCRIBE {}", ds.name)).await;
|
||||||
match desc {
|
match desc {
|
||||||
Ok(resp) => {
|
Ok(resp) => {
|
||||||
@ -1001,6 +1003,9 @@ fn ResultsTable(response: QueryResponse) -> Element {
|
|||||||
if response.row_count == 0 {
|
if response.row_count == 0 {
|
||||||
div { class: "empty-sm", "no rows returned" }
|
div { class: "empty-sm", "no rows returned" }
|
||||||
} else if let Some(rows) = rows {
|
} else if let Some(rows) = rows {
|
||||||
|
if rows.len() > 200 {
|
||||||
|
div { class: "results-info", "Showing first 200 of {response.row_count} rows" }
|
||||||
|
}
|
||||||
div { class: "table-wrap",
|
div { class: "table-wrap",
|
||||||
table {
|
table {
|
||||||
thead {
|
thead {
|
||||||
@ -1011,7 +1016,7 @@ fn ResultsTable(response: QueryResponse) -> Element {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
tbody {
|
tbody {
|
||||||
for row in rows.iter() {
|
for row in rows.iter().take(200) {
|
||||||
tr {
|
tr {
|
||||||
for col in response.columns.iter() {
|
for col in response.columns.iter() {
|
||||||
td { {format_cell(row.get(&col.name))} }
|
td { {format_cell(row.get(&col.name))} }
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user