diff --git a/frontend/app/(admin)/admin/doc-control/contracts/page.tsx b/frontend/app/(admin)/admin/doc-control/contracts/page.tsx
index d1557e1f..50be6cc7 100644
--- a/frontend/app/(admin)/admin/doc-control/contracts/page.tsx
+++ b/frontend/app/(admin)/admin/doc-control/contracts/page.tsx
@@ -72,7 +72,12 @@ const useProjectsList = () => {
export default function ContractsPage() {
const [search, setSearch] = useState('');
const { data: contracts, isLoading } = useContracts({ search: search || undefined });
- const { data: projects } = useProjectsList() as { data: _Project[] | undefined };
+ const { data: rawProjects } = useProjectsList();
+ const projectList: _Project[] = Array.isArray(rawProjects)
+ ? (rawProjects as _Project[])
+ : Array.isArray((rawProjects as { data?: unknown })?.data)
+ ? (((rawProjects as { data?: unknown }).data as _Project[]))
+ : [];
const queryClient = useQueryClient();
@@ -295,7 +300,7 @@ export default function ContractsPage() {
- {projects?.map((p) => (
+ {projectList.map((p) => (
// ADR-019: Project exposes UUID as 'publicId'
{p.projectCode} - {p.projectName}
diff --git a/specs/04-Infrastructure-OPS/04-00-docker-compose/Desk-5439/ocr-sidecar/docker-compose.yml b/specs/04-Infrastructure-OPS/04-00-docker-compose/Desk-5439/ocr-sidecar/docker-compose.yml
index 1f6acd48..54cd1b73 100644
--- a/specs/04-Infrastructure-OPS/04-00-docker-compose/Desk-5439/ocr-sidecar/docker-compose.yml
+++ b/specs/04-Infrastructure-OPS/04-00-docker-compose/Desk-5439/ocr-sidecar/docker-compose.yml
@@ -38,8 +38,9 @@ services:
OCR_LANG: "tha+eng" # Tesseract language code (Thai + English)
USE_GPU: "false" # OCR sidecar รันบน CPU, Typhoon OCR ใช้ Ollama แยก
# ─── Typhoon OCR via Ollama (ADR-032) ───────────────────────────────────
- # ชี้ไปที่ Ollama ที่รันบน Desk-5439 ผ่าน LAN IP (ไม่ใช่ host.docker.internal)
- OLLAMA_API_URL: "http://192.168.10.100:11434"
+ # ชี้ผ่าน ollama-metrics proxy (port 9924) แทน Ollama โดยตรง (port 11434)
+ # เพื่อให้ NorskHelsenett sidecar collect metrics ได้
+ OLLAMA_API_URL: "http://ollama-metrics:9924"
TYPHOON_OCR_MODEL: "scb10x/typhoon-ocr1.5-3b"
# Timeout 120 วินาที/หน้า (budget สำหรับ 3B model บน RTX 2060 Super)
TYPHOON_OCR_TIMEOUT: "120"