Explorar el Código

refine(admin): simplify printable vocabulary review log

彭峰 hace 2 semanas
padre
commit
76c911388c

+ 2 - 3
projects/xiaoshu-admin/src/app/pages/operations-learning-reports.component.html

@@ -76,13 +76,12 @@
       </section>
     }
     <section class="pdf-section review-section"><h2>21天复习计划与记录</h2>
-      <p class="review-words"><strong>本次学习词汇({{ report.words.length }} 个):</strong>{{ learnedWords() }}</p>
+      <p class="review-words">本次学习 {{ report.words.length }} 个单词,词汇见上方列表。</p>
       <table class="review-table"><thead><tr><th scope="row">第几天</th>@for (item of reviewSchedule(); track item.day) { <th scope="col">{{ item.day }}</th> }</tr></thead><tbody>
         <tr><th scope="row">复习日期</th>@for (item of reviewSchedule(); track item.day) { <td>{{ item.date.replaceAll('-', '') }}</td> }</tr>
-        <tr><th scope="row">记住词数</th>@for (item of reviewSchedule(); track item.day) { <td class="review-count">&#160;</td> }</tr>
         <tr><th scope="row">遗忘词数</th>@for (item of reviewSchedule(); track item.day) { <td class="review-count">&#160;</td> }</tr>
       </tbody></table>
-      <p class="worksheet-hint">每次复习后填写记住、遗忘的单词数量,未复习的格子留空。@if(hasInferredReviewDates()){ 未设置的复习日期按学习日期推算;日期缺失时请手写补充。 }</p>
+      <p class="worksheet-hint">每次复习后填写遗忘的单词数量,未复习的格子留空。@if(hasInferredReviewDates()){ 未设置的复习日期按学习日期推算;日期缺失时请手写补充。 }</p>
     </section>
     @if (reportVariant()==='full' && (report.score || report.studentComment || report.coachComment)) { <section class="pdf-section"><h2>课程评价</h2><div class="comments"><article class="comment-card"><strong>学员评分</strong><p>{{ report.score ? report.score + ' 分' : '未评分' }}</p></article><article class="comment-card"><strong>学员评价</strong><p>{{ report.studentComment || '暂无评价' }}</p></article><article class="comment-card"><strong>陪练点评</strong><p>{{ report.coachComment || '暂无点评' }}</p></article></div></section> }
     <footer class="pdf-footer"><span>数据来源:学习记录 {{ report.generalId }}</span><span>生成时间:{{ report.generatedAt | date:'yyyy-MM-dd HH:mm:ss' }}</span></footer>

+ 5 - 1
projects/xiaoshu-admin/src/app/pages/operations-learning-reports.component.spec.ts

@@ -136,8 +136,12 @@ describe('OperationsLearningReportsComponent', () => {
       expect(sheet.textContent).not.toContain(variant === 'english' ? '苹果' : 'apple');
       expect(sheet.querySelectorAll('.answer-space').length).toBe(1);
       expect(sheet.querySelector('.comments')).toBeNull();
-      expect(sheet.querySelectorAll('.review-count').length).toBe(20);
+      expect(sheet.querySelectorAll('.review-count').length).toBe(10);
       expect(Array.from(sheet.querySelectorAll('.review-count')).every((cell) => !cell.textContent?.trim())).toBeTrue();
+      expect(sheet.textContent).not.toContain('记住词数');
+      expect(sheet.textContent).toContain('遗忘词数');
+      expect(sheet.querySelector('.review-words')?.textContent).toContain('本次学习 1 个单词');
+      expect(sheet.querySelector('.review-words')?.textContent).not.toContain('苹果');
     }
     component.selectVariant('full'); fixture.detectChanges();
     const sheet = (fixture.nativeElement as HTMLElement).querySelector('.pdf-sheet')!;

+ 0 - 1
projects/xiaoshu-admin/src/app/pages/operations-learning-reports.component.ts

@@ -62,7 +62,6 @@ export class OperationsLearningReportsComponent implements OnInit, OnDestroy {
   readonly reportTitle = computed(() => reportTitles[this.reportVariant()]);
   readonly reviewSchedule = computed(() => this.detail() ? printableReviewSchedule(this.detail()!) : []);
   readonly hasInferredReviewDates = computed(() => this.reviewSchedule().some((item) => item.inferred));
-  readonly learnedWords = computed(() => this.displayWords().map((word) => this.reportVariant() === 'chinese' ? (word.meaning || '释义缺失') : word.word).join(';') || '暂无单词明细');
   readonly loading = signal(true);
   readonly searching = signal(false);
   readonly refreshing = signal(false);