feat: add release communications
All checks were successful
deploy-socialize / image (push) Successful in 1m12s
deploy-socialize / deploy (push) Successful in 19s

This commit is contained in:
2026-05-07 21:00:59 -04:00
parent 7a8a0a44bf
commit b6eb348605
61 changed files with 8594 additions and 4 deletions

View File

@@ -0,0 +1,80 @@
# Task: Developer commit reconciliation
## Goal
Add the developer back-office workflow for importing shipped commits and matching them to curated release update entries.
## Feature Spec
- `docs/FEATURES/release-communications.md`
## Scope
- Add release commit persistence and EF Core model configuration.
- Add enum/value support for communication status:
- `Unreviewed`
- `Linked`
- `InternalOnly`
- `Ignored`
- Add developer API endpoints:
- list imported commits
- import commits for a bounded range
- link a commit to a release update
- unlink a commit from a release update
- mark a commit internal-only
- mark a commit ignored
- Add developer-only frontend screens:
- `/app/developer/release-commits`
- linked commits on `/app/developer/updates/:id`
- Support filters for:
- communication status
- linked update
- author
- date range
- text search by subject or SHA
- Show an unreviewed commit count.
- Keep user-facing update views free of commit metadata.
- Keep automatic CI deployment integration out of this task.
## Likely Files
- `backend/src/Socialize.Api/Data/AppDbContext.cs`
- `backend/src/Socialize.Api/Modules/ReleaseCommunications/**`
- `frontend/src/router/router.js`
- `frontend/src/layouts/main/**`
- `frontend/src/features/release-communications/**`
- `frontend/src/locales/en.json`
- `frontend/src/locales/fr.json`
- `backend/tests/Socialize.Tests/**`
## Notes
- Commit import must be idempotent by SHA.
- A commit can be linked to at most one release update in v1.
- A release update can have many linked commits.
- Imported commits default to `Unreviewed`.
- Import must use either a submitted commit payload or configured repository connection settings. Do not discover or read a local `.git` directory from the deployed app filesystem.
- Repository URL and access credentials must come from configuration/secrets.
- Do not generate user-facing update entries automatically from commits.
## Validation
```bash
dotnet build backend/Socialize.slnx
dotnet test backend/Socialize.slnx
cd frontend
npm run build
```
## Done When
- [x] Developers can import commits idempotently.
- [x] Developers can list and filter imported commits.
- [x] Developers can link commits to release updates.
- [x] Developers can unlink commits.
- [x] Developers can mark commits internal-only.
- [x] Developers can mark commits ignored.
- [x] Release update detail shows linked commits to developers.
- [x] Unreviewed commit count is visible to developers.
- [x] Non-developer users cannot access commit reconciliation APIs or UI.
- [x] User-facing update views do not expose commit metadata.