Anlamsal bonus: profil metni sunucuda gomulur (multilingual-e5-small, ONNX q8, @huggingface/transformers — Python/GPU yok), havuzdaki her ihaleyle kosinus alinir, havuz ici z-skor → +0..20 puan. Sozluksel skor ana eksen kalir; bonus eklenir. Sozluksel 0 iken bonus yalniz ≥10'sa gorunur. NEDEN BONUS, ESIK DEGIL (olculdu): e5 kosinusleri 0,79-0,86 bandina sikisiyor (havuz ort 0,814 sd 0,026); kirtasiye ile rontgen arasi 0,06. kaanvp/kobi-ihale-eslestirme'nin 0,65 esigiyle trafo bakimi da "eslesti" sayilirdi. Ama siralama dogru ve sozlukselin kacirdigini yakaliyor: "GENEL TIBBI SARF" profilde birebir terim yokken kirtasiyenin ustune cikiyor. - server/uyum-gomme.mjs: acilista arka planda isitma (~45 sn soguk), ihale gommeleri bellekte (metin imzasi degisince yenilenir), model data/modeller volume'unda bir kez indirilir; paket/yukleme yoksa sessizce kapali - POST /api/uyum/gomme, GET /api/health/uyum - Dockerfile: calisma imajina @huggingface/transformers@3 (package.json'a degil — sunucu sifir-bagimlilik, calisma katmani ayri npm i) - Olculen: 3.2 bin ihale ilk cagri 7,6 sn (tumu gomuluyor), ikinci 17 ms; +20 alan 170, ≥10 alan 610 ihale Firma esigi: profilde uyumEsigi (varsayilan 60, kalici); "Uyumlu" hizli filtresi bu esigi kullanir; profil modalinda kaydirici + bonus durumu. Modaldaki "%98+ dogruluk" cumlesi kaldirildi — olculmemis iddiaydi. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
45 lines
1.5 KiB
Docker
45 lines
1.5 KiB
Docker
# Stage 1: Vite SPA build
|
||
FROM node:22-slim AS build
|
||
WORKDIR /app
|
||
COPY package*.json ./
|
||
RUN npm ci
|
||
COPY . .
|
||
RUN npm run build
|
||
|
||
# Stage 2: nginx (frontend) + node (canlı veri backend) + Playwright/Chromium
|
||
# NOT: Chromium yalnızca doğrudan temin (EKAP anti-bot) ve ihale dokümanı
|
||
# indirme için gerekli. Sunucu darlığında DT_ENABLED=0 ile kapatılabilir;
|
||
# uygulama ve diğer tüm veri kaynakları Chromium olmadan da çalışır.
|
||
FROM node:22-slim
|
||
ENV DEBIAN_FRONTEND=noninteractive
|
||
RUN apt-get update \
|
||
&& apt-get install -y --no-install-recommends nginx ca-certificates \
|
||
&& rm -rf /var/lib/apt/lists/*
|
||
|
||
WORKDIR /app
|
||
|
||
# Playwright + Chromium (yalnızca chromium; sistem bağımlılıklarıyla)
|
||
ENV PLAYWRIGHT_BROWSERS_PATH=/ms-playwright
|
||
RUN npm init -y >/dev/null \
|
||
&& npm i --omit=dev playwright@1.62.1 @huggingface/transformers@3 \
|
||
&& npx playwright install --with-deps chromium \
|
||
&& npm cache clean --force
|
||
|
||
# Frontend
|
||
COPY --from=build /app/dist /usr/share/nginx/html
|
||
COPY --from=build /app/nginx.conf /etc/nginx/sites-available/default
|
||
|
||
# Backend (Node builtin'leri + playwright)
|
||
COPY --from=build /app/server ./server
|
||
|
||
# Kalıcı veri (Coolify'da /app/server/data volume olarak bağlı)
|
||
RUN mkdir -p /app/server/data
|
||
VOLUME ["/app/server/data"]
|
||
|
||
# Başlangıç: Node backend (3001) arka planda + nginx (80) ön planda.
|
||
RUN printf '#!/bin/sh\nset -e\nPORT=3001 node /app/server/index.js &\nexec nginx -g "daemon off;"\n' > /start.sh \
|
||
&& chmod +x /start.sh
|
||
|
||
EXPOSE 80
|
||
CMD ["/start.sh"]
|