# Appwrite Schema – Kundenportal (woms-database) **Nur diese Datenbank** – keine separate Portal-Datenbank (`appwrite.webklar.com` / Legacy-IDs wie `6943bf0e0003291f8c35` werden nicht verwendet). Endpoint: `https://ticket.webklar.com/v1` Project ID: `6a1058610003c5a13a05` Database ID: **`woms-database`** (fest im Code) Alle Collections liegen in `woms-database`. **Read/Create/Update/Delete** nur für API-Key-Rolle (Server) und Admin-Team. Kein `Any`-Read auf Kundendaten. --- ## customers (erweitern) Bestehende Felder beibehalten. Zusätzlich: | Attribut | Typ | Required | Index | |----------|-----|----------|-------| | companyName | string (255) | nein | | | portalAccessEnabled | boolean | nein | | | appwriteUserId | string (64) | nein | unique | | customerStatus | string (50) | nein | | | notes | string (5000) | nein | | | createdAt | datetime | nein | | | updatedAt | datetime | nein | | --- ## customerPortalAccess (neu) Collection ID: `customerPortalAccess` | Attribut | Typ | Required | Index | |----------|-----|----------|-------| | customerId | string (64) | ja | | | enabled | boolean | ja | | | passwordSet | boolean | nein | | | appwriteUserId | string (64) | nein | | | lastLoginAt | datetime | nein | | Index: `customerId`, `appwriteUserId` --- ## websiteProjects (neu) Collection ID: `websiteProjects` | Attribut | Typ | Required | Index | |----------|-----|----------|-------| | customerId | string (64) | ja | ja | | ticketId | string (64) | nein | | | projectName | string (255) | ja | | | templateName | string (255) | nein | | | giteaRepoUrl | string (512) | nein | | | giteaRepoName | string (255) | nein | | | repoFullName | string (255) | nein | unique | | subdomain | string (128) | nein | unique | | previewUrl | string (512) | nein | | | liveDomain | string (255) | nein | | | status | string (50) | nein | | | provisioningStatus | string (50) | nein | | | createdAt | datetime | nein | | | updatedAt | datetime | nein | | --- ## portalFeatures (neu) Collection ID: `portalFeatures` | Attribut | Typ | Required | Index | |----------|-----|----------|-------| | customerId | string (64) | ja | ja | | projectId | string (64) | nein | | | featureKey | string (128) | ja | | | enabled | boolean | ja | | | unlockedByPurchase | boolean | nein | | | purchaseStatus | string (50) | nein | | Index: `customerId`, `projectId`