MCP: инструменты справочников (data tables) — этап 1

- 15 инструментов: list/get_directory, list_directory_rows (flat/tree), get_directory_row, get_directory_column_values (read); create/bulk_create_directory_row (write); create/update/delete_directory, update/delete/move_directory_row, link/unlink_directories (full)
- Объектные проверки isTableAllowed по scopes.tableIds
- Логика дерева строк вынесена в server/utils/data-table-tree.ts (переиспользуется REST-эндпоинтом и MCP)
- bulkCreateDataTableRows: поддержка parentId и position
This commit is contained in:
2026-07-21 17:02:04 +03:00
parent a7733b4a03
commit 002ce152be
5 changed files with 834 additions and 145 deletions

View File

@@ -292,7 +292,7 @@ export interface IStorage {
createDataTableRow(row: InsertDataTableRow): Promise<DataTableRow>;
updateDataTableRow(id: number, tableId: number, organizationId: number, updates: Partial<DataTableRow>): Promise<DataTableRow>;
deleteDataTableRow(id: number, tableId: number, organizationId: number): Promise<void>;
bulkCreateDataTableRows(tableId: number, rows: { values: string[] }[]): Promise<DataTableRow[]>;
bulkCreateDataTableRows(tableId: number, rows: { values: string[]; parentId?: number | null; position?: number }[]): Promise<DataTableRow[]>;
bulkDeleteDataTableRows(tableId: number, organizationId: number): Promise<void>;
applyDataTableSync(tableId: number, deleted: { id: number }[], added: { values: string[]; position: number }[], reordered: { id: number; newPosition: number }[], positionUpdates: { id: number; position: number }[]): Promise<void>;
applyDataTableDiff(tableId: number, upsertRows: { values: string[] }[], deleteKeys: string[], currentRows: DataTableRow[]): Promise<{ added: DataTableRow[]; updated: DataTableRow[]; deleted: DataTableRow[] }>;