feat(elasticsearch): 新增 REST 控制台并完善安全执行链

- 复用查询页提供 ES 控制台、模板、AI 辅助及原始与表格结果
- 新增统一解析分类、危险确认、连接保护和受控 REST 执行
- 扩展 driver agent、版本适配、Wails 绑定、多语言与文档
- 修复完整回归中发现的跨平台和前端基线用例问题

Refs #782
This commit is contained in:
Syngnat
2026-08-01 14:58:12 +08:00
parent 849dad6ea8
commit 88434e77a9
60 changed files with 8500 additions and 489 deletions

View File

@@ -11,6 +11,7 @@ vi.mock('../../wailsjs/go/app/App', () => ({
import {
buildTableSelectQuery,
extractTableSelectColumnNames,
isElasticsearchDbType,
resolveTableSelectQuery,
} from './objectQueryTemplates';
@@ -46,6 +47,14 @@ describe('buildTableSelectQuery', () => {
it('adds a preview limit for RabbitMQ queue browsing', () => {
expect(buildTableSelectQuery('rabbitmq', 'orders.events.v1')).toBe('SELECT * FROM "orders.events.v1" LIMIT 100;');
});
it('builds an Elasticsearch match_all request for an index', () => {
expect(buildTableSelectQuery('elasticsearch', 'orders-v1')).toBe(
'GET /orders-v1/_search\n{\n "query": {\n "match_all": {}\n }\n}\n',
);
expect(isElasticsearchDbType('elasticsearch')).toBe(true);
expect(isElasticsearchDbType('elastic')).toBe(true);
});
});
describe('extractTableSelectColumnNames', () => {
@@ -108,4 +117,14 @@ describe('resolveTableSelectQuery', () => {
expect(dbGetColumnsMock).not.toHaveBeenCalled();
});
it('opens an Elasticsearch index with a match_all request without loading SQL columns', async () => {
await expect(resolveTableSelectQuery({
dbType: 'elasticsearch',
tableName: 'orders-v1',
connectionConfig: { type: 'elasticsearch' },
})).resolves.toBe('GET /orders-v1/_search\n{\n "query": {\n "match_all": {}\n }\n}\n');
expect(dbGetColumnsMock).not.toHaveBeenCalled();
});
});