紀錄一下今天利用Claude Code寫功能文件。
先挑個簡單功能手工一份功能文件,例如docs/tdd/MEM001.md。表格、流程圖和循序圖利用對話式AI協助產製,目的是做為之後Claude code生成其他功能文件時的參考範本。
# MEM001 帳戶設定/編輯個人資訊
## 功能概要
MEM001 為會員帳戶設定功能,提供登入會員查看及編輯個人基本資料。提供會員修改姓名、國籍、性別、學生身分、學院、系所、年級、學號、職業及教育程度等個人資訊。
## 流程圖
```mermaid
flowchart TD
A[使用者進入 MEM001] --> B[查詢登入會員個人資訊]
B --> C[顯示會員個人資訊]
C --> D[使用者編輯個人資訊]
D --> E[點擊【儲存】]
E --> F[更新 members]
F --> G[回傳儲存結果]
G --> H[顯示處理結果]
```
## 頁面
### MEM001.html
#### 輸入欄位
| 欄位 | 類型 | name | value |
| --- | --- | --- | --- |
| 姓名 | text | memberName | text |
| 本國人/外國人 | radio | national | true/false |
| 性別 | radio | gender | M:男性<br>F:女性 |
| 台北大學學生 | checkbox | isStudent | true/false |
| 選擇學院 | select | college | 0:法律學院<br>1:商學院<br>2:公共事務學院<br>3:社會科學學院<br>4:人文學院<br>5:電機資訊學院<br>6:永續創新國際學院 |
| 選擇系所 | select | department | 參考[學院系所選單](#學院系所選單) |
| 選擇年級 | select | grade | 0:大學一年級<br>1:大學二年級<br>2:大學三年級<br>3:大學四年級 |
| 學號 | text | studentId | text |
| 職業 | select | occupation | 0:軍公教<br>1:製造業<br>2:服務業<br>3:其他 |
| 教育程度 | select | education | 0:小學<br>1:國中<br>2:高中<br>3:大學<br>4:研究所及以上 |
#### 學院系所選單
| 學院 | 系所選項 |
| ---- | ------- |
| 0:法律學院 | 0:法律學系<br>1:比較法資料中心<br>2:能源、環境與人類社會研究中心 |
| 1:商學院 | 0:企業管理學系<br>1:金融與合作經營學系<br>2:會計學系<br>3:休閒運動管理學系<br>4:統計學系<br>5:資訊管理研究所<br>6:國際財務金融碩士在職專班<br>7:國際企業研究所<br>8:電子商務研究中心<br>9:合作經濟暨非營利事業研究中心<br>10:學士後財務金融學士學位學程<br>11:(進修)數位行銷進修學士學位學程<br>12:金融科技暨綠色金融研究中心<br>13:企業永續發展研究中心 |
| 2:公共事務學院 | 0:公共行政暨政策學系<br>1:財政學系<br>2:不動產與城鄉環境學系<br>3:都市計劃研究所<br>4:自然資源與環境管理研究所<br>5:民意與選舉研究中心<br>6:土地與環境規劃研究中心 |
| 3:社會科學學院 | 0:經濟學系<br>1:社會學系<br>2:社會工作學系<br>3:犯罪學研究所<br>4:台灣發展研究中心 |
| 4:人文學院 | 0:中國文學系<br>1:應用外語學系<br>2:歷史學系<br>3:民俗藝術與文化資產研究所<br>4:師資培育中心<br>5:國際談判及同步翻譯中心<br>6:東西哲學與詮釋學研究中心 |
| 5:電機資訊學院 | 0:資訊工程學系<br>1:通訊工程學系<br>2:電機工程學系<br>3:產業研發碩士專班<br>4:資通科技產業碩士專班<br>5:電機資訊學院博士班<br>6:前瞻科技中心 |
| 6:永續創新國際學院 | 0:城市治理英語碩士學位學程<br>1:財務金融英語碩士學位學程 |
## API
| METHOD | URL | 說明 | Request形式 | Response形式 |
| --- | ---- | ----| --- | --- |
| POST | /MEM001/ | 進入頁面,查詢登入會員的個人資訊 | Session | ModelAndView |
| POST | /MEM001/save | 儲存會員個人資訊 | Ajax | JsonResult |
## Sequence Diagram
### 進入頁面
進入頁面後從`members`資料表取得會員個人資訊。
```mermaid
sequenceDiagram
actor User
participant View as MEM001.html
participant Controller as MEM001Controller
participant Service as MEM001Service
participant Mapper as MEM001Mapper
participant DB as members
User->>View: 進入 MEM001
View->>Controller: POST /MEM001/
Controller->>Service: queryOne()
Service->>Mapper: selectOne()
Mapper->>DB: 查詢會員個人資訊
DB-->>Mapper: 會員個人資訊
Mapper-->>Service: 會員個人資訊
Service-->>Controller: 會員個人資訊
Controller-->>View: ModelAndView("mem/MEM001")
View-->>User: 顯示會員個人資訊
```
### 儲存
編輯個人資訊後按 **【儲存】** 按鈕,將資料更新到`members`資料表。
```mermaid
sequenceDiagram
actor User
participant View as MEM001.html
participant Controller as MEM001Controller
participant Service as MEM001Service
participant Mapper as MEM001Mapper
participant DB as members
User->>View: 編輯個人資訊並點擊【儲存】
View->>Controller: POST /MEM001/save
Controller->>Service: save()
Service->>Mapper: update()
Mapper->>DB: 更新會員個人資訊
DB-->>Mapper: 更新結果
Mapper-->>Service: 是否成功
Service-->>Controller: 是否成功
Controller-->>View: JsonResult
View-->>User: 狀態列顯示訊息
```
## 程式位置
| 類型 | 程式 |
| --- | --- |
| View | `/resources/page/mem/MEM001.html` |
| Controller | `com.abc.demo.controller.mem.MEM001Controller.java` |
| Service | `com.abc.demo.service.mem.MEM001Service.java` |
| Mapper | `com.abc.demo.model.mapper.MEM001Mapper.java` |
| SQL | `/resources/mapper/MEM001Mapper.xml` |
## 相關資料表
- [members](../tables/members.md)
範本產生後,之後告訴Claude code如下:
Please refer to docs/tdd/MEM001.md format, please generate MEM002.md in this folder
according to MEM002.html, MEM002Controller, MEM002Service, MEM002Mapper, MEM002Mapper.xml
結束後Claude Code便會生成docs/tdd/MEM002.md。
沒有留言:
張貼留言