2.8 KiB
2.8 KiB
Coding-Konventionen
Naming
- Alle internen Funktionen beginnen mit
_Prefix (nicht exportierbar) - camelCase fuer Variablen und Funktionsnamen (kein snake_case)
- PascalCase fuer Klassen und Pydantic-Models
- Dateien:
camelCasefuer Module (z.B.mainServiceAi.py,routeBilling.py)
Frontend (React/TypeScript)
- Keine Browser-Dialoge (
alert,confirm,prompt) -- stattdessenuseConfirm()/usePrompt()Hooks - CSS Modules fuer Styling
- Hooks-Pattern fuer State und API-Zugriffe (
useApiRequest,useBilling, etc.) - Fehler propagieren -- keine stillen Fallbacks bei kritischen Pfaden
Backend (FastAPI/Python)
- Pydantic-Models als einzige Quelle fuer UI-Feld-Definitionen
PowerOnModelals Basis mit System-Audit-Feldern (sysCreatedAt,sysCreatedBy,sysModifiedAt,sysModifiedBy)- Fehler propagieren -- Exceptions explizit werfen, nicht schlucken
- Config ueber
APP_CONFIG(ausmodules/shared/configuration.py)
Projektstruktur Gateway
gateway/
app.py # FastAPI-App, Middleware, Startup
config.ini # Statische Konfiguration
modules/
auth/ # JWT, OAuth, CSRF, Authentication
datamodels/ # Pydantic-Models (zentrale Quelle)
features/ # Feature-Module (workspace, automation, ...)
<name>/
main<Name>.py # FEATURE_CODE, Registrierung
routeFeature<Name>.py # HTTP-Endpunkte
interfaceFeature<Name>.py # DB-Interface
datamodelFeature<Name>.py # Feature-spezifische Models
interfaces/ # DB-Interfaces (CRUD, Queries)
routes/ # Core-Routes (billing, admin, GDPR, ...)
security/ # RBAC-Engine
serviceCenter/
core/ # serviceSecurity, serviceUtils, serviceStreaming
services/ # serviceAi, serviceChat, serviceAgent, ...
registry.py # Service-Registrierung und Dependencies
shared/ # configuration.py, Utilities
system/ # registry.py (Feature-Discovery)
workflows/
methods/ # Unified Action Library
processing/ # WorkflowProcessor, Modes
automation/ # v1 Runtime
automation2/ # v2 Engine
connectors/ # Externe Systeme (DB, SharePoint, Jira, ...)
aicore/ # AI-Provider-Plugins, Model-Selector
Anti-Patterns
- Keine impliziten Type-Conversions in API-Responses
- Keine DB-Queries in Route-Handlern (immer ueber Interfaces)
- Kein direkter
os.environ-Zugriff -- immerAPP_CONFIG - Keine hartkodierten Secrets -- verschluesselt in Env-Dateien