fixed complex strings

This commit is contained in:
2026-09-02 14:35:30 +03:00
parent b7a1609a39
commit f132e83288
8 changed files with 636 additions and 22 deletions
+45 -1
View File
@@ -23,11 +23,20 @@ from app.schemas import (
ProjectUpdate,
TableRowsPatch,
TableRowsResponse,
TableSettingsUpdate,
)
from app.services.excel_export import export_xlsx
from app.services.llm import chat_edit_table
from app.services.pdf_export import export_pdf
from app.services.project_service import get_project_full, ingest_zip, project_dir
from app.services.project_settings import (
TABLE_SETTINGS_META,
get_property_names,
get_project_params_map,
get_table_settings,
resolve_inscriptions,
update_table_settings,
)
from app.services.table_service import (
TABLE_TYPES,
apply_llm_edits,
@@ -204,6 +213,39 @@ def get_pcb(project_id: int, db: Session = Depends(get_db)):
}
@secured.get("/projects/{project_id}/property-names")
def read_property_names(project_id: int, db: Session = Depends(get_db)):
_get_project(db, project_id)
return {"property_names": get_property_names(db, project_id)}
@secured.get("/projects/{project_id}/table-settings/{table_type}")
def read_table_settings(project_id: int, table_type: str, db: Session = Depends(get_db)):
_get_project(db, project_id)
if table_type not in TABLE_TYPES:
raise HTTPException(400, f"Unknown table type. Use one of: {TABLE_TYPES}")
return get_table_settings(db, project_id, table_type)
@secured.patch("/projects/{project_id}/table-settings/{table_type}")
def patch_table_settings(
project_id: int,
table_type: str,
body: TableSettingsUpdate,
db: Session = Depends(get_db),
):
_get_project(db, project_id)
if table_type not in TABLE_TYPES:
raise HTTPException(400, f"Unknown table type")
return update_table_settings(db, project_id, table_type, body.model_dump(exclude_unset=True))
@secured.get("/projects/{project_id}/table-settings-meta")
def read_table_settings_meta(project_id: int, db: Session = Depends(get_db)):
_get_project(db, project_id)
return TABLE_SETTINGS_META
@secured.get("/projects/{project_id}/inscriptions")
def read_inscriptions(project_id: int, db: Session = Depends(get_db)):
_get_project(db, project_id)
@@ -272,6 +314,8 @@ def export_document(project_id: int, body: ExportRequest, db: Session = Depends(
if not rows:
raise HTTPException(400, "Table is empty. Generate it first.")
inscriptions = get_inscriptions(db, project_id)
params = get_project_params_map(db, project_id)
resolved_inscriptions = resolve_inscriptions(inscriptions, params)
if body.format == "xlsx":
data = export_xlsx(body.table_type, rows, title=project.name)
@@ -284,7 +328,7 @@ def export_document(project_id: int, body: ExportRequest, db: Session = Depends(
)
if body.format == "pdf":
try:
data = export_pdf(body.table_type, rows, inscriptions)
data = export_pdf(body.table_type, rows, resolved_inscriptions)
except ValueError as e:
raise HTTPException(400, str(e)) from e
return Response(