File size: 4,439 Bytes
eb120a3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
# 🔧 管理员工具

## 用户配额管理

### 📝 脚本: `admin_adjust_user_quota.py`

用于调整用户的每日调用次数配额。

---

## 🚀 使用方法

### 1. 查看用户状态

```bash
export HF_TOKEN='your_hf_token_here'
python admin_adjust_user_quota.py <username> show
```

**示例**:
```bash
python admin_adjust_user_quota.py learnmlf show
```

**输出**:
```
============================================================
📊 用户状态: learnmlf
============================================================
日期: 2026-01-09
已用次数: 3/4
剩余次数: 1
状态: ✅ 可用
============================================================
```

---

### 2. 重置用户配额(给满4次)

```bash
python admin_adjust_user_quota.py <username> reset
```

**作用**: 将用户今天的已用次数设为0,相当于给他4次新配额

**示例**:
```bash
python admin_adjust_user_quota.py learnmlf reset
```

**流程**:
1. 显示当前状态
2. 要求确认(输入 `yes`)
3. 重置为0
4. 显示更新后的状态

---

### 3. 设置已用次数

```bash
python admin_adjust_user_quota.py <username> set <count>
```

**作用**: 直接设置用户今天已用的次数

**示例**:
```bash
# 设置为已用2次(剩余2次)
python admin_adjust_user_quota.py learnmlf set 2

# 设置为已用0次(剩余4次)
python admin_adjust_user_quota.py learnmlf set 0
```

---

### 4. 增加额外配额

```bash
python admin_adjust_user_quota.py <username> add <extra_count>
```

**作用**: 给用户增加额外的调用次数(超过默认的4次)

**示例**:
```bash
# 给用户额外增加2次配额
python admin_adjust_user_quota.py learnmlf add 2

# 如果用户原本已用3次,增加2次后,变为已用1次(相当于总共6次配额)
```

**逻辑**:
- 原理:减少已用次数 = 增加剩余次数
- 如果用户已用3次,增加2次配额后,已用次数变为1次
- 用户实际可用:4 - 1 = 3次(比重置多2次)

---

## 📊 使用场景

### 场景1: 用户配额用完了,但需要紧急使用

```bash
# 快速重置,给他4次新配额
python admin_adjust_user_quota.py user123 reset
```

### 场景2: VIP用户,给他每天8次配额

```bash
# 假设他今天用了2次,给他增加4次额外配额
python admin_adjust_user_quota.py vip_user add 4
# 结果:已用次数从2变为-2,相当于还能用6次(总共8次)
```

### 场景3: 用户误操作浪费了配额

```bash
# 重置给他4次新配额
python admin_adjust_user_quota.py user456 reset
```

### 场景4: 查看用户使用情况

```bash
# 查看某个用户今天用了多少次
python admin_adjust_user_quota.py user789 show
```

---

## 🔐 安全注意事项

1. **HF_TOKEN 权限**: 需要对 Dataset 有写入权限的 Token
2. **确认操作**: 所有修改操作都需要输入 `yes` 确认
3. **不可撤销**: 修改后立即生效,无法撤销(但可以再次调整)
4. **日期隔离**: 每天的配额独立,修改今天的不影响昨天/明天

---

## 📂 数据存储位置

```
HF Dataset: learnmlf/video-evaluations
├── call_counts/
│   └── 2026-01-09/
│       └── username.json  ← 这个文件被修改
```

**文件格式**:
```json
{
  "user": "username",
  "date": "2026-01-09",
  "count": 2,
  "last_updated": "2026-01-09T12:34:56",
  "note": "Set to 2 by admin"
}
```

---

## 💡 常见问题

### Q: 增加配额会影响其他天吗?
A: 不会。每天的配额独立存储,只影响当天。

### Q: 可以给用户设置负数吗?
A: 可以,使用 `add` 命令增加足够多次数即可。负数意味着用户有"额外"配额。

### Q: 用户看得到管理员的调整吗?
A: 用户只能看到剩余次数,看不到 `note` 字段的备注。

### Q: 如何批量调整多个用户?
A: 可以写个 bash 循环:
```bash
for user in user1 user2 user3; do
    python admin_adjust_user_quota.py $user reset
done
```

---

## 🔄 与应用的集成

用户在前端看到的次数会**实时更新**:
- 应用从 `call_counts/{date}/{username}.json` 读取
- 管理员修改文件后,用户刷新页面即可看到新配额
- 无需重启应用

---

## 📝 日志

所有修改都会在 `note` 字段留下记录:
- `"Reset by admin"` - 管理员重置
- `"Set to X by admin"` - 管理员设置为X
- `"Added X extra calls by admin (was Y)"` - 管理员增加X次(原来是Y)