操?gòu)?fù)盤(pán):60 分鐘用 AI 寫(xiě)完 Excel 報(bào)表 + FastAPI 記賬接口)
本文記錄我在 60 分鐘限時(shí)考核中用上述方法完成兩個(gè) Python 任務(wù)的完整過(guò)程。二、考題概覽三、考題一Excel 報(bào)表3.1 需求澄清交給 AI 之前我先把需求寫(xiě)成一段契約text復(fù)制下載輸入sales_raw.xlsx日期/銷(xiāo)售員/產(chǎn)品/數(shù)量/單價(jià)/地區(qū) 輸出report.xlsx明細(xì)清洗后 / 按銷(xiāo)售員 / 按地區(qū) / 總覽 清洗規(guī)則剔關(guān)鍵字段缺失 → 剔數(shù)量0 → 全字段去重 派生銷(xiāo)售額 數(shù)量 × 單價(jià) 匯總按銷(xiāo)售員、按地區(qū)、按月 邊界文件不存在/空/缺列/全臟 → 中文報(bào)錯(cuò) 非 0 退出碼 約束絕不修改原文件3.2 讓 AI 拆任務(wù)而不是寫(xiě)代碼我先別寫(xiě)代碼幫我把這個(gè)需求拆成 4~5 個(gè)可驗(yàn)證的小步。AI 給出讀校驗(yàn) → 清洗 → 派生 → 聚合 → 寫(xiě)出。我采納并補(bǔ)上打印每步剔除行數(shù)以便驗(yàn)證。3.3 Code Review 三處修正#AI 第一版問(wèn)題我的修正1只對(duì)數(shù)量做to_numeric補(bǔ)上單價(jià)2直接df.to_excel()覆蓋改ExcelWriter上下文3業(yè)務(wù)異常用raise Exception統(tǒng)一ReportError 中文提示3.4 關(guān)鍵代碼片段python復(fù)制下載df[數(shù)量] pd.to_numeric(df[數(shù)量], errorscoerce) df[單價(jià)] pd.to_numeric(df[單價(jià)], errorscoerce) df df.dropna(subset[日期, 銷(xiāo)售員, 數(shù)量, 單價(jià)]) df df[df[數(shù)量] 0].drop_duplicates() df[銷(xiāo)售額] (df[數(shù)量] * df[單價(jià)]).round(2)四、考題二FastAPI 記賬接口4.1 先寫(xiě)接口契約MethodPath說(shuō)明POST/records新增校驗(yàn)金額/類(lèi)型/日期GET/records按 type/category/start/end 篩選 分頁(yè)GET/summary收入/支出/結(jié)余4.2 用 Pydantic 做第一道防線(xiàn)python復(fù)制下載class RecordIn(BaseModel): amount: float Field(..., gt0) type: Literal[收入, 支出] category: str date: date任何不合法的輸入FastAPI 自動(dòng)返回 422 結(jié)構(gòu)化錯(cuò)誤無(wú)需手寫(xiě)。4.3 并發(fā)安全內(nèi)存存儲(chǔ)用threading.Lock保護(hù)add()和 ID 自增讀取時(shí)做快照避免迭代中被改。python復(fù)制下載def add(self, rec): with self._lock: rid self._next_id self._next_id 1 self._data[rid] {id: rid, **rec.model_dump()} return self._data[rid]4.4 測(cè)試覆蓋python復(fù)制下載def test_create_zero_amount(): # 邊界金額為 0 r client.post(/records, json{..., amount: 0}) assert r.status_code 422 def test_create_bad_type(): # 邊界類(lèi)型非法 ... def test_summary_bad_range(): # 邊界start end ...text復(fù)制下載7 passed in 0.32s五、AI 協(xié)作的經(jīng)驗(yàn)總結(jié)? 這樣做效率高? 這樣做會(huì)翻車(chē) 必須人工把關(guān)的 4 件事六、結(jié)語(yǔ)Vibe Coding 的本質(zhì)是讓 AI 承擔(dān)體力活人專(zhuān)注于判斷與決策。真正決定交付質(zhì)量的從來(lái)不是 AI 生成的代碼而是你交給 AI 的需求清晰度以及你對(duì) AI 輸出的審查深度。完整源碼結(jié)構(gòu)text復(fù)制下載vibe_coding_exam/ ├── task1_excel/report.py ├── task2_fastapi/{main,storage,schemas}.py ├── task2_fastapi/tests/test_api.py └── run_all.sh一條命令跑通全部一、什么是 Vibe CodingVibe Coding 不是讓 AI 替我寫(xiě)代碼而是用自然語(yǔ)言指揮 AI 完成工程任務(wù)的一種協(xié)作方式。核心能力有三點(diǎn)需求澄清在敲第一個(gè)字符前先把目標(biāo)、輸入輸出、邊界、驗(yàn)收標(biāo)準(zhǔn)寫(xiě)清楚。任務(wù)拆解把大需求拆成可獨(dú)立運(yùn)行、可獨(dú)立驗(yàn)證的小步。過(guò)程管理每一步都跑通再進(jìn)下一步對(duì) AI 輸出做 Code Review關(guān)鍵節(jié)點(diǎn)人工接管。考題一Excel 報(bào)表腳本 —— 讀sales_raw.xlsx清洗 統(tǒng)計(jì)輸出含 4 個(gè) Sheet 的report.xlsx考題二FastAPI 記賬接口 —— POST/GET/SUMMARY 三個(gè)接口帶校驗(yàn)、分頁(yè)、匯總讓 AI拆任務(wù)而不是讓 AI一把梭寫(xiě)全部。每一步都跑通再進(jìn)下一步避免錯(cuò)誤堆疊。讓 AI 生成樣板代碼Pydantic 模型、pytest 骨架、pandas 鏈?zhǔn)骄酆?。?AI 幫你列邊界清單然后你來(lái)篩選。一次性讓 AI 寫(xiě)完整項(xiàng)目 → 出錯(cuò)后不知道從哪查。不做 Code Review 直接跑 → 靜默錯(cuò)誤如字符串單價(jià)參與乘法。讓 AI 決定業(yè)務(wù)邊界金額能否小數(shù)、時(shí)區(qū)怎么處理→ 結(jié)果不符合預(yù)期。讓 AI 自由重構(gòu) → 范圍失控改壞無(wú)關(guān)模塊。數(shù)據(jù)一致性類(lèi)型轉(zhuǎn)換、空值處理、單位統(tǒng)一。并發(fā)與冪等鎖、自增 ID、重復(fù)提交。輸入校驗(yàn)范圍、格式、枚舉、注入風(fēng)險(xiǎn)。副作用文件寫(xiě)入、數(shù)據(jù)庫(kù)提交、網(wǎng)絡(luò)調(diào)用是否可回滾。