Maison  >  Article  >  Java  >  Création d'un service de traitement des commandes avec ChatGPT (contribuer aux efforts) et terminé en quelques jours

Création d'un service de traitement des commandes avec ChatGPT (contribuer aux efforts) et terminé en quelques jours

DDD
DDDoriginal
2024-09-25 17:50:02585parcourir

Building an Orders Processing Service with ChatGPT (contribute  efforts) and Finished in ays

L'IA a contribué à changer et à accroître l'efficacité de mon travail quotidien

En tant que développeur, créer un service de traitement des commandes peut parfois sembler écrasant lorsque vous disposez d'un délai limité. Cependant, grâce à la puissance des outils de développement basés sur l'IA tels que ChatGPT, vous pouvez accélérer considérablement le processus en générant du code, en concevant des entités et en résolvant les problèmes étape par étape. Dans cet article, je vais vous expliquer comment j'ai utilisé ChatGPT pour créer un service de traitement des commandes entièrement fonctionnel en seulement 2 jours, de la collecte des exigences à l'achèvement.

Honnêtement, il existe de nombreux petits fils de discussion et invites pour différentes petites tâches que je ne peux pas résumer dans un projet complet, mais dans l'ensemble... cela m'a aidé à 70 - 80 %. De plus, voici une partie du code original, après l'avoir examiné, il a peut-être été modifié à la main, vous ne trouverez donc peut-être pas cette fonction sur github que j'ai partagée.

Jour 1 : Comprendre les exigences et la configuration

Étape 1 : Rassembler et clarifier les exigences

La première chose que j'ai faite a été de lister les fonctionnalités de base requises pour le service. Voici les principales fonctionnalités dont j'avais besoin :

  1. Inscription des utilisateurs : permet aux utilisateurs de s'inscrire en utilisant leur numéro de téléphone portable et leur adresse.
  2. Recherche d'emplacement de franchise : permet aux clients d'afficher et de trouver des franchises de café à proximité.
  3. Passer une commande : les clients peuvent passer une commande avec plusieurs articles à partir d'un menu.
  4. Gestion des files d'attente : suivez la position d'un client dans une file d'attente et indiquez le temps d'attente prévu.
  5. Annulation de commande : Les clients peuvent sortir de la file d'attente et annuler leur commande à tout moment.

Étape 2 : Générer des points de terminaison d'API avec ChatGPT

J'ai demandé à ChatGPT de m'aider à concevoir la structure de l'API en fonction des exigences. Voici un exemple de la première invite que j'ai utilisée :

Invite :

Créez des points de terminaison d'API pour un système d'enregistrement d'utilisateurs à l'aide de Spring Boot, où les utilisateurs peuvent s'inscrire avec leur nom, leur numéro de mobile et leur adresse.

Résultat : ChatGPT a généré plusieurs points de terminaison :

  • POST /users/register : Pour enregistrer un nouvel utilisateur.
  • GET /franchises/nearby : pour trouver des franchises de café à proximité en fonction de la latitude et de la longitude.
  • POST /commandes : Pour passer une commande avec plusieurs articles.
  • GET /orders/{orderId}/queue-position : Pour vérifier la position de l'utilisateur dans la file d'attente.
  • DELETE /orders/{orderId} : pour annuler la commande et quitter la file d'attente.

Étape 3 : Conception de l'entité

Pour le service de traitement des commandes, nous avions besoin d'entités pour l'utilisateur, la franchise, la commande, la file d'attente et l'article de commande. J'ai utilisé ChatGPT pour définir ces entités avec les champs nécessaires.

Invite :

Concevez l'entité utilisateur pour le système. L'utilisateur peut avoir un numéro de mobile, une adresse et un rôle (comme CLIENT).

Résultat : ChatGPT a fourni une entité utilisateur simple utilisant JPA :

@Entity
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private UUID id;

    @Column(nullable = false, unique = true)
    private String username;
    @Column(nullable = false)
    private String password;
    private String mobileNumber;
    private String address;
    private UserRole role; // CUSTOMER, ADMIN
}

