?
引言: 在產品開發團隊中,設計師、產品經理和工程師之間的協作常常伴隨著大量重復性工作:手動整理設計稿鏈接、更新產品需求文檔、同步項目狀態...這些工作不僅耗時,還容易出錯。本文將帶你編寫一個Python腳本,自動化這些流程,讓你的團隊能更專注于創造本身。
?
核心腳本功能:
?
1. 自動監控設計工具(如Figma):獲取最新設計稿版本和鏈接。
2. 解析產品信息:從Markdown格式的需求文檔中提取關鍵信息。
3. 生成團隊報告:將上述信息整合,自動生成一份簡潔的日報或周報,并發送至團隊群聊。
?
技術棧:
?
· Python 3
· requests 庫 (用于調用Figma API)
· pyyaml 或 toml 庫 (解析本地配置文件)
· markdown 庫 (解析MD文檔)
· smtplib 或 requests (用于發送郵件或Webhook消息到釘釘/飛書)
?
實戰步驟:
?
第一步:獲取Figma設計更新 Figma提供了強大的API。我們需要先獲取個人訪問令牌。
?
```python
import requests
import json
?
# 配置信息(建議存儲在config.yaml中,腳本讀取)
FIGMA_TOKEN = 'your_figma_personal_access_token'
FIGMA_FILE_KEY = 'your_figma_file_key' # 設計文件的Key
?
headers = {'X-FIGMA-TOKEN': FIGMA_TOKEN}
url = f'https://api.figma.com/v1/files/{FIGMA_FILE_KEY}'
?
def get_figma_file_info():
? ? response = requests.get(url, headers=headers)
? ? if response.status_code == 200:
? ? ? ? data = response.json()
? ? ? ? # 提取我們需要的信息:文件名、最后修改時間、預覽圖鏈接
? ? ? ? file_name = data['name']
? ? ? ? last_modified = data['lastModified']
? ? ? ? thumbnail_url = data['thumbnailUrl']
? ? ? ??
? ? ? ? print(f"設計稿 {file_name} 已更新!")
? ? ? ? print(f"最后修改時間:{last_modified}")
? ? ? ? print(f"預覽鏈接:{thumbnail_url}")
? ? ? ??
? ? ? ? return {
? ? ? ? ? ? 'name': file_name,
? ? ? ? ? ? 'update_time': last_modified,
? ? ? ? ? ? 'thumbnail': thumbnail_url
? ? ? ? }
? ? else:
? ? ? ? print(f"請求失敗,錯誤碼:{response.status_code}")
? ? ? ? return None
?
figma_info = get_figma_file_info()
```
?
第二步:解析本地產品需求文檔 假設產品經理使用PRD.md文檔維護需求,并使用特定標簽(如## Version 1.2)標記版本。
?
```python
import re
?
def parse_prd(file_path='./PRD.md'):
? ? with open(file_path, 'r', encoding='utf-8') as f:
? ? ? ? content = f.read()
? ??
? ? # 使用正則表達式查找最新版本的需求內容
? ? # 這個正則表達式匹配 ## Version x.x 直到下一個 ## 開頭的部分
? ? version_pattern = r'(## Version \d+\.\d+)(.*?)(?=##|$)'
? ? matches = re.findall(version_pattern, content, re.S) # re.S讓.匹配包括換行符
? ??
? ? if matches:
? ? ? ? latest_version_title = matches[0][0].strip()
? ? ? ? latest_version_content = matches[0][1].strip()
? ? ? ? print(f"提取到最新需求版本:{latest_version_title}")
? ? ? ? return latest_version_title, latest_version_content
? ? else:
? ? ? ? print("未找到版本需求信息")
? ? ? ? return None, None
?
prd_title, prd_content = parse_prd()
```
?
第三步:生成并發送團隊日報 將前兩步的信息整合,通過郵件或辦公軟件機器人發送。
?
```python
def generate_report(figma_data, prd_title, prd_content):
? ? """生成HTML格式的報告"""
? ? html_content = f"""
? ? <h2>🎉 產品設計每日同步 ({datetime.date.today()})</h2>
? ? <h3>📈 最新設計稿</h3>
? ? <p><strong>名稱:</strong>{figma_data['name']}</p>
? ? <p><strong>更新時間:</strong>{figma_data['update_time']}</p>
? ? <p><strong>預覽:</strong><br><img src="{figma_data['thumbnail']}" width="400"></p>
? ? <h3>📋 最新產品需求</h3>
? ? <p><strong>{prd_title}</strong></p>
? ? <pre>{prd_content}</pre>
? ? <p><i>此郵件由自動化腳本生成,請勿直接回復。</i></p>
? ? """
? ? return html_content
?
# 此處以發送郵件為例
import smtplib
from email.mime.text import MIMEText
from email.header import Header
?
def send_email(html_content):
? ? # 郵件服務器配置
? ? mail_host = "smtp.qq.com" # 例如QQ郵箱SMTP服務器
? ? mail_user = "your_email@qq.com"
? ? mail_pass = "your_authorization_code" # 注意是授權碼,不是密碼
? ??
? ? sender = mail_user
? ? receivers = ['team@yourcompany.com'] # 接收郵箱,團隊群組
? ??
? ? message = MIMEText(html_content, 'html', 'utf-8')
? ? message['From'] = Header("自動化助手", 'utf-8')
? ? message['To'] = Header("產品研發團隊", 'utf-8')
? ? message['Subject'] = Header(f"產品設計日報 {datetime.date.today()}", 'utf-8')
? ??
? ? try:
? ? ? ? smtpObj = smtplib.SMTP_SSL(mail_host, 465) # 端口號
? ? ? ? smtpObj.login(mail_user, mail_pass)
? ? ? ? smtpObj.sendmail(sender, receivers, message.as_string())
? ? ? ? print("郵件發送成功")
? ? except Exception as e:
? ? ? ? print(f"郵件發送失敗: {e}")
?
# 主函數,串聯所有步驟
if __name__ == '__main__':
? ? figma_data = get_figma_file_info()
? ? prd_title, prd_content = parse_prd()
? ? if figma_data and prd_title:
? ? ? ? report = generate_report(figma_data, prd_title, prd_content)
? ? ? ? send_email(report)
```
?
總結與擴展: 這個腳本只是一個起點。你可以將它部署到服務器上,使用crontab(Linux)或計劃任務(Windows)實現每日定時執行。 進一步擴展的思路:
?
· 連接JIRA/Trello API,自動創建或更新開發任務。
· 將報告發送到釘釘/飛書群機器人,效果更佳。
· 添加日志記錄功能,跟蹤腳本運行狀態。
?
通過自動化,你將有效減少團隊溝通成本,確保信息同步的及時性,真正體現軟件開發中的“工程師文化”。
?
---
?