feat: add release communications
This commit is contained in:
@@ -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.
|
||||
Reference in New Issue
Block a user