Rename the top-level lib/ directory to core/ so the project root immediately communicates which code is core platform and which lives in modules/. PHP namespaces (MintyPHP\*) are unchanged — only the Composer PSR-4 path mapping moves from lib/ to core/. Module-internal lib/ directories (modules/*/lib/) are untouched. Updated across the full stack: - composer.json PSR-4 mapping - bootstrap entry points (web/index.php, bin/*, tests/bootstrap.php) - tooling configs (phpstan.neon, phpunit.xml, php-cs-fixer) - 26 architecture contract tests - enforcement-policy, guard-catalog, quality-gates - all documentation (CLAUDE.md, README, 25 docs/, .agents/skills/) - bin/qa-extended.sh search paths - .claude/settings.local.json permission paths Workflow: .agents/runs/CORE-LIB-RENAME-001/ (Analyst → Planner → Executor → Code Review (4 findings fixed) → Security Review → Acceptance Test → Finalizer) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2.1 KiB
2.1 KiB
Globale Suche erweitern
Letzte Aktualisierung: 2026-04-01
Ziel
Neue Search-Resource korrekt in Aside-Preview und Vollsuche integrieren.
Architektur
Zwei Endpunkte teilen dieselbe Konfiguration:
- Aside-Preview:
pages/admin/search/data().php - Vollsuche:
pages/search/data().php
Zentrale Fassade:
core/Support/SearchConfig.php- Laufzeit-Orchestrierung:
core/Service/Search/SearchDataService.php - SQL-Ausführung:
core/Repository/Search/SearchQueryRepository.php
Provider:
- SQL-Definitionen:
SearchSqlResourceProvider - UI-Meta (Icons/URLs):
SearchUiMetaProvider - Mapping:
SearchItemMapperProvider - Spezialquellen (
docs,hotkeys):SearchSpecialResourceProvider - Modul-Erweiterungen:
SearchResourceProvidervia Modul-Manifestsearch_resources
Laufzeitpfad
pages/admin/search/data().phpoderpages/search/data().phpSearchDataServicebaut Scope/Permission + Resource-IterationSearchQueryRepositoryführtcountSql/previewSql/resultSqlausSearchConfigmapped auf API/UI-Items
Standardablauf für neue Resource
- Resource in
SearchSqlResourceProvider::resources()ergänzen:key,label,permissioncountSql,previewSql,resultSql
- Bei Tenant-Daten
tenantScopeFilters()ergänzen. - UI ergänzen:
iconForKey()listUrl()
- Mapping ergänzen:
mapPreviewItem()mapResultItem()
- Bei Modul-Resources: Provider-Klasse in
module.phpuntersearch_resourcesregistrieren. - i18n-Labels pruefen.
Wichtige Regeln
- Permission immer serverseitig in der Resource setzen.
- Tenant-Scope nicht nur im UI lösen.
- Preview immer mit
limit ?und ohne sensitive Daten.
Docs-Resource
Die Entwicklerdoku läuft als Spezialresource docs:
- Quelle:
DocsCatalogService::search() - Permission:
docs.view - Ziel:
admin/docs/{slug}#anchor
Check vor Merge
php -l core/Support/SearchConfig.phpphp -l core/Support/Search/*.php- Preview testen (
admin/search/data?q=...) - Vollsuche testen (
/search?search=...) - Permission/Scope mit reduziertem User prüfen