feat: backend servis iskeletini ve yönetim uçlarını ekle

This commit is contained in:
2026-03-21 11:53:04 +03:00
parent df1924b772
commit 62add37d9d
29 changed files with 953 additions and 0 deletions

View File

@@ -0,0 +1,46 @@
from sqlalchemy import select
from sqlalchemy.orm import Session
from app.db import AuditLogORM, SettingORM, ToolStateORM
from app.llm.planner import build_prompt_context
from app.memory.store import MemoryService
from app.models import RuntimeSettings
from app.telegram.auth import is_authorized
class WiseClawOrchestrator:
def __init__(self, session: Session) -> None:
self.session = session
self.memory = MemoryService(session)
def get_runtime_settings(self) -> RuntimeSettings:
settings = {
item.key: item.value for item in self.session.scalars(select(SettingORM))
}
tools = list(self.session.scalars(select(ToolStateORM).order_by(ToolStateORM.name.asc())))
return RuntimeSettings(
terminal_mode=int(settings["terminal_mode"]),
search_provider=settings["search_provider"],
ollama_base_url=settings["ollama_base_url"],
default_model=settings["default_model"],
tools=[{"name": tool.name, "enabled": tool.enabled} for tool in tools],
)
def handle_text_message(self, telegram_user_id: int, text: str) -> str:
if not is_authorized(self.session, telegram_user_id):
return "This Telegram user is not authorized for WiseClaw."
self.memory.add_item(f"user:{telegram_user_id}:{text}")
context = build_prompt_context(
message=text,
runtime=self.get_runtime_settings(),
memory=self.memory.latest_items(limit=5),
)
response = (
"WiseClaw scaffold received your message.\n\n"
f"Prompt context prepared for model `{context['model']}` with "
f"{len(context['memory'])} memory items."
)
self.session.add(AuditLogORM(category="telegram", message=f"telegram:{telegram_user_id}:{text}"))
self.session.commit()
return response