Compare commits

..

No commits in common. "d6519f7f73097a21fedad98ce1f014609f2e921a" and "20f30ac17b52d0eee898b9e903d8b8f5614f1256" have entirely different histories.

6 changed files with 4 additions and 76 deletions

View File

@ -5,8 +5,7 @@
"Bash(get-childitem:*)",
"WebFetch(domain:geminicli.com)",
"WebFetch(domain:google-gemini.github.io)",
"Bash(Get-ChildItem \"C:\\\\work\\\\claude-meta\\\\home-claude\")",
"Bash(npx:*)"
"Bash(Get-ChildItem \"C:\\\\work\\\\claude-meta\\\\home-claude\")"
]
}
}

View File

@ -50,36 +50,10 @@
],
"defaultMode": "acceptEdits"
},
"model": "sonnet",
"enabledPlugins": {
"csharp-lsp@claude-plugins-official": true,
"frontend-design@claude-plugins-official": true,
"superpowers@claude-plugins-official": true,
"code-review@claude-plugins-official": true,
"code-simplifier@claude-plugins-official": true,
"playwright@claude-plugins-official": true,
"claude-md-management@claude-plugins-official": true
"csharp-lsp@claude-plugins-official": true
},
"language": "German",
"alwaysThinkingEnabled": true,
"effortLevel": "low",
"mcpServers": {
"playwright": {
"command": "npx",
"args": [
"@playwright/mcp@latest",
"--browser",
"chromium",
"--headed"
]
},
"postgres": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-postgres",
"postgresql://krah:krah_dev_pw@localhost:5432/krah_prodb"
]
}
}
"model": "sonnet"
}

View File

@ -1,31 +0,0 @@
# AIMS Project Memory
## Razor Pages Migration (Branch: feat/razor-pages-migration)
- Dashboard (`/`) and Goals List (`/goals`) migrated to Razor Pages
- Blazor `@page` directives removed from `Dashboard.razor` and `GoalsList.razor`
- NavMenu.razor: `ForceLoad="true"` on Dashboard and Ziele links
- MainLayout.razor: `ToggleDarkMode` now writes `aims-dark-mode` cookie via JS Interop
### Key gotchas
- `<option @(ternary)>` → RZ1031 error; use `asp-items="Model.SelectList"` instead
- `Page` property in PageModel conflicts with `PageModel.Page()` method → use `new` keyword: `public new int Page`
- Static methods in PageModel not accessible from Razor view via bare `IndexModel.Method()` → qualify fully: `AIMS.Web.Pages.Goals.IndexModel.MakeUrl(...)`
- Razor Pages `_Layout.cshtml` lives at `Pages/Shared/`, ViewComponents at `Views/Shared/Components/{Name}/Default.cshtml`
- `MapRazorPages()` must come BEFORE `MapRazorComponents<App>()` in Program.cs to claim routes
### File locations
- Layout: `src/AIMS.Web/Pages/Shared/_Layout.cshtml`
- NavMenu ViewComponent: `src/AIMS.Web/ViewComponents/NavMenuViewComponent.cs`
+ View: `src/AIMS.Web/Views/Shared/Components/NavMenu/Default.cshtml`
- CSS: `src/AIMS.Web/wwwroot/css/material.css`
- JS: `src/AIMS.Web/wwwroot/js/aims-pages.js`
- Dashboard: `src/AIMS.Web/Pages/Dashboard/Index.cshtml[.cs]`
- Goals List: `src/AIMS.Web/Pages/Goals/Index.cshtml[.cs]`
- Goals Tree partial: `src/AIMS.Web/Pages/Goals/_TreeNode.cshtml`
- HTMX endpoint: `src/AIMS.Web/Pages/Goals/Hierarchy.cshtml[.cs]` @ `/goals/hierarchy`
## Key DTOs
- `GoalSummaryDto`: Id, Name, CompanyName, DepartmentName, GoalType, CurrentActualValue, CurrentTargetValue, TargetValue, AchievementPercentage (decimal), Status, TagNames, LatestValuePeriodName, Unit
- `GoalHierarchyNodeDto`: same + Level, ParentGoalId, HasChildren, ChildCount, Children, ValueSource
- `YearDto`: Id, YearNumber (int), Status, IsEditable
- `GoalFilterDto`: CompanyId, DepartmentId, YearId, Status, TagId, SearchTerm, ChildFilterMode, Page, PageSize, IsRootGoal

View File

@ -2,19 +2,11 @@
## Feature-Session Workflow
**TRIGGER** (any phrasing at session start that references a feature/topic):
- `Feature [topic]`
- `zum Feature [topic]`
- `wir arbeiten an [topic]`
- any similar phrasing indicating a feature or topic context
**ACTION — always execute immediately on trigger:**
When user says `Feature [topic]` at session start:
1. Look for `docs/feature-[topic].md` in project root (case-insensitive match)
2. If found: read it, confirm context loaded, summarize key points briefly
3. If not found: inform user that no feature doc exists yet, suggest creating one
**CRITICAL: Do NOT wait to be explicitly asked. Load the feature doc proactively.**
When user says `aktualisiere deine Feature-Beschreibung` at session end:
1. Locate the relevant `docs/feature-[topic].md`
2. Update it with key insights, decisions, and findings from the current session

View File

@ -29,9 +29,6 @@
- `ILongRunningJobService` is for services like AD sync, Hydra — they have dedicated JobType enum entries
## Naming
- App is called **"KRAH-App"** internally (not "KBS" — that's only the technical project name)
## HydraArchiveData
- Entity: HydraArchiveReloadId, AcquisitionTime, PdatrefPparamDatasupId, DecimalValue
- Covering index: (HydraArchiveReloadId, AcquisitionTime, PdatrefPparamDatasupId)

View File

@ -73,9 +73,6 @@ for (var i = 0; i < itResult.RowCount; i++) {
- Inherits `GrpcClientBase<ISapOrderService>`
- Constructor: `(GrpcChannel, ServiceRegistry, IServiceScopeFactory)`
- Methods: `return Client?.MethodName(request);`
- **NOT registered in DI** — resolved via `ServiceRegistry.GetClient<T>()` (async)
- To use in a service: inject `ServiceRegistry`, then `var client = await serviceRegistry.GetClient<SapListServiceClient>()`
- Never inject a `*Client` class directly via constructor DI — it will throw at startup
### Microservice → Server (IApiComposer callback)
- **Interface:** `GrpcProtos/GrpcServices/Contracts/Server/IApiComposer.cs`