fix: Z35 map Chinese display names to stable physical DB names
Keep Chinese on Binding for UI; Agents use user_{id} or db{hash}; sanitize on attach/heal/publish.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -9,6 +9,7 @@ import (
|
||||
|
||||
"aijianzhan/platform/internal/agentstore"
|
||||
"aijianzhan/platform/internal/dbsync"
|
||||
"aijianzhan/platform/internal/schema"
|
||||
"aijianzhan/platform/internal/svc"
|
||||
)
|
||||
|
||||
@@ -40,6 +41,10 @@ func channelAlive(store *dbsync.FileStore, tenantID int64, channelID string) boo
|
||||
}
|
||||
|
||||
func agentNeedsSyncHeal(store *dbsync.FileStore, a agentstore.Account) bool {
|
||||
// Z35:非法物理库名(如中文昵称)也要纠正,否则发布 EnsureDatabase 400
|
||||
if dn := strings.TrimSpace(a.DatabaseName); dn != "" && !schema.ValidDBName(dn) {
|
||||
return true
|
||||
}
|
||||
cid := strings.TrimSpace(a.ChannelID)
|
||||
alive := channelAlive(store, a.TenantID, cid)
|
||||
if cid != "" {
|
||||
@@ -111,11 +116,12 @@ func HealTenantSyncBind(ctx context.Context, svcCtx *svc.ServiceContext, tenantI
|
||||
if online == "" {
|
||||
online = dbsync.ResolveOnlineDBID("", ch.ID)
|
||||
}
|
||||
dbName := strings.TrimSpace(a.DatabaseName)
|
||||
if dbName == "" {
|
||||
dbName = fmt.Sprintf("agent_%d", a.AgentID)
|
||||
cid := strings.TrimSpace(a.ChannelID)
|
||||
if !channelAlive(svcCtx.DBSync.Store(), tenantID, cid) {
|
||||
cid = ch.ID
|
||||
}
|
||||
if _, e := svcCtx.Agents.AttachSyncBind(ctx, a.AgentID, tenantID, ch.ID, online, dbName, a.Status == agentstore.StatusActive || a.Status == ""); e != nil {
|
||||
dbName := schema.SafeSyncDatabaseName(a.DatabaseName, a.AgentID, 0)
|
||||
if _, e := svcCtx.Agents.AttachSyncBind(ctx, a.AgentID, tenantID, cid, online, dbName, a.Status == agentstore.StatusActive || a.Status == ""); e != nil {
|
||||
log.Printf("dbsync heal agent tenant=%d agent=%d: %v", tenantID, a.AgentID, e)
|
||||
continue
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user