feat(agent): add redis short-term user context cache and align tests

This commit is contained in:
qzl
2026-03-06 12:02:10 +08:00
parent fb8f21bcf3
commit c5ccfc4b88
34 changed files with 2073 additions and 263 deletions
-1
View File
@@ -58,7 +58,6 @@ class AgentChatMessage(TimestampMixin, SoftDeleteMixin, Base):
input_tokens: Mapped[int] = mapped_column(Integer, nullable=False, default=0)
output_tokens: Mapped[int] = mapped_column(Integer, nullable=False, default=0)
cost: Mapped[Decimal] = mapped_column(Numeric(12, 6), nullable=False, default=0)
currency: Mapped[str] = mapped_column(String(3), nullable=False, default="USD")
latency_ms: Mapped[int | None] = mapped_column(Integer, nullable=True)
metadata_json: Mapped[dict[str, object] | None] = mapped_column(
"metadata", JSON().with_variant(JSONB, "postgresql"), nullable=True
+3 -2
View File
@@ -5,10 +5,11 @@ from datetime import datetime
from enum import Enum
from sqlalchemy import CheckConstraint, DateTime, ForeignKey, Integer, String
from sqlalchemy.dialects.postgresql import JSONB, UUID
from sqlalchemy.dialects.postgresql import UUID
from sqlalchemy.orm import Mapped, mapped_column
from core.db.base import Base, TimestampMixin
from core.db.types import json_jsonb
class InviteCodeStatus(str, Enum):
@@ -73,7 +74,7 @@ class InviteCode(TimestampMixin, Base):
nullable=True,
)
reward_config: Mapped[dict] = mapped_column(
JSONB,
json_jsonb,
nullable=False,
server_default="{}",
)
+3 -2
View File
@@ -4,10 +4,11 @@ import uuid
from enum import Enum
from sqlalchemy import String
from sqlalchemy.dialects.postgresql import JSONB, UUID
from sqlalchemy.dialects.postgresql import UUID
from sqlalchemy.orm import Mapped, mapped_column
from core.db.base import Base, TimestampMixin
from core.db.types import json_jsonb
class MemoryType(str, Enum):
@@ -47,7 +48,7 @@ class Memory(TimestampMixin, Base):
)
title: Mapped[str | None] = mapped_column(String(255), nullable=True)
content: Mapped[dict] = mapped_column(
JSONB,
json_jsonb,
nullable=False,
)
source: Mapped[MemorySource] = mapped_column(
+3 -2
View File
@@ -3,10 +3,11 @@ from __future__ import annotations
import uuid
from sqlalchemy import ForeignKey, String, Text
from sqlalchemy.dialects.postgresql import JSONB, UUID
from sqlalchemy.dialects.postgresql import UUID
from sqlalchemy.orm import Mapped, mapped_column
from core.db.base import Base, SoftDeleteMixin, TimestampMixin
from core.db.types import json_jsonb
class Profile(TimestampMixin, SoftDeleteMixin, Base):
@@ -38,7 +39,7 @@ class Profile(TimestampMixin, SoftDeleteMixin, Base):
nullable=True,
)
settings: Mapped[dict] = mapped_column(
JSONB,
json_jsonb,
nullable=False,
server_default="{}",
)
+3 -2
View File
@@ -5,10 +5,11 @@ from datetime import datetime
from enum import Enum
from sqlalchemy import DateTime, String, Text
from sqlalchemy.dialects.postgresql import JSONB, UUID
from sqlalchemy.dialects.postgresql import UUID
from sqlalchemy.orm import Mapped, mapped_column
from core.db.base import Base, SoftDeleteMixin, TimestampMixin
from core.db.types import json_jsonb
class ScheduleItemStatus(str, Enum):
@@ -58,7 +59,7 @@ class ScheduleItem(TimestampMixin, SoftDeleteMixin, Base):
)
extra_metadata: Mapped[dict] = mapped_column(
"metadata",
JSONB,
json_jsonb,
nullable=False,
server_default="{}",
)