Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
353 commits
Select commit Hold shift + click to select a range
9230e05
feat(table): 实现数据表格查询、编辑及导出功能
Apr 24, 2026
1cd4430
feat(task): 新增数据导出及导出任务管理功能
Apr 25, 2026
6de1a5a
feat(export): 添加数据导出和文档导出接口
Apr 25, 2026
c2dd5e0
feat(task): 新增数据导出任务及多格式导出支持
Apr 25, 2026
50252e2
feat(ErDiagram): 实现ER图服务根据表和外键构建图数据
Apr 25, 2026
e111de3
refactor(erDiagram): 优化ER图查询与构建逻辑
Apr 25, 2026
ccf5f00
feat(domain): 实现表服务核心功能实现类
Apr 25, 2026
83faab5
feat(import): 实现数据导入功能支持CSV和Excel文件
Apr 25, 2026
9e0fb95
feat(import): 新增数据导入接口及客户端调用逻辑
Apr 25, 2026
0a75571
feat(import): 实现CSV和Excel文件的数据导入功能
Apr 25, 2026
99f4b6f
feat(import): 添加多文件格式数据导入功能及相关国际化支持
Apr 25, 2026
d257bc5
feat(import): 实现文件导入功能及前后端支持
Apr 25, 2026
474714e
fix(task): 修改异常捕获为 SQLException
Apr 25, 2026
3495183
fix(task): 优化导入错误信息的国际化处理
Apr 26, 2026
669af3f
feat(import): 实现数据导入功能及相关任务管理支持
Apr 26, 2026
d1ce65f
feat(import): 实现 SQL 文件导入处理策略
Apr 26, 2026
73d42d0
feat(export): 实现多种数据导出策略:CSV、Excel、INSERT SQL
Apr 26, 2026
c08a9b7
fix(menu): 更新导入和导出数据操作的图标
Apr 26, 2026
eb13e8f
feat(doc): 实现数据库模式文档导出功能
Apr 26, 2026
c80e0ae
refactor(task): 取消导出文档时的分页限制
Apr 26, 2026
5971e26
feat(export): 添加数据库结构导出功能模块
Apr 26, 2026
234dd6f
feat(core): 实现Lucene索引管理与表服务功能
Apr 28, 2026
60d6268
feat(rdb): 实现表废弃与恢复功能
Apr 28, 2026
5358ed6
Refactor code structure for improved readability and maintainability
Apr 29, 2026
d5442fd
ER图优化
Apr 30, 2026
1736d25
Refactor code structure for improved readability and maintainability
May 2, 2026
2ab5579
feat(foreignkey): 新增虚拟外键管理与同步功能
May 2, 2026
e5744a6
feat(database): 添加真实和虚拟外键存储表
May 2, 2026
7d6f91a
feat(foreignKey): 添加外键管理功能模块
May 2, 2026
3b17937
feat(foreign-key): 实现外键同步及虚拟外键管理功能
May 2, 2026
f18279e
feat(table-service): 实现表管理核心功能及索引缓存机制
May 2, 2026
2c7702e
feat(sql-builder): 实现默认SQL构建器功能
May 2, 2026
158f33f
feat(core): 实现表服务核心逻辑与元数据缓存管理
May 2, 2026
a179984
feat(rdb): 新增关系型数据库表运维相关接口及前端请求封装
May 3, 2026
783c589
feat(er-diagram): 新增ER图功能及虚拟外键推断与管理
May 3, 2026
2e04b6e
feat(core): 实现ER图服务及虚拟外键推断功能
May 3, 2026
339d0bb
feat(foreign-key): 实现外键同步、虚拟外键管理及ER图支持
May 3, 2026
c364748
feat(foreign-key): 添加虚拟外键支持及ER图推断功能
May 3, 2026
636c5a2
feat(core): 添加数据库执行结果相关模型和前端查询结果组件
May 3, 2026
dd50a79
feat(sql-executor): 添加统一SQL执行和结果封装功能
May 3, 2026
0e9a015
feat(sql-utils): 新增SQL解析及编辑权限判断工具类
May 3, 2026
e38f197
feat(api): 新增关系型数据库DML控制器及虚拟外键建议服务
May 3, 2026
f04934c
feat(er-diagram): 添加同步数据库真实外键到本地的功能
May 3, 2026
05afb32
feat(ERDiagram): 优化ER图组件中的样式和回调函数格式
May 3, 2026
6e612a9
feat(right-click-menu): 在查询控制台中添加表名的DDL语句
May 3, 2026
7532fcc
feat(config): 新增多语言公共文本及系统配置接口
May 5, 2026
3a28a56
feat(config): 支持模型服务编辑与默认模型配置
May 5, 2026
bfa13e2
feat(ai-config): 实现 AI 聊天客户端配置与模型服务管理接口
May 5, 2026
cf1915d
feat(config): 新增AI模型服务管理和默认模型配置功能
May 5, 2026
543f345
删除旧配置文件
May 5, 2026
36c75d6
feat(sql-autocomplete): 新增 JOIN 表名补全功能及相关接口支持
May 5, 2026
f30f51a
feat(sql-autocomplete): 优化 JOIN 表名和别名的获取逻辑
May 5, 2026
d3f6890
feat(api): 添加enable_thinking参数
May 5, 2026
e420ce7
feat(api): 添加enable_thinking参数
May 5, 2026
b37684f
feat(sqlserver): 新增 SQL Server 元数据支持模块
May 6, 2026
432d189
feat(core): 删除无用的类
May 6, 2026
bcc3846
fix(chart-item): 始终设置表单字段值,无论是否处于编辑状态
May 6, 2026
99a8b83
ai配置界面bug修复
May 10, 2026
3d19e63
feat: add row count feature to table metadata
May 11, 2026
e50060f
feat(postgresql): 更新表元数据查询,新增表注释和行数信息
May 11, 2026
6feea79
feat: 添加排序功能,支持按表名和行数排序
May 11, 2026
d728e45
feat: 添加基于注解的Lucene文档构建器,支持自动构建文档字段
May 11, 2026
ad02e13
refactor(search): 优化排序字段处理逻辑并简化调用
May 11, 2026
55bc560
feat: 为ForeignKey、Function、Procedure、TableColumn和Trigger模型添加Lucene字段注…
May 11, 2026
25152d2
fix(cache): 修复Lucene索引路径默认返回错误的问题
May 11, 2026
56eeaeb
fix(cache): name全部添加排序属性
May 11, 2026
ef822ba
feat: 添加只显示关联表功能,更新相关组件和接口
May 11, 2026
e0bafd2
转小驼峰
May 11, 2026
8d9a55b
减少重复拼接
May 11, 2026
6bb527b
refactor(cache): 优化基于注解的Lucene文档构建器性能
May 11, 2026
8d7ffc8
feat(cache): 支持基于STRING类型字段自动构建过滤条件
May 11, 2026
c00df95
fix(tree): 统一函数、过程和触发器名称字段为通用名称
May 12, 2026
151fea6
fix(cache): 修正Lucene索引更新查询逻辑
May 12, 2026
5988039
修改批量更新
May 12, 2026
ff8dda0
refactor(ai-comments): 优化列级AI注释保存逻辑
May 12, 2026
aab9696
refactor(cache): 优化Lucene文档更新方法调用顺序与批量保存逻辑
May 12, 2026
6904a60
fix(cache): 修复Lucene索引更新版本号处理逻辑
May 12, 2026
9d0f6aa
feat(workspace): 支持动态创建和加载SQL内容
May 12, 2026
71edf04
feat(cache): 为函数、存储过程、触发器和视图添加基于Lucene的缓存查询功能
May 12, 2026
0a6c12c
feat(data-generation): 实现数据生成核心功能及规则管理
May 14, 2026
f66dec5
feat(workspace): 将导入/导出/生成数据合并到'数据操作'二级菜单
May 14, 2026
7bc9a3e
refactor(workspace): 移除数据生成弹窗相关代码,改用store管理
May 14, 2026
6d21a72
refactor(dataGeneration): 移除AI推断功能及数据生成规则相关代码,重构前端数据生成弹窗
May 14, 2026
1b5e94a
refactor(core): 使用 Lombok 简化 ColumnConfig 类
May 14, 2026
c69e96c
refactor(core): 使用 Lombok 简化 ColumnConfig 类
May 14, 2026
41ba8ca
refactor(core): 优化数据生成器实现并调整参数结构
May 14, 2026
14ec179
refactor(rdb): 优化数据生成模块接口与请求逻辑
May 14, 2026
d1c5d1d
refactor(api): 重构数据生成规则相关接口和实现
May 14, 2026
d7f27cc
refactor(db): 重构数据生成规则存储结构
May 14, 2026
6134ff6
fix(domain): 处理列数据类型为空情况
May 14, 2026
c717853
fix(mysql): 优化元数据查询及错误处理逻辑
May 14, 2026
e921b5f
refactor(core): 将列数据类型字段由Integer改为String
May 14, 2026
ee98575
fix(generator): 扩展数据类型映射及生成器选择逻辑
May 14, 2026
2d91396
fix(generator): 扩展数据类型映射及生成器选择逻辑
May 15, 2026
03e64bc
fix(generator): 处理导入bug
May 15, 2026
36ff920
fix(generator): 处理导入bug
May 15, 2026
0c398ff
fix(generator): 添加导入进度
May 15, 2026
5e8d439
fix(Tree): 修改生成数据菜单图标代码点
May 15, 2026
9290a81
编辑自增值
May 15, 2026
841bdee
编辑自增值
May 15, 2026
ea97cf5
feat(import): 支持导入时字段映射和文件表头预览功能
May 15, 2026
ca0bf0c
feat(importDataModal): 添加导入数据多步骤向导及字段映射功能
May 15, 2026
4cc4adb
feat(import): 支持多种导入模式及导入模式选择功能
May 15, 2026
87fe76c
feat(import): 支持 SQL 文件跳过映射直接导入
May 15, 2026
749217f
fix(types): 将数据类型字段从 number 修改为 string
May 15, 2026
c654cbd
refactor(sql-autocomplete): 优化表别名生成规则,提高识别准确性
May 16, 2026
edf23d2
refactor(task): 将任务内容字段由byte数组改为字符串类型
May 16, 2026
394b6ac
fix(database): 修改 TASK 表 content 字段为 CLOB 类型
May 16, 2026
c9fea46
fix(dataGeneration): 优化数据生成错误处理和状态更新
May 16, 2026
e701e38
fix(erDiagram): 修复自关联判断问题
May 16, 2026
bd0274a
feat(erDiagram): 优化孤立节点布局与关联边样式展示
May 16, 2026
c90541b
fix(mysql): 修复列类型为空时的类型获取逻辑
May 17, 2026
2a9ab53
fix(mysql): 修复MysqlSqlBuilder旧列名处理逻辑
May 17, 2026
4a467aa
refactor(ERDiagram): 优化节点布局算法提升关系图表现
May 17, 2026
9b04af7
feat(database): 支持创建表时生成外键约束SQL
May 17, 2026
d74c2ff
添加新的提示类型
May 17, 2026
3c90b37
修改流程
May 17, 2026
64bf76e
feat(ai): 新增智能字段映射和数据表达式推荐功能
May 17, 2026
fd40857
refactor(database): 优化列类型处理逻辑以支持 dataType 字段
May 17, 2026
c0d31dc
fix(mysql): 修复构建列SQL时的数据类型获取逻辑
May 17, 2026
9b94f27
refactor(ai): 优化PromptType中简单任务判断逻辑
May 17, 2026
71827c0
feat(ai): 添加SQL错误AI修复功能
May 17, 2026
fdb3d1d
feat(aiChat): 添加SQL执行及发送编辑器功能按钮
May 17, 2026
80ea602
feat(sql-execute): 增加SearchResult注册管理及SQL修正回调支持
May 17, 2026
f2df9c0
fix(foreign-key): 优化虚拟外键创建逻辑及代码格式
May 17, 2026
5c853ae
feat(er-diagram): 优化虚拟外键推断接口及结果展示
May 17, 2026
fc1bff1
feat(data-generation): 优化AI助手猜测功能交互体验
May 17, 2026
5a9b60e
feat(ai-assistant): 添加AI助理加载状态提示
May 17, 2026
5fd6422
feat(table): 新增批量优化和分析表功能
May 17, 2026
35ac026
feat(search-result): 优化错误信息展示,增强用户体验
May 19, 2026
8615327
refactor(rdb): 重构表管理相关接口及废弃旧接口
May 21, 2026
702f115
refactor(core): 将分页结果统一替换为ServicePage,简化结果封装
May 21, 2026
b0e75b2
refactor(api): 优化服务接口返回类型及控制层调用逻辑
May 21, 2026
54807c5
feat(startup): 优化启动配置提升启动速度
May 21, 2026
2d5e715
fix(core): 修复数据源访问权限判断逻辑
May 21, 2026
2f370af
feat(i18n): 添加导出进度相关的中文翻译
May 21, 2026
e84c0f0
feat: 新增结构对比(SchemaDiff)功能并修复代码审查问题
May 22, 2026
8e7faa7
fix(mysql): 修复AUTO_INCREMENT列缺少PRIMARY KEY约束的问题
May 22, 2026
63af0e4
fix: 修复 Chat2DBContext.setConnectInfo 方法名错误
May 22, 2026
c34ee50
feat: add case-sensitive option for schema diff
May 22, 2026
99e8bbe
添加注释
May 22, 2026
6c305c0
添加注释
May 22, 2026
a3bf8b5
删除json注解
May 22, 2026
304274c
修改类型
May 22, 2026
ab887ed
优化导入
May 22, 2026
b8f229b
修正列表页面
May 22, 2026
6c2c010
LuceneField注解优化
May 22, 2026
742cc92
批量优化对比功能
May 23, 2026
45553e5
批量优化对比功能
May 23, 2026
c3233fb
批量优化对比功能
May 23, 2026
7c35a66
获取最新结构
May 23, 2026
76ad9a0
添加换行
May 23, 2026
a370cd6
feat: 数据库节点右键菜单添加删除数据库功能,需二次确认
May 23, 2026
e34a998
解决导出sql没有索引的问题
May 23, 2026
200a1d0
数据库删除
May 23, 2026
7dca00b
修复索引类型为空时NPE问题,补充主键设置条件
May 23, 2026
d375a68
修复数据为空时refresh=true不生效的问题:清除旧Lucene缓存
May 23, 2026
56d4ab7
解决Tree的一些bug
May 24, 2026
5ff5f00
优化获取树数据的逻辑,添加AbortController以处理请求取消
May 26, 2026
e6c3f30
feat: support datasource grouping and manual sorting
May 27, 2026
3163c53
Add AI SQL completion
May 27, 2026
e23dd1c
Refactor shared SSE client utilities
May 27, 2026
806f5c9
压缩上下文
May 28, 2026
ff63181
修正编译错误
May 28, 2026
51a3d82
feat(sql-execute): locate failed statement and return accurate statem…
May 28, 2026
f5bf492
refactor: split SQL execution from import and move DB context menu ac…
May 28, 2026
d70a0a6
refactor: remove deprecated SqlImportStrategy
May 28, 2026
1803bb3
fix(mysql): correct primary key ddl generation and tinyint type forma…
May 28, 2026
1cedbfb
fix(client): correct execute sql file progress display
May 28, 2026
da2990d
fix: refresh root tree after deleting database
May 28, 2026
5b3060b
fix(view-all-table): separate raw/ai comments for batch comment sql
May 29, 2026
71598d6
style(view-all-table): align header action buttons
May 29, 2026
3168580
fix: 修复文档导出索引列数不一致及 PDF 表格样式问题
May 29, 2026
1e9ba1f
feat: add EXPLAIN execution plan analysis for SQL_OPTIMIZER prompt type
May 29, 2026
42ab0ee
fix(import): normalize boolean text for numeric csv columns
May 29, 2026
1cb33a5
fix: isolate view metadata lucene cache
May 29, 2026
395b548
feat: enhance ER diagram interactions
May 29, 2026
eea0fe9
fix: use field handles for virtual foreign keys
May 29, 2026
7b1cc92
feat: replace GitHub icon with task center in sidebar
May 29, 2026
adcedb1
启用lsp
May 29, 2026
4b12619
feat: add task cleanup and dev server skill
May 29, 2026
4bc5fce
修改文档
May 29, 2026
5ad4620
Fix deprecated table tree loading
May 29, 2026
b0d9858
feat: add multi-table data transfer
May 29, 2026
b84bde1
feat: improve SQL dialect autocomplete
May 29, 2026
f9bfe72
feat: add saved SQL import export
May 30, 2026
3259a34
feat: support VIN list paste in SQL editor
May 30, 2026
b9f65e0
fix(client): reduce frontend console noise
May 30, 2026
a1ce104
fix task center table labels
May 30, 2026
d3b12d3
修复警告
May 30, 2026
5d688b5
修正提示词
May 30, 2026
b4e2dc4
Skip virtual FK inference for tables with existing virtual FKs
May 30, 2026
95724f6
feat: handle foreign keys in data generation
May 30, 2026
c6da22e
feat: 添加表关系查看功能 (View Table Relations)
May 31, 2026
3f441e1
feat: 导出数据结构添加外键和表间关系支持
May 31, 2026
c74cf22
fix: 修复表间关系导出过滤逻辑,使用 databaseName 字段匹配
May 31, 2026
ebcad2b
feat: Word和Excel导出添加表间关系支持,补充i18n翻译
May 31, 2026
f1dac73
feat: 添加 Chat2DB 开发服务器管理脚本和技能文档
May 31, 2026
b8dd07b
Optimize SQL optimizer table selection
May 31, 2026
11948b1
fix: restore AI completion shortcut
May 31, 2026
71fe44e
feat: add table relation search
May 31, 2026
a67cda6
feat: add Tencent DLC datasource
May 31, 2026
98fc6f4
Optimize virtual foreign key inference queries
May 31, 2026
f358734
删除多余文件
Jun 1, 2026
e45f1df
feat: support iterative NL to SQL chat
Jun 1, 2026
44993bd
分支错误,修正
Jun 1, 2026
71761d3
fix: skip virtual fk suggestions for empty sql results
Jun 1, 2026
e56faf7
fix: improve schema diff migration SQL
Jun 1, 2026
5f45a87
feat: add foreign key relation view menu
Jun 1, 2026
583b0a1
fix: refine schema diff migration output
Jun 2, 2026
6e94110
fix(sql-execute): preserve selected statement line offset
Jun 2, 2026
670da36
fix: normalize quoted table names for join suggestions
Jun 2, 2026
a62396b
docs: add comments to inferVirtualForeignKeys and queryTablesForInfer…
Jun 2, 2026
eb88e1f
fix: clear tree node loading after refresh errors
Jun 2, 2026
e3c58fa
fix: prevent tree search loading from hanging
Jun 4, 2026
e79597a
feat: enhance virtual foreign key management
Jun 4, 2026
2513c90
fix: adapt dark mode for ER diagram, schema diff, table relations mod…
Jun 4, 2026
a507a13
fix: show correct tab title in inline edit input and prevent duplicat…
Jun 4, 2026
a4b9116
feat: persist AI chat conversations across sessions
Jun 5, 2026
a3a89bd
fix: rebuild Dbutils session in async AI persistence paths
Jun 5, 2026
880e6af
feat(aiChat): 支持绑定数据信息启动新对话
Jun 5, 2026
1ff436e
feat(aiChat): 优化会话复用逻辑并添加新会话回调
Jun 5, 2026
dcebedf
refactor(prompt): 优化上一版 SQL 获取逻辑并重构代码
Jun 5, 2026
e652311
feat: migrate redis to lettuce client
Jun 6, 2026
d02a450
feat(redis): 新增Redis数据浏览及会话栏折叠功能
Jun 6, 2026
168f118
feat(redis): 实现Redis键的流式加载与展示功能
Jun 6, 2026
8e73ca8
feat(redis): 添加RedisKeyInfo类以表示Redis键信息
Jun 6, 2026
e04facb
feat(redis): 支持Redis键的编辑和更新功能
Jun 6, 2026
53748db
feat(redisMonitor): 新增Redis命令监控功能
Jun 6, 2026
726f950
fix(tree): 修复右键菜单触发条件遗漏
Jun 6, 2026
9c39de2
feat(redis-monitor): 添加 Redis 监控视图及相关功能支持
Jun 6, 2026
d0abaac
feat(redis): 支持 Redis key 新增与删除功能
Jun 6, 2026
36ff3ca
docs(redis): annotate full key scan count
Jun 6, 2026
df9300b
fix(redis): 修正搜索键的模式匹配逻辑
Jun 7, 2026
34965f2
feat(redis): 增强 RedisMetaData 类,添加详细注释以说明方法功能
Jun 7, 2026
70456b1
fix(indexedDB): 优化对象存储创建与索引判断逻辑
Jun 7, 2026
d9aa19b
feat(redis): 实现 Redis key 的分页扫描与加载更多功能
Jun 7, 2026
24b2ed0
refactor(redis): 简化 Redis 键扫描批处理接口和前端数据处理逻辑
Jun 7, 2026
36e4d8c
refactor(redis): 使用异步API重构Redis操作逻辑
Jun 7, 2026
4c82d64
feat(redis): 优化Redis命令执行和编辑器补全功能
Jun 7, 2026
2db5186
feat(redis): 添加哈希字段过滤功能
Jun 7, 2026
cd20f75
refactor(redis): 优化Redis键流式扫描并支持多数据源AI提示
Jun 7, 2026
25d3a55
refactor(redis): 优化构建键信息逻辑,统一细节值与预览值处理
Jun 7, 2026
ba193bc
refactor(RedisDataView): 优化表格性能与滚动行为
Jun 7, 2026
bc22fe6
feat(redis): 支持精准键模式的查询优化
Jun 7, 2026
7ea8b7e
feat(table-box): 删除 Redis 类型数据库的总数查询
Jun 8, 2026
d5290c6
fix(redis): 修正预览值读取逻辑及代码格式
Jun 8, 2026
5db05a1
feat(ai): 支持自然语言转换为 Redis 命令
Jun 8, 2026
cb6d08b
Optimize Redis key scan streaming
Jun 8, 2026
03e387b
feat(redis): 支持 Redis hash 键的增量更新
Jun 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
6 changes: 6 additions & 0 deletions .codex/config.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
sandbox_mode = "danger-full-access"
[mcp_servers.context7]
url = "https://mcp.context7.com/mcp"