J'ai répété ce processus pour les entités Franchise, Commande et File d'attente.

Jour 2 : Mise en œuvre de la logique métier

Étape 4 : Logique de passation de commande

Une fois l'API de base et les entités configurées, je suis passé à la mise en œuvre de la logique métier pour le passage des commandes. Il s'agissait de la partie critique du service car elle devait gérer plusieurs éléments du menu et gérer les positions dans la file d'attente.

Invite :

Implémenter la logique pour passer une commande avec plusieurs articles, où chaque article est lié à un menu spécifique dans la franchise.

Résultat : ChatGPT m'a guidé dans la conception d'un OrderService pour gérer cela. Voici une partie de la mise en œuvre :

public Order createOrder(UUID customerId, UUID franchiseId, List<OrderItemDTO> items) {
    Order order = new Order();
    order.setCustomer(userRepository.findById(customerId).orElseThrow());
    order.setFranchise(franchiseRepository.findById(franchiseId).orElseThrow());

    List<OrderItem> orderItems = items.stream()
        .map(itemDto -> new OrderItem(menuItemRepository.findById(itemDto.getMenuItemId()), itemDto.getQuantity()))
        .collect(Collectors.toList());
    order.setItems(orderItems);
    order.setQueuePosition(findQueuePositionForFranchise(franchiseId));
    return orderRepository.save(order);
}

Étape 5 : Gestion des files d'attente

Ensuite, j'ai demandé à ChatGPT de m'aider à concevoir la logique permettant de placer un client dans la file d'attente et de suivre sa position.

Invite :

Comment puis-je calculer la position dans la file d'attente et le temps d'attente pour une commande dans un système de franchise de café ?

Résultat : ChatGPT a suggéré de créer un QueueService qui suit les commandes et leur attribue des positions en fonction d'horodatages. Je l'ai implémenté comme suit :

public int findQueuePositionForFranchise(UUID franchiseId) {
    List<CustomerQueue> queue = customerQueueRepository.findAllByFranchiseId(franchiseId);
    return queue.size() + 1;
}

Il a également fourni des conseils sur l'estimation des temps d'attente en fonction du temps moyen de traitement des commandes.

Étape 6 : Annulation de la commande

Enfin, j'ai implémenté la logique permettant aux clients d'annuler leurs commandes et de sortir de la file d'attente :

public void cancelOrder(UUID orderId) {
    Order order = orderRepository.findById(orderId).orElseThrow();
    queueService.removeFromQueue(order.getQueue().getId(), order.getId());
    orderRepository.delete(order);
}

Finalizing the Project

By the end of Day 2, I had a fully functional service that allowed customers to:

  • Register using their mobile number and address.
  • View nearby franchises.
  • Place orders with multiple items from the menu.
  • Check their queue position and waiting time.
  • Cancel their order at any time.

Key Takeaways

  • Leverage AI for Routine Tasks: ChatGPT sped up repetitive tasks like designing APIs, generating boilerplate code, and implementing common business logic patterns.
  • Divide and Conquer: By breaking the project into small, manageable tasks (such as user registration, queue management, and order placement), I was able to implement each feature sequentially.
  • AI-Assisted Learning: While ChatGPT provided a lot of code, I still had to understand the underlying logic and tweak it to fit my project’s needs, which was a great learning experience.
  • Real-Time Debugging: ChatGPT helped me solve real-time issues by guiding me through errors and exceptions I encountered during implementation, which kept the project on track.

I have a few more steps to create the documentation, use liquidbase and have chatGPT generate sample data for easier testing.

Conclusion

Building an order processing system for a coffee shop in 2 days may sound daunting, but with AI assistance, it’s achievable. ChatGPT acted like a coding assistant, helping me transform abstract requirements into a working system quickly. While AI can provide a foundation, refining and customizing code is still an essential skill. This project taught me how to maximize the value of AI tools without losing control of the development process.

By following the steps I took, you can speed up your own projects and focus on higher-level problem-solving, leaving the routine code generation and guidance to AI.

Full source Github

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn