muboboev commited on
Commit
3c7fdc7
·
verified ·
1 Parent(s): 462fd49

Подэтап 3.3 — Progress Tracking

Browse files

Запись завершённых заданий в ProgressRecord.

Подсчёт процентов освоения.

Генерация индивидуальных отчётов.

data-architecture.html CHANGED
@@ -55,6 +55,7 @@
55
  <a href="learning-engine.html" class="hover:text-indigo-400 transition-colors">Learning Engine</a>
56
  <a href="auth.html" class="hover:text-indigo-400 transition-colors">Login</a>
57
  <a href="select-role.html" class="hover:text-indigo-400 transition-colors">Roles</a>
 
58
  </div>
59
  </nav>
60
 
@@ -127,9 +128,23 @@
127
  <i data-feather="activity" class="text-indigo-400 mr-2"></i>
128
  Progress Records
129
  </h3>
130
- <p class="text-slate-300">Tracks completion status, time spent, and attempts for each lesson.</p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
131
  </div>
132
- <div class="p-6 border border-slate-700 rounded-lg">
133
  <h3 class="text-xl font-bold mb-3 flex items-center">
134
  <i data-feather="bar-chart-2" class="text-indigo-400 mr-2"></i>
135
  Confidence Metrics
 
55
  <a href="learning-engine.html" class="hover:text-indigo-400 transition-colors">Learning Engine</a>
56
  <a href="auth.html" class="hover:text-indigo-400 transition-colors">Login</a>
57
  <a href="select-role.html" class="hover:text-indigo-400 transition-colors">Roles</a>
58
+ <a href="progress-report.html" class="hover:text-indigo-400 transition-colors">Progress</a>
59
  </div>
60
  </nav>
61
 
 
128
  <i data-feather="activity" class="text-indigo-400 mr-2"></i>
129
  Progress Records
130
  </h3>
131
+ <p class="text-slate-300 mb-2">Tracks completion status, time spent, and attempts for each lesson.</p>
132
+ <ul class="text-sm text-slate-400 space-y-1">
133
+ <li class="flex items-start">
134
+ <i data-feather="chevron-right" class="w-3 h-3 mr-1 mt-0.5 text-indigo-400"></i>
135
+ <span>Atomic task completion tracking</span>
136
+ </li>
137
+ <li class="flex items-start">
138
+ <i data-feather="chevron-right" class="w-3 h-3 mr-1 mt-0.5 text-indigo-400"></i>
139
+ <span>Mastery percentage calculations</span>
140
+ </li>
141
+ <li class="flex items-start">
142
+ <i data-feather="chevron-right" class="w-3 h-3 mr-1 mt-0.5 text-indigo-400"></i>
143
+ <span>Personalized progress reports</span>
144
+ </li>
145
+ </ul>
146
  </div>
147
+ <div class="p-6 border border-slate-700 rounded-lg">
148
  <h3 class="text-xl font-bold mb-3 flex items-center">
149
  <i data-feather="bar-chart-2" class="text-indigo-400 mr-2"></i>
150
  Confidence Metrics
index.html CHANGED
@@ -53,6 +53,7 @@
53
  <a href="learning-engine.html" class="hover:text-indigo-400 transition-colors">Learning Engine</a>
54
  <a href="auth.html" class="hover:text-indigo-400 transition-colors">Login</a>
55
  <a href="select-role.html" class="hover:text-indigo-400 transition-colors">Roles</a>
 
56
  </div>
57
  <button class="md:hidden">
58
  <i data-feather="menu"></i>
 
53
  <a href="learning-engine.html" class="hover:text-indigo-400 transition-colors">Learning Engine</a>
54
  <a href="auth.html" class="hover:text-indigo-400 transition-colors">Login</a>
55
  <a href="select-role.html" class="hover:text-indigo-400 transition-colors">Roles</a>
56
+ <a href="progress-report.html" class="hover:text-indigo-400 transition-colors">Progress</a>
57
  </div>
58
  <button class="md:hidden">
59
  <i data-feather="menu"></i>
learning-engine.html CHANGED
@@ -62,7 +62,8 @@
62
  <a href="learning-engine.html" class="text-indigo-400">Learning Engine</a>
63
  <a href="auth.html" class="hover:text-indigo-400 transition-colors">Login</a>
64
  <a href="select-role.html" class="hover:text-indigo-400 transition-colors">Roles</a>