[sandbox_workspace_write]
network_access = true
63 changes: 63 additions & 0 deletions .codex/skills/chat2db-dev-server/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
---
name: chat2db-dev-server
description: Start, restart, stop, and inspect the local Chat2DB development servers in E:\workspace\Chat2DB. Use when the user asks to 启动/重启/打开/检查 Chat2DB 前端后端, restart backend after Java changes, restart frontend after React changes, verify ports/logs, or fix dev-server startup issues for this workspace.
---

# Chat2DB Dev Server

## Quick Start

Use `scripts/manage-chat2db-dev.ps1` for repeatable server operations.

```powershell
# Start both frontend and backend.
& "E:\workspace\Chat2DB\.codex\skills\chat2db-dev-server\scripts\manage-chat2db-dev.ps1" -Action start

# Restart both. Install backend dependency modules first when Java backend modules changed.
& "E:\workspace\Chat2DB\.codex\skills\chat2db-dev-server\scripts\manage-chat2db-dev.ps1" -Action restart -InstallBackendDeps

# Check listening ports and log tails.
& "E:\workspace\Chat2DB\.codex\skills\chat2db-dev-server\scripts\manage-chat2db-dev.ps1" -Action status
```

This is a project-local skill. Keep it under `E:\workspace\Chat2DB\.codex\skills`, not under the global user skills directory.

