feat(activity-log) : add paginated activity log endpoint and store constructeur names in audit

- New GET /api/activity-logs endpoint with pagination and filters
  (entityType, action) for the global activity log page
- Add findAllPaginated() to AuditLogRepository
- normalizeCollection() now stores {id, name} objects instead of
  bare IDs so constructeur changes display readable names

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Matthieu
2026-02-10 08:54:19 +01:00
parent 508066d39f
commit 6735bf252c
5 changed files with 164 additions and 23 deletions

View File

@@ -293,23 +293,28 @@ final class ComposantAuditSubscriber implements EventSubscriber
/**
* @param iterable<mixed> $items
*
* @return list<string>
* @return list<array{id: string, name: string}|string>
*/
private function normalizeCollection(iterable $items): array
{
$ids = [];
$entries = [];
$seen = [];
foreach ($items as $item) {
if (is_object($item) && method_exists($item, 'getId')) {
$id = $item->getId();
if (null !== $id && '' !== $id) {
$ids[] = (string) $id;
if (null === $id || '' === $id || isset($seen[(string) $id])) {
continue;
}
$seen[(string) $id] = true;
if (method_exists($item, 'getName')) {
$entries[] = ['id' => (string) $id, 'name' => (string) $item->getName()];
} else {
$entries[] = (string) $id;
}
}
}
sort($ids);
return array_values(array_unique($ids));
return $entries;
}
private function normalizeValue(mixed $value): mixed

View File

@@ -293,23 +293,28 @@ final class PieceAuditSubscriber implements EventSubscriber
/**
* @param iterable<mixed> $items
*
* @return list<string>
* @return list<array{id: string, name: string}|string>
*/
private function normalizeCollection(iterable $items): array
{
$ids = [];
$entries = [];
$seen = [];
foreach ($items as $item) {
if (is_object($item) && method_exists($item, 'getId')) {
$id = $item->getId();
if (null !== $id && '' !== $id) {
$ids[] = (string) $id;
if (null === $id || '' === $id || isset($seen[(string) $id])) {
continue;
}
$seen[(string) $id] = true;
if (method_exists($item, 'getName')) {
$entries[] = ['id' => (string) $id, 'name' => (string) $item->getName()];
} else {
$entries[] = (string) $id;
}
}
}
sort($ids);
return array_values(array_unique($ids));
return $entries;
}
private function normalizeValue(mixed $value): mixed

View File

@@ -315,23 +315,28 @@ final class ProductAuditSubscriber implements EventSubscriber
/**
* @param iterable<mixed> $items
*
* @return list<string>
* @return list<array{id: string, name: string}|string>
*/
private function normalizeCollection(iterable $items): array
{
$ids = [];
$entries = [];
$seen = [];
foreach ($items as $item) {
if (is_object($item) && method_exists($item, 'getId')) {
$id = $item->getId();
if (null !== $id && '' !== $id) {
$ids[] = (string) $id;
if (null === $id || '' === $id || isset($seen[(string) $id])) {
continue;
}
$seen[(string) $id] = true;
if (method_exists($item, 'getName')) {
$entries[] = ['id' => (string) $id, 'name' => (string) $item->getName()];
} else {
$entries[] = (string) $id;
}
}
}
sort($ids);
return array_values(array_unique($ids));
return $entries;
}
private function normalizeValue(mixed $value): mixed