65
- </div>
 
66
  </nav>
67
 
68
  <main class="container mx-auto px-4 py-16">
@@ -169,17 +170,45 @@
169
  <div class="bg-slate-800/50 p-6 rounded-lg">
170
  <pre><code>// Request Body
171
  {
172
- "speaking": 75,
173
- "listening": 80,
174
- "vocabulary": 90,
175
- "grammar": 70,
176
- "confidence": 85
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
177
  }
178
 
179
  // Response
180
  {
181
  "lessonId": "lesson-789",
182
- "updated": true
 
 
 
 
 
 
 
 
 
 
183
  }</code></pre>
184
  </div>
185
  </div>
 
62
  <a href="learning-engine.html" class="text-indigo-400">Learning Engine</a>
63
  <a href="auth.html" class="hover:text-indigo-400 transition-colors">Login</a>
64
  <a href="select-role.html" class="hover:text-indigo-400 transition-colors">Roles</a>
65
+ <a href="progress-report.html" class="hover:text-indigo-400 transition-colors">Progress</a>
66
+ </div>
67
  </nav>
68
 
69
  <main class="container mx-auto px-4 py-16">
 
170
  <div class="bg-slate-800/50 p-6 rounded-lg">
171
  <pre><code>// Request Body
172
  {
173
+ "speaking": {
174
+ "score": 75,
175
+ "timeSpent": 120,
176
+ "attempts": 3
177
+ },
178
+ "listening": {
179
+ "score": 80,
180
+ "timeSpent": 90,
181
+ "attempts": 2
182
+ },
183
+ "vocabulary": {
184
+ "score": 90,
185
+ "timeSpent": 60,
186
+ "attempts": 1
187
+ },
188
+ "grammar": {
189
+ "score": 70,
190
+ "timeSpent": 150,
191
+ "attempts": 4
192
+ },
193
+ "confidence": 85,
194
+ "completionStatus": "completed",
195
+ "masteryPercentage": 78.75
196
  }
197
 
198
  // Response
199
  {
200
  "lessonId": "lesson-789",
201
+ "updated": true,
202
+ "report": {
203
+ "totalTime": 420,
204
+ "totalAttempts": 10,
205
+ "weakestArea": "grammar",
206
+ "nextSteps": [
207
+ "Review past tense exercises",
208
+ "Practice with audio drills",
209
+ "Complete bonus vocabulary quiz"
210
+ ]
211
+ }
212
  }</code></pre>
213
  </div>
214
  </div>
