5.7 KiB
Changelog
All notable changes to the komp_ac web crate — the Axum SSR/HTMX web frontend for the komp_ac gRPC backend — are documented in this file.
This changelog tracks only the gRPC endpoints the web crate consumes (the browser never calls gRPC directly; Axum proxies to the backend through these clients) and the extent to which each is used by the pages that mount them. Other, non-API changes are intentionally out of scope.
The format is based on Keep a Changelog.
[Unreleased]
The web crate wires up seven gRPC services and calls the following endpoints. Coverage notes describe which pages exercise each call and how deeply its response is consumed.
Auth (AuthServiceClient)
AuthService.Login— called byPOST /login. Exchanges identifier and password for an access token; the token andexpires_inare written into theanalytics_tokenHTTP-only cookie that every subsequent gRPC call is signed with. Fully covered end-to-end.AuthService.Register— called byPOST /register. Submits the fullRegisterRequestsurface (username, email, password, password_confirmation, role, timezone, phone_country). Only the success/error message is shown; it does not create a session.AuthService.GetAuthorization— called by every admin page loader (/admin, table-definition, add-table, add-logic, add-validation, import/export). Returns the caller's role; the web crate uses it for two things: gating the admin panel torole == "admin"and rendering the navbar with the current role. Response fields beyondroleare not used.
Table definition (TableDefinitionClient)
TableDefinition.GetProfileTree— called by the analytics, admin, table definition, add-table, add-logic, and add-validation loaders. Populates the profile selectors (profile name + table count) and, in the admin panel, the per-profile table list includingdepends_onandrow_display_columns. Response is consumed fairly deeply.TableDefinition.PostTableDefinition— called byPOST /admin/tables(add-table page). Creates a table from the draft; the returnedsuccess,sql, andmessageare surfaced. Full form → endpoint mapping.TableDefinition.GetProfileDetails— called by the table-definition workspace loader. Returns per-table columns (name, type, currency, quantity-ledger, rounding, generated/read-only behaviors andgenerated_fromfor Steel scripts), scripts (target column/type/description/source), row display columns, and table kind. The most deeply consumed definition endpoint.TableDefinition.GetColumnAliasRenameHistory— called by the table-definition workspace loader. Returns rename history entries (table, old/new column names, timestamp); only those four fields are rendered.TableDefinition.AddTableColumns— called byPOST /admin/table-definition/columns. Adds columns to an existing table.TableDefinition.RenameColumnAlias— called byPOST /admin/table-definition/rename. Renames a table column alias.TableDefinition.DeleteTable— called byPOST /admin/table-definition/delete. Deletes a table definition.TableDefinition.CopyProfile— called byPOST /admin/table-definition/copy. Copies a profile.TableDefinition.CreateInvoiceTemplateTable— called byPOST /admin/table-definition/invoice-template. Creates a table from the invoice template contract.
Table script (TableScriptClient)
TableScript.PostTableScript— called byPOST /admin/logic(add-logic page). Creates a Steel table script; the returned id and warnings are surfaced to the user.
Table validation (TableValidationServiceClient)
TableValidationService.UpdateFieldValidation— called byPOST /admin/validation. Creates/updates a field validation.TableValidationService.UpsertValidationRule— called byPOST /admin/validation/rules. Creates/updates a reusable validation rule.TableValidationService.ApplyValidationSet— called byPOST /admin/validation/sets. Applies a validation set.TableValidationService.UpsertValidationSet— called byPOST /admin/validation/sets. Creates/updates a reusable validation set.
Each validation POST maps the submitted form into the corresponding request and
renders only the returned success/message.
Table structure (TableStructureServiceClient)
TableStructureService.GetTableStructure— called by the admin panel, CSV import, and CSV export. Returns table structures used three ways: the admin column browse (name, type, nullable, primary key, quantity-ledger), import header validation, and export column ordering. Only the structure for the selected/imported/exported tables is requested at a time.
Tables data (TablesDataClient)
TablesData.PostTableDataBulk— called byPOST /admin/import. Chunked bulk insert of parsed CSV rows into a table, with per-chunk requests.TablesData.GetTableDataByPosition— called byPOST /admin/export.csv. Reads table rows by position for CSV download, one request per table.
Analytics (AnalyticsServiceClient)
AnalyticsService.GetAnalyticsCatalog— called byPOST /api/catalog. Returns the live public analytics catalog for a profile (tables, columns, types, links); rendered in the sidebar and used to generate starter queries and LLM schema context.AnalyticsService.ExecuteAnalyticsQuery— called byPOST /api/query. Runs a read-only analytics SQL query; the result columns/rows feed the ECharts charts and table view.- The analytics profile selector is fed by
TableDefinition.GetProfileTree(see above), not by a dedicated analytics profile endpoint.