## Workspace Defaults

- Workspace: `E:\workspace\Chat2DB`
- Frontend directory: `chat2db-client`
- Backend directory: `chat2db-server`
- Frontend URL: `http://localhost:8000`
- Backend URL: `http://localhost:10821`
- Logs: `E:\workspace\Chat2DB\logs\frontend.log` and `E:\workspace\Chat2DB\logs\backend.log`
- Java: set `$env:JAVA_HOME = "D:\tool\Java\jdk-17"` before Maven commands.
- Frontend package manager: use `D:\nvm4w\nodejs\yarn.cmd`; do not use npm.

## Backend Restart Rule

When backend code changed outside `chat2db-server-start`, run the script with `-InstallBackendDeps` before restart. This installs the modules that `chat2db-server-start` consumes so `spring-boot:run -pl chat2db-server-start` does not load stale local Maven artifacts.

This is required after changes in:

- `chat2db-server-domain-api`
- `chat2db-server-domain-core`
- `chat2db-server-domain-repository`
- `chat2db-server-web-api`

## Verification

After starting or restarting:

1. Confirm ports `8000` and `10821` are listening.
2. Check backend log for `Started Chat2dbLiteApplication` and `[Startup] Chat2dbLiteApplication started successfully`.
3. Check frontend log for `App listening at` and `Local: http://localhost:8000`.
4. If an endpoint was added, verify it without mutating data when possible, for example:

```powershell
Invoke-WebRequest -Uri 'http://localhost:10821/api/task/cleanup' -Method Options -UseBasicParsing
```

## Notes

- Early frontend proxy `ECONNREFUSED` entries can appear while the backend is still starting; treat them as transient if backend later starts and `/api` calls succeed.
- If a requested endpoint returns `NoHandlerFoundException`, install backend dependencies with `-InstallBackendDeps` and restart backend again.
4 changes: 4 additions & 0 deletions .codex/skills/chat2db-dev-server/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
interface:
display_name: "Chat2DB Dev Server"
short_description: "Manage Chat2DB dev servers."
default_prompt: "Start or restart the Chat2DB frontend and backend, verify ports and logs, and report the URLs."
101 changes: 101 additions & 0 deletions .codex/skills/chat2db-dev-server/scripts/manage-chat2db-dev.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
param(
[ValidateSet("start", "restart", "stop", "status")]
[string]$Action = "status",

[ValidateSet("all", "frontend", "backend")]
[string]$Component = "all",

[string]$Workspace = "E:\workspace\Chat2DB",

[string]$JavaHome = "D:\tool\Java\jdk-17",

[string]$YarnCmd = "D:\nvm4w\nodejs\yarn.cmd",

[switch]$InstallBackendDeps
)

