用ChatGPT,快速設計一個真實的賬號系統

2023-02-23 12:00:20

hi,我是熵減,見字如面。

用ChatGPT,可以嘗試做很多的事情。

今天我們就來讓ChatGPT做為架構師,來幫我們設計一個賬號系統吧。

我的實驗過程記錄如下,與你分享。

使用者故事

首先,我們從使用者故事開始吧。

提示:我們從使用者故事開始,需要設計一個網站的賬號系統模型,其中包括賬號基礎資訊實體,郵箱驗證實體,手機號驗證實體,三方社交繫結實體,密碼安全實體,登入記錄實體。

ChatGPT反饋為:

資料模型

確認沒有問題,就可以將次轉化為一個資料模型啦。

提示:OK,將以上設計轉化為一個資料模型,並使用markdown表格的形式來描述輸出

ChatGPT輸出為:

類關係圖

模型確認後,就可以輸出類關係圖啦。

我輸入的提示為:幫我輸出類之間的關係圖,用markdown的格式,輸出符合Mermaid的指令碼程式碼

ChatGPT反饋為:

classDiagram
    class Account {
        +username: string
        +password: string
        +create_time: datetime
        +update_time: datetime
    }
    class EmailVerification {
        +email: string
        +verification_code: string
        +is_success: boolean
        +create_time: datetime
        +update_time: datetime
    }
    class PhoneVerification {
        +phone_number: string
        +verification_code: string
        +is_success: boolean
        +create_time: datetime
        +update_time: datetime
    }
    class ThirdPartyBinding {
        +third_party_id: string
        +third_party_username: string
        +create_time: datetime
        +update_time: datetime
    }
    class PasswordSecurity {
        +password_security_id: string
        +password_strength: string
        +password_salt: string
        +create_time: datetime
        +update_time: datetime
    }
    class LoginRecord {
        +login_time: datetime
        +login_ip: string
        +create_time: datetime
        +update_time: datetime
    }
    Account "1" --> "0..1" EmailVerification
    Account "1" --> "0..1" PhoneVerification
    Account "1" --> "0..*" ThirdPartyBinding
    Account "1" --> "1" PasswordSecurity
    Account "1" --> "0..*" LoginRecord

以上程式碼經過markdown渲染後的圖片為:

增加類屬性

此時,發現Account類中缺失了部分需要的屬性,那就可以讓ChatGPT類增加吧。

提示:Account實體類中,需要增加一個state狀態屬性,一個email_ver狀態屬性,一個phone_ver的狀態屬性,請將變更後的類關係圖,用markdown再次輸出

新返回的markdown程式碼經過渲染後的圖片為:

序列圖

接下來,我們試一下事務變更的序列圖吧。

我輸入的提示為:

ChatGPT返回的程式碼:

sequenceDiagram
    participant PhoneVerification
    participant Account
    participant PhoneVerificationService
    participant SMS
    PhoneVerification ->> PhoneVerificationService: 驗證通過,傳送訊號
    PhoneVerificationService ->> Account: 更新phone_ver屬性
    PhoneVerificationService ->> SMS: 傳送驗證碼

經過渲染後的圖片為:

狀態圖

接下來,我們生產一個狀態圖看一下吧。

我輸入的提示為:Account的state狀態有:新註冊,已啟用,已登出,被鎖定等狀態,將這些狀態在Mermaid指令碼中描述出來,用markdown輸出狀態轉換的程式碼

ChatGPT返回的程式碼為:

stateDiagram
    [*] --> New: 註冊
    New --> Active: 郵箱/手機號驗證通過
    Active --> Locked: 多次輸入錯誤密碼
    Locked --> Active: 解除鎖定
    Active --> Deactivated: 登出
    Deactivated --> Active: 恢復
    Deactivated --> Archived: 資料保留
    Locked --> Archived: 資料保留
    Archived --> [*]: 資料清理

經過渲染後的圖片為:

最後

今天的實驗就到這兒啦。

可見,ChatGPT在軟體開發中是一個不錯的助手,它一傢俱有了不錯的生產能力,幫我們做很多事情。

只要我們在每一個問答的回合中,能給ChatGPT正確的提示,它就可以很好的配合我們來完成任務,我就可以持續的發起並推動接下來的步驟。

接下來可以繼續嘗試啦。