sqlseed-web 0.2.4__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.
Files changed (162) hide show
  1. sqlseed_web-0.2.4/.gitignore +125 -0
  2. sqlseed_web-0.2.4/AGENTS.md +56 -0
  3. sqlseed_web-0.2.4/LICENSE +679 -0
  4. sqlseed_web-0.2.4/PKG-INFO +105 -0
  5. sqlseed_web-0.2.4/README.md +81 -0
  6. sqlseed_web-0.2.4/pyproject.toml +49 -0
  7. sqlseed_web-0.2.4/src/sqlseed_web/AGENTS.md +106 -0
  8. sqlseed_web-0.2.4/src/sqlseed_web/__init__.py +24 -0
  9. sqlseed_web-0.2.4/src/sqlseed_web/__main__.py +8 -0
  10. sqlseed_web-0.2.4/src/sqlseed_web/_application.py +205 -0
  11. sqlseed_web-0.2.4/src/sqlseed_web/ai_settings.py +290 -0
  12. sqlseed_web-0.2.4/src/sqlseed_web/api.py +1102 -0
  13. sqlseed_web-0.2.4/src/sqlseed_web/app.py +26 -0
  14. sqlseed_web-0.2.4/src/sqlseed_web/managed_worker.py +184 -0
  15. sqlseed_web-0.2.4/src/sqlseed_web/operation_errors.py +42 -0
  16. sqlseed_web-0.2.4/src/sqlseed_web/plugin_environment.py +231 -0
  17. sqlseed_web-0.2.4/src/sqlseed_web/plugin_management.py +322 -0
  18. sqlseed_web-0.2.4/src/sqlseed_web/plugin_process.py +131 -0
  19. sqlseed_web-0.2.4/src/sqlseed_web/runtime_lifecycle.py +130 -0
  20. sqlseed_web-0.2.4/src/sqlseed_web/runtime_session.py +97 -0
  21. sqlseed_web-0.2.4/src/sqlseed_web/settings_environment.py +368 -0
  22. sqlseed_web-0.2.4/src/sqlseed_web/sqlite_target.py +86 -0
  23. sqlseed_web-0.2.4/src/sqlseed_web/state.py +348 -0
  24. sqlseed_web-0.2.4/src/sqlseed_web/static/AGENTS.md +180 -0
  25. sqlseed_web-0.2.4/src/sqlseed_web/static/ai.css +57 -0
  26. sqlseed_web-0.2.4/src/sqlseed_web/static/configs.css +50 -0
  27. sqlseed_web-0.2.4/src/sqlseed_web/static/date-picker.css +230 -0
  28. sqlseed_web-0.2.4/src/sqlseed_web/static/disclosure.css +149 -0
  29. sqlseed_web-0.2.4/src/sqlseed_web/static/graph-clarity.css +103 -0
  30. sqlseed_web-0.2.4/src/sqlseed_web/static/index.html +29 -0
  31. sqlseed_web-0.2.4/src/sqlseed_web/static/js/api.js +228 -0
  32. sqlseed_web-0.2.4/src/sqlseed_web/static/js/app.js +97 -0
  33. sqlseed_web-0.2.4/src/sqlseed_web/static/js/dropdown.js +432 -0
  34. sqlseed_web-0.2.4/src/sqlseed_web/static/js/filepicker.js +203 -0
  35. sqlseed_web-0.2.4/src/sqlseed_web/static/js/genform.js +1066 -0
  36. sqlseed_web-0.2.4/src/sqlseed_web/static/js/labels.js +195 -0
  37. sqlseed_web-0.2.4/src/sqlseed_web/static/js/pages/browse.js +209 -0
  38. sqlseed_web-0.2.4/src/sqlseed_web/static/js/pages/configs.js +424 -0
  39. sqlseed_web-0.2.4/src/sqlseed_web/static/js/pages/connect.js +332 -0
  40. sqlseed_web-0.2.4/src/sqlseed_web/static/js/pages/heal.js +395 -0
  41. sqlseed_web-0.2.4/src/sqlseed_web/static/js/pages/meta.js +110 -0
  42. sqlseed_web-0.2.4/src/sqlseed_web/static/js/pages/runs.js +293 -0
  43. sqlseed_web-0.2.4/src/sqlseed_web/static/js/pages/settings.js +942 -0
  44. sqlseed_web-0.2.4/src/sqlseed_web/static/js/pages/wizard.js +751 -0
  45. sqlseed_web-0.2.4/src/sqlseed_web/static/js/pages/workbench.js +3123 -0
  46. sqlseed_web-0.2.4/src/sqlseed_web/static/js/tree.js +126 -0
  47. sqlseed_web-0.2.4/src/sqlseed_web/static/js/workbench/ai-eligibility.js +33 -0
  48. sqlseed_web-0.2.4/src/sqlseed_web/static/js/workbench/ai-handoff.js +31 -0
  49. sqlseed_web-0.2.4/src/sqlseed_web/static/js/workbench/ai-stream.js +116 -0
  50. sqlseed_web-0.2.4/src/sqlseed_web/static/js/workbench/ai.js +888 -0
  51. sqlseed_web-0.2.4/src/sqlseed_web/static/js/workbench/connection.js +508 -0
  52. sqlseed_web-0.2.4/src/sqlseed_web/static/js/workbench/date-picker.js +445 -0
  53. sqlseed_web-0.2.4/src/sqlseed_web/static/js/workbench/dependency-view.js +119 -0
  54. sqlseed_web-0.2.4/src/sqlseed_web/static/js/workbench/editor.js +1236 -0
  55. sqlseed_web-0.2.4/src/sqlseed_web/static/js/workbench/focus.js +11 -0
  56. sqlseed_web-0.2.4/src/sqlseed_web/static/js/workbench/graph-layout.js +332 -0
  57. sqlseed_web-0.2.4/src/sqlseed_web/static/js/workbench/graph.js +970 -0
  58. sqlseed_web-0.2.4/src/sqlseed_web/static/js/workbench/guidance.js +29 -0
  59. sqlseed_web-0.2.4/src/sqlseed_web/static/js/workbench/model.js +124 -0
  60. sqlseed_web-0.2.4/src/sqlseed_web/static/js/workbench/plugin-management.js +512 -0
  61. sqlseed_web-0.2.4/src/sqlseed_web/static/js/workbench/preview-scroll-layout.js +94 -0
  62. sqlseed_web-0.2.4/src/sqlseed_web/static/js/workbench/preview.js +572 -0
  63. sqlseed_web-0.2.4/src/sqlseed_web/static/js/workbench/provider-guide.js +33 -0
  64. sqlseed_web-0.2.4/src/sqlseed_web/static/js/workbench/recovery.js +28 -0
  65. sqlseed_web-0.2.4/src/sqlseed_web/static/js/workbench/scroll-lock.js +26 -0
  66. sqlseed_web-0.2.4/src/sqlseed_web/static/js/workbench/session.js +174 -0
  67. sqlseed_web-0.2.4/src/sqlseed_web/static/js/workbench/table-data.js +186 -0
  68. sqlseed_web-0.2.4/src/sqlseed_web/static/js/workbench/ui.js +262 -0
  69. sqlseed_web-0.2.4/src/sqlseed_web/static/navigation.css +92 -0
  70. sqlseed_web-0.2.4/src/sqlseed_web/static/preview.css +29 -0
  71. sqlseed_web-0.2.4/src/sqlseed_web/static/runs.css +53 -0
  72. sqlseed_web-0.2.4/src/sqlseed_web/static/scrollbars.css +42 -0
  73. sqlseed_web-0.2.4/src/sqlseed_web/static/settings.css +108 -0
  74. sqlseed_web-0.2.4/src/sqlseed_web/static/style.css +3382 -0
  75. sqlseed_web-0.2.4/src/sqlseed_web/static/table-data.css +27 -0
  76. sqlseed_web-0.2.4/src/sqlseed_web/static/workbench.css +509 -0
  77. sqlseed_web-0.2.4/src/sqlseed_web/supervised_plugins.py +173 -0
  78. sqlseed_web-0.2.4/src/sqlseed_web/supervisor.py +238 -0
  79. sqlseed_web-0.2.4/src/sqlseed_web/workbench.py +381 -0
  80. sqlseed_web-0.2.4/src/sqlseed_web/workbench_ai.py +887 -0
  81. sqlseed_web-0.2.4/src/sqlseed_web/workbench_ai_relations.py +285 -0
  82. sqlseed_web-0.2.4/src/sqlseed_web/workbench_ai_stream.py +172 -0
  83. sqlseed_web-0.2.4/src/sqlseed_web/workbench_data.py +163 -0
  84. sqlseed_web-0.2.4/src/sqlseed_web/workbench_execution.py +199 -0
  85. sqlseed_web-0.2.4/src/sqlseed_web/workbench_runtime.py +1218 -0
  86. sqlseed_web-0.2.4/src/sqlseed_web/workbench_schema.py +277 -0
  87. sqlseed_web-0.2.4/src/sqlseed_web/workbench_store.py +458 -0
  88. sqlseed_web-0.2.4/src/sqlseed_web/worker_control.py +192 -0
  89. sqlseed_web-0.2.4/tests/AGENTS.md +25 -0
  90. sqlseed_web-0.2.4/tests/conftest.py +12 -0
  91. sqlseed_web-0.2.4/tests/frontend_helpers.cjs +192 -0
  92. sqlseed_web-0.2.4/tests/test_ai_eligibility.cjs +48 -0
  93. sqlseed_web-0.2.4/tests/test_api.py +493 -0
  94. sqlseed_web-0.2.4/tests/test_api_ai_secrets.py +45 -0
  95. sqlseed_web-0.2.4/tests/test_api_regressions.py +485 -0
  96. sqlseed_web-0.2.4/tests/test_app_shell.cjs +259 -0
  97. sqlseed_web-0.2.4/tests/test_browse.cjs +93 -0
  98. sqlseed_web-0.2.4/tests/test_component_availability.py +278 -0
  99. sqlseed_web-0.2.4/tests/test_configs.cjs +226 -0
  100. sqlseed_web-0.2.4/tests/test_connection.cjs +207 -0
  101. sqlseed_web-0.2.4/tests/test_date_picker.cjs +179 -0
  102. sqlseed_web-0.2.4/tests/test_disclosure_focus.cjs +93 -0
  103. sqlseed_web-0.2.4/tests/test_dropdown.cjs +234 -0
  104. sqlseed_web-0.2.4/tests/test_genform.cjs +355 -0
  105. sqlseed_web-0.2.4/tests/test_job_completion.py +218 -0
  106. sqlseed_web-0.2.4/tests/test_modal_scroll.cjs +74 -0
  107. sqlseed_web-0.2.4/tests/test_navigation_motion.cjs +113 -0
  108. sqlseed_web-0.2.4/tests/test_plugin_management.cjs +263 -0
  109. sqlseed_web-0.2.4/tests/test_plugin_management.py +470 -0
  110. sqlseed_web-0.2.4/tests/test_plugin_process.py +179 -0
  111. sqlseed_web-0.2.4/tests/test_preview_editing.cjs +283 -0
  112. sqlseed_web-0.2.4/tests/test_preview_scroll_layout.cjs +130 -0
  113. sqlseed_web-0.2.4/tests/test_provider_guide.cjs +31 -0
  114. sqlseed_web-0.2.4/tests/test_rule_usability.cjs +223 -0
  115. sqlseed_web-0.2.4/tests/test_run_recovery.cjs +15 -0
  116. sqlseed_web-0.2.4/tests/test_runs.cjs +348 -0
  117. sqlseed_web-0.2.4/tests/test_runtime_lifecycle.py +257 -0
  118. sqlseed_web-0.2.4/tests/test_runtime_session.py +197 -0
  119. sqlseed_web-0.2.4/tests/test_settings.cjs +716 -0
  120. sqlseed_web-0.2.4/tests/test_supervised_plugins.py +209 -0
  121. sqlseed_web-0.2.4/tests/test_supervisor.py +126 -0
  122. sqlseed_web-0.2.4/tests/test_table_data.cjs +98 -0
  123. sqlseed_web-0.2.4/tests/test_web_request_security.py +99 -0
  124. sqlseed_web-0.2.4/tests/test_web_settings.py +624 -0
  125. sqlseed_web-0.2.4/tests/test_wizard.cjs +422 -0
  126. sqlseed_web-0.2.4/tests/test_workbench_acceptance.py +239 -0
  127. sqlseed_web-0.2.4/tests/test_workbench_ai.cjs +469 -0
  128. sqlseed_web-0.2.4/tests/test_workbench_ai.py +816 -0
  129. sqlseed_web-0.2.4/tests/test_workbench_ai_handoff.cjs +90 -0
  130. sqlseed_web-0.2.4/tests/test_workbench_ai_integration.cjs +240 -0
  131. sqlseed_web-0.2.4/tests/test_workbench_ai_progress.cjs +114 -0
  132. sqlseed_web-0.2.4/tests/test_workbench_ai_relations.py +444 -0
  133. sqlseed_web-0.2.4/tests/test_workbench_ai_stream.cjs +63 -0
  134. sqlseed_web-0.2.4/tests/test_workbench_async_boundaries.cjs +72 -0
  135. sqlseed_web-0.2.4/tests/test_workbench_busy.cjs +257 -0
  136. sqlseed_web-0.2.4/tests/test_workbench_concurrency.py +389 -0
  137. sqlseed_web-0.2.4/tests/test_workbench_configs.py +276 -0
  138. sqlseed_web-0.2.4/tests/test_workbench_context.cjs +189 -0
  139. sqlseed_web-0.2.4/tests/test_workbench_data.cjs +24 -0
  140. sqlseed_web-0.2.4/tests/test_workbench_data.py +319 -0
  141. sqlseed_web-0.2.4/tests/test_workbench_documents.cjs +329 -0
  142. sqlseed_web-0.2.4/tests/test_workbench_editor.cjs +440 -0
  143. sqlseed_web-0.2.4/tests/test_workbench_execution.cjs +61 -0
  144. sqlseed_web-0.2.4/tests/test_workbench_execution.py +475 -0
  145. sqlseed_web-0.2.4/tests/test_workbench_graph.cjs +541 -0
  146. sqlseed_web-0.2.4/tests/test_workbench_guidance.cjs +100 -0
  147. sqlseed_web-0.2.4/tests/test_workbench_model.cjs +132 -0
  148. sqlseed_web-0.2.4/tests/test_workbench_page.cjs +298 -0
  149. sqlseed_web-0.2.4/tests/test_workbench_preview.cjs +448 -0
  150. sqlseed_web-0.2.4/tests/test_workbench_providers.cjs +123 -0
  151. sqlseed_web-0.2.4/tests/test_workbench_review.cjs +110 -0
  152. sqlseed_web-0.2.4/tests/test_workbench_runtime.py +554 -0
  153. sqlseed_web-0.2.4/tests/test_workbench_sample_budget.py +104 -0
  154. sqlseed_web-0.2.4/tests/test_workbench_schema.py +334 -0
  155. sqlseed_web-0.2.4/tests/test_workbench_session.cjs +398 -0
  156. sqlseed_web-0.2.4/tests/test_workbench_store.py +330 -0
  157. sqlseed_web-0.2.4/tests/test_workbench_target_identity.py +346 -0
  158. sqlseed_web-0.2.4/tests/test_workbench_usability.cjs +115 -0
  159. sqlseed_web-0.2.4/tests/test_workbench_v8.cjs +152 -0
  160. sqlseed_web-0.2.4/tests/test_worker_control.py +93 -0
  161. sqlseed_web-0.2.4/tests/workbench_harness.cjs +176 -0
  162. sqlseed_web-0.2.4/tests/workbench_test_helpers.py +55 -0
