feat: upload test record attachments per run case

Allow testers to attach evidence files to a single test case within a
specific test run, proving the test was actually executed. Attachments
are scoped to the RunCase (per-execution), not the shared case definition.

Backend:
- runCaseAttachments join table + model (CASCADE on runCase/attachment)
- POST/GET /runcaseattachments routes (reuse /attachments download+delete)

Frontend:
- new "Test record" tab in the run case detail pane with drag-and-drop
  upload, scoped to reporters; i18n for all 6 locales

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
LittleYellow
2026-06-24 07:01:44 +08:00
parent 55e78875ae
commit 02fa631f02
16 changed files with 569 additions and 7 deletions

View File

@@ -149,6 +149,12 @@ import runCaseEditRoute from './routes/runcases/edit.js';
app.use('/runcases', runCaseIndexRoute(sequelize));
app.use('/runcases', runCaseEditRoute(sequelize));
// "/runcaseattachments"
import runCaseAttachmentsNewRoute from './routes/runcaseattachments/new.js';
import runCaseAttachmentsIndexRoute from './routes/runcaseattachments/index.js';
app.use('/runcaseattachments', runCaseAttachmentsNewRoute(sequelize));
app.use('/runcaseattachments', runCaseAttachmentsIndexRoute(sequelize));
// "/members"
import membersIndexRoute from './routes/members/index.js';
import membersNewRoute from './routes/members/new.js';