From 918e792af63d2c759b2e316565b3b11c0b291890 Mon Sep 17 00:00:00 2001 From: Tymoteusz Czech <2625371+Tymek@users.noreply.github.com> Date: Mon, 11 Aug 2025 11:45:27 +0200 Subject: [PATCH] fix: health to technical debt on projects list (#10485) --- .../component/project/ProjectCard/ProjectCard.tsx | 3 ++- .../ProjectsListTable/ProjectsListTable.tsx | 6 +++--- .../project/project-owners-read-model.test.ts | 1 + src/lib/features/project/project-read-model-type.ts | 1 + src/lib/features/project/project-read-model.ts | 1 + src/lib/features/project/projects.e2e.test.ts | 13 +++++++++++++ 6 files changed, 21 insertions(+), 4 deletions(-) diff --git a/frontend/src/component/project/ProjectCard/ProjectCard.tsx b/frontend/src/component/project/ProjectCard/ProjectCard.tsx index 87dc35e358..d0001b4496 100644 --- a/frontend/src/component/project/ProjectCard/ProjectCard.tsx +++ b/frontend/src/component/project/ProjectCard/ProjectCard.tsx @@ -29,6 +29,7 @@ export const ProjectCard = ({ name, featureCount, health, + technicalDebt, memberCount = 0, id, mode, @@ -71,7 +72,7 @@ export const ProjectCard = ({
- {health}% health + {technicalDebt}% technical debt
diff --git a/frontend/src/component/project/ProjectList/ProjectsListTable/ProjectsListTable.tsx b/frontend/src/component/project/ProjectList/ProjectsListTable/ProjectsListTable.tsx index 2ea02e9a61..db3d89cb56 100644 --- a/frontend/src/component/project/ProjectList/ProjectsListTable/ProjectsListTable.tsx +++ b/frontend/src/component/project/ProjectList/ProjectsListTable/ProjectsListTable.tsx @@ -80,12 +80,12 @@ export const ProjectsListTable = ({ projects }: ProjectsListTableProps) => { width: 90, }, { - Header: 'Health', - accessor: 'health', + Header: 'Technical debt', + accessor: 'technicalDebt', Cell: ({ value }: { value: number }) => ( {value}% ), - width: 70, + width: 130, }, { Header: 'Last seen', diff --git a/src/lib/features/project/project-owners-read-model.test.ts b/src/lib/features/project/project-owners-read-model.test.ts index ef36edb0ab..2b7c4803ed 100644 --- a/src/lib/features/project/project-owners-read-model.test.ts +++ b/src/lib/features/project/project-owners-read-model.test.ts @@ -14,6 +14,7 @@ const mockProjectData = (name: string): ProjectForUi => ({ memberCount: 0, mode: 'open' as const, health: 100, + technicalDebt: 0, createdAt: new Date(), favorite: false, lastReportedFlagUsage: null, diff --git a/src/lib/features/project/project-read-model-type.ts b/src/lib/features/project/project-read-model-type.ts index 827ad80529..6447ee7958 100644 --- a/src/lib/features/project/project-read-model-type.ts +++ b/src/lib/features/project/project-read-model-type.ts @@ -6,6 +6,7 @@ export type ProjectForUi = { name: string; description?: string; health: number; + technicalDebt: number; createdAt: Date; mode: ProjectMode; memberCount: number; diff --git a/src/lib/features/project/project-read-model.ts b/src/lib/features/project/project-read-model.ts index 5195bec593..15f40c2297 100644 --- a/src/lib/features/project/project-read-model.ts +++ b/src/lib/features/project/project-read-model.ts @@ -21,6 +21,7 @@ const mapProjectForUi = (row): ProjectForUi => { id: row.id, description: row.description, health: row.health, + technicalDebt: 100 - (row.health || 0), favorite: row.favorite, featureCount: Number(row.number_of_features) || 0, memberCount: Number(row.number_of_users) || 0, diff --git a/src/lib/features/project/projects.e2e.test.ts b/src/lib/features/project/projects.e2e.test.ts index 8c183a94b2..444ef83ce1 100644 --- a/src/lib/features/project/projects.e2e.test.ts +++ b/src/lib/features/project/projects.e2e.test.ts @@ -91,3 +91,16 @@ test('response for project overview should include feature type counts', async ( ], }); }); + +test('response should include technical debt field', async () => { + const { body } = await app.request + .get('/api/admin/projects') + .expect('Content-Type', /json/) + .expect(200); + + expect(body.projects).toHaveLength(1); + expect(body.projects[0]).toHaveProperty('technicalDebt'); + expect(typeof body.projects[0].technicalDebt).toBe('number'); + expect(body.projects[0].technicalDebt).toBeGreaterThanOrEqual(0); + expect(body.projects[0].technicalDebt).toBeLessThanOrEqual(100); +});