Initial commit
Dieser Commit ist enthalten in:
357
GITEA_IMPLEMENTIERUNGSPLAN.txt
Normale Datei
357
GITEA_IMPLEMENTIERUNGSPLAN.txt
Normale Datei
@ -0,0 +1,357 @@
|
||||
================================================================================
|
||||
TASKMATE - GITEA-INTEGRATION IMPLEMENTIERUNGSPLAN
|
||||
================================================================================
|
||||
Erstellt: 28.12.2025
|
||||
Status: In Bearbeitung
|
||||
|
||||
================================================================================
|
||||
UEBERSICHT
|
||||
================================================================================
|
||||
|
||||
Neuer "Gitea"-Tab neben Board, Liste, Kalender, Genehmigung fuer die
|
||||
Git-Repository-Verwaltung pro Projekt.
|
||||
|
||||
KERNKONZEPT: Jedes TaskMate-Projekt = Ein Git-Repository
|
||||
|
||||
Workflow:
|
||||
1. Projekt in TaskMate erstellen/auswaehlen
|
||||
2. Gitea-Repository verknuepfen (bestehend oder neu erstellen)
|
||||
3. Lokales Verzeichnis angeben (wo Claude Code arbeitet)
|
||||
4. Git-Operationen ausfuehren (Pull, Push, Commit, etc.)
|
||||
|
||||
================================================================================
|
||||
AKTUELLER STAND (VOR IMPLEMENTIERUNG)
|
||||
================================================================================
|
||||
|
||||
BACKEND - Bereits implementiert (aber NICHT aktiviert!):
|
||||
[x] backend/services/giteaService.js - Gitea API Integration
|
||||
[x] backend/services/gitService.js - Lokale Git-Operationen
|
||||
[x] backend/routes/git.js - 11 Git-Endpoints
|
||||
[x] backend/routes/applications.js - Projekt-Repository-Verknuepfung
|
||||
[x] Datenbank-Tabelle "applications" vorhanden
|
||||
|
||||
KRITISCHER BUG:
|
||||
[ ] Routes sind in server.js NICHT registriert - API funktioniert nicht!
|
||||
|
||||
FRONTEND - Fehlt komplett:
|
||||
[ ] Kein Gitea-Tab
|
||||
[ ] Keine UI fuer Repository-Verwaltung
|
||||
[ ] Keine Git-Operationen im Frontend
|
||||
|
||||
================================================================================
|
||||
IMPLEMENTIERUNGSSCHRITTE
|
||||
================================================================================
|
||||
|
||||
PHASE 1: BACKEND AKTIVIEREN
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
Schritt 1.1: Routes in server.js registrieren
|
||||
Datei: backend/server.js
|
||||
|
||||
Imports hinzufuegen:
|
||||
const gitRoutes = require('./routes/git');
|
||||
const applicationsRoutes = require('./routes/applications');
|
||||
const giteaRoutes = require('./routes/gitea');
|
||||
|
||||
Routes registrieren:
|
||||
app.use('/api/git', authenticateToken, csrfProtection, gitRoutes);
|
||||
app.use('/api/applications', authenticateToken, csrfProtection, applicationsRoutes);
|
||||
app.use('/api/gitea', authenticateToken, csrfProtection, giteaRoutes);
|
||||
|
||||
Status: [ ] Ausstehend
|
||||
|
||||
Schritt 1.2: Neue Gitea-Route erstellen
|
||||
Datei: backend/routes/gitea.js (NEU)
|
||||
|
||||
Endpoints:
|
||||
- GET /api/gitea/test - Verbindung testen
|
||||
- GET /api/gitea/repositories - Alle Repos auflisten
|
||||
- POST /api/gitea/repositories - Neues Repo erstellen
|
||||
- GET /api/gitea/repositories/:owner/:repo - Repo-Details
|
||||
- GET /api/gitea/repositories/:owner/:repo/branches - Branches
|
||||
- GET /api/gitea/repositories/:owner/:repo/commits - Commits
|
||||
|
||||
Status: [ ] Ausstehend
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
PHASE 2: FRONTEND API ERWEITERN
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
Schritt 2.1: API-Client erweitern
|
||||
Datei: frontend/js/api.js
|
||||
|
||||
Neue Methoden:
|
||||
// Gitea
|
||||
testGiteaConnection()
|
||||
getGiteaRepositories()
|
||||
createGiteaRepository(data)
|
||||
getGiteaRepository(owner, repo)
|
||||
getGiteaBranches(owner, repo)
|
||||
getGiteaCommits(owner, repo, options)
|
||||
|
||||
// Applications
|
||||
getProjectApplication(projectId)
|
||||
saveProjectApplication(data)
|
||||
deleteProjectApplication(projectId)
|
||||
getUserBasePath()
|
||||
setUserBasePath(basePath)
|
||||
|
||||
// Git Operations
|
||||
cloneRepository(data)
|
||||
getGitStatus(projectId)
|
||||
gitPull(projectId, branch)
|
||||
gitPush(projectId, branch)
|
||||
gitCommit(projectId, message, stageAll)
|
||||
getGitCommits(projectId, limit)
|
||||
getGitBranches(projectId)
|
||||
gitCheckout(projectId, branch)
|
||||
gitFetch(projectId)
|
||||
validatePath(path)
|
||||
|
||||
Status: [ ] Ausstehend
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
PHASE 3: HTML-STRUKTUR
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
Schritt 3.1: Navigation-Tab hinzufuegen
|
||||
Datei: frontend/index.html
|
||||
|
||||
Nach proposals-Tab einfuegen:
|
||||
<button class="view-tab" data-view="gitea">Gitea</button>
|
||||
|
||||
Status: [ ] Ausstehend
|
||||
|
||||
Schritt 3.2: Gitea-View hinzufuegen
|
||||
Datei: frontend/index.html
|
||||
|
||||
Struktur:
|
||||
<div id="view-gitea" class="view view-gitea hidden">
|
||||
|
||||
<!-- Konfiguration (wenn nicht verknuepft) -->
|
||||
<div id="gitea-config-section">
|
||||
- Gitea-Verbindungsstatus
|
||||
- Repository-Dropdown (bestehende auswaehlen)
|
||||
- "Neues Repository erstellen" Button
|
||||
- Lokaler Pfad Eingabe
|
||||
- Standard-Branch
|
||||
- Speichern Button
|
||||
</div>
|
||||
|
||||
<!-- Hauptansicht (wenn verknuepft) -->
|
||||
<div id="gitea-main-section">
|
||||
- Repository-Name und URL
|
||||
- Aktueller Branch (Dropdown)
|
||||
- Status-Badge (Clean/Dirty/Ahead/Behind)
|
||||
- Git-Operationen (Fetch, Pull, Push, Commit)
|
||||
- Aenderungen-Liste
|
||||
- Commit-Historie
|
||||
</div>
|
||||
|
||||
<!-- Leer-Zustand -->
|
||||
<div id="gitea-no-project">
|
||||
Kein Projekt ausgewaehlt
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
Status: [ ] Ausstehend
|
||||
|
||||
Schritt 3.3: Modals hinzufuegen
|
||||
Datei: frontend/index.html
|
||||
|
||||
- #git-commit-modal - Commit-Nachricht eingeben
|
||||
- #create-repo-modal - Neues Repository erstellen
|
||||
|
||||
Status: [ ] Ausstehend
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
PHASE 4: CSS-STYLES
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
Schritt 4.1: Gitea-Styles erstellen
|
||||
Datei: frontend/css/gitea.css (NEU)
|
||||
|
||||
Styles fuer:
|
||||
- .view-gitea - Hauptcontainer
|
||||
- .gitea-section - Sektionen
|
||||
- .gitea-connection-status - Verbindungsanzeige
|
||||
- .gitea-repo-header - Repository-Header
|
||||
- .gitea-status-panel - Status-Grid
|
||||
- .status-badge - Clean/Dirty/Ahead Badges
|
||||
- .gitea-operations-panel - Button-Grid
|
||||
- .changes-list - Geaenderte Dateien
|
||||
- .commits-list - Commit-Historie
|
||||
- .gitea-empty-state - Leer-Zustand
|
||||
|
||||
Status: [ ] Ausstehend
|
||||
|
||||
Schritt 4.2: CSS in index.html einbinden
|
||||
<link rel="stylesheet" href="css/gitea.css">
|
||||
|
||||
Status: [ ] Ausstehend
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
PHASE 5: GITEA MANAGER
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
Schritt 5.1: Gitea Manager erstellen
|
||||
Datei: frontend/js/gitea.js (NEU)
|
||||
|
||||
Klasse GiteaManager:
|
||||
Properties:
|
||||
- application (Projekt-Repository-Verknuepfung)
|
||||
- gitStatus (Aktueller Git-Status)
|
||||
- branches (Verfuegbare Branches)
|
||||
- commits (Commit-Historie)
|
||||
- giteaRepos (Gitea-Repositories)
|
||||
- giteaConnected (Verbindungsstatus)
|
||||
|
||||
Methoden:
|
||||
- init() - Initialisierung
|
||||
- bindEvents() - Event-Listener
|
||||
- subscribeToStore() - Store-Subscriptions
|
||||
- loadApplication() - Anwendung laden
|
||||
- loadGitData() - Git-Daten laden
|
||||
- loadGiteaRepos() - Gitea-Repos laden
|
||||
- renderConfigurationView() - Konfig-Ansicht
|
||||
- renderConfiguredView() - Hauptansicht
|
||||
- renderStatus() - Status rendern
|
||||
- renderBranches() - Branches rendern
|
||||
- renderCommits() - Commits rendern
|
||||
- renderChanges() - Aenderungen rendern
|
||||
- handleConfigSave() - Konfig speichern
|
||||
- handleRepoSelect() - Repo auswaehlen
|
||||
- handleBranchChange() - Branch wechseln
|
||||
- handleFetch/Pull/Push/Commit() - Git-Ops
|
||||
- validateLocalPath() - Pfad validieren
|
||||
- show()/hide() - View-Kontrolle
|
||||
- startAutoRefresh() - Auto-Refresh
|
||||
|
||||
Status: [ ] Ausstehend
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
PHASE 6: APP-INTEGRATION
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
Schritt 6.1: Manager in app.js integrieren
|
||||
Datei: frontend/js/app.js
|
||||
|
||||
Import:
|
||||
import giteaManager from './gitea.js';
|
||||
|
||||
In initializeApp():
|
||||
await giteaManager.init();
|
||||
|
||||
In switchView():
|
||||
if (view === 'gitea') {
|
||||
giteaManager.show();
|
||||
} else {
|
||||
giteaManager.hide();
|
||||
}
|
||||
|
||||
Status: [ ] Ausstehend
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
PHASE 7: FINALISIERUNG
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
Schritt 7.1: Service Worker aktualisieren
|
||||
Datei: frontend/sw.js
|
||||
|
||||
- Cache-Version erhoehen
|
||||
- gitea.js und gitea.css zum Cache hinzufuegen
|
||||
|
||||
Status: [ ] Ausstehend
|
||||
|
||||
Schritt 7.2: CHANGELOG.txt aktualisieren
|
||||
Dokumentation der neuen Gitea-Integration
|
||||
|
||||
Status: [ ] Ausstehend
|
||||
|
||||
Schritt 7.3: Docker-Container neu bauen und testen
|
||||
docker compose down
|
||||
docker compose up --build -d
|
||||
|
||||
Status: [ ] Ausstehend
|
||||
|
||||
================================================================================
|
||||
UI-MOCKUP: GITEA-TAB
|
||||
================================================================================
|
||||
|
||||
+------------------------------------------------------------------+
|
||||
| [Board] [Liste] [Kalender] [Genehmigung] [Gitea] |
|
||||
+------------------------------------------------------------------+
|
||||
| |
|
||||
| +------------------------------------------------------------+ |
|
||||
| | IntelSight/AccountForger-neuerUpload [Edit][X] | |
|
||||
| | https://gitea-undso.aegis-sight.de/... | |
|
||||
| +------------------------------------------------------------+ |
|
||||
| |
|
||||
| +------------------------------------------------------------+ |
|
||||
| | Branch: [main v] Status: Clean Aenderungen: 0 | |
|
||||
| | Letzte Sync: vor 5 Minuten | |
|
||||
| +------------------------------------------------------------+ |
|
||||
| |
|
||||
| +------------------------------------------------------------+ |
|
||||
| | Git-Operationen | |
|
||||
| | [Fetch] [Pull] [Push] [Commit] | |
|
||||
| +------------------------------------------------------------+ |
|
||||
| |
|
||||
| +------------------------------------------------------------+ |
|
||||
| | Letzte Commits | |
|
||||
| | +--------------------------------------------------------+ | |
|
||||
| | | [a1b2c3d] Fix: Login-Bug behoben | | |
|
||||
| | | HG - vor 2 Stunden | | |
|
||||
| | +--------------------------------------------------------+ | |
|
||||
| | | [e4f5g6h] Feature: Neue Filteroptionen | | |
|
||||
| | | MH - vor 1 Tag | | |
|
||||
| | +--------------------------------------------------------+ | |
|
||||
| +------------------------------------------------------------+ |
|
||||
| |
|
||||
+------------------------------------------------------------------+
|
||||
|
||||
================================================================================
|
||||
KRITISCHE DATEIEN
|
||||
================================================================================
|
||||
|
||||
Datei | Aktion
|
||||
-------------------------------|------------------------------------------
|
||||
backend/server.js | Routes registrieren (KRITISCH!)
|
||||
backend/routes/gitea.js | NEU erstellen
|
||||
frontend/js/api.js | Erweitern
|
||||
frontend/js/gitea.js | NEU erstellen
|
||||
frontend/css/gitea.css | NEU erstellen
|
||||
frontend/index.html | View + Tab + Modals
|
||||
frontend/js/app.js | Import + Integration
|
||||
frontend/sw.js | Cache-Version erhoehen
|
||||
CHANGELOG.txt | Dokumentieren
|
||||
|
||||
================================================================================
|
||||
IMPLEMENTIERUNGS-REIHENFOLGE (CHECKLISTE)
|
||||
================================================================================
|
||||
|
||||
[ ] 1. Backend: Routes in server.js registrieren
|
||||
[ ] 2. Backend: gitea.js Route erstellen
|
||||
[ ] 3. Frontend: api.js erweitern
|
||||
[ ] 4. Frontend: index.html (View + Tab + Modals)
|
||||
[ ] 5. Frontend: gitea.css erstellen
|
||||
[ ] 6. Frontend: gitea.js Manager erstellen
|
||||
[ ] 7. Frontend: app.js Integration
|
||||
[ ] 8. Service Worker aktualisieren
|
||||
[ ] 9. CHANGELOG.txt aktualisieren
|
||||
[ ] 10. Docker-Container neu bauen und testen
|
||||
|
||||
================================================================================
|
||||
KONFIGURATION (BEREITS VORHANDEN)
|
||||
================================================================================
|
||||
|
||||
.env Datei:
|
||||
GITEA_URL=https://gitea-undso.aegis-sight.de
|
||||
GITEA_TOKEN=8d76ec66b3e1f02e9b1e4848d8b15e0cdffe48df
|
||||
|
||||
Beispiel-Repository:
|
||||
Organisation: IntelSight
|
||||
Name: AccountForger-neuerUpload
|
||||
|
||||
================================================================================
|
||||
In neuem Issue referenzieren
Einen Benutzer sperren