 .ai/workflow-records/feature-dave-591153.yml       |   32 +
 api/admin-rpc-api/pom.xml                          |    2 +-
 api/admin-server/pom.xml                           |    4 -
 .../admin/common/AdminRocketMqGroupConstants.java  |   32 -
 .../admin/config/AliyunRocketMQConsumerConfig.java |   65 -
 .../controller/KnowledgeMaterialController.java    |   39 +
 .../english/EnglishSegmentController.java          |   26 +-
 .../jojo/cc/admin/model/req/UploadSuccessReq.java  |    2 +-
 .../model/req/english/EnglishPhraseSaveReq.java    |   14 +-
 .../model/req/english/EnglishWordSaveReq.java      |    8 +-
 .../KnowledgeMaterialContentBatchUpdateReq.java    |   37 +
 .../KnowledgeMaterialContentExistsReq.java         |   30 +
 .../cc/admin/model/vo/english/EnglishPhraseVo.java |    2 +-
 .../cc/admin/model/vo/english/EnglishWordVo.java   |   11 +-
 .../model/vo/restful/course/ComboCourseVo.java     |    7 +-
 .../java/cn/jojo/cc/admin/task/MqRetryTask.java    |   28 -
 .../LessonJsonRefreshConsumerHandlerTest.java      |  244 ----
 .../KnowledgeMaterialControllerTest.java           |   94 ++
 .../consumer/AudioAdjustSpeedConsumerListener.java |    2 +-
 .../cc/worker}/consumer/CommonDelayListener.java   |    4 +-
 .../cc/worker}/consumer/CommonNormalListener.java  |    4 +-
 .../consumer/config/AdminMqConsumerConfig.java     |  114 ++
 .../constant/AdminRocketMqGroupConstants.java      |   30 +
 .../ArtGalleryJsonRefreshConsumerHandler.java      |    4 +-
 .../consumer/handler/AudioLrcCompleteListener.java |    6 +-
 ...chQuestionCollectionPublishConsumerHandler.java |    4 +-
 .../handler/DataSyncToEsConsumerHandler.java       |    4 +-
 .../DelayClearGameResourceCacheListener.java       |    4 +-
 .../handler/DelayClearLessonCacheListener.java     |    4 +-
 .../GenerateComponentDataConsumerHandler.java      |    4 +-
 .../handler/LessonContentAlertDelayListener.java   |    4 +-
 .../handler/LessonJsonRefreshConsumerHandler.java  |    4 +-
 .../QuestionJsonRefreshConsumerHandler.java        |    4 +-
 .../ReadToolJsonRefreshConsumerHandler.java        |    4 +-
 .../handler/ResourceMetadataConsumerHandler.java   |    4 +-
 .../ResourcePackTaskCreationEventListener.java     |    4 +-
 .../ResourceZstTaskCreationEventListener.java      |    4 +-
 .../handler/SyncFlowTemplateIdConsumerHandler.java |    4 +-
 .../consumer/handler/TagImportConsumerHandler.java |    4 +-
 .../handler/TagTreePublishConsumerHandler.java     |    4 +-
 .../consumer/handler/UploadSuccessHandler.java     |    6 +-
 .../consumer/handler/VodCompleteListener.java      |    6 +-
 .../cc/worker/consumer/model/UploadSuccessReq.java |   22 +
 .../SegmentPublishRecalcConsumerListener.java      |   73 +
 .../SegmentSyncComputeConsumerListener.java        |  102 ++
 .../task/EnglishAudioBackfillJobHandler.java       |   70 +
 .../task/FlushAudioCompressQuestionJson.java       |    2 +-
 .../task/FlushImageCompressQuestionJson.java       |    2 +-
 .../cc/worker/task/FlushLessonTitleSwapTask.java   |  442 ++++++
 .../task/FlushQuestionVideoMidJobHandler.java      |    4 +-
 .../cc/worker/task/PracticeQuestionFlushTask.java  |    2 +-
 .../worker/task/ScanVideoResourceJobHandler.java   |  676 +++++++++
 .../task/SegmentAutoFillRetryJobHandler.java       |    9 +-
 .../AudioAdjustSpeedConsumerListenerTest.java      |  194 +++
 .../worker/consumer/CommonDelayListenerTest.java   |  106 ++
 .../worker/consumer/CommonNormalListenerTest.java  |  105 ++
 .../consumer/config/AdminMqConsumerConfigTest.java |  136 ++
 .../ArtGalleryJsonRefreshConsumerHandlerTest.java  |   88 ++
 .../handler/AudioLrcCompleteListenerTest.java      |    4 +-
 ...estionCollectionPublishConsumerHandlerTest.java |  188 +++
 .../handler/DataSyncToEsConsumerHandlerTest.java   |    2 +-
 .../DelayClearGameResourceCacheListenerTest.java   |   90 ++
 .../handler/DelayClearLessonCacheListenerTest.java |   71 +
 .../GenerateComponentDataConsumerHandlerTest.java  |   79 ++
 .../LessonContentAlertDelayListenerTest.java       |    2 +-
 .../LessonJsonRefreshConsumerHandlerTest.java      |  715 ++++++++++
 .../QuestionJsonRefreshConsumerHandlerTest.java    |  126 ++
 .../ReadToolJsonRefreshConsumerHandlerTest.java    |  115 ++
 .../ResourceMetadataConsumerHandlerTest.java       |   97 ++
 .../ResourcePackTaskCreationEventListenerTest.java |    2 +-
 .../ResourceZstTaskCreationEventListenerTest.java  |    2 +-
 .../SyncFlowTemplateIdConsumerHandlerTest.java     |   96 ++
 .../handler/TagImportConsumerHandlerTest.java      |  222 +++
 .../handler/TagTreePublishConsumerHandlerTest.java |  169 +++
 .../consumer/handler/UploadSuccessHandlerTest.java |    4 +-
 .../consumer/handler/VodCompleteListenerTest.java  |  171 +++
 .../SegmentPublishRecalcConsumerListenerTest.java  |   96 ++
 .../SegmentSyncComputeConsumerListenerTest.java    |  163 +++
 .../task/EnglishAudioBackfillJobHandlerTest.java   |   90 ++
 .../worker/task/EnglishBatchPublishTaskTest.java   |  200 +++
 .../worker/task/EnglishPhraseImportTaskTest.java   |  106 ++
 .../cc/worker/task/EnglishWordImportTaskTest.java  |   93 ++
 .../worker/task/FlushLessonTitleSwapTaskTest.java  |  393 ++++++
 .../task/FlushQuestionVideoMidJobHandlerTest.java  |   12 +-
 .../task/ScanVideoResourceJobHandlerTest.java      |  597 ++++++++
 .../task/SegmentAutoFillRetryJobHandlerTest.java   |    2 +
 .../impl/EnglishDictLibraryServiceImpl.java        |  129 +-
 .../impl/EnglishDictLibraryServiceImplTest.java    |  201 ++-
 .../impl/EnglishDictLibraryServiceRoutingTest.java |    8 +-
 api/rpc-api/pom.xml                                |    2 +-
 .../request/english/EnglishDictListByIdsReq.java   |   40 +-
 .../cc/api/service/EnglishDictLibraryService.java  |    5 +-
 .../common/dto/english/EnglishDictDetailDto.java   |    4 +-
 .../cc/common/dto/english/EnglishPhraseDto.java    |   14 +-
 .../dto/english/EnglishPhraseVariantDto.java       |   39 +
 .../cc/common/dto/english/EnglishSegmentDto.java   |   19 +-
 .../dto/question/library/StandardQuestionDto.java  |   10 +-
 .../cache/english/EnglishPhraseCacheService.java   |   56 +-
 .../english/EnglishPhraseIndexCacheService.java    |  248 +++-
 .../java/cn/jojo/cc/biz/config/GameCodeConfig.java |    2 +-
 .../bo/english/EnglishAudioBackfillResultBo.java   |   47 +
 .../biz/model/bo/english/EnglishPhraseCacheBo.java |   50 +-
 .../EnglishSegmentPublishRecalcMessage.java        |   22 +
 .../EnglishSegmentRecalculationMessage.java        |    2 +-
 .../english/EnglishSegmentSyncComputeMessage.java  |   32 +
 .../biz/model/bo/english/EnglishWordDetailBo.java  |    5 +-
 .../biz/model/bo/english/PhraseIndexSnapshot.java  |    7 +-
 .../cc/biz/model/bo/english/PhraseVariantKey.java  |   60 -
 .../bo/question/library/QuestionPublishBo.java     |   12 -
 .../cn/jojo/cc/biz/rediscache/RedissonHelper.java  |   10 +
 .../dict/EnglishAudioBackfillBizService.java       |   19 +
 .../dict/EnglishDictAudioResourceService.java      |    3 +-
 .../dict/EnglishDictAudioResourceServiceImpl.java  |   13 +-
 .../english/dict/EnglishDictChangeListener.java    |   20 +-
 .../dict/EnglishDictImportBizServiceImpl.java      |   30 +-
 .../dict/EnglishDictPublishProServiceHelper.java   |    8 +
 .../english/dict/EnglishDictWriteLockService.java  |   10 +-
 .../english/dict/EnglishDictWriteTxService.java    |   65 +-
 .../english/dict/EnglishPhraseBizServiceImpl.java  |   33 +-
 .../english/dict/EnglishPublishBizServiceImpl.java |    7 +-
 .../english/dict/EnglishWordBizServiceImpl.java    |   44 +-
 .../dict/SegmentAutoFillBizServiceImpl.java        |   97 +-
 .../impl/EnglishAudioBackfillBizServiceImpl.java   |  361 +++++
 .../segment/DefaultSegmentTextExtractor.java       |   66 +-
 .../english/segment/QuestionSegmentBizService.java |   10 +
 .../segment/QuestionSegmentBizServiceImpl.java     |  107 +-
 .../segment/QuestionSegmentSaveHookService.java    |   69 +-
 .../english/segment/SegmentMatchIdResolver.java    |   45 +-
 .../english/segment/SegmentRefreshBizService.java  |   12 +
 .../segment/SegmentRefreshBizServiceImpl.java      |   78 +-
 .../biz/service/english/segment/SegmentResult.java |    9 -
 .../english/word/EnglishAudioBizService.java       |   11 +-
 .../english/word/EnglishAudioBizServiceImpl.java   |   15 +-
 .../service/impl/ComboCourseBizServiceImpl.java    |   40 +
 ...ameResourceReleaseSheetQuestionTaskService.java |    2 +-
 .../knowledge/KnowledgeMaterialBizServiceImpl.java |  255 ++++
 .../question/library/QuestionBizServiceImpl.java   |  132 +-
 .../knowledge/KnowledgeMaterialBizService.java     |   32 +
 .../biz/service/question/QuestionBizService.java   |   10 +
 .../service/synch/impl/SynchBizServiceImpl.java    |   13 -
 .../english/EnglishPhraseCacheServiceTest.java     |   86 +-
 .../EnglishPhraseIndexCacheServiceTest.java        |  242 ++++
 .../cache/english/EnglishWordCacheServiceTest.java |  415 +++++-
 .../english/EnglishWordTextCacheServiceTest.java   |  196 +++
 .../EnglishDictAudioResourceServiceImplTest.java   |  135 ++
 .../dict/EnglishDictImportBizServiceImplTest.java  |  460 ++++++
 .../dict/EnglishDictWriteLockServiceTest.java      |  218 +++
 .../dict/EnglishDictWriteTxServiceTest.java        |  689 ++++++++-
 .../english/dict/EnglishImportFileReaderTest.java  |  226 +++
 .../english/dict/EnglishPublishBizServiceTest.java |  184 ++-
 .../english/dict/EnglishWordBizServiceTest.java    |   14 +-
 .../dict/SegmentAutoFillBizServiceTest.java        |   73 +-
 .../EnglishAudioBackfillBizServiceImplTest.java    |  370 +++++
 .../segment/DefaultSegmentTextExtractorTest.java   |   41 +-
 .../segment/EnglishDictChangeListenerTest.java     |    2 +-
 .../segment/QuestionSegmentBizServiceTest.java     |  163 ++-
 .../segment/QuestionSegmentSaveHookTest.java       |  120 +-
 .../segment/SegmentRefreshBizServiceTest.java      |  114 +-
 .../word/EnglishAudioBizServiceImplTest.java       |   29 +-
 .../impl/ComboCourseBizServiceImplTest.java        |  198 +++
 .../service/impl/QuestionBizServiceImplTest.java   |   16 +
 .../KnowledgeMaterialBizServiceImplTest.java       |  653 +++++++++
 .../library/QuestionBizServiceImplTest.java        |   20 +
 .../library/QuestionPublishSegmentTest.java        |   42 +-
 .../service/impl/CourseImportBizServiceTest.java   |    4 +
 .../cc/biz/common/config/EnglishDictConfig.java    |   74 +-
 .../resources/i18n/messages/error_local.properties |    6 +
 .../i18n/messages/error_local_zh_CN.properties     |    5 +
 .../i18n/messages/error_local_zh_TW.properties     |    1 +
 .../biz/common/config/EnglishDictConfigTest.java   |   13 +-
 common/pom.xml                                     |    2 +-
 .../cc/common/enums/CcWorkerClusterTagEnum.java    |   10 +
 .../common/enums/GameCommonResourceTypeEnum.java   |   14 +-
 .../jojo/cc/common/enums/GameResourceTypeEnum.java |   18 +
 .../java/cn/jojo/cc/common/enums/RedisKeyEnum.java |   23 +
 .../jojo/cc/common/enums/RpcPartOfSpeechEnum.java  |    1 +
 .../cc/common/enums/english/PartOfSpeechEnum.java  |   25 +-
 .../cc/common/enums/english/SegmentStatusEnum.java |    7 +-
 .../java/cn/jojo/cc/common/utils/EnglishWords.java |   46 +-
 .../i18n/messages/cc_error_local.properties        |    3 +-
 .../i18n/messages/cc_error_local_zh_CN.properties  |    3 +-
 .../i18n/messages/cc_error_local_zh_TW.properties  |    3 +-
 .../cn/jojo/cc/common/utils/EnglishWordsTest.java  |   43 +-
 docs/sql/2026-07-08-knowledge-material-v3.sql      |   13 +-
 docs/sql/2026-10-21-english-dict-segment.sql       |   20 +-
 .../2026-10-30-question-segment-content-type.sql   |   42 +
 docs/sql/2026-11-03-english-dict-audio-task.sql    |   49 +
 ...0-21-591153-knowledge-batch-edit-lesson-step.md | 1485 ++++++++++++++++++++
 .../2026-10-21-issue595043-english-dict-library.md |    8 +-
 .../00-execution-contract.md                       |    3 +-
 .../00-interface-map.md                            |   20 +-
 .../00-review-gates.md                             |   18 +-
 .../01-foundation-contracts.md                     |   54 +-
 .../02-external-audio.md                           |    8 +-
 .../03-matching-cache.md                           |   29 +-
 .../04-segment-engine.md                           |   48 +-
 .../05-dictionary-management.md                    |   30 +-
 .../06-dictionary-rpc.md                           |    6 +-
 .../07-import-jobs.md                              |   54 +-
 .../08-save-autofill.md                            |   63 +-
 .../09-full-refresh.md                             |   12 +-
 .../10-question-delivery.md                        |   20 +-
 .../11-release-acceptance.md                       |   24 +-
 .../handoffs/05.md                                 |    1 +
 .../handoffs/07.md                                 |    2 +-
 .../handoffs/08.md                                 |    1 +
 .../manifest.json                                  |   81 +-
 .../progress.md                                    |   20 +-
 .../reference.md                                   |   76 +-
 ...1-knowledge-material-publish-refactor-design.md |    2 +-
 ...026-10-13-game-resource-dd-zzx-hybrid-design.md |  217 +++
 ...1153-knowledge-batch-edit-lesson-step-design.md |  201 +++
 ...0-21-issue595043-english-dict-segment-design.md |  375 ++++-
 .../591158-admin-consumer-migration-to-worker.md   |  252 ++++
 .../jojo/cc/adaptor/english/BaiduDictClient.java   |   13 +-
 .../jojo/cc/adaptor/english/InternalTtsClient.java |   35 +-
 .../jojo/cc/adaptor/english/dto/TtsTaskStatus.java |   47 +
 .../english/impl/InternalTtsClientImpl.java        |   65 +-
 .../adaptor/english/InternalTtsClientImplTest.java |   62 +-
 .../java/cn/jojo/cc/core/bo/ComboCourseBo.java     |    3 +
 .../cc/core/bo/english/UnmatchedWordCountBo.java   |   26 -
 .../cc/core/bo/knowledge/KnowledgeFieldPairBo.java |   25 +
 .../cn/jojo/cc/core/dao/BusinessResourceDao.java   |   15 +
 .../main/java/cn/jojo/cc/core/dao/LessonDao.java   |   13 +
 .../main/java/cn/jojo/cc/core/dao/ResourceDao.java |   15 +
 .../cc/core/dao/english/QuestionSegmentDao.java    |   31 +
 .../dao/english/QuestionSegmentUnmatchedDao.java   |   85 --
 .../dao/knowledge/KnowledgeLessonContentDao.java   |   29 +
 .../cc/core/domain/english/EnglishPhraseDo.java    |   13 +
 .../domain/english/EnglishPhraseVariantDo.java     |   13 +
 .../jojo/cc/core/domain/english/EnglishWordDo.java |   13 +
 .../domain/english/QuestionSegmentUnmatchedDo.java |   38 -
 .../core/service/BusinessResourceCoreService.java  |   12 +
 .../cn/jojo/cc/core/service/LessonCoreService.java |   10 +
 .../jojo/cc/core/service/ResourceCoreService.java  |   12 +
 .../service/english/EnglishPhraseCoreService.java  |   25 +
 .../english/EnglishPhraseVariantCoreService.java   |   28 +
 .../service/english/EnglishWordCoreService.java    |   26 +
 .../english/QuestionSegmentCoreService.java        |   10 +
 .../QuestionSegmentUnmatchedCoreService.java       |   35 -
 .../BusinessResourceCoreServiceImplMapper.java     |   10 +
 .../service/impl/LessonCoreServiceImplMapper.java  |    5 +
 .../impl/ResourceCoreServiceImplMapper.java        |   10 +
 .../impl/english/EnglishPhraseCoreServiceImpl.java |   90 +-
 .../EnglishPhraseVariantCoreServiceImpl.java       |   68 +
 .../impl/english/EnglishWordCoreServiceImpl.java   |   99 +-
 .../english/QuestionSegmentCoreServiceImpl.java    |   36 +-
 .../QuestionSegmentUnmatchedCoreServiceImpl.java   |  153 --
 ...nowledgeLessonContentCoreServiceImplMapper.java |   18 +
 .../KnowledgeLessonContentCoreService.java         |   22 +
 .../resources/mapper/BusinessResourceMapper.xml    |   18 +
 .../resources/mapper/KnowledgeLessonContentDao.xml |   44 +
 .../src/main/resources/mapper/LessonMapper.xml     |    8 +
 .../src/main/resources/mapper/ResourceMapper.xml   |   18 +
 .../core/dao/english/EnglishDaoAnnotationTest.java |    3 -
 .../english/EnglishPhraseConflictQueryTest.java    |   14 +
 .../english/EnglishPhraseCoreServiceTest.java      |  468 ++++++
 .../EnglishPhraseVariantCoreServiceTest.java       |  228 +++
 .../english/EnglishWordCoreServiceTest.java        |  402 +++++-
 .../EnglishWordTranslationCoreServiceTest.java     |  198 +++
 .../english/QuestionSegmentCoreServiceTest.java    |  372 ++++-
 .../QuestionSegmentUnmatchedCoreServiceTest.java   |  140 --
 ...essonContentCoreServiceImplMapperBatchTest.java |  105 ++
 pom.xml                                            |    2 +-
 264 files changed, 18483 insertions(+), 2481 deletions(-)