$ErrorActionPreference = "Stop"

$logDir = Join-Path $Workspace "logs"
$frontendLog = Join-Path $logDir "frontend.log"
$backendLog = Join-Path $logDir "backend.log"
$frontendPort = 8000
$backendPort = 10821

function Ensure-LogDir {
New-Item -ItemType Directory -Force -Path $logDir | Out-Null
}

function Stop-Port {
param([int]$Port)
Get-NetTCPConnection -LocalPort $Port -State Listen -ErrorAction SilentlyContinue |
ForEach-Object {
Stop-Process -Id $_.OwningProcess -Force -ErrorAction SilentlyContinue
}
}

function Install-BackendDependencies {
$env:JAVA_HOME = $JavaHome
Push-Location (Join-Path $Workspace "chat2db-server")
try {
mvn -pl chat2db-server-web/chat2db-server-web-api,chat2db-server-domain/chat2db-server-domain-core -am -DskipTests install
} finally {
Pop-Location
}
}

function Start-Backend {
Ensure-LogDir
$command = "Set-Location '$Workspace\chat2db-server'; " +
"`$env:JAVA_HOME='$JavaHome'; " +
"mvn spring-boot:run -pl chat2db-server-start *> '$backendLog'"
Start-Process powershell.exe -WindowStyle Hidden -PassThru -ArgumentList @("-NoProfile", "-Command", $command)
}

