hydro-ai-helper 1.17.0 → 1.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/README.md +73 -264
  2. package/dist/handlers/adminConfigHandler.js +11 -7
  3. package/dist/handlers/adminConfigHandler.js.map +1 -1
  4. package/dist/handlers/adminHandler.js +33 -21
  5. package/dist/handlers/adminHandler.js.map +1 -1
  6. package/dist/handlers/analyticsHandler.js +13 -22
  7. package/dist/handlers/analyticsHandler.js.map +1 -1
  8. package/dist/handlers/costAnalyticsHandler.js +5 -4
  9. package/dist/handlers/costAnalyticsHandler.js.map +1 -1
  10. package/dist/handlers/exportHandler.js +6 -5
  11. package/dist/handlers/exportHandler.js.map +1 -1
  12. package/dist/handlers/feedbackHandler.js +8 -7
  13. package/dist/handlers/feedbackHandler.js.map +1 -1
  14. package/dist/handlers/studentHandler.js +73 -39
  15. package/dist/handlers/studentHandler.js.map +1 -1
  16. package/dist/handlers/teacherHandler.js +15 -17
  17. package/dist/handlers/teacherHandler.js.map +1 -1
  18. package/dist/handlers/updateHandler.js +36 -20
  19. package/dist/handlers/updateHandler.js.map +1 -1
  20. package/dist/handlers/versionHandler.js +1 -1
  21. package/dist/handlers/versionHandler.js.map +1 -1
  22. package/dist/index.js +25 -0
  23. package/dist/index.js.map +1 -1
  24. package/dist/lib/crypto.js +7 -7
  25. package/dist/lib/crypto.js.map +1 -1
  26. package/dist/lib/rateLimitHelper.js +2 -2
  27. package/dist/lib/rateLimitHelper.js.map +1 -1
  28. package/dist/models/aiConfig.js +2 -2
  29. package/dist/models/aiConfig.js.map +1 -1
  30. package/dist/models/pluginInstall.js +33 -5
  31. package/dist/models/pluginInstall.js.map +1 -1
  32. package/dist/services/budgetService.js +8 -0
  33. package/dist/services/budgetService.js.map +1 -1
  34. package/dist/services/errorReporter.js +35 -4
  35. package/dist/services/errorReporter.js.map +1 -1
  36. package/dist/services/openaiClient.js +82 -31
  37. package/dist/services/openaiClient.js.map +1 -1
  38. package/dist/services/outputSafetyService.js +6 -4
  39. package/dist/services/outputSafetyService.js.map +1 -1
  40. package/dist/services/promptService.js +12 -8
  41. package/dist/services/promptService.js.map +1 -1
  42. package/dist/services/updateService.js +246 -249
  43. package/dist/services/updateService.js.map +1 -1
  44. package/dist/utils/i18nHelper.js +16 -0
  45. package/dist/utils/i18nHelper.js.map +1 -0
  46. package/frontend/admin/BudgetConfigForm.tsx +11 -10
  47. package/frontend/admin/ConfigPanel.tsx +37 -36
  48. package/frontend/admin/EndpointManager.tsx +36 -35
  49. package/frontend/admin/FeedbackForm.tsx +21 -20
  50. package/frontend/admin/JailbreakLogsViewer.tsx +16 -15
  51. package/frontend/admin/TelemetrySettings.tsx +14 -13
  52. package/frontend/admin/VersionBadge.tsx +40 -38
  53. package/frontend/components/AIHelperDashboard.tsx +7 -6
  54. package/frontend/components/ErrorBoundary.tsx +4 -3
  55. package/frontend/problem_detail.page.tsx +6 -5
  56. package/frontend/student/AIAssistantPanel.tsx +10 -9
  57. package/frontend/student/ChatInput.tsx +18 -16
  58. package/frontend/student/ChatMessageList.tsx +11 -10
  59. package/frontend/student/ThinkingBlock.tsx +2 -1
  60. package/frontend/student/hooks/useChatSession.ts +21 -20
  61. package/frontend/student/types.ts +3 -3
  62. package/frontend/teacher/AnalyticsPage.tsx +22 -21
  63. package/frontend/teacher/ClassAnalyticsTable.tsx +9 -8
  64. package/frontend/teacher/ConversationDetail.tsx +31 -29
  65. package/frontend/teacher/ConversationDetailModal.tsx +20 -19
  66. package/frontend/teacher/ConversationList.tsx +38 -37
  67. package/frontend/teacher/CostDashboard.tsx +26 -25
  68. package/frontend/teacher/ExportDialog.tsx +17 -16
  69. package/frontend/teacher/ProblemAnalyticsTable.tsx +18 -17
  70. package/frontend/teacher/StudentAnalyticsTable.tsx +9 -8
  71. package/frontend/teacher/analyticsTypes.ts +18 -13
  72. package/frontend/test.page.ts +4 -4
  73. package/frontend/utils/conversationStorage.ts +3 -3
  74. package/frontend/utils/formatDate.ts +2 -1
  75. package/locales/en.yaml +705 -0
  76. package/locales/zh.yaml +636 -4
  77. package/package.json +4 -3
