Skip to content
Snippets Groups Projects
Commit bed727ca authored by Alexander Kohler's avatar Alexander Kohler
Browse files

EIFFEL um automatische Anforderungs-Kürzel erweitert

- Automatische UUID-Generierung für projektbasierte Anforderungen
- Kürzel-Generierung basierend auf Projekt-Shortcut (z.B. HM-REQ-001)
- MongoDB-Integration für Projekt-Shortcut-Abfrage
parent b7d92d36
1 merge request!4merge dev to main
......@@ -646,6 +646,22 @@ func elicitationTemplate(cfg Cfg, appCtx *hctx.AppCtx, webCtx *web.Ctx, defaultF
var mongoClient *mongo.Client
var mongoCollection *mongo.Collection
var projectCollection *mongo.Collection
// getProjectShortcut retrieves the shortcut for a project by its ProjectID
func getProjectShortcut(ctx context.Context, projectID string) (string, error) {
var project struct {
Shortcut string `bson:"shortcut"`
}
err := projectCollection.FindOne(ctx, bson.M{"project_id": projectID}).Decode(&project)
if err != nil {
log.Printf("Error fetching project shortcut for project_id '%s': %v", projectID, err)
return "", err
}
return project.Shortcut, nil
}
func InitMongoDB() error {
clientOptions := options.Client().ApplyURI("mongodb://localhost:27017")
......@@ -660,6 +676,7 @@ func InitMongoDB() error {
}
mongoCollection = client.Database("harmony").Collection("requirements")
projectCollection = client.Database("harmony").Collection("projects")
log.Println("Connected to MongoDB")
return nil
}
......@@ -677,6 +694,21 @@ func saveToMongoDB(formData *TemplateFormData) error {
"created_at": time.Now(),
}
// Für projektbasierte Anforderungen: UUID und Shortcut hinzufügen
if formData.ProjectID != "" {
// UUID für diese Anforderung generieren
document["uuid"] = uuid.New().String()
// Shortcut basierend auf Projekt-Kürzel generieren
if projectShortcut, err := getProjectShortcut(ctx, formData.ProjectID); err == nil && projectShortcut != "" {
// Anzahl der existierenden Anforderungen für dieses Projekt abrufen
count, _ := mongoCollection.CountDocuments(ctx, bson.M{"project_id": formData.ProjectID})
// Shortcut im Format: [PROJECT_SHORTCUT]-REQ-[NUMMER] (z.B. "HM-REQ-001")
document["shortcut"] = fmt.Sprintf("%s-REQ-%03d", projectShortcut, count+1)
}
}
_, err := mongoCollection.InsertOne(ctx, document)
return err
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment