mirror of
https://github.com/LD-Reborn/Berufsschule_HAM.git
synced 2025-12-20 06:51:55 +00:00
Merge pull request #103 from LD-Reborn/100-feature-add-the-ability-to-create-an-asset
100 feature add the ability to create an asset
This commit is contained in:
@@ -1,214 +0,0 @@
|
||||
# **Pflichtenheft**
|
||||
|
||||
**Projekt:** Hardware-Asset-Management-Tool
|
||||
**Firma:** WalhöferGbR
|
||||
|
||||
---
|
||||
|
||||
## **Deckblatt**
|
||||
|
||||
| **Projektname:** | Hardware-Asset-Management-Tool |
|
||||
| ------------------------------- | ------------------------------ |
|
||||
| **Kunde:** | Firma WalhöferGbR |
|
||||
| **Auftragnehmer / Entwickler:** | KeineAhnungGmbH |
|
||||
| **Version:** | 3.0 |
|
||||
| **Projektlaufzeit:** | 09.10.2025 - 01.12.2025 |
|
||||
| **Budget:** | 40.000 € |
|
||||
|
||||
**Kontaktperson Kunde:**
|
||||
- Name: Jochen Walhöfer
|
||||
- Abteilung: IT-Abteilung
|
||||
- E-Mail: jochen.walhoefer@meinbtg.de
|
||||
|
||||
**Kontaktperson Entwickler:**
|
||||
- Name: Andreas Stefan
|
||||
- E-Mail: andreas.stefan@KeineAhnungGmbH.de
|
||||
|
||||
---
|
||||
|
||||
## **Versionshistorie**
|
||||
|
||||
| Version | Datum | Autor | Änderung / Kommentar |
|
||||
| ------- | ---------- | -------------- | ------------------------- |
|
||||
| 1.0 | 19.09.2025 | Lucretia Dietz | Erstfassung Pflichtenheft |
|
||||
| 2.0 | 03.10.2025 | Lucretia Dietz | Erweiterung Hosting & Support |
|
||||
| 3.0 | 03.10.2025 | Lucretia Dietz | Anpassung für agiles Vorgehen |
|
||||
|
||||
---
|
||||
## **Inhaltsverzeichnis**
|
||||
|
||||
1. Einleitung / Zielbestimmung
|
||||
2. Produkteinsatz
|
||||
3. Produktfunktionen
|
||||
4. Produktdaten
|
||||
5. Benutzerrollen & Rechtekonzept
|
||||
6. Systemarchitektur & Technologien
|
||||
7. Schnittstellen
|
||||
8. Sicherheitsanforderungen
|
||||
9. Qualitätsanforderungen
|
||||
10. Setup, Support & Lizenz
|
||||
11. Abgrenzungskriterien (Nicht-Ziele)
|
||||
12. Budget- und Zeitplanung
|
||||
13. Glossar
|
||||
14. Unterschriften
|
||||
|
||||
---
|
||||
|
||||
## 1. Einleitung / Zielbestimmung
|
||||
|
||||
Ziel dieses Projekts ist die Entwicklung eines webbasierten Hardware-Asset-Management-Tools für die IT-Abteilung der Firma WalhöferGbR.
|
||||
Das System soll firmeneigene Hardware zentral verwalten, LDAP-Daten integrieren und relevante Informationen erfassen und pflegen.
|
||||
|
||||
Die Entwicklung erfolgt inkrementell und iterativ nach agilen Prinzipien.
|
||||
Das Projektteam liefert funktionsfähige Zwischenversionen (Increment) in kurzen Sprints (2–3 Wochen) aus.
|
||||
Änderungswünsche und Prioritäten werden gemeinsam mit dem Product Owner abgestimmt.
|
||||
|
||||
---
|
||||
|
||||
## 2. Produkteinsatz
|
||||
|
||||
- **Zielgruppe / Nutzer:** IT-Abteilung der Firma Walhöfer
|
||||
- **Einsatzort:** Innerbetrieblich, Zugriff über Webbrowser
|
||||
- **Hauptnutzen:** Übersicht über Hardwarebestand, Zuordnung zu Nutzern, Verwaltung zentraler Informationen
|
||||
|
||||
---
|
||||
|
||||
## 3. Produktfunktionen
|
||||
Epic 1:
|
||||
- Schreibender und lesender Zugriff auf LDAP, inklusive Schemaerweiterung
|
||||
- Einfache Übersichtsseiten („alle Geräte pro Nutzer“)
|
||||
|
||||
Epic 2:
|
||||
- Assets anlegen, bearbeiten und löschen
|
||||
- Assets zu Nutzern zuordnen
|
||||
|
||||
Epic 3:
|
||||
- Suchen und Filtern von Assets
|
||||
|
||||
Epic 4:
|
||||
- Inventarisierung von Geräten (durch Inventarisierer)
|
||||
- Rollenverwaltung über LDAP-Gruppen
|
||||
|
||||
---
|
||||
|
||||
## 4. Produktdaten
|
||||
| Attribut | Beschreibung |
|
||||
| ------------------- | ----------------------------- |
|
||||
| Seriennummer | Eindeutige Gerätekennung |
|
||||
| Standort | Physischer Ort des Geräts |
|
||||
| Zugeordneter Nutzer | Benutzer aus LDAP |
|
||||
| Garantieende | Datum |
|
||||
| Marke / Modell | Herstellerinformationen |
|
||||
| Inventarstatus | Datum und Inventurist*in |
|
||||
|
||||
Erweiterungen am LDAP-Schema werden nach Sprintplanung umgesetzt.
|
||||
|
||||
---
|
||||
|
||||
## 5. Benutzerrollen & Rechtekonzept
|
||||
|
||||
| Rolle | Rechte |
|
||||
| --------------- | ------------------------------------- |
|
||||
| Admin | Vollzugriff, Rollenverwaltung |
|
||||
| Inventaristen | Geräte inventarisieren und bearbeiten |
|
||||
| Nur-Lesen | Nur Ansicht |
|
||||
|
||||
Rollen werden über LDAP-Gruppen abgebildet.
|
||||
Änderungen oder zusätzliche Rollen können sprintweise implementiert werden.
|
||||
|
||||
---
|
||||
|
||||
## 6. Systemarchitektur & Technologien
|
||||
|
||||
- Webanwendung auf .NET (C#)
|
||||
- Browserbasiert
|
||||
- Zentrale Datenhaltung über LDAP
|
||||
- SSL-verschlüsselte Verbindungen
|
||||
- Erweiterbares LDAP-Schema für Geräteinformationen
|
||||
- Hosting auf Kundenhardware (on-premise)
|
||||
- Ubuntu Server mit
|
||||
- 2 CPU Kernen
|
||||
- 2 GB RAM
|
||||
- 50 GB SSD
|
||||
- Windows Server mit
|
||||
- 4 CPU Kernen
|
||||
- 4 GB RAM
|
||||
- 100 GB SSD
|
||||
---
|
||||
|
||||
## 7. Schnittstellen
|
||||
- LDAP (Lesend und Schreibend)
|
||||
- Authentifizierung über Benutzername/Passwort
|
||||
- Rollensteuerung über Gruppenobjekte
|
||||
- Schemaerweiterung für Geräteobjekte
|
||||
|
||||
---
|
||||
|
||||
## 8. Sicherheitsanforderungen
|
||||
|
||||
- LDAP-Authentifizierung
|
||||
- Rollenbasiertes Berechtigungsmodell
|
||||
- SSL für alle Verbindungen
|
||||
- Logging von Zugriffen und Änderungen
|
||||
- Schreibrechte nur für berechtigte Benutzer
|
||||
|
||||
---
|
||||
|
||||
## 9. Qualitätsanforderungen
|
||||
|
||||
- Performance: System unterstützt ca. 100 Nutzer
|
||||
- Erweiterbare Architektur: Attribute müssen hinzugefügt werden können
|
||||
- Stabile, wartbare Software
|
||||
- Datensicherung erfolgt extern durch den Kunden
|
||||
- Codequalität wird durch Code Reviews und CI/CD sichergestellt
|
||||
- Abnahme durch Product Owner nach jedem Sprint-Inkrement
|
||||
|
||||
---
|
||||
|
||||
## 10. Setup, Support & Lizenz
|
||||
- Installation und Abnahme erfolgen gemeinsam mit dem Product Owner (max. 4 Stunden).
|
||||
- Nach Projektabschluss erfolgt keine dauerhafte Betreuung (siehe MIT-Lizenz).
|
||||
- Die Software wird mit der MIT Lizenz geliefert.
|
||||
- Support während der Projektlaufzeit im Rahmen des Sprints.
|
||||
- Alle Rechte der Firma WalhöferGbR hinsichtlich der Verwendung, Weiterentwicklung und Weitergabe werden durch die MIT Lizenz definiert.
|
||||
|
||||
---
|
||||
|
||||
## 11. Abgrenzungskriterien (Nicht-Ziele)
|
||||
|
||||
- Keine automatischen Benachrichtigungen
|
||||
- Keine Workflows
|
||||
- Kein Datenexport (CSV, PDF, Excel)
|
||||
- Keine Mehrsprachigkeit
|
||||
- Keine speziellen UI/Design-Vorgaben
|
||||
|
||||
---
|
||||
|
||||
## 12. Budget- und Zeitplanung
|
||||
|
||||
- **Gesamtbudget:** 40.000 €
|
||||
- **Sprintdauer:** 2 Wochen
|
||||
- **Geplante Laufzeit:** 4 Sprints
|
||||
- **Review-Meetings:** Nach jedem Sprint
|
||||
- **Zieltermin:** 01.12.2025
|
||||
- Entwicklungsaufwand in enger Abstimmung mit der IT-Abteilung
|
||||
|
||||
---
|
||||
|
||||
## 13. Glossar
|
||||
- **Epic:** Agile Beschreibung von Anforderungen aus Nutzersicht
|
||||
- **Sprint:** Kurzer Entwicklungszyklus (2-3 Wochen)
|
||||
- **Product Owner:** Verantwortlicher des Kunden für Priorisierung
|
||||
- **Increment** Funktional lauffähige Softwareversion nach einem Sprint
|
||||
- **Asset:** Hardwaregerät (PC, Laptop, Monitor, Drucker, Smartphone)
|
||||
- **LDAP:** Lightweight Directory Access Protocol, zentrale Datenhaltung für Nutzer und Geräte
|
||||
- **Inventarisierung:** Kennzeichnung eines Gerätes als inventarisiert
|
||||
|
||||
---
|
||||
|
||||
## 14. Unterschriften
|
||||
|
||||
| Name | Funktion | Unterschrift | Datum |
|
||||
| --------------- | ------------- | ------------ | ----- |
|
||||
| Jochen Walhöfer | Auftraggeber | | |
|
||||
| Lucretia Dietz | Projektleiterin | | |
|
||||
@@ -263,62 +263,8 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
const createForm = document.getElementById('createAssetForm');
|
||||
const createModalEl = document.getElementById('createAssetModal');
|
||||
|
||||
createForm.addEventListener('submit', async (e) => {
|
||||
e.preventDefault();
|
||||
|
||||
const formData = new FormData(createForm);
|
||||
const jsonData = {};
|
||||
|
||||
// Convert form data into nested JSON for AssetsCreateRequestModel
|
||||
for (const [key, value] of formData.entries()) {
|
||||
if (!value) continue;
|
||||
const keys = key.split('.');
|
||||
let target = jsonData;
|
||||
for (let i = 0; i < keys.length - 1; i++) {
|
||||
target[keys[i]] = target[keys[i]] || {};
|
||||
target = target[keys[i]];
|
||||
}
|
||||
target[keys[keys.length - 1]] = value;
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await fetch('/Assets/Create', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
'Accept': 'application/json'
|
||||
},
|
||||
body: JSON.stringify(jsonData)
|
||||
});
|
||||
|
||||
const result = await response.json();
|
||||
|
||||
if (result.success) {
|
||||
const modal = bootstrap.Modal.getInstance(createModalEl);
|
||||
modal.hide();
|
||||
createForm.reset();
|
||||
|
||||
showToast('✅ Asset created successfully', 'success');
|
||||
// Optional: reload page or dynamically add new row
|
||||
// location.reload();
|
||||
} else {
|
||||
showToast(`❌ ${result.reason || 'Error creating asset'}`, 'danger');
|
||||
}
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
showToast('Error contacting server', 'danger');
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
<script>
|
||||
/* Handle the attributes list for asset creation*/
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
const attributesContainer = document.getElementById('attributesContainer');
|
||||
const addAttributeBtn = document.getElementById('addAttributeBtn');
|
||||
|
||||
Reference in New Issue
Block a user