package/README.md CHANGED
@@ -18,101 +18,68 @@
18
18
 
19
19
  A teaching-first AI tutoring plugin for [HydroOJ](https://github.com/hydro-dev/Hydro) that provides guided hints and thought-provoking questions — never complete solutions.
20
20
 
21
- ## Features
22
-
23
- ### Multi-turn Conversations with Context
24
-
25
- - **Follow-up questions**: Students can ask follow-ups within the same conversation; the AI references prior context
26
- - **Persistent history**: Conversations auto-restore after page refresh, isolated per problem
27
- - **Smart truncation**: Automatically trims history beyond 7 messages to prevent token overflow
28
-
29
- ### Selection-based Q&A ("I Don't Understand")
30
-
31
- - **Precise follow-up**: Select confusing text in an AI reply and click "I don't understand"
32
- - **Highlight preservation**: Selected text stays highlighted when the button is clicked
33
- - **Concise explanations**: Targeted explanations limited to 2 paragraphs
34
- - **Works on history**: Can be used on any previous AI response
35
-
36
- ### Differentiated Question Types
21
+ ## Screenshots
37
22
 
38
- | Type | Description | Response Style |
39
- | --- | --- | --- |
40
- | Understand the Problem | Unclear about problem requirements | Detailed, step-by-step explanation |
41
- | Organize Approach | Need help structuring a solution | Structured framework, layered guidance |
42
- | Debug Errors | Code has issues, need root cause | Concise and direct, quick diagnosis |
43
- | Code Optimization | Already AC'd, seeking efficiency | Complexity analysis, heuristic hints |
44
-
45
- ### Real-time Streaming
46
-
47
- - **SSE streaming**: AI responses appear character-by-character in real time
48
- - **Error classification & retry**: Frontend shows error types (rate limit / timeout / network) with one-click retry
23
+ **Student chat panel integrated with problem view:**
49
24
 
50
- ### Code Optimization
25
+ <img src="assets/screenshots/1.png" alt="Student panel - wide screen" width="800">
51
26
 
52
- - **AC-only**: The "Code Optimization" option appears only for users who have passed the problem
53
- - **Real-time detection**: After an AC submission, the optimization option appears automatically — no page refresh needed
54
- - **Code loading confirmation**: A dialog lets you choose between loading your AC code or using the current editor code
55
- - **Heuristic guidance**: AI analyzes time/space complexity and suggests optimization directions without giving code
56
- - **Server-side validation**: Backend verifies AC status to prevent bypassing frontend restrictions
27
+ <img src="assets/screenshots/2.png" alt="Student panel - narrow screen" width="400">
57
28
 
58
- ### API Usage & Cost Control
29
+ **Admin dashboard:**
59
30
 
60
- - **Token tracking**: Records input/output token counts for every AI call
61
- - **Budget limits**: Set monthly or total budget caps; auto-alert or pause service when thresholds are reached
62
- - **Cost dashboard**: Visualize API cost trends and distribution
31
+ <img src="assets/screenshots/3.png" alt="Admin - conversations" width="800">
63
32
 
64
- ### Unified Management Portal
33
+ <img src="assets/screenshots/4.png" alt="Admin - analytics" width="800">
65
34
 
66
- - **Single menu entry**: One "AI Assistant" entry in the control panel, replacing three separate menus
67
- - **Tab navigation**: Switch between Conversations, Analytics, and Configuration tabs
68
- - **URL parameters**: Direct link with `?tab=conversations|analytics|config`
69
- - **Browser navigation**: Tab switches support browser back/forward buttons
35
+ <img src="assets/screenshots/5.png" alt="Admin - configuration" width="800">
70
36
 
71
- ### Teacher Analytics
37
+ <img src="assets/screenshots/6.png" alt="Admin - jailbreak logs" width="400">
72
38
 
73
- - **Multi-dimensional stats**: View AI usage by class, student, or problem
74
- - **Sortable tables**: Click column headers to sort ascending/descending
75
- - **Quick navigation**: Click a problem name to go to its detail page; click conversation count to jump to filtered records
76
- - **Data export**: CSV export support
39
+ <img src="assets/screenshots/7.png" alt="Admin - cost dashboard" width="500">
77
40
 
78
- ### Multi-endpoint & Model Management
41
+ ## Features
79
42
 
80
- - **Multiple endpoints**: Add multiple API endpoints for load balancing and failover
81
- - **Auto model discovery**: Fetches available models from the `/models` endpoint automatically
82
- - **Fallback mechanism**: Select multiple models with priority ordering; auto-switches to fallback when the primary is unavailable
83
- - **Drag-to-reorder**: Drag model cards to adjust priority
84
- - **Encrypted API keys**: API keys stored with AES-256-GCM encryption
43
+ ### For Students
85
44
 
86
- ### Security
45
+ - **AI chat panel on problem pages** — auto-reads the problem statement and supports optional code attachment
46
+ - **Differentiated question types** — choose "Understand the Problem", "Organize Approach", "Debug Errors", or "Code Optimization" (AC-only) for tailored guidance
47
+ - **Multi-turn conversations** — ask follow-ups within the same conversation; history persists across page refreshes
48
+ - **"I Don't Understand"** — select confusing text in an AI reply for a concise, targeted explanation
49
+ - **Real-time streaming** — AI responses appear character-by-character via SSE
50
+ - **LaTeX rendering** — math formulas in AI responses are rendered automatically
51
+ - **Responsive UI** — LeetCode-style three-column layout on wide screens; floating panel on narrow screens
87
52
 
88
- - **Jailbreak detection**: Multi-layer injection prevention (input / prompt / output) blocks attempts to bypass tutoring guardrails
89
- - **Cross-turn protection**: Anti-jailbreak detection across conversation turns to prevent gradual bypasses
90
- - **CSRF protection**: CSRF token validation on critical operations
91
- - **SSRF prevention**: URL validation on API endpoint configuration to prevent internal network probing
92
- - **Allowlist mechanism**: Trusted problem content fetched server-side to avoid false positives
93
- - **Audit log**: Paginated jailbreak log viewer for administrators
53
+ ### For Teachers
94
54
 
95
- ### Modern UI
55
+ - **Conversation viewer** — browse student conversation history with filters (time / problem / class / student)
56
+ - **Usage analytics** — multi-dimensional stats with sortable tables and question-type distribution
57
+ - **Data export** — CSV export with optional anonymization
96
58
 
97
- - **Three-column layout**: On wide screens (≥1200px), auto-switches to a LeetCode-style layout (Problem | Code | AI Chat)
98
- - **Responsive design**: Floating chat panel on narrow screens
99
- - **Resizable panel**: Drag the AI panel's left edge to resize (300–900px)
100
- - **LaTeX rendering**: Math formulas in AI responses are rendered automatically
101
- - **Error boundaries**: Component-level error isolation — partial failures don't crash the whole UI
102
- - **Unified theme**: Purple gradient accent, rounded card design
59
+ ### For Admins
103
60
 
104
- ## Core Capabilities at a Glance
61
+ - **Unified management portal** one "AI Assistant" entry with tab navigation (Conversations / Analytics / Configuration)
62
+ - **Multi-endpoint & model management** — add multiple API endpoints, auto-discover models, drag to set priority with automatic failover
63
+ - **Cost control** — token usage tracking, budget limits, cost dashboard
64
+ - **Rate limiting** — configurable per-user request limits
65
+ - **Custom system prompt** — override the built-in tutoring prompt
66
+ - **One-click update** — check and install new versions from the admin panel
105
67
 
106
- **Students**: Floating chat panel on problem pages, auto-reads problem statement, question type selection, optional code attachment, multi-turn conversations, selection-based Q&A, code optimization (post-AC), SSE streaming, LaTeX rendering
68
+ <details>
69
+ <summary><b>Security</b></summary>
107
70
 
108
- **Teachers**: View student conversations, filter by time / problem / class / student, sortable stats tables, question type distribution, CSV export (with optional anonymization)
71
+ - Multi-layer jailbreak detection (input / prompt / output) with cross-turn protection
72
+ - CSRF token validation on critical operations
73
+ - SSRF prevention on API endpoint configuration
74
+ - AES-256-GCM encrypted API key storage
75
+ - Paginated jailbreak audit logs
109
76
 
110
- **Admins**: Unified AI management portal, configure multiple API endpoints, auto-fetch model lists, model priority & fallback, rate limiting, custom system prompt, paginated jailbreak logs, cost dashboard, one-click updates
77
+ </details>
111
78
 
112
79
  ## Installation
113
80
 
114
81
  ```bash
115
- # Clone and build (choose one)
82
+ # Clone (choose one)
116
83
  git clone https://github.com/AltureT/hydro-ai-helper.git # GitHub
117
84
  git clone https://gitee.com/alture/hydro-ai-helper.git # Gitee (mirror)
118
85
 
@@ -143,31 +110,10 @@ Generate a random key: `openssl rand -base64 24 | head -c 32`
143
110
 
144
111
  After logging in, go to **Control Panel → AI Assistant** (`/ai-helper`), then switch to the "AI Configuration" tab:
145
112
 
146
- #### API Endpoint Configuration
147
-
148
- You can add multiple API endpoints. Each endpoint includes:
149
-
150
- | Field | Description | Example |
151
- | --- | --- | --- |
152
- | Endpoint Name | Custom label | `Primary`, `Backup` |
153
- | API Base URL | AI service URL | `https://api.openai.com/v1` |
154
- | API Key | API key (encrypted at rest) | `sk-...` |
155
- | Enabled | Whether to use in AI calls | On / Off |
156
-
157
- Click "Fetch Models" to auto-discover available models for the endpoint.
158
-
159
- #### Model Selection & Priority
160
-
161
- Select models from all enabled endpoints and drag to reorder priority. When the primary model is unavailable (rate-limited, server error, etc.), the system automatically falls back to the next model in line.
162
-
163
- #### Other Settings
164
-
165
- | Field | Description | Default |
166
- | --- | --- | --- |
167
- | Rate Limit | Requests per user per minute | `5` |
168
- | System Prompt | AI system prompt | Built-in tutoring prompt |
169
-
170
- Click "Test Connection" to verify, then save.
113
+ 1. **Add API endpoints** — fill in endpoint name, API Base URL, and API Key, then click "Fetch Models"
114
+ 2. **Select models & set priority** — pick models from enabled endpoints and drag to reorder; failover is automatic
115
+ 3. **Adjust settings** rate limit (default: 5/min/user), custom system prompt
116
+ 4. **Test & save** — click "Test Connection" to verify, then save
171
117
 
172
118
  ## Usage
173
119
 
@@ -178,88 +124,27 @@ Click "Test Connection" to verify, then save.
178
124
  3. Optional: describe your understanding and what you've tried
179
125
  4. Optional: attach your current code
180
126
  5. Send and receive guided AI responses
181
- 6. If something is unclear, select the text and click "I don't understand" to ask a follow-up
127
+ 6. If something is unclear, select the text and click "I don't understand" for a follow-up
182
128
  7. After AC, use the "Code Optimization" feature for performance improvement suggestions
183
129
 
184
130
  ### Teachers / Admins
185
131
 
186
132
  Go to **Control Panel → AI Assistant** (`/ai-helper`) and switch between tabs:
187
133
 
188
- - **Conversations** tab: View student conversation history; filter by time, problem, class, or student
189
- - **Analytics** tab: View AI usage statistics with multi-dimensional analysis
190
- - **AI Configuration** tab (admins only): Configure API endpoints, model priority, system prompt, etc.
191
-
192
- URL parameter shortcuts: `/ai-helper?tab=analytics`, `/ai-helper?tab=config`
193
-
194
- Data export: Click "Export Data" on the conversations page.
195
-
196
- ### Screenshots
197
-
198
- **Student chat panel integrated with problem view:**
199
-
200
- <img src="assets/screenshots/1.png" alt="Student panel example" width="800">
201
-
202
- <img src="assets/screenshots/2.png" alt="Student panel example" width="400">
203
-
204
- **Admin dashboard:**
205
-
206
- <img src="assets/screenshots/3.png" alt="Admin dashboard" width="800">
207
-
208
- <img src="assets/screenshots/4.png" alt="Admin dashboard" width="800">
209
-
210
- <img src="assets/screenshots/5.png" alt="Admin dashboard" width="800">
211
-
212
- <img src="assets/screenshots/6.png" alt="Admin dashboard" width="400">
213
-
214
- <img src="assets/screenshots/7.png" alt="Admin dashboard" width="500">
215
-
216
- ## Project Structure
217
-
218
- ```
219
- hydro-ai-helper/
220
- ├── src/ # Backend (TypeScript)
221
- │ ├── models/ # Data models
222
- │ ├── services/ # Business logic
223
- │ ├── handlers/ # Route handlers
224
- │ └── lib/ # Utilities
225
- ├── frontend/ # Frontend (React)
226
- │ ├── student/ # Student components
227
- │ ├── teacher/ # Teacher components
228
- │ ├── admin/ # Admin components
229
- │ └── components/ # Shared components (e.g., Tab container)
230
- └── dist/ # Build output
231
- ```
232
-
233
- ## Development
234
-
235
- ```bash
236
- npm run dev # Development mode (watch)
237
- npm run build # Build
238
- npm run lint # Lint
239
- ```
134
+ - **Conversations** view student conversation history with multi-dimensional filters
135
+ - **Analytics** AI usage statistics and question-type distribution
136
+ - **AI Configuration** (admins only) API endpoints, model priority, system prompt, cost dashboard
240
137
 
241
138
  ## Telemetry & Privacy
242
139
 
243
- ### Data Collection
140
+ This plugin collects **anonymous statistics** (installation count, active users, conversation count, plugin version) to display GitHub badges and guide feature development.
244
141
 
245
- To better understand plugin usage and improve features, this plugin collects the following **anonymous statistics**:
142
+ - Fully anonymous (random UUID, no PII); domain IDs are SHA-256 hashed
143
+ - Only aggregated counts — no code, conversations, or personal data
144
+ - Auto-cleanup after 90 days of inactivity
246
145
 
247
- - Installation count (deduplicated via random UUID)
248
- - Active users in the last 7 days (aggregated)
249
- - Total conversation count
250
- - Plugin version
251
-
252
- ### Privacy Measures
253
-
254
- - **Fully anonymous**: Uses random UUIDs; no personally identifiable information is collected
255
- - **Hashed domains**: Domain IDs are SHA-256 hashed
256
- - **Aggregated only**: Only user and conversation counts — no content is recorded
257
- - **Auto-cleanup**: Data not reported for 90 days is automatically deleted
258
- - **User-controlled**: Telemetry can be disabled via admin configuration
259
-
260
- ### How to Disable Telemetry
261
-
262
- If you prefer not to send statistics, set this in your database:
146
+ <details>
147
+ <summary><b>How to disable telemetry</b></summary>
263
148
 
264
149
  ```javascript
265
150
  // Connect to MongoDB
@@ -272,19 +157,9 @@ db.ai_plugin_install.updateOne(
272
157
  )
273
158
  ```
274
159
 
275
- The plugin continues to work normally after disabling telemetry — no data will be reported.
276
-
277
- ### Data Usage
160
+ The plugin continues to work normally after disabling.
278
161
 
279
- Collected data is used solely for:
280
- - Displaying installation count, active users, conversations, and version badges on the GitHub README
281
- - Understanding usage trends to prioritize feature development
282
- - Assessing plugin stability and performance
283
-
284
- **Our commitment**:
285
- - We will NOT sell or share data with third parties
286
- - We will NOT collect student code, problem content, or conversation records
287
- - We will NOT track individual user behavior
162
+ </details>
288
163
 
289
164
  ## Changelog
290
165
 
@@ -298,14 +173,11 @@ Collected data is used solely for:
298
173
  <details>
299
174
  <summary><b>v1.14.0</b> — SSE Streaming & Cost Control & Security Hardening</summary>
300
175
 
301
- - Implement SSE streaming output — AI responses display character-by-character in real time
176
+ - SSE streaming output — AI responses display character-by-character in real time
302
177
  - API cost control: token usage tracking, budget limits, cost dashboard
303
178
  - Error classification in frontend with retry/cancel support
304
- - Frontend refactor: component splitting, ErrorBoundary, LaTeX rendering, responsive tables
305
- - Security hardening: CSRF protection, domain isolation, tightened endpoint permissions, 3-layer prompt injection defense, enhanced API key encryption, SSRF prevention
179
+ - Security hardening: CSRF protection, SSRF prevention, 3-layer prompt injection defense
306
180
  - Support AI assistant in homework/contest mode
307
- - Test coverage increased from 34% to 45% with 191 new test cases
308
- - Fix plugin crash when ENCRYPTION_KEY is not set
309
181
 
310
182
  </details>
311
183
 
@@ -314,106 +186,43 @@ Collected data is used solely for:
314
186
 
315
187
  - Integrate judge data to help AI analyze errors
316
188
  - Contest mode restrictions on AI usage
317
- - Prompt consolidation and optimization — ~45% token reduction
318
- - Auto-check "attach code" when "Debug Errors" type is selected
319
- - Fix session guard and orphaned session issues
189
+ - Prompt optimization — ~45% token reduction
320
190
 
321
191
  </details>
322
192
 
323
193
  <details>
324
194
  <summary><b>v1.11.0</b> — AI Response Style & Anti-Jailbreak Enhancement</summary>
325
195
 
326
- - Remove templated AI response style for more natural guided answers
327
- - Strengthen multi-turn anti-jailbreak detection to prevent gradual bypasses
328
-
329
- </details>
330
-
331
- <details>
332
- <summary><b>v1.10.x</b> — Telemetry & One-click Update Improvements</summary>
333
-
334
- - Add anonymous telemetry statistics and GitHub badges
335
- - Question type statistics (per-problem dimension)
336
- - One-click update improvements: streaming progress display, switch to HydroOJ's official pm2 restart method
337
- - Auto-recover expired sessions
338
- - Support Volcengine Endpoint ID format for model fetching
339
-
340
- </details>
341
-
342
- <details>
343
- <summary><b>v1.9.0</b> — Security Hardening</summary>
344
-
345
- - Comprehensive security audit and hardening (P0 + P1 level)
346
- - One-click update security fixes
347
- - npm auto-publish workflow
348
-
349
- </details>
350
-
351
- <details>
352
- <summary><b>v1.8.x</b> — Code Optimization Feature</summary>
353
-
354
- - Add "Code Optimization" question type (AC-only)
355
- - Real-time AC status detection with auto-displayed optimization option
356
- - Code loading confirmation dialog
357
- - Support for Doubao and other domestic LLM model fetching
358
- - Rate limit configuration fixes
359
-
360
- </details>
361
-
362
- <details>
363
- <summary><b>v1.6.0</b> — Unified Management Portal</summary>
364
-
365
- - Consolidate three separate menus into a single "AI Assistant" entry
366
- - Tab navigation: Conversations / Analytics / Configuration
367
- - Resizable AI panel width
368
-
369
- </details>
370
-
371
- <details>
372
- <summary><b>v1.5.0</b> — Panel Resizing & CI</summary>
373
-
374
- - Draggable AI panel width adjustment
375
- - GitHub → Gitee auto-sync workflow
376
-
377
- </details>
378
-
379
- <details>
380
- <summary><b>v1.4.0</b> — Multi-endpoint Configuration</summary>
381
-
382
- - Multiple API endpoint configuration with auto model discovery
383
- - Model priority fallback mechanism
384
- - AES-256-GCM encrypted API key storage
385
-
386
- </details>
387
-
388
- <details>
389
- <summary><b>v1.3.0</b> — One-click Update</summary>
390
-
391
- - One-click plugin update (dual-repo version detection: GitHub + Gitee)
392
- - Domain isolation and multi-dimensional analytics
196
+ - More natural guided AI responses
197
+ - Strengthen multi-turn anti-jailbreak detection
393
198
 
394
199
  </details>
395
200
 
396
201
  <details>
397
- <summary><b>v1.2.0</b> — Question Type Enhancement</summary>
202
+ <summary><b>v1.10.x</b> — Telemetry & One-click Update</summary>
398
203
 
399
- - Add differentiated question types (Understand / Approach / Debug)
204
+ - Anonymous telemetry statistics and GitHub badges
205
+ - One-click update with streaming progress display
400
206
 
401
207
  </details>
402
208
 
403
209
  <details>
404
- <summary><b>v1.0.0</b> Initial Release</summary>
210
+ <summary><b>v1.9.0 and earlier</b></summary>
405
211
 
406
- - AI-assisted learning chat panel
407
- - Multi-turn conversations with context
408
- - Selection-based Q&A
409
- - Teacher conversation viewer with data export
410
- - Admin API configuration and custom system prompt
212
+ - v1.9.0: Comprehensive security audit and hardening
213
+ - v1.8.x: "Code Optimization" question type (AC-only), real-time AC detection
214
+ - v1.6.0: Unified management portal with tab navigation
215
+ - v1.5.0: Draggable AI panel width
216
+ - v1.4.0: Multi-endpoint configuration with model priority fallback
217
+ - v1.3.0: One-click plugin update, domain isolation
218
+ - v1.2.0: Differentiated question types
219
+ - v1.0.0: Initial release — AI chat, multi-turn conversations, selection-based Q&A
411
220
 
412
221
  </details>
413
222
 
414
223
  ## About
415
224
 
416
- This project is a third-party plugin for the [HydroOJ](https://github.com/hydro-dev/Hydro) open-source online judge system, developed with AI assistance. Feel free to open an Issue for questions or suggestions.
225
+ A third-party plugin for [HydroOJ](https://github.com/hydro-dev/Hydro). Feel free to open an Issue for questions or suggestions.
417
226
 
418
227
  ## License
419
228
 
@@ -42,6 +42,7 @@ const hydrooj_1 = require("hydrooj");
42
42
  const crypto_1 = require("../lib/crypto");
43
43
  const jailbreakRules_1 = require("../constants/jailbreakRules");
44
44
  const csrfHelper_1 = require("../lib/csrfHelper");
45
+ const i18nHelper_1 = require("../utils/i18nHelper");
45
46
  /**
46
47
  * AdminConfigHandler - AI 配置页面
47
48
  * GET /ai-helper/admin/config
@@ -164,7 +165,7 @@ class AdminConfigHandler extends hydrooj_1.Handler {
164
165
  catch (err) {
165
166
  console.error('[AI Helper] AdminConfigHandler error:', err instanceof Error ? err.message : 'unknown');
166
167
  this.response.status = 500;
167
- this.response.body = { error: '服务器内部错误' };
168
+ this.response.body = { error: this.translate('ai_helper_err_internal'), code: 'INTERNAL_ERROR' };
168
169
  this.response.type = 'application/json';
169
170
  }
170
171
  }
@@ -199,7 +200,8 @@ class AdminConfigHandler extends hydrooj_1.Handler {
199
200
  catch (_err) {
200
201
  this.response.status = 500;
201
202
  this.response.body = {
202
- error: `端点 "${ep.name}" 的 API Key 加密失败`
203
+ error: (0, i18nHelper_1.translateWithParams)(this, 'ai_helper_config_endpoint_encrypt_failed', ep.name),
204
+ code: 'ENCRYPT_FAILED',
203
205
  };
204
206
  this.response.type = 'application/json';
205
207
  return;
@@ -243,7 +245,7 @@ class AdminConfigHandler extends hydrooj_1.Handler {
243
245
  const rate = parseInt(String(body.rateLimitPerMinute), 10);
244
246
  if (Number.isNaN(rate) || rate < 0) {
245
247
  this.response.status = 400;
246
- this.response.body = { error: 'rateLimitPerMinute 必须为非负整数' };
248
+ this.response.body = { error: this.translate('ai_helper_config_rate_limit_invalid'), code: 'INVALID_RATE_LIMIT' };
247
249
  this.response.type = 'application/json';
248
250
  return;
249
251
  }
@@ -253,7 +255,7 @@ class AdminConfigHandler extends hydrooj_1.Handler {
253
255
  const timeout = parseInt(String(body.timeoutSeconds), 10);
254
256
  if (timeout <= 0) {
255
257
  this.response.status = 400;
256
- this.response.body = { error: 'timeoutSeconds 必须大于 0' };
258
+ this.response.body = { error: this.translate('ai_helper_config_timeout_invalid'), code: 'INVALID_TIMEOUT' };
257
259
  this.response.type = 'application/json';
258
260
  return;
259
261
  }
@@ -292,7 +294,8 @@ class AdminConfigHandler extends hydrooj_1.Handler {
292
294
  catch (_err) {
293
295
  this.response.status = 500;
294
296
  this.response.body = {
295
- error: 'API Key 加密失败'
297
+ error: this.translate('ai_helper_config_apikey_encrypt_failed'),
298
+ code: 'ENCRYPT_FAILED',
296
299
  };
297
300
  this.response.type = 'application/json';
298
301
  return;
@@ -374,7 +377,8 @@ class AdminConfigHandler extends hydrooj_1.Handler {
374
377
  console.error('[AdminConfigHandler] 更新配置失败:', err instanceof Error ? err.message : 'unknown');
375
378
  this.response.status = 500;
376
379
  this.response.body = {
377
- error: '更新配置失败'
380
+ error: this.translate('ai_helper_config_update_failed'),
381
+ code: 'CONFIG_UPDATE_FAILED',
378
382
  };
379
383
  this.response.type = 'application/json';
380
384
  }
@@ -403,7 +407,7 @@ class JailbreakLogsHandler extends hydrooj_1.Handler {
403
407
  catch (err) {
404
408
  console.error('[AI Helper] JailbreakLogsHandler error:', err instanceof Error ? err.message : 'unknown');
405
409
  this.response.status = 500;
406
- this.response.body = { error: '获取越狱日志失败' };
410
+ this.response.body = { error: this.translate('ai_helper_config_jailbreak_logs_failed'), code: 'JAILBREAK_LOGS_FAILED' };
407
411
  this.response.type = 'application/json';
408
412
  }
409
413
  }
@@ -1 +1 @@
1
- {"version":3,"file":"adminConfigHandler.js","sourceRoot":"","sources":["../../src/handlers/adminConfigHandler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"adminConfigHandler.js","sourceRoot":"","sources":["../../src/handlers/adminConfigHandler.ts"],"names":[],"mappings":"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"}