面向企业级产品开发的自动化脚本实战
引言: 在产品开发团队中,设计师、产品经理和工程师之间的协作常常伴随着大量重复性工作:手动整理设计稿链接、更新产品需求文档、同步项目状态...这些工作不仅耗时,还容易出错。本文将带你编写一个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,自动创建或更新开发任务。
· 将报告发送到钉钉/飞书群机器人,效果更佳。
· 添加日志记录功能,跟踪脚本运行状态。
通过自动化,你将有效减少团队沟通成本,确保信息同步的及时性,真正体现软件开发中的“工程师文化”。
---