feat: 2026-07-11 全量更新 - 代办集成+会议室预定+知识迭代修复+UI统一+Bug修复
== 已部署上线 (9项) == - 代办事项真实数据源集成 (企微审批API 8bug修复链) - H5/坐席端 Logo样式统一+绿色背景 - 视频引导页修复 (localStorage key v2) - 坐席端 v9 Vue版本修复 (ElMessage._context) - 截图按钮 v10 修复 (getDisplayMedia user gesture) - 扫码样式恢复+H5扫码登录跳转修复 - H5截图快捷键提示 == 代码完成待部署 (3项) == - 知识迭代3Bug修复 (#8 POST端点/#7 MERGE幂等/#6 过期检查) - 会议室预定-小鱼易联终端 (40文件, 40/40测试通过) - IT资产升级审批推送 (asset_service.py) == 需求文档 (2项) == - 坐席端AI辅助消息框-PRD (4项新功能确认) - 坐席端布局优化建议 v2.0 (7天计划) == 新增文档 == - 日报-2026-07-11.md - 知识迭代Bug修复报告-20260711.md - 会议室预定-部署指南.md - CHANGELOG.md 更新 == 测试 == - test_todo_integration.py: 40/40 - test_meetingroom.py: 40/40 - test_bugfix_ki_suggestions.py: 21/21
This commit is contained in:
@@ -0,0 +1,100 @@
|
||||
#!/usr/bin/env python3
|
||||
"""设计一张精美的IT咨询超时提醒卡片"""
|
||||
from PIL import Image, ImageDraw, ImageFont
|
||||
import os
|
||||
|
||||
# 卡片尺寸
|
||||
WIDTH, HEIGHT = 700, 400
|
||||
|
||||
# 创建图片
|
||||
img = Image.new('RGBA', (WIDTH, HEIGHT), (0, 0, 0, 0))
|
||||
draw = ImageDraw.Draw(img)
|
||||
|
||||
# ============== 背景层 ==============
|
||||
# 渐变背景 (蓝 → 青)
|
||||
for y in range(HEIGHT):
|
||||
ratio = y / HEIGHT
|
||||
r = int(7 + (124 - 7) * ratio) # 7 → 124
|
||||
g = int(193 + (217 - 193) * ratio) # 193 → 217
|
||||
b = int(255 + (245 - 255) * ratio) # 255 → 245
|
||||
draw.line([(0, y), (WIDTH, y)], fill=(r, g, b, 255))
|
||||
|
||||
# ============== 装饰元素 ==============
|
||||
# 顶部装饰条
|
||||
draw.rectangle([0, 0, WIDTH, 6], fill=(255, 255, 255, 80))
|
||||
|
||||
# 底部椭圆高光
|
||||
draw.ellipse([WIDTH//2 - 200, HEIGHT - 80, WIDTH//2 + 200, HEIGHT + 20],
|
||||
fill=(255, 255, 255, 30))
|
||||
|
||||
# ============== 主标题 ==============
|
||||
try:
|
||||
title_font = ImageFont.truetype("/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf", 42)
|
||||
subtitle_font = ImageFont.truetype("/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf", 26)
|
||||
button_font = ImageFont.truetype("/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf", 32)
|
||||
time_font = ImageFont.truetype("/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf", 56)
|
||||
except:
|
||||
title_font = ImageFont.load_default()
|
||||
subtitle_font = ImageFont.load_default()
|
||||
button_font = ImageFont.load_default()
|
||||
time_font = ImageFont.load_default()
|
||||
|
||||
# 标题
|
||||
draw.text((50, 50), "🔔 您的IT咨询", fill=(255, 255, 255), font=title_font)
|
||||
|
||||
# 副标题
|
||||
draw.text((50, 110), "将会在 2 分钟后关闭", fill=(220, 240, 255), font=subtitle_font)
|
||||
|
||||
# ============== 3D水晶按钮 ==============
|
||||
btn_x, btn_y = 50, 200
|
||||
btn_w, btn_h = 600, 90
|
||||
|
||||
# 1. 阴影层 (偏移)
|
||||
shadow_offset = 8
|
||||
draw.rounded_rectangle(
|
||||
[btn_x + shadow_offset, btn_y + shadow_offset,
|
||||
btn_x + btn_w + shadow_offset, btn_y + btn_h + shadow_offset],
|
||||
radius=20, fill=(0, 80, 150, 120))
|
||||
|
||||
# 2. 按钮主体 (渐变)
|
||||
for i in range(btn_h):
|
||||
ratio = i / btn_h
|
||||
# 蓝 → 青渐变
|
||||
r = int(7 + (0 - 7) * ratio)
|
||||
g = int(193 + (200 - 193) * ratio)
|
||||
b = int(255 + (220 - 255) * ratio)
|
||||
draw.rectangle(
|
||||
[btn_x, btn_y + i, btn_x + btn_w, btn_y + i + 1],
|
||||
fill=(r, g, b, 255))
|
||||
|
||||
# 3. 高光层 (水晶效果)
|
||||
# 顶部高光
|
||||
draw.rounded_rectangle(
|
||||
[btn_x, btn_y, btn_x + btn_w, btn_y + btn_h // 2.5],
|
||||
radius=20, fill=(255, 255, 255, 60))
|
||||
|
||||
# 中间高光线
|
||||
draw.line([(btn_x + 30, btn_y + 25), (btn_x + btn_w - 30, btn_y + 25)],
|
||||
fill=(255, 255, 255, 100), width=3)
|
||||
|
||||
# 4. 按钮边框
|
||||
draw.rounded_rectangle(
|
||||
[btn_x, btn_y, btn_x + btn_w, btn_y + btn_h],
|
||||
radius=20, outline=(255, 255, 255, 80), width=2)
|
||||
|
||||
# 5. 按钮文字
|
||||
btn_text = "⚡ 立即回复"
|
||||
text_bbox = draw.textbbox((0, 0), btn_text, font=button_font)
|
||||
text_width = text_bbox[2] - text_bbox[0]
|
||||
draw.text((btn_x + (btn_w - text_width) // 2, btn_y + (btn_h - 28) // 2),
|
||||
btn_text, fill=(255, 255, 255), font=button_font)
|
||||
|
||||
# ============== 底部提示 ==============
|
||||
draw.text((50, 320), "请尽快回复坐席,否则咨询将自动结束",
|
||||
fill=(200, 220, 240, 200), font=subtitle_font)
|
||||
|
||||
# 保存
|
||||
output_path = "/tmp/it_reminder_card.png"
|
||||
img.save(output_path, format='PNG')
|
||||
print(f"✅ 卡片已生成: {output_path}")
|
||||
print(f" 尺寸: {WIDTH}x{HEIGHT}")
|
||||
Reference in New Issue
Block a user