MCPcopy Create free account

hub / github.com/Pandlagon/IELTS-Studio / functions

Functions952 in github.com/Pandlagon/IELTS-Studio

↓ 1 callersMethodparseTableBlock
(String block, int passageIndex)
backend/src/main/java/com/ieltsstudio/service/VisualBlockConverter.java:252
↓ 1 callersFunctionparseTags
(tagsJson, type)
frontend/src/stores/exam.js:780
↓ 1 callersMethodpdfToDataUrls
(byte[] fileBytes)
backend/src/main/java/com/ieltsstudio/service/QwenAiParseService.java:973
↓ 1 callersMethodphysicalDeleteById
(@Param("id") Long id, @Param("userId") Long userId)
backend/src/main/java/com/ieltsstudio/mapper/ExamMapper.java:45
↓ 1 callersMethodprocessWordFile
(Long userId, Long bookId, byte[] fileBytes, String filename)
backend/src/main/java/com/ieltsstudio/service/AsyncWordService.java:37
↓ 1 callersMethodproviderName
仅返回 provider 枚举名或 null,避免在 usage record 中暴露 baseUrl / model / API Key
backend/src/main/java/com/ieltsstudio/service/QwenAiParseService.java:604
↓ 1 callersMethodquickAddWords
POST /words/books/default/quick-add — 快速批量添加单词到默认词书(异步) <p>请求体:{@code { "words": ["apple", "banana", ...] }} <p>后台自动查询释义并保存,接口立即返回处理数量。
backend/src/main/java/com/ieltsstudio/controller/WordBookController.java:194
↓ 1 callersMethodreadJsonMap
(String content)
backend/src/main/java/com/ieltsstudio/service/QwenAiParseService.java:955
↓ 1 callersMethodrecordFailure
记录一条失败写操作审计日志。 <p>调用方应在 catch 块中调用本方法。{@code summary} 可包含异常类名 / 简短消息, 但禁止包含密码/key/token/provider body。</p> <p>写入失败不会抛异常(仅 warn log),避免影响主业务的异常传播。</p
backend/src/main/java/com/ieltsstudio/service/AdminAuditLogService.java:133
↓ 1 callersMethodrefundBuiltin
回滚预扣的 credits:GREATEST 防止越界减为负数
backend/src/main/java/com/ieltsstudio/ai/service/AiUsageGuard.java:188
↓ 1 callersMethodregister
用户注册 <p>注册成功后自动创建默认词书,并直接返回登录态(免去二次登录)。 @param req 注册请求(用户名 + 邮箱 + 密码) @return 包含 token 和 user 信息的 Map @throws RuntimeException 用户名或邮箱已被占用时抛出
backend/src/main/java/com/ieltsstudio/service/AuthService.java:60
↓ 1 callersMethodremoveAllByCollection
(Long collectionId)
backend/src/main/java/com/ieltsstudio/mapper/ExamCollectionItemMapper.java:27
↓ 1 callersMethodremoveByCollectionAndExam
(Long collectionId, Long examId)
backend/src/main/java/com/ieltsstudio/mapper/ExamCollectionItemMapper.java:24
↓ 1 callersMethodremoveInstructionLines
(String passage, StringBuilder extractedInstruction)
backend/src/main/java/com/ieltsstudio/service/AsyncParseService.java:1347
↓ 1 callersFunctionrenderPageToCanvas
* Render a single PDF page to an HTMLCanvasElement.
frontend/src/utils/pdfExtract.js:45
↓ 1 callersMethodrenumberHeadingQuestions
Re-number heading matching questions to be sequential.
backend/src/main/java/com/ieltsstudio/service/AiParseService.java:1448
↓ 1 callersMethodreorderItems
(Long collectionId, List<Long> examIds)
backend/src/main/java/com/ieltsstudio/service/ExamCollectionService.java:99
↓ 1 callersMethodrequireAdmin
防御性 ADMIN 校验 + 精细权限校验(Phase 8C)。 <p>Spring Security 已在路由层做 {@code hasRole("ADMIN")} 拦截, 此处做二次校验防止配置遗漏,并要求精细权限以兼容模式/显式模式规则判断。</p>
backend/src/main/java/com/ieltsstudio/controller/AdminAuditLogController.java:80
↓ 1 callersMethodresetPassword
重置用户密码。 <p>安全:使用 {@link PasswordEncoder#encode(CharSequence)} 存储 BCrypt 哈希, 不记录明文密码日志,不返回 password。 @param targetUserId 目标用户 ID @param newPassword
backend/src/main/java/com/ieltsstudio/service/AdminUserService.java:225
↓ 1 callersMethodresolveDeepseek
(Long userId)
backend/src/main/java/com/ieltsstudio/ai/service/AiSettingsService.java:160
↓ 1 callersFunctionresolveIsDark
()
frontend/src/stores/theme.js:21
↓ 1 callersMethodresolveKeyMode
解析用户当前 keyMode;无设置或为空视为 BUILTIN(与扣费路径回退逻辑一致)
backend/src/main/java/com/ieltsstudio/ai/service/AiUsageQueryService.java:88
↓ 1 callersMethodresolveUser
解析 USER 模式凭据。任何字段缺失 / 解密失败抛 {@link IllegalStateException}, 异常信息<b>不</b>包含 key 或密文。
backend/src/main/java/com/ieltsstudio/ai/service/AiSettingsService.java:82
↓ 1 callersMethodresolveVision
(Long userId)
backend/src/main/java/com/ieltsstudio/ai/service/AiSettingsService.java:178
↓ 1 callersMethodresolveVisionMaxTokens
根据 provider 决定 vision 任务的 maxTokens。 USER 模式下自定义 provider(OPENAI_COMPATIBLE)默认使用 {@link #aiMaxTokens}。
backend/src/main/java/com/ieltsstudio/service/QwenAiParseService.java:579
↓ 1 callersMethodsafeRemaining
计算剩余额度,下限 0,兼容 null 字段
backend/src/main/java/com/ieltsstudio/ai/service/AiUsageQueryService.java:125
↓ 1 callersMethodsanitize
脱敏:去除 API Key / Authorization / Bearer,并截断到 500 字符 (与 {@code ai_usage_records.error_message} 的 VARCHAR(500) 对齐)。
backend/src/main/java/com/ieltsstudio/ai/service/AiUsageGuard.java:320
↓ 1 callersMethodsaveState
(Long userId, String bookId, Map<String, Object> body)
backend/src/main/java/com/ieltsstudio/service/WordStudyStateService.java:23
↓ 1 callersMethodsegmentContent
(List<String> lines, List<String> passages, Li
backend/src/main/java/com/ieltsstudio/service/FileParseService.java:156
↓ 1 callersMethodsismember
(String key, String member)
backend/src/main/java/com/ieltsstudio/infra/RedisOps.java:18
↓ 1 callersMethodsplitBySectionMarkers
Split raw text into sections by common IELTS markers. Each returned chunk contains one passage + its questions.
backend/src/main/java/com/ieltsstudio/service/AsyncParseService.java:484
↓ 1 callersMethodsplitLines
(String text)
backend/src/main/java/com/ieltsstudio/service/FileParseService.java:141
↓ 1 callersMethodstartUpload
Kick off async word processing — returns immediately with status "processing".
backend/src/main/java/com/ieltsstudio/service/WordBookService.java:100
↓ 1 callersMethodstripCodeFence
(String content)
backend/src/main/java/com/ieltsstudio/service/QwenAiParseService.java:586
↓ 1 callersMethodstripVisualBlocksFromText
Remove visual/table blocks and inline chart/table lines from question text to keep prompt clean.
backend/src/main/java/com/ieltsstudio/service/QwenAiParseService.java:915
↓ 1 callersMethodsummarize
异常摘要:类名 + 简短 message,后续由 {@link #sanitize} 脱敏
backend/src/main/java/com/ieltsstudio/ai/service/AiUsageGuard.java:297
↓ 1 callersFunctionswitchBook
(bookId)
frontend/src/stores/word.js:545
↓ 1 callersMethodtoJpegBytes
(BufferedImage image)
backend/src/main/java/com/ieltsstudio/service/QwenAiParseService.java:993
↓ 1 callersMethodupdateCollection
(Long userId, Long id, String title, String description)
backend/src/main/java/com/ieltsstudio/service/ExamCollectionService.java:46
↓ 1 callersMethodupdateExam
更新试卷信息
backend/src/main/java/com/ieltsstudio/service/ExamService.java:81
↓ 1 callersFunctionupdateParsedExam
(id, examData, questions)
frontend/src/stores/exam.js:629
↓ 1 callersMethoduploadExamImages
(Long userId, MultipartFile[] files, String title, String type, Integer durat
backend/src/main/java/com/ieltsstudio/service/ExamService.java:130
↓ 1 callersMethoduploadFile
(byte[] fileBytes, String filename)
backend/src/main/java/com/ieltsstudio/service/LlamaParseService.java:69
↓ 1 callersMethodvalidateBaseUrl
(String baseUrl)
backend/src/main/java/com/ieltsstudio/service/UserAiSettingsService.java:224
↓ 1 callersMethodvalidateToken
校验 Token 是否有效(签名正确且未过期) @return true 表示 Token 可用
backend/src/main/java/com/ieltsstudio/util/JwtUtil.java:113
↓ 1 callersMethodworkflowStep1
Workflow Step 1 (legacy combined): Extract passages and question group skeleton (no answers).
backend/src/main/java/com/ieltsstudio/service/AiParseService.java:743
↓ 1 callersMethodworkflowStep1A
Workflow Step 1A: Extract passages only (focused, short prompt).
backend/src/main/java/com/ieltsstudio/service/AiParseService.java:778
MethodAiApiKeyCrypto
Spring 构造注入:从 {@code app.ai.key-encryption-secret} 读取密钥, 缺失时回退到 {@link #FALLBACK_DEV_SECRET}。 @param secret 配置中的加密密钥(可为空)
backend/src/main/java/com/ieltsstudio/ai/util/AiApiKeyCrypto.java:75
MethodAiFeature
(AiTaskType taskType, int builtinCost)
backend/src/main/java/com/ieltsstudio/ai/AiFeature.java:50
MethodAiLogSanitizer
()
backend/src/main/java/com/ieltsstudio/ai/util/AiLogSanitizer.java:34
MethodAiParseService
(ObjectMapper objectMapper, AiSettingsService aiSettingsService,
backend/src/main/java/com/ieltsstudio/service/AiParseService.java:528
MethodAiUsageGuard
构造函数注入 {@link ObjectProvider},使 {@link AiRedisRateLimiter} 成为可选依赖。 <p>当 {@code app.redis.enabled=false} 时 {@link AiRedisRateLimiter} bean 不存在, {@code
backend/src/main/java/com/ieltsstudio/ai/service/AiUsageGuard.java:78
MethodClozeService
(ObjectMapper objectMapper, AiSettingsService aiSettingsService,
backend/src/main/java/com/ieltsstudio/service/ClozeService.java:48
MethodDatum
(String label, double value, String unit)
backend/src/main/java/com/ieltsstudio/service/VisualBlockConverter.java:354
MethodRateWindow
(long minute)
backend/src/main/java/com/ieltsstudio/ai/service/AiUsageGuard.java:346
MethodRedisOpsRedisImpl
(RedisTemplate<String, Object> redisTemplate)
backend/src/main/java/com/ieltsstudio/infra/RedisOpsRedisImpl.java:13
FunctionaddExam
(exam)
frontend/src/stores/exam.js:595
MethodaddExam
POST /exam-collections/{id}/exams — 添加试卷到试卷集
backend/src/main/java/com/ieltsstudio/controller/ExamCollectionController.java:77
MethodaddExam
(Long collectionId, Long examId)
backend/src/main/java/com/ieltsstudio/service/ExamCollectionService.java:80
FunctionaddManualWord
(entry)
frontend/src/stores/word.js:507
FunctionaddPendingExam
(id, title, type, duration = 60)
frontend/src/stores/exam.js:613
MethodaddToDefault
POST /words/books/default/entries — 添加单词到默认词书 <p>请求体:{@code { "word": "单词", "meaning": "释义", "example": "例句(可选)" }}
backend/src/main/java/com/ieltsstudio/controller/WordBookController.java:116
FunctionaddToDefaultBook
(entry)
frontend/src/stores/word.js:520
MethodadminBootstrapRunner
( @Value("${app.init-admin.username:}") String username, @Value("${app.init-admin.emai
backend/src/main/java/com/ieltsstudio/config/AdminBootstrapConfig.java:48
MethodadminShouldHaveAllPermissionsWhenExplicitModeDisabled
()
backend/src/test/java/com/ieltsstudio/service/AdminPermissionServiceTest.java:50
MethodadminShouldUseExplicitPermissionsWhenModeEnabled
()
backend/src/test/java/com/ieltsstudio/service/AdminPermissionServiceTest.java:90
MethodaiChat
POST /exams/ai-chat — AI assistant chat based on exam context body: { "examContext": "...", "question": "..." }
backend/src/main/java/com/ieltsstudio/controller/ExamController.java:215
MethodaiChatShouldBeTextCost1
()
backend/src/test/java/com/ieltsstudio/ai/AiFeatureTest.java:21
MethodasyncParseExecutor
()
backend/src/main/java/com/ieltsstudio/config/AsyncConfig.java:20
MethodavgBandByUserId
(Long userId)
backend/src/main/java/com/ieltsstudio/mapper/ExamRecordMapper.java:23
MethodbuiltinMarkFailureShouldRefundAndWriteFailedRecord
()
backend/src/test/java/com/ieltsstudio/ai/service/AiUsageGuardTest.java:182
MethodbuiltinMarkSuccessShouldWriteSuccessRecord
()
backend/src/test/java/com/ieltsstudio/ai/service/AiUsageGuardTest.java:161
MethodbuiltinModeShouldResolveSiteConfig
()
backend/src/test/java/com/ieltsstudio/ai/service/AiSettingsServiceUserModeTest.java:68
MethodbuiltinRejectedRecordShouldIncludeProvider
()
backend/src/test/java/com/ieltsstudio/ai/service/AiUsageGuardTest.java:281
MethodbuiltinShouldCreateQuotaAndReserveCredits
()
backend/src/test/java/com/ieltsstudio/ai/service/AiUsageGuardTest.java:64
MethodbuiltinShouldRejectWhenCreditsInsufficient
()
backend/src/test/java/com/ieltsstudio/ai/service/AiUsageGuardTest.java:132
MethodbuiltinShouldReloadQuotaWhenInsertedIdNotReturned
()
backend/src/test/java/com/ieltsstudio/ai/service/AiUsageGuardTest.java:92
MethodbuiltinShouldThrowWhenInsertedQuotaCannotBeReloaded
()
backend/src/test/java/com/ieltsstudio/ai/service/AiUsageGuardTest.java:116
MethodcacheManager
(RedisConnectionFactory connectionFactory, GenericJackson2JsonRedisSerial
backend/src/main/java/com/ieltsstudio/config/RedisConfig.java:54
MethodcacheManager
()
backend/src/main/java/com/ieltsstudio/config/RedisConfig.java:81
MethodchangePassword
PUT /users/me/password — 修改密码 <p>请求体:{@code { "oldPassword": "旧密码", "newPassword": "新密码(至少8位)" }} <p>需要先验证旧密码正确后,才允许设置新密码。
backend/src/main/java/com/ieltsstudio/controller/UserController.java:70
MethodchatFailureShouldMarkFailureAndNotLeakKey
()
backend/src/test/java/com/ieltsstudio/service/AiParseServiceTextProviderTest.java:125
MethodchatShouldPostOpenAiCompatibleRequestToLocalServer
()
backend/src/test/java/com/ieltsstudio/ai/client/OpenAiCompatibleClientLocalServerTest.java:106
MethodchatShouldRejectEmptyQuestion
()
backend/src/test/java/com/ieltsstudio/service/AiParseServiceTextProviderTest.java:229
MethodchatShouldRejectOverlongQuestion
()
backend/src/test/java/com/ieltsstudio/service/AiParseServiceTextProviderTest.java:239
MethodchatShouldThrowSanitizedErrorWhenProviderReturnsError
()
backend/src/test/java/com/ieltsstudio/ai/client/OpenAiCompatibleClientLocalServerTest.java:178
MethodchatShouldThrowWhenApiKeyEmpty
()
backend/src/test/java/com/ieltsstudio/ai/client/OpenAiCompatibleClientTest.java:34
MethodchatShouldThrowWhenApiKeyNull
()
backend/src/test/java/com/ieltsstudio/ai/client/OpenAiCompatibleClientTest.java:45
MethodchatShouldThrowWhenCredentialsNull
()
backend/src/test/java/com/ieltsstudio/ai/client/OpenAiCompatibleClientTest.java:26
MethodchatShouldThrowWhenRequestNull
()
backend/src/test/java/com/ieltsstudio/ai/client/OpenAiCompatibleClientTest.java:21
MethodchatShouldUseMaxCompletionTokensForMimo
()
backend/src/test/java/com/ieltsstudio/ai/client/OpenAiCompatibleClientLocalServerTest.java:150
MethodcheckCloze
POST /words/cloze/check — AI 批改完形填空 <p>请求体:{@code { "passage": "...", "blanks": [...], "userAnswers": {"1":"A","2":"C"} }}
backend/src/main/java/com/ieltsstudio/controller/WordBookController.java:249
MethodcheckShouldHandleMissingOptionsSafely
()
backend/src/test/java/com/ieltsstudio/service/ClozeServiceProviderTest.java:246
MethodcheckShouldMarkFailureWhenClientThrows
()
backend/src/test/java/com/ieltsstudio/service/ClozeServiceProviderTest.java:170
MethodcheckShouldRejectEmptyBlanks
()
backend/src/test/java/com/ieltsstudio/service/ClozeServiceProviderTest.java:226
MethodcheckShouldRejectEmptyPassage
()
backend/src/test/java/com/ieltsstudio/service/ClozeServiceProviderTest.java:208
MethodcheckShouldRejectEmptyUserAnswers
()
backend/src/test/java/com/ieltsstudio/service/ClozeServiceProviderTest.java:234
MethodcheckShouldRejectOverlongPassage
()
backend/src/test/java/com/ieltsstudio/service/ClozeServiceProviderTest.java:218
MethodcheckShouldUseTextCredentialsAndMarkSuccess
()
backend/src/test/java/com/ieltsstudio/service/ClozeServiceProviderTest.java:150
FunctioncheckinToday
()
frontend/src/api/checkin.js:14
← previousnext →401–500 of 952, ranked by callers