Skip to content

feature: add sync service in semantic#32

Merged
lzq986 merged 31 commits into
mainfrom
feature/add_sync_datasource
Jul 19, 2026
Merged

feature: add sync service in semantic#32
lzq986 merged 31 commits into
mainfrom
feature/add_sync_datasource

Conversation

@mengnankkkk

@mengnankkkk mengnankkkk commented Jul 4, 2026

Copy link
Copy Markdown
Member

后端主要修改总结:

包结构调整与导入更新:

DomainService 及其实现类 DomainServiceImpl 被移动到 io.github.malonetalk.service.semantic 包下。
相关的 GetDomainsTool 和 DomainController 中的导入路径也随之更新。

新增控制器和功能模块:

TableRelationWorkspaceController.java:新增了一个REST控制器,用于提供语义表关系工作区的接口,包含一个GET方法来获取工作区数据。
TableSemanticSyncController.java:新增了一个REST控制器,用于处理语义表同步功能,包括:
获取物理表候选列表 (GET /candidates)。
同步语义表 (POST /)。
刷新物理状态 (POST /physical-status)。

新增语义同步和关系工作区相关的DTOs(数据传输对象):

PhysicalTableCandidatePageQuery
PhysicalTableCandidateResponse
RefreshPhysicalStatusRequest
RelationWorkspaceColumnResponse
RelationWorkspacePageQuery
RelationWorkspaceResponse
RelationWorkspaceTableResponse
SyncTableResult
SyncTableSemanticsRequest
SyncTableSemanticsResponse
这些DTOs定义了新功能所需的数据结构。

实体类增强 (ColumnInfo.java, TableInfo.java):

ColumnInfo 实体新增了 physicalColumnDescription、typeName、primaryKey 和 physicalStatus 字段,用于缓存物理列的信息和状态。
TableInfo 实体新增了 physicalTableDescription 和 physicalStatus 字段,用于缓存物理表的信息和状态。
####Mapper层更新:

ColumnSemanticInfoMapper 新增了按多个表名查询列信息的方法,并将原有的 update 方法拆分为 updateSemanticFields 和 updatePhysicalCacheFields,以区分语义数据和物理缓存数据的更新。
LogicalTableRelationMapper 新增了按多个源表名查询逻辑表关系的方法。
TableInfoMapper 也将原有的 update 方法拆分为 updateSemanticFields 和 updatePhysicalCacheFields。

语义服务层增强和新服务引入:

PromptConverter.java:修改了列和表的Prompt映射逻辑,引入 SemanticAvailabilityHelper 和 SemanticUtils.firstNonBlank 来更健壮地处理语义可见性和描述。
SemanticConverter.java:增强了转换为响应对象时的逻辑,包含了物理描述、类型、主键以及可用性/不可用原因等信息,并新增了 toWorkspaceTable 和 toWorkspaceColumn 方法支持工作区功能。
SemanticAvailabilityHelper.java (新文件):引入了一个全新的工具类,集中处理语义表和列的可用性检查逻辑,定义了 UsageLevel (AI_PROMPT, FRONTEND_DISPLAY, USER_OPERATION),并提供了判断可用性、获取物理状态、获取不可用原因等方法。
SemanticMergeService.java:更新了表和列名称的规范化方式(使用 SemanticUtils.objectKey),并利用 SemanticAvailabilityHelper 进行表可见性检查。
ColumnSemanticServiceImpl.java:更新了名称规范化和使用新的 updateSemanticFields 方法,并在新增列时设置 physicalStatus。
LogicalTableRelationHelper.java:更新了表和列名称的规范化逻辑。
RelationSemanticService.java (接口) 和 RelationSemanticServiceImpl.java:
RelationSemanticService 接口新增 getRelationWorkspace 方法。
RelationSemanticServiceImpl 实现了 getRelationWorkspace 方法,用于分页获取表节点和关系,支持关系工作区功能。
引入了 ensureRelationOperandsOperable、ensureTableOperable 和 ensureColumnsOperable 方法,以在创建或更新关系时,基于 SemanticAvailabilityHelper 校验参与关系的表和列是否可操作。
SemanticSyncApplyService.java (新文件):引入了一个重要的全新服务,负责处理语义同步的具体应用逻辑,包括:
ensureTablePresent 和 ensureColumnPresent:确保物理表和列在语义层存在,并处理新增、重新激活和更新逻辑。
markMissingTable 和 markMissingColumns:将语义层中不再有对应物理实体的表和列标记为缺失。
定义了 TableSyncDiff 和 ColumnSyncDiff 记录用于跟踪同步结果。

Comment thread data-agent-frontend/src/views/semantic/components/SyncPhysicalTableDialog.vue Outdated

@lzq986 lzq986 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

已review完

VLSMB and others added 4 commits July 19, 2026 04:24
- Extract UsageLevel inner enum to top-level UsageLevelEnum
- Extract hardcoded Chinese reason strings into TableInvalidReasonEnum
  and ColumnInvalidReasonEnum
- Remove unused isUnavailable methods from SemanticAvailabilityHelper
- Fix mybatis type-aliases-package to match actual entity package path
- Add @pattern validation on sortOrder in PhysicalTableCandidatePageQuery
- Bump mybatis-springboot-starter to 4.0.1
- move physical metadata reads outside write transactions
- replace per-column writes with batch table/column upserts
- batch mark missing physical tables and columns
- push table candidate filtering and paging into SchemaReader
- keep MySQL paging native with metadata fallback for other drivers
- remove ambiguous blank validation helpers
- simplify physical table and column metadata processing
- use batch upsert for table and column synchronization
- remove manual transaction and redundant intermediate structures
- streamline missing table and column status refresh
- add Chinese comments for key synchronization flows
VLSMB
VLSMB previously approved these changes Jul 19, 2026
@lzq986
lzq986 merged commit 7cf8339 into main Jul 19, 2026
3 checks passed
@mengnankkkk

mengnankkkk commented Jul 19, 2026

Copy link
Copy Markdown
Member Author

related: #12

@mengnankkkk
mengnankkkk deleted the feature/add_sync_datasource branch July 19, 2026 12:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants