feat: per-disposition feedback waiver

The overdue-feedback lists are a live query without stored state, so a
feedback nobody will provide any more could not be written off. The new
disposition.feedback_waived flag takes a placement out of the admin and
manager dashboards, the house-manager list and the reminder mail.

Statistics still count a waived placement as a missing feedback. The
flag has no UI yet and is set by SQL.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
frommeandClaude Opus 5.5 committed 2026-10-13 13:53:25 +02:00
1 parent c04d9e0faf
commit 7e182e3d51
4 files changed
+74

No files matched your search

@@ -212,6 +212,21 @@ class DispositionRepositoryTest extends KernelTestCase
$this->assertFalse($query->getParameter('skipFormalities')->getValue());
}
/**
* A waived placement is written off by the office. The same query backs every surface that
* chases a feedback, so this is the one place the waiver has to be honoured.
*/
public function testPendingFeedbackSkipsWaivedDispositions(): void
{
$query = $this->repository()->getDispositionsWithPendingFeedbackQuery();
$this->assertStringContainsString(
'disposition.feedbackWaived = :feedbackWaived',
$query->getDQL()
);
$this->assertFalse($query->getParameter('feedbackWaived')->getValue());
}
/**
* Otherwise placements nobody is expected to rate would be counted as missingFeedbacks and
* drag every hotel's percentage down.