@@ -0,0 +1,125 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+ *.so
6
+ .Python
7
+ build/
8
+ develop-eggs/
9
+ dist/
10
+ downloads/
11
+ eggs/
12
+ .eggs/
13
+ lib/
14
+ lib64/
15
+ parts/
16
+ sdist/
17
+ var/
18
+ wheels/
19
+ *.egg-info/
20
+ .installed.cfg
21
+ *.egg
22
+ *.whl
23
+ *.tar.gz
24
+
25
+ # Virtual Environment
26
+ .venv/
27
+ venv/
28
+ env/
29
+ ENV/
30
+
31
+ # IDE
32
+ .vscode/
33
+ .idea/
34
+ .trae/
35
+ .claude/
36
+ .gemini/
37
+ .sonarlint/
38
+ *.swp
39
+ *.swo
40
+ *~
41
+
42
+ # Testing & Quality
43
+ .pytest_cache/
44
+ .benchmarks/
45
+ .coverage
46
+ coverage.xml
47
+ htmlcov/
48
+ .mutmut-cache
49
+ mutmut_*.log
50
+ mutmut_results_*.txt
51
+ .mypy_cache/
52
+ .dmypy.json
53
+ dmypy.json
54
+ .ruff_cache/
55
+ .hypothesis/
56
+ .import_linter_cache/
57
+
58
+ # sqlseed
59
+ *.db
60
+ *.sqlite
61
+ *.sqlite3
62
+ .sqlseed_cache/
63
+ snapshots/
64
+ .env
65
+ # validation harness scratch artifacts
66
+ scripts/complex_validation/dbs/_*.yaml
67
+ examples/notebooks/_*.yaml
68
+ examples/notebooks/_*.json
69
+ examples/notebooks/batch_config.yaml
70
+ *.nbconvert.ipynb
71
+ .ipynb_checkpoints/
72
+
73
+ # AI-generated config outputs
74
+ *_config.yaml
75
+ ai_analyze_out.yaml
76
+ ai_suggest_out/
77
+ out.yaml
78
+ full_config_v2.yaml
79
+ products_order_items.yaml
80
+ test_merchants.yaml
81
+
82
+ # OS
83
+ .DS_Store
84
+
85
+ # AI agent work directories
86
+ .agents/
87
+
88
+ # Other
89
+ .worktrees/
90
+ .sisyphus/
91
+
92
+ # IDE knowledge graph cache (local only)
93
+ .understand-anything/
94
+
95
+ # AI batch edit scripts (one-shot, not for repo)
96
+ .edits/
97
+ _edit_helper.py
98
+
99
+ # Local agent tool cache (not for repo)
100
+ .omo/
101
+
102
+ # Node.js (for ctxlint)
103
+ node_modules/
104
+
105
+ # mkdocs build output (deployed via GitHub Actions, not committed)
106
+ site/
107
+
108
+ # CodeFlow warning/issue reports (local analysis artifacts, not for repo)
109
+ codeflow-warnings*.md
110
+ codeflow_issues_report.md
111
+
112
+ # Temporary tool outputs (not for repo)
113
+ test.log
114
+ .understand-anything/
115
+ .playwright-mcp/
116
+
117
+ # LLM validation loop engineering (temporary, not committed)
118
+ scripts/_*.py
119
+ data_quality_demo/*.db
120
+ data_quality_demo/*.log
121
+ data_quality_demo/*_config.yaml
122
+ data_quality_demo/*_config_v*.yaml
123
+ data_quality_demo/_*.json
124
+ data_quality_demo/_report_*.md
125
+ data_quality_demo/_phase1_catalog.md
@@ -0,0 +1,56 @@
1
+ # sqlseed-web 包边界
2
+
3
+ 本包是本机 Web 工作台:FastAPI 包装 core 与可选 AI 能力,直接提供静态 ES modules。
4
+ 产品 shell 与 presentation 已按确认的 v8 完成整体重建,主导航为工作台、运行记录、配置管理和设置,连接使用同主题弹窗。[可用性与 AI 辅助计划](../../docs/superpowers/plans/2026-09-07-workbench-usability-ai.md) 是后续细化与当前实施状态的依据;[v8 重建契约](../../docs/superpowers/plans/2026-09-07-web-v8-rebuild.md) 保留样式基线及历史核验事实。本轮浏览器、真实 LLM 与 PostgreSQL 验收应分别记录,不能以历史测试推定完成。
5
+
6
+ 规范顺序:2026-09-07 标准化实施计划与功能层级方案 → 当前可用性与 AI 辅助计划 → v8 重建契约 → v8 原型 README/HTML → 重设计提案中未被后续评审覆盖的业务规则。后续细化保留 v8 单一主题;用户在标准化评审中批准配置管理作为第三项导航。旧连接、向导、浏览、配置助手、系统信息页面为保护未提交改动物理保留,不能由正式 router 加载,也不作为新 UI 基线。旧 HTTP API 的兼容与后端约束不要求保留旧导航或样式。
7
+
8
+ ## 入口与局部指南
9
+
10
+ | 范围 | 入口与规则 |
11
+ | --- | --- |
12
+ | HTTP API、连接与后台任务 | [src/sqlseed_web/AGENTS.md](src/sqlseed_web/AGENTS.md) |
13
+ | 页面、属性面板与样式 | [static/AGENTS.md](src/sqlseed_web/static/AGENTS.md) |
14
+ | 包配置与 console script | [pyproject.toml](pyproject.toml) |
15
+ | API 与前端回归 | [tests/AGENTS.md](tests/AGENTS.md) |
16
+
17
+ ## 包与运行约定
18
+
19
+ - 本包是 standalone app,不注册到 `project.entry-points."sqlseed"`。
20
+ - 必需依赖为 `sqlseed>=0.2.4.dev0,<0.3`、FastAPI、Uvicorn、PyYAML、packaging;Core 0.2.3 缺少工作台所需 runtime 接口,不能放宽此下界。`[ai]` extra 安装 `sqlseed-ai`,`[dev]` 提供 pytest/httpx。
21
+ - 没有 npm/Vite/bundler 或前端构建步骤;静态资源随 Python wheel 一起提供。
22
+ - 全部运行页面、连接空状态与弹窗共享 v8 主题;provider/locale 属于生成配置,不属于连接表单的产品设置。
23
+ - 保持未安装 AI 时基础连接、schema、配置、预览和填充仍可用;工作台新增可选 AI 辅助分析面板,建议先审阅后应用,不能恢复旧 heal 导航或在写入时自动调用 AI。AI 导入与缺失依赖响应见后端指南。
24
+ - `sqlseed-web` 与 `python -m sqlseed_web` 默认启动稳定 supervisor 与可替换 worker,监听 `127.0.0.1:8630`;直接托管 `app:create_app` 仍可使用业务,但不具备自动组件管理。
25
+ - 正式工作台、可选 AI 辅助与使用边界见 [Web 工作台指南](../../docs/web-workbench.md)。草稿和运行存入用户应用数据目录的 `sqlseed/workspace.sqlite3`,可用 `SQLSEED_WEB_WORKSPACE_PATH` 覆盖;连接凭据不随配置持久化。
26
+
27
+ ## 测试与验证
28
+
29
+ 从仓库根执行:
30
+
31
+ ```bash
32
+ python -m pip install -e "." -e "./plugins/sqlseed-web[dev]"
33
+ pytest plugins/sqlseed-web/tests/ -q
34
+ node --test plugins/sqlseed-web/tests/test_*.cjs
35
+ ruff check plugins/sqlseed-web/
36
+ mypy plugins/sqlseed-web/src/
37
+ ```
38
+
39
+ - 根 pytest `testpaths` 包含 web,CI setup-env 安装本包;Node 内置测试运行器在 CI lint job 中运行,无 npm 依赖。
40
+ - 使用 FastAPI `TestClient` 和临时真实 SQLite;`client` fixture 会关闭残留连接,因为 module-level `state` 跨 app factory/TestClient 存活。
41
+ - AI 专项测试使用 `pytest.importorskip("sqlseed_ai")`;连通性测试只替换 HTTP 边界,不替换数据库层。
42
+ - generator/hook 元数据从 core 动态读取;修改对应接口时检查 `TestMeta`,不要把历史数量硬编码为新事实。
43
+ - 前端回归加载真实 JS 模块,DOM/network 边界由测试 helper 提供;页面变更还需在浏览器验证涉及的控件、导航和配置往返。
44
+
45
+ ## 2026-09-09 应用设置评审
46
+
47
+ - 用户已批准第四项主导航“设置”,由新 `pages/settings.js` 提供 AI 服务、插件与版本;不恢复旧 meta/heal 页面。普通设置由 Web 的 `ai_settings.py` 持久化,密钥保持环境变量或进程内存且按服务绑定。新环境接口由 `settings_environment.py` 只读汇总当前 Python 环境。
48
+ - 工作台 AI 助手仅展示服务/模型摘要与设置入口;范围、业务说明、分析和审阅继续留在助手。`ai-handoff.js` 只在内存保存明确往返的上下文,身份/epoch/schema/生命周期失效时拒绝恢复。设置检测草稿不保存,不以模型列表成功声称推理成功;保存/检测防重复,迟到响应不覆盖新页面。
49
+ - AI 普通设置字段为 backend/model/base_url;`SQLSEED_WEB_SETTINGS_PATH` 可覆盖。UI key 不入磁盘,不随跨 endpoint 切换继承,清除只在当前进程有效。配置表单不把同一进程中的设置称为浏览器私有。
50
+ - `preview.js` 重新预览保留上次 DOM、选中表和滚动;状态标明旧结果,失败保留旧结果。`preview.css` 只提供首载占位和状态高度。使用当前行为回归与实际浏览器尺寸核验,不能把历史测试数当成本轮验收。
51
+
52
+ ## 2026-09-10 预览编辑与当前数据
53
+
54
+ - 预览表头使用真实列元数据;就地编辑复用字段规则抽屉与同一 AI 助手,显式绑定 shownTable/column。取消保持配置,应用标记旧样例失效。批量标签按 result.order 且保留错误表。预览→AI→设置显式返回通过内存 handoff 携带预览上下文,沿用身份/epoch/schema/lifecycle 守卫,不持久化样例。
55
+ - `workbench/table-data.js` 是工作台与运行记录共享的只读分页面板。运行结果只承诺“数据库当前数据”,不伪称本次新增快照;运行入口按目标匹配连接,后端再次验证。关闭、切运行或离页后丢弃迟到响应。
56
+ - 安装指引来自后端针对服务解释器生成的 pip/uv 命令,缺工具明确说明;引擎设置跳转插件页复用指引,不另拼 pip 命令。Faker 仍为 Core 必需依赖,UI 标签为“随 sqlseed 安装”。