function Start-Frontend {
Ensure-LogDir
$command = "Set-Location '$Workspace\chat2db-client'; " +
"& '$YarnCmd' run start:web *> '$frontendLog'"
Start-Process powershell.exe -WindowStyle Hidden -PassThru -ArgumentList @("-NoProfile", "-Command", $command)
}

function Show-Status {
$ports = @($frontendPort, $backendPort)
Get-NetTCPConnection -LocalPort $ports -State Listen -ErrorAction SilentlyContinue |
Select-Object LocalAddress, LocalPort, State, OwningProcess

foreach ($log in @($backendLog, $frontendLog)) {
if (Test-Path $log) {
Write-Host ""
Write-Host "== $log =="
Get-Content $log -Tail 20
}
}
}

if ($Action -in @("restart", "stop")) {
if ($Component -in @("all", "frontend")) {
Stop-Port -Port $frontendPort
}
if ($Component -in @("all", "backend")) {
Stop-Port -Port $backendPort
}
Start-Sleep -Seconds 2
}

if ($Action -in @("start", "restart")) {
if (($Component -in @("all", "backend")) -and $InstallBackendDeps) {
Install-BackendDependencies
}
if ($Component -in @("all", "backend")) {
$backend = Start-Backend
Write-Host "backendPid=$($backend.Id)"
}
if ($Component -in @("all", "frontend")) {
$frontend = Start-Frontend
Write-Host "frontendPid=$($frontend.Id)"
}
Start-Sleep -Seconds 12
}

