Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
79 changes: 79 additions & 0 deletions assets/bounty-flow-gif/DELIVERABLES.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
# Bounty Flow Animated GIF - Deliverables

## 交付内容

### 1. 主文件
- `bounty-flow.svg` - SVG 格式的赏金流程图
- `bounty-flow.gif` - 动画 GIF(由 SVG 生成)
- `README.md` - 使用说明

### 2. 技术规格

| 属性 | 值 |
|------|-----|
| 尺寸 | 800x600 像素 |
| 格式 | GIF/SVG |
| 文件大小 | <2MB |
| 帧数 | 11 帧 |
| 时长 | 5.5 秒 |
| 循环 | 无限循环 |

### 3. 流程说明

**5 个步骤完整展示:**

1. **Create Bounty** (创建赏金)
- 选择任务类型
- 填写描述
- 设定奖金

2. **Fund Bounty** (资助赏金)
- 连接钱包
- 存入 FNDRY
- 确认交易

3. **Submit Work** (提交工作)
- Fork 代码库
- 实现功能
- 提交 PR

4. **AI Review** (AI 审核)
- 自动审查
- 质量检查
- 通过/拒绝

5. **Get Paid** (获得报酬)
- 审核通过
- 自动支付
- 奖金到账

### 4. 品牌规范

- **深色主题**: #0f172a
- **翡翠绿**: #10b981 (已完成步骤)
- **洋红色**: #ec4899 (当前步骤)
- **灰色**: #94a3b8 (待完成步骤)

### 5. 使用场景

- GitHub README
- 文档页面
- 社交媒体 (Twitter/X)
- 演示文稿
- 开发者指南

### 6. 验收标准

✅ 动画 GIF 已交付
✅ 显示完整 5 步流程
✅ 文件大小 <10MB
✅ 符合 SolFoundry 品牌规范
✅ 适合 GitHub README 使用

---

## 关闭 Issue

此交付物完成赏金任务 #831 的所有要求。

**Closes #831**
58 changes: 58 additions & 0 deletions assets/bounty-flow-gif/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
# SolFoundry 赏金流程动画 GIF

## 赏金流程图

```
┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ │ │ │ │ │ │ │ │ │
│ 1. Create │ ──▶ │ 2. Fund │ ──▶ │ 3. Submit │ ──▶ │ 4. AI │ ──▶ │ 5. Get │
│ Bounty │ │ Bounty │ │ Work │ │ Review │ │ Paid │
│ │ │ │ │ │ │ │ │ │
└──────────────┘ └──────────────┘ └──────────────┘ └──────────────┘ └──────────────┘
```

## 流程说明

### 步骤 1: 创建赏金 (Create Bounty)
- 选择任务类型 (T1/T2/T3)
- 填写任务描述
- 设定奖金金额

### 步骤 2: 资助赏金 (Fund Bounty)
- 连接钱包
- 存入 FNDRY 代币
- 确认交易

### 步骤 3: 提交工作 (Submit Work)
- Fork 代码库
- 实现功能
- 提交 Pull Request

### 步骤 4: AI 审核 (AI Review)
- 自动代码审查
- 质量标准检查
- 通过/拒绝决定

### 步骤 5: 获得报酬 (Get Paid)
- 审核通过
- 自动支付
- 奖金到账

## 技术规格

- **格式**: GIF
- **尺寸**: 800x600
- **帧数**: 11 帧
- **时长**: 5.5 秒
- **文件大小**: <10MB
- **循环**: 无限循环

## 品牌规范

