[Feature][config-ui] Manage teams, members and account mapping from the UI
Los mantenedores suelen responder en 3 días
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 45/100
Línea de trabajo
Start by reading the config-ui pages and API client, then inspect the existing org plugin CSV endpoints for teams, users, and account mappings. Build a Teams page with three tabs that loads and saves each full CSV, including parent team selection, member team multi-select, and read-only account details with user mapping. Done when each tab round-trips its data and warns that saving replaces the full file; the issue names no files or tests.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Search before asking
- I had searched in the issues 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:
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
;-delimitedTeamIdscell. - 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?
- Yes I am willing to submit a PR!
Code of Conduct
- I agree to follow this project's Code of Conduct
- Lenguaje dominante
- Go
- Estrellas
- 3.2k
- Forks
- 819
- Merge medio
- 3 d 6 h
- PR fusionados (30 d)
- 40
Preparar el entorno
Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Sin guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de apache/devlake
-
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
Los mantenedores suelen responder en 3 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 55/100
Los mantenedores suelen responder en 3 días
-
Dificultad 4/5 3-5 días Aptitud para principiantes 38/100
apache/devlake#9195 · 1 reacción ·
Los mantenedores suelen responder en 3 días
-
[Bug][Migration] modify refs id length fails on MySQL Group Replication and leaves refs without a primary keyPosiblemente ocupada @tpam28 la tomó hace 6 días. Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 68/100
apache/devlake#9194 · 1 reacción · 1 asignado ·
Los mantenedores suelen responder en 3 días
-
[Bug][jenkins] Incremental collection skips the stages of builds that finish after the next syncPosiblemente ocupada @pballester la tomó hace 15 días. Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 76/100
apache/devlake#9177 · 2 comentarios ·
Los mantenedores suelen responder en 3 días
Todos los issues de apache/devlake
Issues similares
-
TOTP enrollment returns 500 for phone-only users (empty TOTP account name)Posiblemente ocupada @emiliosandoval4 la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 60/100
Los mantenedores suelen responder en 1 día
-
8.9 to 8.10 Helm upgrade guide still says deprecated keys are removed in chart v16 (Camunda 8.11)Abierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 78/100
camunda/camunda-platform-helm#7559 ·
Los mantenedores suelen responder en 1 día
-
docs: namespaceRegexes example teaches prefix matching, but regexes are matched as a substringAbiertotriage/pending-triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
external-secrets/external-secrets#7117 ·
Los mantenedores suelen responder en 2 días
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
ENTERPILOT/GoModel#1183 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
createEtcdKV fails on a single transient etcd endpoint sync timeoutPosiblemente ocupada @vldmit la tomó hoy. Abiertocontribution
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
Los mantenedores suelen responder en 1 día