Backup #733

ID733
Dateipfad/var/www/dev.campus.systemische-tools.de/src/UseCases/Chat/ChatSessionDTO.php
Version1
Typ modified
Größe2.4 KB
Hash78d60373f0a958e80e92b3b41f5f3ad9775460e1e2ed55758482b153e93c9a45
Datum2025-12-23 07:57:36
Geändert vonclaude-code-hook
GrundClaude Code Pre-Hook Backup vor Edit-Operation
Datei existiert Ja

Dateiinhalt

<?php

namespace UseCases\Chat;

/**
 * ChatSessionDTO - Data Transfer Object for chat sessions
 *
 * Contains session data with messages for view rendering.
 */
final class ChatSessionDTO
{
    /**
     * @param array<string,mixed> $session Session data from database
     * @param array<int,array<string,mixed>> $messages Messages for this session
     */
    public function __construct(
        private array $session,
        private array $messages = [],
    ) {
    }

    public function getId(): int
    {
        return (int) ($this->session['id'] ?? 0);
    }

    public function getUuid(): string
    {
        return $this->session['uuid'] ?? '';
    }

    public function getTitle(): ?string
    {
        return $this->session['title'] ?? null;
    }

    public function getModel(): string
    {
        return $this->session['model'] ?? 'claude-opus-4-5-20251101';
    }

    /**
     * @return array<string>
     */
    public function getCollections(): array
    {
        $collections = $this->session['collections'] ?? '["documents"]';
        $decoded = json_decode($collections, true);

        return is_array($decoded) ? $decoded : ['documents'];
    }

    public function getContextLimit(): int
    {
        return (int) ($this->session['context_limit'] ?? 5);
    }

    public function getAuthorProfileId(): int
    {
        return (int) ($this->session['author_profile_id'] ?? 0);
    }

    public function getSystemPromptId(): int
    {
        return (int) ($this->session['system_prompt_id'] ?? 1);
    }

    public function getTemperature(): float
    {
        return (float) ($this->session['temperature'] ?? 0.7);
    }

    public function getMaxTokens(): int
    {
        return (int) ($this->session['max_tokens'] ?? 4096);
    }

    public function getSystemPrompt(): ?string
    {
        return $this->session['system_prompt'] ?? null;
    }

    /**
     * @return array<int,array<string,mixed>>
     */
    public function getMessages(): array
    {
        return $this->messages;
    }

    public function getMessageCount(): int
    {
        return count($this->messages);
    }

    /**
     * Get raw session array for backwards compatibility
     *
     * @return array<string,mixed>
     */
    public function toArray(): array
    {
        return $this->session;
    }

    /**
     * Check if session exists
     */
    public function exists(): bool
    {
        return $this->getId() > 0;
    }
}

Vollständig herunterladen

Aktionen

Herunterladen

Andere Versionen dieser Datei

ID Version Typ Größe Datum
1476 3 modified 2.6 KB 2025-12-25 17:02
1124 2 modified 2.4 KB 2025-12-25 09:38
733 1 modified 2.4 KB 2025-12-23 07:57

← Zurück zur Übersicht