尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证Emlak 网站。
AI 翻译
Emlak Website
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
Pribor — AI Değerleme & İlan Platformu (Faz 0) Bakü pazarı için gayrimenkul + otomotiv değerleme motoru ve ilan platformunun monorepo'su. Mimari rehber: bkz. proje artifact'i ("Pribor — Mimari & Ürün Rehberi").查看完整 README ↗
Bakü pazarı için gayrimenkul + otomotiv değerleme motoru ve ilan platformunun monorepo'su. Mimari rehber: bkz. proje artifact'i ("Pribor — Mimari & Ürün Rehberi").
pribor/
├── apps/
│ ├── api/ NestJS modüler monolit (Core API) → :3001/v1
│ └── web/ Next.js 15 (App Router) → :3000
├── packages/
│ ├── config/ Paylaşılan tsconfig preset'leri
│ ├── contracts/ Zod tip sözleşmeleri (API ↔ web ↔ mobil ↔ ML)
│ └── db/ Drizzle ORM şeması + migration'lar (PostGIS + Timescale)
├── services/
│ ├── ml/ FastAPI değerleme servisi (Faz 0: stub) → :8100
│ └── scraper/ Python veri toplama + AZ/RU normalizasyon
├── infra/db/init/ Docker ilk açılış SQL'i (uzantılar)
└── docker-compose.yml Postgres(+PostGIS+Timescale) · Redis · Meilisearch · MinIO
# 1. pnpm (Node 20+ ile corepack üzerinden)
corepack enable
corepack prepare [email protected] --activate
# 2. Bağımlılıklar
pnpm install
# 3. Ortam değişkenleri
copy .env.example .env
# 4. Altyapı (Docker Desktop açıkken)
docker compose up -d
# 4-alternatif. Docker YOKSA — taşınabilir Postgres (bu makinede kurulu durumda):
# .pgdev\pgsql altında PostgreSQL 16.4 + PostGIS 3.6 (gitignore'da, admin gerektirmez)
# Başlat: .pgdev\pgsql\bin\pg_ctl.exe -D .pgdev\data -l .pgdev\pg.log start
# Durdur: .pgdev\pgsql\bin\pg_ctl.exe -D .pgdev\data stop
# Not: TimescaleDB bu kurulumda yok → price_snapshots düz tablo olarak çalışır
# (işlevsel olarak aynı; hypertable optimizasyonu Docker/prod'da uygulanır).
# 5. DB şeması
pnpm db:generate # Drizzle şemasından SQL migration üretir
pnpm db:migrate # Migration'ları uygular
# Timescale hypertable (bir kez, migration'lardan SONRA):
docker compose exec -T db psql -U pribor -d pribor -f - < packages/db/sql/timescale.sql
# 6. Geliştirme sunucuları (web :3000 + api :3001)
pnpm dev
# ML stub (:8100)
cd services/ml
python -m venv .venv; .venv\Scripts\activate
pip install -e .
uvicorn pribor_ml.main:app --port 8100 --reload
# Scraper
cd services/scraper
python -m venv .venv; .venv\Scripts\activate
pip install -e .
pribor-scraper sources
pribor-scraper scrape example-site --mode delta
pribor-scraper normalize data/raw/example-site/<tarih>/<run>.jsonl # dosyaya (DB'siz)
pribor-scraper ingest data/raw/example-site/<tarih>/<run>.jsonl # PostgreSQL'e
# full koşularda: --run-type full → görünmeyen kayıtlar delist edilir ("satıldı" sinyali)
# MVP demo verisi: 150 sentetik Bakü ilanı, GERÇEK ingest hattından geçer
pribor-scraper seed --n 150
cd services/ml
.venv\Scripts\activate
python -m pribor_ml.train --synthetic --n 20000 # sentetik veriyle (DB'siz)
python -m pribor_ml.train --no-synthetic # scraped_listings'ten (pip install -e ".[db]")
# Çıktı: artifacts/q10.cbm q50.cbm q90.cbm metadata.json
# FastAPI açılışta artifact'i otomatik yükler; yoksa heuristik stub'a düşer.
Üç süreç ayakta iken (db, api, ml):
curl http://localhost:3001/v1/health
curl -X POST http://localhost:3001/v1/valuations -H "content-type: application/json" -d "{\"input\":{\"vertical\":\"real_estate\",\"propertyType\":\"apartment\",\"district\":\"Nərimanov\",\"areaM2\":65,\"rooms\":2,\"buildingType\":\"yeni_tikili\",\"repairState\":5,\"metroDistM\":450},\"channel\":\"web\"}"
Beklenen: p10/p50/p90 + SHAP benzeri "Qiymət DNT-si" katkıları içeren JSON.
services/scraper/data/raw, prod'da R2). Normalizasyon
ayrı aşamadır; sözlük geliştikçe tarih yeniden işlenir.plans.entitlements JSONB'si sayesinde yeni
paket tanımlamak kod değil veri işidir.@pribor/contracts (Zod). NestJS girdi VE ML
çıktısını aynı şemayla doğrular; web/mobil aynı tipleri import eder.
packages/db/src/schema/enums.ts ile enum'lar el ile senkron tutulur.valuations tablosu funnel, model izleme
ve Qiymət Sertifikatı'nın ham maddesidir; converted_listing_id Truva atı
stratejisinin ölçüm noktasıdır.services/scraper yalnızca kalıp göstermek için kurgusal bir kaynak içerir.
Gerçek bir siteye yöneltmeden önce: kullanım şartları + yerel mevzuat için
hukuk görüşü alın, hız limitlerine ve robots.txt'e uyun, yalnızca kamuya açık
veriyi toplayın. Stratejik hedef, kaynaklarla resmi veri ortaklığıdır.
scraped_listings'te, fiyat geçmişi price_snapshots'tavaluations kalıcı yazımı + model_versions seed'i