Show-Status
6 changes: 5 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -28,4 +28,8 @@ package-lock.json
/chat2db-server/ali-dbhub-server-domain/ali-dbhub-server-domain-support/src/main/resources/lib/*
/chat2db-server/ali-dbhub-server-domain/ali-dbhub-server-domain-support/lib/*
/lib
/out/*
/out/*
/chat2db-gateway/target
.playwright-mcp
*.png
logs
11 changes: 11 additions & 0 deletions .opencode/opencode.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"$schema": "https://opencode.ai/config.json",
"lsp":true,
"mcp": {
"browsermcp": {
"type": "local",
"command": ["npx","@browsermcp/mcp@latest"],
"enabled": true
}
}
}
51 changes: 51 additions & 0 deletions .opencode/skills/build/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
---
name: build
description: 编译当前项目
license: MIT
compatibility: opencode
---

## Build Backend JAR

编译后端 JAR 包:

```powershell
$env:JAVA_HOME="D:\tool\Java\jdk-17"; cd chat2db-server; mvn clean package -DskipTests
```

生成的 JAR 文件:
- `chat2db-server/chat2db-server-start/target/chat2db-server-start.jar`

运行方式:
```powershell
java -jar chat2db-server/chat2db-server-start/target/chat2db-server-start.jar
```

## Build Backend (Compile Only)

仅编译不打包:

```powershell
$env:JAVA_HOME="D:\tool\Java\jdk-17"; cd chat2db-server; mvn clean compile -DskipTests
```

## Build Frontend

编译前端:

```powershell
cd chat2db-client; yarn install; yarn run build:web
```

开发模式运行前端:
```powershell
cd chat2db-client; yarn install; yarn run start:web
```

```powershell
# Requirements
# - Java 17 (设置 JAVA_HOME 环境变量)
# - Node.js 16+
# - Maven 3.6.1+
# - Yarn 4.x
```
63 changes: 63 additions & 0 deletions .opencode/skills/chat2db-dev-server/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
---
name: chat2db-dev-server
description: Start, restart, stop, and inspect the local Chat2DB development servers in E:\workspace\Chat2DB. Use when the user asks to 启动/重启/打开/检查 Chat2DB 前端后端, restart backend after Java changes, restart frontend after React changes, verify ports/logs, or fix dev-server startup issues for this workspace.
---

# Chat2DB Dev Server

## Quick Start

Use `scripts/manage-chat2db-dev.ps1` for repeatable server operations.

```powershell
# Start both frontend and backend.
& "E:\workspace\Chat2DB\.codex\skills\chat2db-dev-server\scripts\manage-chat2db-dev.ps1" -Action start

# Restart both. Install backend dependency modules first when Java backend modules changed.
& "E:\workspace\Chat2DB\.codex\skills\chat2db-dev-server\scripts\manage-chat2db-dev.ps1" -Action restart -InstallBackendDeps

# Check listening ports and log tails.
& "E:\workspace\Chat2DB\.codex\skills\chat2db-dev-server\scripts\manage-chat2db-dev.ps1" -Action status
```

This is a project-local skill. Keep it under `E:\workspace\Chat2DB\.codex\skills`, not under the global user skills directory.

## Workspace Defaults

- Workspace: `E:\workspace\Chat2DB`
- Frontend directory: `chat2db-client`
- Backend directory: `chat2db-server`
- Frontend URL: `http://localhost:8000`
- Backend URL: `http://localhost:10821`
- Logs: `E:\workspace\Chat2DB\logs\frontend.log` and `E:\workspace\Chat2DB\logs\backend.log`
- Java: set `$env:JAVA_HOME = "D:\tool\Java\jdk-17"` before Maven commands.
- Frontend package manager: use `D:\nvm4w\nodejs\yarn.cmd`; do not use npm.

## Backend Restart Rule

When backend code changed outside `chat2db-server-start`, run the script with `-InstallBackendDeps` before restart. This installs the modules that `chat2db-server-start` consumes so `spring-boot:run -pl chat2db-server-start` does not load stale local Maven artifacts.

This is required after changes in:

- `chat2db-server-domain-api`
- `chat2db-server-domain-core`
- `chat2db-server-domain-repository`
- `chat2db-server-web-api`

## Verification

After starting or restarting:

1. Confirm ports `8000` and `10821` are listening.
2. Check backend log for `Started Chat2dbLiteApplication` and `[Startup] Chat2dbLiteApplication started successfully`.
3. Check frontend log for `App listening at` and `Local: http://localhost:8000`.
4. If an endpoint was added, verify it without mutating data when possible, for example:

```powershell
Invoke-WebRequest -Uri 'http://localhost:10821/api/task/cleanup' -Method Options -UseBasicParsing
```

## Notes

- Early frontend proxy `ECONNREFUSED` entries can appear while the backend is still starting; treat them as transient if backend later starts and `/api` calls succeed.
- If a requested endpoint returns `NoHandlerFoundException`, install backend dependencies with `-InstallBackendDeps` and restart backend again.
4 changes: 4 additions & 0 deletions .opencode/skills/chat2db-dev-server/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
interface:
display_name: "Chat2DB Dev Server"
short_description: "Manage Chat2DB dev servers."
default_prompt: "Start or restart the Chat2DB frontend and backend, verify ports and logs, and report the URLs."
Loading