Backend: importXlsx() now creates a Document(type=SMETA) and stores the
Excel buffer via DocumentFileService after successful parse+transaction.
Smeta.filePath is written with the storedPath. Best-effort try/catch —
a storage failure never blocks a successful import.
Frontend: EstimatesTab drawer and GeneralTab show a download button
(FileExcelOutlined → /storage/{filePath}) when filePath starts with
'documents/', falling back to the UNC FilePathButton for legacy paths.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>