4 Commits

Author SHA1 Message Date
Christian Gick
77e2958563 feat(sql): seed per-tenant glossary from memory rules (CF-3127)
14 terms across 6 tenants:
- clicksports.de: Support→Service, Support-Ticket→Service-Ticket
- vpn-marketing: Hetzner→Cloud-Server in Deutschland, AdGuardHome→curated blocklists (+ EN variants)
- ifk / matrixhost / agiliton / etoro: brand names as DNT

Refs: CF-3127
2026-04-14 17:22:21 +03:00
Christian Gick
e356cd93b5 fix(llm): use text-embedding-3-small with dimensions=1024 to match TM column
LiteLLM doesn't expose mxbai-embed-large; text-embedding-3-small with the
`dimensions` param produces 1024-dim vectors that fit translation_memory.embedding.

Refs: CF-3125
2026-04-14 16:33:57 +03:00
Christian Gick
220d8cfae8 build: use node:20-alpine to match fleet pattern 2026-04-14 16:28:40 +03:00
Christian Gick
8c9e5ee91d feat(translate-mcp): scaffold per-tenant translation MCP (CF-3122)
Node.js MCP server exposing translate/search_tm/upsert_glossary/record_correction
over StreamableHTTP on :9222. Routes translation calls to gemini-2.5-flash via
LiteLLM, augmented with per-tenant TM + glossary + tone profile from the
SmartTranslate pgvector DB.

Schema migration in sql/001_schema.sql already applied to smarttranslate DB.
Fleet registration in Infrastructure/litellm/config.yaml.

Refs: CF-3122 CF-3123 CF-3124 CF-3125
2026-04-14 16:27:44 +03:00