87 lines
3.1 KiB
Markdown
87 lines
3.1 KiB
Markdown
# 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`
|
|
- Add repository-backed import from configured HTTPS repository settings.
|
|
- Add a selected-commit workflow to copy commit SHA/details and create a draft update entry linked to those commits.
|
|
- 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 import currently targets a Gitea-compatible REST API derived from the configured repository URL.
|
|
- 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 fetch commits from the configured repository API.
|
|
- [x] Developers can list and filter imported commits.
|
|
- [x] Developers can select commits and copy SHA/details for external summarization.
|
|
- [x] Developers can create a draft update entry from selected 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.
|