progress-report.html ADDED
@@ -0,0 +1,243 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Progress Report | QuantumCode</title>
7
+ <link rel="icon" type="image/x-icon" href="/static/favicon.ico">
8
+ <script src="https://cdn.tailwindcss.com"></script>
9
+ <script src="https://unpkg.com/feather-icons"></script>
10
+ <script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
11
+ <style>
12
+ @import url('https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@300;400;500;600;700&display=swap');
13
+
14
+ body {
15
+ font-family: 'Space Grotesk', sans-serif;
16
+ background-color: #0f172a;
17
+ color: #e2e8f0;
18
+ }
19
+
20
+ .gradient-text {
21
+ background: linear-gradient(90deg, #7c3aed 0%, #2563eb 100%);
22
+ -webkit-background-clip: text;
23
+ background-clip: text;
24
+ color: transparent;
25
+ }
26
+
27
+ .glass-card {
28
+ background: rgba(15, 23, 42, 0.7);
29
+ backdrop-filter: blur(10px);
30
+ border: 1px solid rgba(255, 255, 255, 0.1);
31
+ border-radius: 1rem;
32
+ }
33
+
34
+ .progress-bar {
35
+ height: 8px;
36
+ border-radius: 4px;
37
+ background: rgba(124, 58, 237, 0.2);
38
+ }
39
+
40
+ .progress-fill {
41
+ height: 100%;
42
+ border-radius: 4px;
43
+ background: linear-gradient(90deg, #7c3aed 0%, #2563eb 100%);
44
+ }
45
+ </style>
46
+ </head>
47
+ <body class="min-h-screen">
48
+ <nav class="px-6 py-4 flex justify-between items-center">
49
+ <div class="flex items-center space-x-2">
50
+ <i data-feather="cpu" class="text-indigo-500"></i>
51
+ <span class="text-xl font-bold gradient-text">QuantumCode</span>
52
+ </div>
53
+ <div class="flex items-center space-x-2">
54
+ <a href="i18n-setup.html" class="flex items-center text-sm hover:text-indigo-400 transition-colors">
55
+ <i data-feather="globe" class="w-4 h-4 mr-1"></i>
56
+ <span id="currentLang">EN</span>
57
+ </a>
58
+ </div>
59
+ <div class="hidden md:flex space-x-8">
60
+ <a href="index.html" class="hover:text-indigo-400 transition-colors">Home</a>
61
+ <a href="data-architecture.html" class="hover:text-indigo-400 transition-colors">Data</a>
62
+ <a href="learning-engine.html" class="hover:text-indigo-400 transition-colors">API</a>
63
+ <a href="progress-report.html" class="text-indigo-400">Progress</a>
64
+ </div>
65
+ </nav>
66
+
67
+ <main class="container mx-auto px-4 py-16">
68
+ <section class="max-w-6xl mx-auto mb-12">
69
+ <div class="flex justify-between items-center mb-8">
70
+ <h1 class="text-3xl md:text-4xl font-bold gradient-text">Your Learning Progress</h1>
71
+ <button class="px-4 py-2 bg-indigo-600 hover:bg-indigo-700 rounded-lg flex items-center">
72
+ <i data-feather="download" class="mr-2"></i>
73
+ Export Report
74
+ </button>
75
+ </div>
76
+
77
+ <div class="glass-card p-8 mb-8">
78
+ <div class="grid md:grid-cols-3 gap-8">
79
+ <div class="text-center">
80
+ <h3 class="text-xl font-bold mb-2">Mastery Level</h3>
81
+ <div class="text-5xl font-bold gradient-text mb-2">78%</div>
82
+ <div class="progress-bar w-full mx-auto">
83
+ <div class="progress-fill" style="width: 78%"></div>
84
+ </div>
85
+ </div>
86
+
87
+ <div class="text-center">
88
+ <h3 class="text-xl font-bold mb-2">Time Invested</h3>
89
+ <div class="text-5xl font-bold gradient-text mb-2">42h</div>
90
+ <div class="text-sm text-slate-400">12h this week</div>
91
+ </div>
92
+
93
+ <div class="text-center">
94
+ <h3 class="text-xl font-bold mb-2">Tasks Completed</h3>
95
+ <div class="text-5xl font-bold gradient-text mb-2">127</div>
96
+ <div class="text-sm text-slate-400">84% success rate</div>
97
+ </div>
98
+ </div>
99
+ </div>
100
+
101
+ <div class="glass-card p-8 mb-8">
102
+ <h2 class="text-2xl font-bold mb-6">Skill Breakdown</h2>
103
+ <canvas id="skillsChart" height="300"></canvas>
104
+ </div>
105
+
106
+ <div class="grid md:grid-cols-2 gap-8 mb-8">
107
+ <div class="glass-card p-6">
108
+ <h3 class="text-xl font-bold mb-4 flex items-center">
109
+ <i data-feather="award" class="text-indigo-400 mr-2"></i>
110
+ Strengths
111
+ </h3>
112
+ <ul class="space-y-3">
113
+ <li class="flex items-center">
114
+ <div class="w-8 h-8 rounded-full bg-indigo-900/50 flex items-center justify-center mr-3">
115
+ <i data-feather="check" class="text-green-400"></i>
116
+ </div>
117
+ <div>
118
+ <div class="font-medium">Vocabulary</div>
119
+ <div class="text-sm text-slate-400">90% mastery</div>
120
+ </div>
121
+ </li>
122
+ <li class="flex items-center">
123
+ <div class="w-8 h-8 rounded-full bg-indigo-900/50 flex items-center justify-center mr-3">
124
+ <i data-feather="check" class="text-green-400"></i>
125
+ </div>
126
+ <div>
127
+ <div class="font-medium">Listening</div>
128
+ <div class="text-sm text-slate-400">85% mastery</div>
129
+ </div>
130
+ </li>
131
+ </ul>
132
+ </div>
133
+
134
+ <div class="glass-card p-6">
135
+ <h3 class="text-xl font-bold mb-4 flex items-center">
136
+ <i data-feather="alert-triangle" class="text-yellow-400 mr-2"></i>
137
+ Areas for Improvement
138
+ </h3>
139
+ <ul class="space-y-3">
140
+ <li class="flex items-center">
141
+ <div class="w-8 h-8 rounded-full bg-indigo-900/50 flex items-center justify-center mr-3">
142
+ <i data-feather="alert-circle" class="text-yellow-400"></i>
143
+ </div>
144
+ <div>
145
+ <div class="font-medium">Grammar</div>
146
+ <div class="text-sm text-slate-400">65% mastery</div>
147
+ <div class="text-xs text-slate-500 mt-1">Needs more practice</div>
148
+ </div>
149
+ </li>
150
+ <li class="flex items-center">
151
+ <div class="w-8 h-8 rounded-full bg-indigo-900/50 flex items-center justify-center mr-3">
152
+ <i data-feather="alert-circle" class="text-yellow-400"></i>
153
+ </div>
154
+ <div>
155
+ <div class="font-medium">Speaking</div>
156
+ <div class="text-sm text-slate-400">72% mastery</div>
157
+ <div class="text-xs text-slate-500 mt-1">Practice pronunciation</div>
158
+ </div>
159
+ </li>
160
+ </ul>
161
+ </div>
162
+ </div>
163
+
164
+ <div class="glass-card p-8">
165
+ <h2 class="text-2xl font-bold mb-6">Recommended Next Steps</h2>
166
+ <div class="space-y-4">
167
+ <div class="flex items-start">
168
+ <div class="w-8 h-8 rounded-full bg-indigo-900/50 flex items-center justify-center mr-4 mt-1">
169
+ <span class="text-indigo-400">1</span>
170
+ </div>
171
+ <div>
172
+ <h4 class="font-bold">Past Tense Exercises</h4>
173
+ <p class="text-slate-400 text-sm">Complete grammar module 3 to improve your weakest area</p>
174
+ </div>
175
+ </div>
176
+ <div class="flex items-start">
177
+ <div class="w-8 h-8 rounded-full bg-indigo-900/50 flex items-center justify-center mr-4 mt-1">
178
+ <span class="text-indigo-400">2</span>
179
+ </div>
180
+ <div>
181
+ <h4 class="font-bold">Pronunciation Drills</h4>
182
+ <p class="text-slate-400 text-sm">Practice with our interactive speaking exercises</p>
183
+ </div>
184
+ </div>
185
+ <div class="flex items-start">
186
+ <div class="w-8 h-8 rounded-full bg-indigo-900/50 flex items-center justify-center mr-4 mt-1">
187
+ <span class="text-indigo-400">3</span>
188
+ </div>
189
+ <div>
190
+ <h4 class="font-bold">Advanced Vocabulary</h4>
191
+ <p class="text-slate-400 text-sm">Build on your strengths with level 4 word lists</p>
192
+ </div>
193
+ </div>
194
+ </div>
195
+ </div>
196
+ </section>
197
+ </main>
198
+
199
+ <script>
200
+ // Initialize charts
201
+ const ctx = document.getElementById('skillsChart').getContext('2d');
202
+ new Chart(ctx, {
203
+ type: 'radar',
204
+ data: {
205
+ labels: ['Vocabulary', 'Grammar', 'Listening', 'Speaking', 'Reading', 'Writing'],
206
+ datasets: [{
207
+ label: 'Your Skills',
208
+ data: [90, 65, 85, 72, 80, 75],
209
+ backgroundColor: 'rgba(99, 102, 241, 0.2)',
210
+ borderColor: 'rgba(99, 102, 241, 1)',
211
+ borderWidth: 2,
212
+ pointBackgroundColor: 'rgba(99, 102, 241, 1)'
213
+ }]
214
+ },
215
+ options: {
216
+ scales: {
217
+ r: {
218
+ angleLines: {
219
+ color: 'rgba(255, 255, 255, 0.1)'
220
+ },
221
+ grid: {
222
+ color: 'rgba(255, 255, 255, 0.1)'
223
+ },
224
+ suggestedMin: 0,
225
+ suggestedMax: 100
226
+ }
227
+ },
228
+ plugins: {
229
+ legend: {
230
+ display: false
231
+ }
232
+ }
233
+ }
234
+ });
235
+
236
+ // Set initial language
237
+ document.getElementById('currentLang').textContent =
238
+ document.cookie.match('(^|;)\\s*NEXT_LOCALE\\s*=\\s*([^;]+)')?.pop() || 'EN';
239
+
240
+ feather.replace();
241
+ </script>
242
+ </body>
243
+ </html>