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:
whm
2026-08-07 02:12:55 +08:00
parent 7290f91d3a
commit 4b6c90904b
8 changed files with 146 additions and 32 deletions

View File

@@ -14,6 +14,7 @@ import (
"golang.org/x/crypto/bcrypt"
"aijianzhan/platform/internal/authx"
"aijianzhan/platform/internal/schema"
)
const (
@@ -259,7 +260,7 @@ func (s *MemoryStore) Update(_ context.Context, tenantID, agentID int64, in Upda
a.OnlineDBID = strings.TrimSpace(*in.OnlineDBID)
}
if in.DatabaseName != nil {
a.DatabaseName = strings.TrimSpace(*in.DatabaseName)
a.DatabaseName = schema.SafeSyncDatabaseName(*in.DatabaseName, agentID, 0)
}
cp := cloneAcc(&a.Account)
return &cp, nil
@@ -394,7 +395,8 @@ func (s *MemoryStore) AttachSyncBind(_ context.Context, agentID, tenantID int64,
}
a.ChannelID = strings.TrimSpace(channelID)
a.OnlineDBID = strings.TrimSpace(onlineDBID)
a.DatabaseName = strings.TrimSpace(databaseName)
// Z35禁止中文 DisplayName 等非法串写入物理库名
a.DatabaseName = schema.SafeSyncDatabaseName(databaseName, agentID, 0)
if activate {
a.Status = StatusActive
}
@@ -592,7 +594,7 @@ func (s *PostgresStore) Update(ctx context.Context, tenantID, agentID int64, in
onlineDBID = strings.TrimSpace(*in.OnlineDBID)
}
if in.DatabaseName != nil {
dbName = strings.TrimSpace(*in.DatabaseName)
dbName = schema.SafeSyncDatabaseName(*in.DatabaseName, agentID, 0)
}
if _, err := s.DB.ExecContext(ctx, `
UPDATE platform_meta.agent_accounts SET name=$1, status=$2, role_id=NULLIF($3,0),
@@ -760,7 +762,8 @@ ORDER BY agent_id DESC LIMIT 1`, hostKey,
func (s *PostgresStore) AttachSyncBind(ctx context.Context, agentID, tenantID int64, channelID, onlineDBID, databaseName string, activate bool) (*Account, error) {
statusSQL := ""
args := []any{tenantID, strings.TrimSpace(channelID), strings.TrimSpace(onlineDBID), strings.TrimSpace(databaseName), agentID}
safeDB := schema.SafeSyncDatabaseName(databaseName, agentID, 0)
args := []any{tenantID, strings.TrimSpace(channelID), strings.TrimSpace(onlineDBID), safeDB, agentID}
if activate {
statusSQL = ", status='active'"
}