egecankomur
d9aff26376
fix: delete stale matches when score drops below threshold or listing type changes
...
matchPropertyToSearches now:
- scores every search (listing type mismatch = 0 score)
- score >= 20: create or update match
- score < 20 AND existing match: delete stale record
Prevents outdated match records after criteria/weight updates.
2026-05-05 20:03:49 +03:00
egecankomur
a40e68254b
feat: weighted match scoring, photo upload, property detail page
...
- scoring.ts: pure scoreMatch + scoreMatchBreakdown with per-criterion weights
- matching.ts: soft scoring (0-100), updates score on re-sync, threshold 20
- search-form-sheet: weight selectors (1-5) per criterion
- customer-search-actions: save/update weight fields
- storage-actions: upload/delete property images to property-images bucket
- storage-utils: getPropertyImagePreviewUrl, parseImageIds helpers
- property-image-uploader: client component with preview grid + delete
- property-form-sheet: integrated image uploader
- properties/[id]: detail page with gallery, specs, matches sidebar
- properties-client: Detay link in dropdown
- matches page: MatchesClient with click-to-breakdown dialog
- sunum page: cover image from first imageIds entry
- matches-client + match-breakdown-dialog: score breakdown per criterion
2026-05-05 19:55:34 +03:00
egecankomur
3d044c5d5b
fix: onboarding createWorkspace — emlak fields (officeName/phone/createdBy), remove old CRM fields
2026-05-05 13:24:10 +03:00
egecankomur
19c1ecef47
fix: workspace settings — emlak fields (officeName/phone/email/address), add createdBy to createRow
2026-05-05 13:15:50 +03:00
egecankomur
115e5cd159
fix: lazy env var check in server.ts — prevent module-level throw during Docker build
2026-05-05 12:11:42 +03:00
egecankomur
4ef0482732
feat: all core modules — properties, customers, searches, matches, presentations, activities, investors + public sunum page
...
- Server actions: property/customer/search/presentation/activity/investor CRUD
- Matching engine: matchPropertyToSearches + syncMatchesForSearch on search save
- UI: form sheets + table clients for all modules
- Public /sunum/[token] page (no auth) with property card grid + expiry check
- All pages force-dynamic for auth guard compatibility
2026-05-05 12:03:48 +03:00
egecankomur
2f17c342ca
feat: emlak CRM iskelet kurulumu
...
- schema.ts tamamen yeniden yazıldı (properties, customers, customer_searches, property_matches, presentations, investors, activities, tenant_settings)
- Sidebar emlak modüllerine güncellendi (İlanlar, Müşteriler, Yatırımcılar, Sunumlar, Aktiviteler)
- Eski CRM lib dosyaları temizlendi (finance, invoice, lead, task, software, vs.)
- Yeni modül dizinleri oluşturuldu (stub pages)
- command-search emlak navigasyonuna güncellendi
- site-header temizlendi
- Typecheck: 0 hata (chart.tsx template hariç)
2026-05-05 11:43:29 +03:00
egecankomur
37679e83e6
init: kovakemlak-crm project scaffold
...
- Next.js 16 + Appwrite multi-tenant emlak CRM
- Database: kovakemlak-db (properties, customers, customer_searches, property_matches, presentations, investors, activities, tenant_settings)
- Same stack as isletmem-kovakcrm (shadcn/ui template base)
- Modules: portföy, müşteri takibi, arama kriterleri, otomatik eşleştirme, sunum linki, yatırımcı portalı
2026-05-05 04:37:04 +03:00