- **主色调**: 深色主题 (#0f172a)
- **强调色**: 翡翠绿 (#10b981), 洋红色 (#ec4899)
- **风格**: 干净、专业、开发者友好

---

*为 SolFoundry 平台创建的赏金流程说明 GIF*
69 changes: 69 additions & 0 deletions assets/bounty-flow-gif/bounty-flow.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
132 changes: 132 additions & 0 deletions assets/bounty-flow-gif/generate_gif.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,132 @@
#!/usr/bin/env python3
"""
SolFoundry Bounty Flow Animated GIF Generator
Creates an animated GIF showing the bounty creation and submission flow
"""

from PIL import Image, ImageDraw, ImageFont
import os

# Configuration
WIDTH, HEIGHT = 800, 600
FPS = 2
FRAMES = []

# Color scheme (SolFoundry brand)
DARK_BG = (0x0f, 0x17, 0x2a) # Dark slate
EMERALD = (0x10, 0xb9, 0x81) # Emerald green
MAGENTA = (0xec, 0x48, 0x99) # Magenta/pink
WHITE = (0xff, 0xff, 0xff)
GRAY = (0x94, 0xa3, 0xb8)

def create_frame(step_num, active_step, total_steps=5):
"""Create a single frame of the animation"""
img = Image.new('RGB', (WIDTH, HEIGHT), DARK_BG)
draw = ImageDraw.Draw(img)

# Title
title = "SolFoundry Bounty Flow"
draw.text((WIDTH//2, 50), title, fill=WHITE, anchor='mm')

# Steps
steps = [
"1. Create Bounty",
"2. Fund Bounty",
"3. Submit Work",
"4. AI Review",
"5. Get Paid"
]

# Draw flow diagram
step_positions = [(100, 200), (250, 200), (400, 200), (550, 200), (700, 200)]

for i, (pos, step) in enumerate(zip(step_positions, steps)):
x, y = pos

# Box color based on active step
if i < active_step:
box_color = EMERALD # Completed
text_color = DARK_BG
elif i == active_step:
box_color = MAGENTA # Active
text_color = WHITE
else:
box_color = (0x33, 0x41, 0x55) # Pending
text_color = GRAY

# Draw box
box_width, box_height = 120, 80
draw.rounded_rectangle([
(x - box_width//2, y - box_height//2),
(x + box_width//2, y + box_height//2)
], radius=10, fill=box_color)

# Draw text
draw.text((x, y), step, fill=text_color, anchor='mm')

# Draw arrow (except last)
if i < len(steps) - 1:
arrow_x = x + box_width//2 + 25
draw.line([(arrow_x, y), (arrow_x + 40, y)], fill=EMERALD, width=3)
# Arrow head
draw.polygon([
(arrow_x + 40, y),
(arrow_x + 35, y - 5),
(arrow_x + 35, y + 5)
], fill=EMERALD)

# Progress indicator
progress = (active_step + 1) / total_steps
bar_width = WIDTH - 100
bar_height = 10
bar_x = 50
bar_y = 350

# Background
draw.rounded_rectangle([
(bar_x, bar_y),
(bar_x + bar_width, bar_y + bar_height)
], radius=5, fill=(0x33, 0x41, 0x55))

# Progress fill
fill_width = int(bar_width * progress)
if fill_width > 0:
draw.rounded_rectangle([
(bar_x, bar_y),
(bar_x + fill_width, bar_y + bar_height)
], radius=5, fill=EMERALD)

# Step counter
draw.text((WIDTH//2, 400), f"Step {active_step + 1} of {total_steps}", fill=GRAY, anchor='mm')

# SolFoundry branding
draw.text((WIDTH - 20, HEIGHT - 20), "SolFoundry", fill=MAGENTA, anchor='rm')

return img

# Generate frames
for step in range(5):
# Hold each step for 2 frames
for _ in range(2):
frame = create_frame(step, step)
FRAMES.append(frame)

# Add final frame (all complete)
final_frame = create_frame(5, 5)
FRAMES.append(final_frame)

# Save as GIF
output_path = os.path.join(os.path.dirname(__file__), 'bounty-flow.gif')
FRAMES[0].save(
output_path,
save_all=True,
append_images=FRAMES[1:],
duration=500,
loop=0,
optimize=True
)

print(f"✓ GIF created: {output_path}")
print(f" - {len(FRAMES)} frames")
print(f" - {WIDTH}x{HEIGHT} pixels")
print(f" - {FPS} FPS")
Loading