itaispiegel opened a new issue, #9206:
URL: https://github.com/apache/devlake/issues/9206

   ### Search before asking
   
   - [X] I had searched in the 
[issues](https://github.com/apache/devlake/issues?q=is%3Aissue) and found no 
similar feature requirement.
   
   ### Use case
   
   As an engineering manager, I want to define my teams and their members in 
DevLake so that the team dashboards show real numbers.
   
   DevLake ships several dashboards that slice metrics by team:
   
   - DORA (by Team)
   - Engineering Throughput and Cycle Time - Team View
   - GitHub Copilot Adoption by Team / by Team and User
   
   All of them join through `teams`, `team_users` and `user_accounts`.
   
   ### Description
   
   Those three tables can only be populated through the `org` plugin's CSV 
endpoints:
   
   | Endpoint | Columns |
   |---|---|
   | `GET/PUT /plugins/org/teams.csv` | Id, Name, Alias, ParentId, SortingIndex 
|
   | `GET/PUT /plugins/org/users.csv` | Id, Name, Email, TeamIds 
(`;`-separated) |
   | `GET/PUT /plugins/org/user_account_mapping.csv` | every account, with its 
mapped UserId |
   
   config-ui references none of them. There is no page, button or upload 
control anywhere in the UI for team data, so the only way to set it up is to 
hand-craft a multipart upload:
   
   ```bash
   curl -X PUT -F "[email protected]" http://localhost:8080/plugins/org/teams.csv
   ```
   
   The practical effect is that on a fresh install every team dashboard renders 
blank, with no indication in the UI of what is missing or how to supply it. A 
new user who opens "DORA (by Team)" sees empty panels and no path forward. It 
is also easy to mistake the `?fake_data=true` sample rows ("Tyrone K. 
Cummings") for the dashboards being built on placeholder data.
   
   #### Proposed solution
   
   A **Teams** page in config-ui with three tabs, built on the endpoints that 
already exist — no backend change:
   
   - **Teams** — editable table; parent team chosen from a select of the other 
teams rather than typed as a raw id.
   - **Members** — editable table; team membership as a multi-select that 
serialises back to the `;`-delimited `TeamIds` cell.
   - **Account Mapping** — every collected tool account with identity columns 
read-only and a select to map it to a member. Accounts come from data 
collection, so rows are not addable or removable here.
   
   Each tab round-trips a whole CSV file, which matches the endpoints' existing 
delete-all-then-save behaviour; the page should say so, since a save overwrites 
rows added elsewhere since it loaded.
   
   #### Possible follow-up
   
   Per-row REST CRUD on the `org` plugin (POST/PATCH/DELETE for a single team 
or user) would remove the full-file replace and its clobbering window. That is 
a backend change and seems worth keeping separate from the UI work.
   
   ### Related issues
   
   None found.
   
   ### Are you willing to submit a PR?
   
   - [X] Yes I am willing to submit a PR!
   
   ### Code of Conduct
   
   - [X] I agree to follow this project's [Code of 
Conduct](https://www.apache.org/foundation/policies/conduct)


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to