sqlseed 0.1.12__tar.gz → 0.1.13__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {sqlseed-0.1.12 → sqlseed-0.1.13}/.gitignore +5 -1
- sqlseed-0.1.13/CHANGELOG.md +115 -0
- sqlseed-0.1.13/CHANGELOG.zh-CN.md +115 -0
- sqlseed-0.1.13/PKG-INFO +1048 -0
- sqlseed-0.1.13/README.md +995 -0
- sqlseed-0.1.12/README.md → sqlseed-0.1.13/README.zh-CN.md +204 -296
- sqlseed-0.1.13/examples/ai_generation_demo.py +177 -0
- {sqlseed-0.1.12 → sqlseed-0.1.13}/pyproject.toml +14 -6
- {sqlseed-0.1.12 → sqlseed-0.1.13}/src/sqlseed/__init__.py +36 -6
- sqlseed-0.1.13/src/sqlseed/_utils/progress.py +23 -0
- {sqlseed-0.1.12 → sqlseed-0.1.13}/src/sqlseed/cli/main.py +164 -40
- {sqlseed-0.1.12 → sqlseed-0.1.13}/src/sqlseed/config/loader.py +13 -0
- {sqlseed-0.1.12 → sqlseed-0.1.13}/src/sqlseed/config/models.py +1 -0
- {sqlseed-0.1.12 → sqlseed-0.1.13}/src/sqlseed/core/enrichment.py +1 -1
- {sqlseed-0.1.12 → sqlseed-0.1.13}/src/sqlseed/core/expression.py +23 -2
- {sqlseed-0.1.12 → sqlseed-0.1.13}/src/sqlseed/core/mapper.py +19 -10
- {sqlseed-0.1.12 → sqlseed-0.1.13}/src/sqlseed/core/orchestrator.py +148 -60
- {sqlseed-0.1.12 → sqlseed-0.1.13}/src/sqlseed/core/plugin_mediator.py +65 -25
- sqlseed-0.1.13/src/sqlseed/core/relation.py +348 -0
- {sqlseed-0.1.12 → sqlseed-0.1.13}/src/sqlseed/core/schema.py +1 -1
- {sqlseed-0.1.12 → sqlseed-0.1.13}/src/sqlseed/core/unique_adjuster.py +1 -1
- sqlseed-0.1.13/src/sqlseed/database/_compat.py +35 -0
- {sqlseed-0.1.12 → sqlseed-0.1.13}/src/sqlseed/database/optimizer.py +6 -2
- {sqlseed-0.1.12 → sqlseed-0.1.13}/src/sqlseed/database/raw_sqlite_adapter.py +3 -1
- {sqlseed-0.1.12 → sqlseed-0.1.13}/src/sqlseed/database/sqlite_utils_adapter.py +8 -1
- {sqlseed-0.1.12 → sqlseed-0.1.13}/src/sqlseed/generators/_dispatch.py +7 -0
- {sqlseed-0.1.12 → sqlseed-0.1.13}/src/sqlseed/generators/base_provider.py +322 -0
- {sqlseed-0.1.12 → sqlseed-0.1.13}/src/sqlseed/generators/faker_provider.py +18 -0
- {sqlseed-0.1.12 → sqlseed-0.1.13}/src/sqlseed/generators/mimesis_provider.py +18 -0
- {sqlseed-0.1.12 → sqlseed-0.1.13}/src/sqlseed/generators/stream.py +47 -0
- sqlseed-0.1.12/CHANGELOG.md +0 -86
- sqlseed-0.1.12/PKG-INFO +0 -952
- sqlseed-0.1.12/plugins/mcp-server-sqlseed/README.md +0 -49
- sqlseed-0.1.12/plugins/mcp-server-sqlseed/pyproject.toml +0 -47
- sqlseed-0.1.12/plugins/mcp-server-sqlseed/src/mcp_server_sqlseed/__init__.py +0 -7
- sqlseed-0.1.12/plugins/mcp-server-sqlseed/src/mcp_server_sqlseed/__main__.py +0 -6
- sqlseed-0.1.12/plugins/mcp-server-sqlseed/src/mcp_server_sqlseed/config.py +0 -9
- sqlseed-0.1.12/plugins/mcp-server-sqlseed/src/mcp_server_sqlseed/server.py +0 -176
- sqlseed-0.1.12/plugins/sqlseed-ai/README.md +0 -38
- sqlseed-0.1.12/plugins/sqlseed-ai/pyproject.toml +0 -44
- sqlseed-0.1.12/plugins/sqlseed-ai/src/sqlseed_ai/__init__.py +0 -73
- sqlseed-0.1.12/plugins/sqlseed-ai/src/sqlseed_ai/_client.py +0 -23
- sqlseed-0.1.12/plugins/sqlseed-ai/src/sqlseed_ai/_json_utils.py +0 -24
- sqlseed-0.1.12/plugins/sqlseed-ai/src/sqlseed_ai/analyzer.py +0 -278
- sqlseed-0.1.12/plugins/sqlseed-ai/src/sqlseed_ai/config.py +0 -20
- sqlseed-0.1.12/plugins/sqlseed-ai/src/sqlseed_ai/errors.py +0 -151
- sqlseed-0.1.12/plugins/sqlseed-ai/src/sqlseed_ai/examples.py +0 -183
- sqlseed-0.1.12/plugins/sqlseed-ai/src/sqlseed_ai/provider.py +0 -63
- sqlseed-0.1.12/plugins/sqlseed-ai/src/sqlseed_ai/refiner.py +0 -261
- sqlseed-0.1.12/src/sqlseed/_utils/progress.py +0 -14
- sqlseed-0.1.12/src/sqlseed/core/relation.py +0 -215
- sqlseed-0.1.12/src/sqlseed/database/_compat.py +0 -14
- sqlseed-0.1.12/src/sqlseed/plugins/__init__.py +0 -12
- sqlseed-0.1.12/src/sqlseed/plugins/hookspecs.py +0 -119
- sqlseed-0.1.12/src/sqlseed/plugins/manager.py +0 -37
- {sqlseed-0.1.12 → sqlseed-0.1.13}/LICENSE +0 -0
- {sqlseed-0.1.12 → sqlseed-0.1.13}/src/sqlseed/_utils/__init__.py +0 -0
- {sqlseed-0.1.12 → sqlseed-0.1.13}/src/sqlseed/_utils/logger.py +0 -0
- {sqlseed-0.1.12 → sqlseed-0.1.13}/src/sqlseed/_utils/metrics.py +0 -0
- {sqlseed-0.1.12 → sqlseed-0.1.13}/src/sqlseed/_utils/schema_helpers.py +0 -0
- {sqlseed-0.1.12 → sqlseed-0.1.13}/src/sqlseed/_utils/sql_safe.py +0 -0
- {sqlseed-0.1.12 → sqlseed-0.1.13}/src/sqlseed/_version.py +0 -0
- {sqlseed-0.1.12 → sqlseed-0.1.13}/src/sqlseed/cli/__init__.py +0 -0
- {sqlseed-0.1.12 → sqlseed-0.1.13}/src/sqlseed/config/__init__.py +0 -0
- {sqlseed-0.1.12 → sqlseed-0.1.13}/src/sqlseed/config/snapshot.py +0 -0
- {sqlseed-0.1.12 → sqlseed-0.1.13}/src/sqlseed/core/__init__.py +0 -0
- {sqlseed-0.1.12 → sqlseed-0.1.13}/src/sqlseed/core/column_dag.py +0 -0
- {sqlseed-0.1.12 → sqlseed-0.1.13}/src/sqlseed/core/constraints.py +0 -0
- {sqlseed-0.1.12 → sqlseed-0.1.13}/src/sqlseed/core/result.py +0 -0
- {sqlseed-0.1.12 → sqlseed-0.1.13}/src/sqlseed/core/transform.py +0 -0
- {sqlseed-0.1.12 → sqlseed-0.1.13}/src/sqlseed/database/__init__.py +0 -0
- {sqlseed-0.1.12 → sqlseed-0.1.13}/src/sqlseed/database/_base_adapter.py +0 -0
- {sqlseed-0.1.12 → sqlseed-0.1.13}/src/sqlseed/database/_helpers.py +0 -0
- {sqlseed-0.1.12 → sqlseed-0.1.13}/src/sqlseed/database/_protocol.py +0 -0
- {sqlseed-0.1.12 → sqlseed-0.1.13}/src/sqlseed/generators/__init__.py +0 -0
- {sqlseed-0.1.12 → sqlseed-0.1.13}/src/sqlseed/generators/_json_helpers.py +0 -0
- {sqlseed-0.1.12 → sqlseed-0.1.13}/src/sqlseed/generators/_protocol.py +0 -0
- {sqlseed-0.1.12 → sqlseed-0.1.13}/src/sqlseed/generators/_string_helpers.py +0 -0
- {sqlseed-0.1.12 → sqlseed-0.1.13}/src/sqlseed/generators/registry.py +0 -0
- {sqlseed-0.1.12 → sqlseed-0.1.13}/src/sqlseed/py.typed +0 -0
|
@@ -22,6 +22,7 @@ wheels/
|
|
|
22
22
|
|
|
23
23
|
# Virtual Environment
|
|
24
24
|
.venv/
|
|
25
|
+
venv/
|
|
25
26
|
env/
|
|
26
27
|
ENV/
|
|
27
28
|
|
|
@@ -34,6 +35,7 @@ ENV/
|
|
|
34
35
|
|
|
35
36
|
# Testing
|
|
36
37
|
.pytest_cache/
|
|
38
|
+
.benchmarks/
|
|
37
39
|
.coverage
|
|
38
40
|
coverage.xml
|
|
39
41
|
htmlcov/
|
|
@@ -62,9 +64,11 @@ snapshots/
|
|
|
62
64
|
.trae/
|
|
63
65
|
|
|
64
66
|
# Build artifacts
|
|
65
|
-
dist/
|
|
66
67
|
*.whl
|
|
67
68
|
*.tar.gz
|
|
68
69
|
|
|
69
70
|
# Local git worktrees
|
|
70
71
|
.worktrees/
|
|
72
|
+
|
|
73
|
+
# IDE - SonarLint
|
|
74
|
+
.sonarlint/
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
**[English](CHANGELOG.md)** | [中文](CHANGELOG.zh-CN.md)
|
|
4
|
+
|
|
5
|
+
All notable changes to this project will be documented in this file.
|
|
6
|
+
|
|
7
|
+
Format based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
8
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
9
|
+
|
|
10
|
+
## [v0.1.13]
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
#### Core Engine
|
|
15
|
+
- Cross-table association support: `ColumnAssociation` config model for explicit source table/column mapping
|
|
16
|
+
- Implicit association: `SharedPool` auto-matches cross-table FK references by shared column names
|
|
17
|
+
- `EnrichmentEngine` data distribution inference — detects enum columns and value ranges from existing data
|
|
18
|
+
- `UniqueAdjuster` auto-tunes unique column parameters to satisfy UNIQUE constraints
|
|
19
|
+
- `database/_compat.py` adds `HAS_SQLITE_UTILS` flag for runtime sqlite-utils detection
|
|
20
|
+
|
|
21
|
+
#### Generators
|
|
22
|
+
- 7 new generator types: `username`, `city`, `country`, `state`, `zip_code`, `job_title`, `country_code`
|
|
23
|
+
- `ColumnMapper` exact match rules expanded from 68 to 74
|
|
24
|
+
|
|
25
|
+
#### AI Plugin (sqlseed-ai)
|
|
26
|
+
- Auto model selection: `_model_selector` picks the best free model from OpenRouter by priority
|
|
27
|
+
- Structured output: `response_format: json_object` forces LLM to return JSON
|
|
28
|
+
- Few-shot example library: 4 typical scenarios (users, bank cards, orders, employees)
|
|
29
|
+
- `AiConfigRefiner` self-correction loop: auto-detects and fixes invalid configs, up to 3 retries
|
|
30
|
+
- File caching: `.sqlseed_cache/ai_configs/` with schema hash validation, `--no-cache` to skip
|
|
31
|
+
- Pre-computed template pool: `sqlseed_pre_generate_templates` hook pre-generates candidate values for complex columns
|
|
32
|
+
- Error summary system: `errors.py` smart error classification
|
|
33
|
+
- Environment variables: `SQLSEED_AI_API_KEY`, `SQLSEED_AI_BASE_URL`, `SQLSEED_AI_MODEL`, `SQLSEED_AI_TIMEOUT`
|
|
34
|
+
|
|
35
|
+
#### MCP Server (mcp-server-sqlseed)
|
|
36
|
+
- `sqlseed_execute_fill` adds `enrich` parameter for data distribution inference
|
|
37
|
+
- `sqlseed_inspect_schema` returns `schema_hash` field
|
|
38
|
+
|
|
39
|
+
#### CLI
|
|
40
|
+
- `fill` command adds `--enrich` flag
|
|
41
|
+
- `fill` command adds `--no-ai` flag to skip AI suggestions and template generation
|
|
42
|
+
- `ai-suggest` command adds `--verify/--no-verify` and `--timeout` parameters
|
|
43
|
+
- `fill` command makes `db_path` optional when using `--config`
|
|
44
|
+
|
|
45
|
+
#### Tests & Examples
|
|
46
|
+
- Add `test_cli_yaml_priority.py` covering CLI YAML priority scenarios
|
|
47
|
+
- Add `examples/ai_generation_demo.py` usage example
|
|
48
|
+
|
|
49
|
+
### Changed
|
|
50
|
+
|
|
51
|
+
- Simplify `ExpressionEngine` regex patterns
|
|
52
|
+
- Optimize code structure and type annotations, remove unnecessary lazy imports
|
|
53
|
+
- CI workflows expanded: ruff check covers `plugins/` directory, add concurrency control
|
|
54
|
+
- Update dependency version constraints
|
|
55
|
+
- Rewrite all project documentation: CLAUDE.md, README.md, GEMINI.md, AGENTS.md, architecture.md
|
|
56
|
+
- Rewrite `plugins/sqlseed-ai/README.md` and `plugins/mcp-server-sqlseed/README.md`
|
|
57
|
+
|
|
58
|
+
### Fixed
|
|
59
|
+
|
|
60
|
+
- ruff lint cleanup, allow Chinese fullwidth characters (`:`, `(`, `)`)
|
|
61
|
+
- Remove unnecessary `sqlite3.OperationalError` catch
|
|
62
|
+
- `ProviderRegistry.register_from_entry_points()` fixes non-provider entry point detection
|
|
63
|
+
|
|
64
|
+
### Removed
|
|
65
|
+
|
|
66
|
+
- Remove `docs/superpowers/` directory (outdated design specs)
|
|
67
|
+
- Remove `suggest.py` and `nl_config.py`, replaced by `SchemaAnalyzer` + `AiConfigRefiner`
|
|
68
|
+
|
|
69
|
+
## [v0.1.12]
|
|
70
|
+
|
|
71
|
+
### Added
|
|
72
|
+
|
|
73
|
+
#### Core Engine
|
|
74
|
+
- Core orchestrator `DataOrchestrator` with streaming batch generation
|
|
75
|
+
- `ColumnMapper` 9-level strategy chain (exact match → pattern match → type fallback → default)
|
|
76
|
+
- `DatabaseAdapter` Protocol with `SQLiteUtilsAdapter` and `RawSQLiteAdapter`
|
|
77
|
+
- `PragmaOptimizer` 3-tier optimization (LIGHT / MODERATE / AGGRESSIVE)
|
|
78
|
+
- `DataProvider` Protocol with `BaseProvider`, `FakerProvider`, `MimesisProvider`
|
|
79
|
+
- `DataStream` memory-efficient streaming data generator
|
|
80
|
+
- `RelationResolver` foreign key dependency topological sort
|
|
81
|
+
- Plugin system based on `pluggy` with 11 hook points
|
|
82
|
+
- CLI commands: `fill`, `preview`, `inspect`, `init`, `replay`, `ai-suggest`
|
|
83
|
+
- Python API: `sqlseed.fill()`, `sqlseed.connect()`, `sqlseed.fill_from_config()`, `sqlseed.preview()`
|
|
84
|
+
- YAML/JSON config file support
|
|
85
|
+
- Config snapshot save and replay
|
|
86
|
+
- SQL injection protection (`quote_identifier()` utility)
|
|
87
|
+
|
|
88
|
+
#### v2.0 — Column DAG & Expression Engine
|
|
89
|
+
- `ColumnDAG` column dependency resolution via topological sort
|
|
90
|
+
- `ExpressionEngine` safe expression evaluation via `simpleeval` with thread-based timeout protection
|
|
91
|
+
- `ConstraintSolver` unique constraint solving with retry and backtracking
|
|
92
|
+
- `TransformLoader` dynamic Python script loading (`importlib`)
|
|
93
|
+
- `SharedPool` cross-table value sharing for referential integrity
|
|
94
|
+
- `IndexInfo` dataclass and `get_index_info()` added to `DatabaseAdapter` Protocol
|
|
95
|
+
- `get_sample_rows()` method added to `DatabaseAdapter` Protocol for context sniffing
|
|
96
|
+
- `sqlseed_ai_analyze_table` hook (firstresult) for AI-driven schema analysis
|
|
97
|
+
- `sqlseed_shared_pool_loaded` hook for cross-table association tracking
|
|
98
|
+
|
|
99
|
+
#### AI Plugin (sqlseed-ai)
|
|
100
|
+
- `SchemaAnalyzer` LLM integration (OpenAI-compatible API)
|
|
101
|
+
- Context sniffing: extracts columns, indexes, sample data, foreign keys for LLM analysis
|
|
102
|
+
- `AIConfig` configurable model, API key, and base URL
|
|
103
|
+
- CLI `ai-suggest` command for AI-driven YAML generation
|
|
104
|
+
|
|
105
|
+
#### MCP Server (mcp-server-sqlseed)
|
|
106
|
+
- `sqlseed_inspect_schema` tool — inspect database schema
|
|
107
|
+
- `sqlseed_generate_yaml` tool — AI-driven YAML config generation
|
|
108
|
+
- `sqlseed_execute_fill` tool — execute data generation
|
|
109
|
+
- FastMCP-based server
|
|
110
|
+
|
|
111
|
+
### Fixed
|
|
112
|
+
- Hook `firstresult` semantics aligned with design docs
|
|
113
|
+
- `validate_table_name` adds regex validation
|
|
114
|
+
- Expression engine adds timeout protection (default 5 seconds)
|
|
115
|
+
- `fill_from_config` correctly passes transform attribute
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
# 变更日志
|
|
2
|
+
|
|
3
|
+
[English](CHANGELOG.md) | **[中文](CHANGELOG.zh-CN.md)**
|
|
4
|
+
|
|
5
|
+
本项目所有重要变更将记录在此文件中。
|
|
6
|
+
|
|
7
|
+
格式基于 [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
8
|
+
本项目遵循[语义化版本](https://semver.org/spec/v2.0.0.html)。
|
|
9
|
+
|
|
10
|
+
## [v0.1.13]
|
|
11
|
+
|
|
12
|
+
### 新增
|
|
13
|
+
|
|
14
|
+
#### 核心引擎
|
|
15
|
+
- 跨表关联支持:`ColumnAssociation` 配置模型,支持显式声明源表/源列映射
|
|
16
|
+
- 隐式关联:`SharedPool` 通过同名列自动匹配跨表 FK 引用
|
|
17
|
+
- `EnrichmentEngine` 数据分布推断,从现有表数据推断枚举列和值范围
|
|
18
|
+
- `UniqueAdjuster` 唯一列参数自动调整,确保生成数据满足 UNIQUE 约束
|
|
19
|
+
- `database/_compat.py` 新增 `HAS_SQLITE_UTILS` 标志,运行时检测 sqlite-utils 可用性
|
|
20
|
+
|
|
21
|
+
#### 数据生成器
|
|
22
|
+
- 新增 7 个生成器类型:`username`、`city`、`country`、`state`、`zip_code`、`job_title`、`country_code`
|
|
23
|
+
- `ColumnMapper` 精确匹配规则从 68 扩展到 74 条
|
|
24
|
+
|
|
25
|
+
#### AI 插件(sqlseed-ai)
|
|
26
|
+
- 自动模型选择:`_model_selector` 从 OpenRouter 免费模型列表中按优先级自动选择
|
|
27
|
+
- 结构化输出:`response_format: json_object` 强制 LLM 返回 JSON
|
|
28
|
+
- Few-shot 示例库:4 个典型场景(用户表、银行卡表、订单表、员工表)
|
|
29
|
+
- `AiConfigRefiner` 自纠正闭环:自动检测并修复无效配置,最多 3 轮重试
|
|
30
|
+
- 文件缓存:`.sqlseed_cache/ai_configs/` 带 schema hash 校验,`--no-cache` 跳过
|
|
31
|
+
- 预计算模板池:`sqlseed_pre_generate_templates` Hook,AI 为复杂列预生成候选值
|
|
32
|
+
- 错误摘要系统:`errors.py` 智能分类错误类型
|
|
33
|
+
- 环境变量:`SQLSEED_AI_API_KEY`、`SQLSEED_AI_BASE_URL`、`SQLSEED_AI_MODEL`、`SQLSEED_AI_TIMEOUT`
|
|
34
|
+
|
|
35
|
+
#### MCP 服务器(mcp-server-sqlseed)
|
|
36
|
+
- `sqlseed_execute_fill` 新增 `enrich` 参数,支持数据分布推断
|
|
37
|
+
- `sqlseed_inspect_schema` 返回 `schema_hash` 字段
|
|
38
|
+
|
|
39
|
+
#### CLI
|
|
40
|
+
- `fill` 命令新增 `--enrich` 标志
|
|
41
|
+
- `fill` 命令新增 `--no-ai` 标志,跳过 AI 建议和模板生成
|
|
42
|
+
- `ai-suggest` 命令新增 `--verify/--no-verify`、`--timeout` 参数
|
|
43
|
+
- `fill` 命令使用 `--config` 时 `db_path` 改为可选
|
|
44
|
+
|
|
45
|
+
#### 测试与示例
|
|
46
|
+
- 新增 `test_cli_yaml_priority.py`,覆盖 CLI YAML 优先级场景
|
|
47
|
+
- 新增 `examples/ai_generation_demo.py` 使用示例
|
|
48
|
+
|
|
49
|
+
### 变更
|
|
50
|
+
|
|
51
|
+
- `ExpressionEngine` 正则表达式模式简化
|
|
52
|
+
- 代码结构和类型注解优化,移除不必要的延迟导入
|
|
53
|
+
- CI 工作流扩展:ruff 检查覆盖 `plugins/` 目录,添加并发控制
|
|
54
|
+
- 更新依赖版本限制
|
|
55
|
+
- 全面重写项目文档:CLAUDE.md、README.md、GEMINI.md、AGENTS.md、architecture.md
|
|
56
|
+
- 重写 `plugins/sqlseed-ai/README.md` 和 `plugins/mcp-server-sqlseed/README.md`
|
|
57
|
+
|
|
58
|
+
### 修复
|
|
59
|
+
|
|
60
|
+
- ruff lint 清理,允许中文全角字符(`:`、`(`、`)`)
|
|
61
|
+
- 移除 `sqlite3.OperationalError` 不必要的捕获
|
|
62
|
+
- `ProviderRegistry.register_from_entry_points()` 修正非 provider 入口点的区分逻辑
|
|
63
|
+
|
|
64
|
+
### 移除
|
|
65
|
+
|
|
66
|
+
- 移除 `docs/superpowers/` 目录(过时的设计文档)
|
|
67
|
+
- 移除 `suggest.py` 和 `nl_config.py`,功能由 `SchemaAnalyzer` + `AiConfigRefiner` 替代
|
|
68
|
+
|
|
69
|
+
## [v0.1.12]
|
|
70
|
+
|
|
71
|
+
### 新增
|
|
72
|
+
|
|
73
|
+
#### 核心引擎
|
|
74
|
+
- 核心编排引擎 `DataOrchestrator`,支持流式批量生成
|
|
75
|
+
- `ColumnMapper` 9 级策略链(精确匹配 → 模式匹配 → 类型回退 → 默认)
|
|
76
|
+
- `DatabaseAdapter` Protocol,含 `SQLiteUtilsAdapter` 和 `RawSQLiteAdapter`
|
|
77
|
+
- `PragmaOptimizer` 三级优化(LIGHT / MODERATE / AGGRESSIVE)
|
|
78
|
+
- `DataProvider` Protocol,含 `BaseProvider`、`FakerProvider`、`MimesisProvider`
|
|
79
|
+
- `DataStream` 流式数据生成器,内存高效的批量处理
|
|
80
|
+
- `RelationResolver` 外键依赖拓扑排序
|
|
81
|
+
- 基于 `pluggy` 的插件系统,11 个 Hook 点
|
|
82
|
+
- CLI 命令:`fill`、`preview`、`inspect`、`init`、`replay`、`ai-suggest`
|
|
83
|
+
- Python API:`sqlseed.fill()`、`sqlseed.connect()`、`sqlseed.fill_from_config()`、`sqlseed.preview()`
|
|
84
|
+
- YAML/JSON 配置文件支持
|
|
85
|
+
- 配置快照保存与回放
|
|
86
|
+
- SQL 注入防护(`quote_identifier()` 工具)
|
|
87
|
+
|
|
88
|
+
#### v2.0 — 列 DAG 与表达式引擎
|
|
89
|
+
- `ColumnDAG` 列依赖解析,基于拓扑排序
|
|
90
|
+
- `ExpressionEngine` 基于 `simpleeval` 的安全表达式求值,带基于线程的超时保护
|
|
91
|
+
- `ConstraintSolver` 唯一性约束求解,支持重试和回溯
|
|
92
|
+
- `TransformLoader` 用户 Python 脚本动态加载(`importlib`)
|
|
93
|
+
- `SharedPool` 跨表值共享,维持引用完整性
|
|
94
|
+
- `IndexInfo` 数据类和 `get_index_info()` 加入 `DatabaseAdapter` Protocol
|
|
95
|
+
- `get_sample_rows()` 方法加入 `DatabaseAdapter` Protocol,用于上下文嗅探
|
|
96
|
+
- `sqlseed_ai_analyze_table` Hook(firstresult),AI 驱动的 Schema 分析
|
|
97
|
+
- `sqlseed_shared_pool_loaded` Hook,跨表关联追踪
|
|
98
|
+
|
|
99
|
+
#### AI 插件(sqlseed-ai)
|
|
100
|
+
- `SchemaAnalyzer` LLM 集成(OpenAI 兼容 API)
|
|
101
|
+
- 上下文嗅探:提取列、索引、样本数据、外键供 LLM 分析
|
|
102
|
+
- `AIConfig` 可配置模型、API Key 和 Base URL
|
|
103
|
+
- CLI `ai-suggest` 命令,AI 驱动的 YAML 生成
|
|
104
|
+
|
|
105
|
+
#### MCP 服务器(mcp-server-sqlseed)
|
|
106
|
+
- `sqlseed_inspect_schema` 工具 — 检查数据库 Schema
|
|
107
|
+
- `sqlseed_generate_yaml` 工具 — AI 驱动的 YAML 配置生成
|
|
108
|
+
- `sqlseed_execute_fill` 工具 — 执行数据生成
|
|
109
|
+
- 基于 FastMCP 的服务器
|
|
110
|
+
|
|
111
|
+
### 修复
|
|
112
|
+
- Hook `firstresult` 语义与设计文档对齐
|
|
113
|
+
- `validate_table_name` 增加正则验证
|
|
114
|
+
- 表达式引擎增加超时保护(默认 5 秒)
|
|
115
|
+
- `fill_from_config` 中 transform 属性正确传递
|