SaveSessionV2 salva uma sessão completa com históricos escopados.
(name string, sd *SessionData)
| 127 | |
| 128 | // SaveSessionV2 salva uma sessão completa com históricos escopados. |
| 129 | func (sm *SessionManager) SaveSessionV2(name string, sd *SessionData) error { |
| 130 | // Security (L4): Validate session name |
| 131 | if err := validateSessionName(name); err != nil { |
| 132 | return err |
| 133 | } |
| 134 | |
| 135 | sd.Version = 2 |
| 136 | filePath := sm.getSessionPath(name) |
| 137 | data, err := json.MarshalIndent(sd, "", " ") |
| 138 | if err != nil { |
| 139 | sm.logger.Error("Erro ao serializar a sessão para JSON", zap.String("session", name), zap.Error(err)) |
| 140 | return fmt.Errorf("erro ao serializar a sessão: %w", err) |
| 141 | } |
| 142 | |
| 143 | if err := os.WriteFile(filePath, data, 0o600); err != nil { |
| 144 | sm.logger.Error("Erro ao salvar o arquivo da sessão", zap.String("path", filePath), zap.Error(err)) |
| 145 | return fmt.Errorf("erro ao salvar o arquivo da sessão: %w", err) |
| 146 | } |
| 147 | |
| 148 | sm.logger.Info("Sessão salva com sucesso", zap.String("session", name), zap.String("path", filePath)) |
| 149 | return nil |
| 150 | } |
| 151 | |
| 152 | // LoadSession carrega o histórico de uma conversa de um arquivo JSON. |
| 153 | // Mantém assinatura original para compatibilidade com remote client. |
no test coverage detected