Add Django site, Docker packaging, and beta/prod Gitea deploys.
Deploy Beta / unit-tests (push) Successful in 9s
Deploy Beta / docker (push) Successful in 17s
Deploy Beta / deploy-beta (push) Successful in 2m31s

Unignore site/ (was blocked by mkdocs /site rule), add compose/Docker/uv tooling, and split deploys so push to main goes to beta while prod stays manual.
This commit is contained in:
2026-08-08 07:32:55 -05:00
parent 7dca98bbf6
commit 1f7d78de64
204 changed files with 21662 additions and 70 deletions
+63
View File
@@ -0,0 +1,63 @@
"""Ollama client for drafting social posts."""
from __future__ import annotations
import logging
import requests
from django.conf import settings
logger = logging.getLogger(__name__)
class OllamaError(RuntimeError):
pass
def generate_social_post(
prompt: str,
*,
platform: str = "",
tone: str = "professional, warm, local realtor",
) -> str:
"""
Call the LAN Ollama endpoint (default http://10.0.0.128:11434) to draft copy.
Uses the standard Ollama /api/generate HTTP API.
"""
base = (settings.OLLAMA_BASE_URL or "").rstrip("/")
if not base:
raise OllamaError("OLLAMA_BASE_URL is not configured")
system = (
"You write short social media posts for a residential realtor. "
f"Tone: {tone}. "
"Return only the post text, no preamble."
)
if platform:
system += f" Optimize for {platform}."
full_prompt = f"{system}\n\nUser request:\n{prompt}"
url = f"{base}/api/generate"
payload = {
"model": settings.OLLAMA_MODEL,
"prompt": full_prompt,
"stream": False,
}
try:
response = requests.post(
url,
json=payload,
timeout=settings.OLLAMA_TIMEOUT_SECONDS,
)
response.raise_for_status()
except requests.RequestException as exc:
logger.exception("Ollama request failed")
raise OllamaError(f"Ollama unreachable at {url}: {exc}") from exc
data = response.json()
text = (data.get("response") or "").strip()
if not text:
raise OllamaError("Ollama returned empty response")
return text