Improve Team-indeling dashboard UI and cache invalidation

- Replace 'TEAM' label with Type attribute (Business/Enabling/Staf) in team blocks
- Make Type labels larger (text-sm) and brighter colors
- Make SUBTEAM label less bright (indigo-300) and smaller (text-[10px])
- Add 'FTE' suffix to bandbreedte values in header and application blocks
- Add Platform and Connected Device labels to application blocks
- Show Platform FTE and Workloads FTE separately in Platform blocks
- Add spacing between Regiemodel letter and count value
- Add cache invalidation for Team Dashboard when applications are updated
- Enrich team references with Type attribute in getSubteamToTeamMapping
This commit is contained in:
2026-01-10 02:16:55 +01:00
parent ea1c84262c
commit ca21b9538d
54 changed files with 13444 additions and 1789 deletions

View File

@@ -15,12 +15,14 @@ router.get('/', async (req: Request, res: Response) => {
organisations,
hostingTypes,
applicationFunctions,
applicationClusters,
applicationSubteams,
applicationTeams,
applicationTypes,
businessImportance,
businessImpactAnalyses,
applicationManagementHosting,
applicationManagementTAM,
subteamToTeamMapping,
] = await Promise.all([
dataService.getDynamicsFactors(),
dataService.getComplexityFactors(),
@@ -29,12 +31,14 @@ router.get('/', async (req: Request, res: Response) => {
dataService.getOrganisations(),
dataService.getHostingTypes(),
dataService.getApplicationFunctions(),
dataService.getApplicationClusters(),
dataService.getApplicationSubteams(),
dataService.getApplicationTeams(),
dataService.getApplicationTypes(),
dataService.getBusinessImportance(),
dataService.getBusinessImpactAnalyses(),
dataService.getApplicationManagementHosting(),
dataService.getApplicationManagementTAM(),
dataService.getSubteamToTeamMapping(),
]);
res.json({
@@ -45,12 +49,14 @@ router.get('/', async (req: Request, res: Response) => {
organisations,
hostingTypes,
applicationFunctions,
applicationClusters,
applicationSubteams,
applicationTeams,
applicationTypes,
businessImportance,
businessImpactAnalyses,
applicationManagementHosting,
applicationManagementTAM,
subteamToTeamMapping,
});
} catch (error) {
logger.error('Failed to get reference data', error);
@@ -135,14 +141,25 @@ router.get('/application-functions', async (req: Request, res: Response) => {
}
});
// Get application clusters (from Jira Assets)
router.get('/application-clusters', async (req: Request, res: Response) => {
// Get application subteams (from Jira Assets)
router.get('/application-subteams', async (req: Request, res: Response) => {
try {
const clusters = await dataService.getApplicationClusters();
res.json(clusters);
const subteams = await dataService.getApplicationSubteams();
res.json(subteams);
} catch (error) {
logger.error('Failed to get application clusters', error);
res.status(500).json({ error: 'Failed to get application clusters' });
logger.error('Failed to get application subteams', error);
res.status(500).json({ error: 'Failed to get application subteams' });
}
});
// Get application teams (from Jira Assets)
router.get('/application-teams', async (req: Request, res: Response) => {
try {
const teams = await dataService.getApplicationTeams();
res.json(teams);
} catch (error) {
logger.error('Failed to get application teams', error);
res.status(500).json({ error: 'Failed to get application teams' });
}
});