MCPcopy Create free account

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

Functions952 in github.com/Pandlagon/IELTS-Studio

↓ 5 callersMethodrequireAdmin
防御性 ADMIN 校验 + 精细权限校验(Phase 8C)。
backend/src/main/java/com/ieltsstudio/controller/AdminQuotaController.java:159
↓ 5 callersMethodresponse
(String content)
backend/src/test/java/com/ieltsstudio/service/ClozeServiceProviderTest.java:82
↓ 5 callersMethodresponse
(String content)
backend/src/test/java/com/ieltsstudio/service/AiParseServiceTextProviderTest.java:81
↓ 5 callersMethodrun
(String... args)
backend/src/main/java/com/ieltsstudio/config/DatabaseMigrationRunner.java:16
↓ 5 callersMethodsanitizeSummary
summary 脱敏 + 截断(Phase 8D-polish 增强)。 <p>规则(按顺序依次替换,保留 key 名与分隔符,掩盖敏感值): <ol> <li>{@code Authorization: Bearer xxx} / {@code Authorization=xxx} → {@
backend/src/main/java/com/ieltsstudio/service/AdminAuditLogService.java:237
↓ 5 callersMethodstr
(Object value, String fallback)
backend/src/main/java/com/ieltsstudio/service/WordStudyStateService.java:45
↓ 5 callersMethodsummary
汇总最近 N 天的 AI usage 统计。 <p>权限:{@link AdminPermission#ADMIN_AI_USAGE_VIEW}</p> @param days 统计天数,默认 7,范围 {@code [1, 90]},越界自动 clamp
backend/src/main/java/com/ieltsstudio/controller/AdminAiUsageController.java:56
↓ 5 callersMethodtoDto
User → AdminUserDto 映射。<b>不包含 password 字段</b>。
backend/src/main/java/com/ieltsstudio/service/AdminUserService.java:284
↓ 5 callersMethoduserCreds
()
backend/src/test/java/com/ieltsstudio/service/AiParseServiceExamParseProviderTest.java:61
↓ 5 callersMethoduserCreds
()
backend/src/test/java/com/ieltsstudio/service/AiParseServiceTextProviderTest.java:57
↓ 4 callersFunction_batchKey
(bid)
frontend/src/stores/word.js:141
↓ 4 callersFunction_parseJson
(value, fallback)
frontend/src/stores/word.js:163
↓ 4 callersFunction_sortKey
(bid)
frontend/src/stores/word.js:140
↓ 4 callersMethodappendColorHint
(String base, String raw)
backend/src/main/java/com/ieltsstudio/service/AsyncParseService.java:352
↓ 4 callersMethodbuildCreateRequest
(String username, String email, String password, String role)
backend/src/test/java/com/ieltsstudio/service/AdminUserServiceTest.java:285
↓ 4 callersMethodbuildPermissionDto
构造某用户的权限视图 DTO(包含 userId / username / role / explicitMode / permissions)。
backend/src/main/java/com/ieltsstudio/service/AdminPermissionService.java:98
↓ 4 callersMethodcomputeTf
(List<String> tokens)
backend/src/main/java/com/ieltsstudio/util/TfIdfUtil.java:68
↓ 4 callersMethodcountActiveAdmins
统计当前启用的 ADMIN 用户数量(deleted = 0),用于"不能禁用/降级最后一个管理员"保护。
backend/src/main/java/com/ieltsstudio/mapper/UserMapper.java:106
↓ 4 callersMethodcountByUsernameOrEmail
检查 username 或 email 是否已被占用(含已禁用用户),用于启动时管理员初始化的冲突检测, 避免插入时撞 users.username / users.email 的 UNIQUE 约束。
backend/src/main/java/com/ieltsstudio/mapper/UserMapper.java:121
↓ 4 callersMethoddedupeSetKey
(Long bookId)
backend/src/main/java/com/ieltsstudio/service/AsyncWordService.java:225
↓ 4 callersMethodextractTextFromBytes
(byte[] bytes, String filename)
backend/src/main/java/com/ieltsstudio/service/FileParseService.java:30
↓ 4 callersMethodfindByCollectionId
(Long collectionId)
backend/src/main/java/com/ieltsstudio/mapper/ExamCollectionItemMapper.java:14
↓ 4 callersMethodfindByUserId
(Long userId)
backend/src/main/java/com/ieltsstudio/mapper/ExamMapper.java:15
↓ 4 callersMethodfindTestContent
Try to skip intro/preamble pages and start from actual exam content. Looks for common IELTS test-content markers; returns the original text if none fo
backend/src/main/java/com/ieltsstudio/service/AiParseService.java:150
↓ 4 callersMethodgetProviderName
()
backend/src/main/java/com/ieltsstudio/service/QwenAiParseService.java:381
↓ 4 callersMethodinitBuiltinPresets
()
backend/src/main/java/com/ieltsstudio/ai/service/AiProviderRegistry.java:34
↓ 4 callersMethodinsertRecord
(Long userId, AiFeature feature, AiKeyMode keyMode, String provider, String stat
backend/src/main/java/com/ieltsstudio/ai/service/AiUsageGuard.java:281
↓ 4 callersMethodlistPresetsByTaskType
按任务类型筛选 preset。 <p>规则:taskType 为 null 的自定义模板(OPENAI_COMPATIBLE)不会被返回, 因为它的任务类型由用户配置时决定,不属于某一固定任务类型的预设。</p>
backend/src/main/java/com/ieltsstudio/ai/service/AiProviderRegistry.java:117
↓ 4 callersMethodlistQuotas
分页查询用户当前周期 quota 列表。无 quota 行的用户返回虚拟默认视图,不创建行。
backend/src/main/java/com/ieltsstudio/service/AdminQuotaService.java:51
↓ 4 callersFunctionloadEntries
(bookId)
frontend/src/stores/word.js:372
↓ 4 callersMethodloadUserOrThrow
(Long userId)
backend/src/main/java/com/ieltsstudio/service/AdminQuotaService.java:202
↓ 4 callersMethodnewGuardWithRedis
构造 guard 并注入可选的 Redis limiter mock;传 null 模拟 Redis 未启用
backend/src/test/java/com/ieltsstudio/ai/service/AiUsageGuardTest.java:55
↓ 4 callersFunctionnormalizeOptionText
(label, text)
frontend/src/stores/exam.js:59
↓ 4 callersMethodnullIfBlank
(String s)
backend/src/main/java/com/ieltsstudio/ai/service/AdminAiUsageStatsService.java:157
↓ 4 callersMethodparseDocument
Upload PDF bytes to LlamaParse, poll for completion, return markdown text. Blocks in the calling thread (call from @Async context only).
backend/src/main/java/com/ieltsstudio/service/LlamaParseService.java:45
↓ 4 callersMethodparseDoubleSafe
(String s)
backend/src/main/java/com/ieltsstudio/service/AsyncParseService.java:368
↓ 4 callersMethodqwenUserCreds
()
backend/src/test/java/com/ieltsstudio/service/QwenAiParseServiceProviderTest.java:70
↓ 4 callersMethodregister
注册一个 preset。本阶段主要为内置 preset 服务;后续阶段可由用户自定义 Provider 注入。
backend/src/main/java/com/ieltsstudio/ai/service/AiProviderRegistry.java:87
↓ 4 callersMethodrequireAdmin
防御性 ADMIN 校验 + 精细权限校验。 <p>Spring Security 已在路由层做 {@code hasRole("ADMIN")} 拦截, 此处做二次校验防止配置遗漏,并要求精细权限以兼容模式/显式模式规则判断。</p>
backend/src/main/java/com/ieltsstudio/controller/AdminPermissionController.java:124
↓ 4 callersMethodresponse
(String content)
backend/src/test/java/com/ieltsstudio/service/AiParseServiceExamParseProviderTest.java:73
↓ 4 callersMethodtoPresetResponse
(AiProviderPreset preset)
backend/src/main/java/com/ieltsstudio/service/UserAiSettingsService.java:300
↓ 4 callersMethodtokenize
(String text)
backend/src/main/java/com/ieltsstudio/util/TfIdfUtil.java:60
↓ 4 callersMethodtrimToNull
去除首尾空白,空白字符串返回 null。
backend/src/main/java/com/ieltsstudio/service/AdminUserService.java:275
↓ 4 callersMethodupdateRole
修改用户角色。 <p>保护:不能降级自己、不能降级最后一个 ADMIN、role 必须是 USER / ADMIN。 @param currentAdminId 当前操作的管理员 ID(从 AuthUser 取) @param targetUserId 目标用户 ID @param role
backend/src/main/java/com/ieltsstudio/service/AdminUserService.java:154
↓ 4 callersMethoduserCreds
()
backend/src/test/java/com/ieltsstudio/service/ClozeServiceProviderTest.java:58
↓ 4 callersMethoduserCreds
()
backend/src/test/java/com/ieltsstudio/service/AiParseServiceLegacyCleanupTest.java:69
↓ 3 callersFunction_saveReviewStates
()
frontend/src/stores/word.js:154
↓ 3 callersFunction_updateReviewSchedule
(wordId, remembered, reactionMs = 0)
frontend/src/stores/word.js:558
↓ 3 callersMethodcountByUserIdAndTitle
(Long userId, String title)
backend/src/main/java/com/ieltsstudio/mapper/ExamMapper.java:42
↓ 3 callersMethodcreds
(String baseUrl, AiProviderType provider, String tokenField)
backend/src/test/java/com/ieltsstudio/ai/client/OpenAiCompatibleClientLocalServerTest.java:63
↓ 3 callersMethoddisableUser
禁用用户(deleted = 1)。 <p>保护:不能禁用自己、不能禁用最后一个 ADMIN。 @param currentAdminId 当前操作的管理员 ID @param targetUserId 目标用户 ID @return 更新后的用户 DTO @throws RuntimeEx
backend/src/main/java/com/ieltsstudio/service/AdminUserService.java:185
↓ 3 callersMethodextract
(List<String> passages)
backend/src/main/java/com/ieltsstudio/service/VisualBlockConverter.java:17
↓ 3 callersMethodfindByExamId
(Long examId)
backend/src/main/java/com/ieltsstudio/mapper/QuestionMapper.java:13
↓ 3 callersMethodfindByUsername
(String username)
backend/src/main/java/com/ieltsstudio/mapper/UserMapper.java:15
↓ 3 callersMethodgenerateWritingGuidance
Phase 5C-3:写作要点生成迁移到新 Provider 架构。 <p>流程:{@code AiSettingsService.resolve(userId, TEXT)} → {@code AiUsageGuard.checkBeforeCall(userId, WRITING_GUIDAN
backend/src/main/java/com/ieltsstudio/service/AiParseService.java:574
↓ 3 callersMethodgetById
(Long id)
backend/src/main/java/com/ieltsstudio/service/ExamCollectionService.java:28
↓ 3 callersMethodgetHeadingMap
Get heading descriptions: try regex extraction first, fall back to AI extraction. <p>Phase 5C-3:{@code userId == null} 时跳过 AI fallback(旧 {@code postP
backend/src/main/java/com/ieltsstudio/service/AiParseService.java:1256
↓ 3 callersMethodgetSettings
获取当前用户 AI 设置;无记录时创建默认 BUILTIN 设置并返回。
backend/src/main/java/com/ieltsstudio/service/UserAiSettingsService.java:64
↓ 3 callersMethodgetUserPermissions
查询某用户的有效权限集合。 <p>规则: <ul> <li>USER → 永远返回空集合。</li> <li>ADMIN + 兼容模式 → 返回全部权限枚举。</li> <li>ADMIN + 显式模式 → 返回表中的权限。</li> </ul> @param userId 用户 I
backend/src/main/java/com/ieltsstudio/service/AdminPermissionService.java:75
↓ 3 callersMethodgetUserQuota
查询单个用户当前周期 quota。无 quota 行时返回虚拟默认视图,不创建行。
backend/src/main/java/com/ieltsstudio/service/AdminQuotaService.java:80
↓ 3 callersMethodhandleQwenParsedResult
Handle the structured JSON returned by QwenAiParseService. The result may contain {"sections":[...]} or flat {"passages":[...],"questions":[...]}.
backend/src/main/java/com/ieltsstudio/service/AsyncParseService.java:403
↓ 3 callersFunctionincludesAny
(text, keywords)
frontend/src/stores/exam.js:80
↓ 3 callersMethodisExplicitPermissionMode
是否处于显式权限模式:表非空时为 true。
backend/src/main/java/com/ieltsstudio/service/AdminPermissionService.java:260
↓ 3 callersMethodmarkFailed
(WordBook book, String reason)
backend/src/main/java/com/ieltsstudio/service/AsyncWordService.java:196
↓ 3 callersMethodmask
生成 masked key,供前端展示 / 日志记录。 <p>委托 {@link AiLogSanitizer#maskApiKey(String)},行为示例:{@code sk-abcdef123456 → sk-abc 3456}。</p> @param plainApiKey 明文
backend/src/main/java/com/ieltsstudio/ai/util/AiApiKeyCrypto.java:164
↓ 3 callersMethodmeta
(int passageIndex, String rawBlock, String yAxis)
backend/src/main/java/com/ieltsstudio/service/VisualBlockConverter.java:329
↓ 3 callersMethodnewQuota
(Long userId, Period period, int creditsTotal, int creditsUsed)
backend/src/main/java/com/ieltsstudio/service/AdminQuotaService.java:175
↓ 3 callersMethodnewRecord
(String taskType, String feature, int cost, String keyMode, String status,
backend/src/test/java/com/ieltsstudio/ai/service/AiUsageQueryServiceTest.java:177
↓ 3 callersMethodnormalizeCharts
(Map<String, Object> node)
backend/src/main/java/com/ieltsstudio/service/AsyncParseService.java:141
↓ 3 callersFunctionnormalizeReviewState
(raw = {})
frontend/src/stores/word.js:40
↓ 3 callersMethodnumber
(Object value)
backend/src/main/java/com/ieltsstudio/service/WordStudyStateService.java:50
↓ 3 callersMethodparseAndSave
(Long userId, Long examId, byte[] fileBytes, String originalFilename, boolean par
backend/src/main/java/com/ieltsstudio/service/AsyncParseService.java:57
↓ 3 callersMethodparseExamContent
(String text)
backend/src/main/java/com/ieltsstudio/service/FileParseService.java:81
↓ 3 callersMethodparseSingle
(Long userId, Long examId, String text)
backend/src/main/java/com/ieltsstudio/service/AsyncParseService.java:568
↓ 3 callersMethodprogressKey
(Long bookId)
backend/src/main/java/com/ieltsstudio/service/AsyncWordService.java:229
↓ 3 callersMethodreadBody
读取请求体并返回字符串。
backend/src/test/java/com/ieltsstudio/ai/client/OpenAiCompatibleClientLocalServerTest.java:76
↓ 3 callersMethodrequireUserId
防御性校验:Controller 正常会传 {@code authUser.getId()}, 但 Service 层自己也应拒绝 null userId,避免后续查询/写入出现 NPE 或脏数据。
backend/src/main/java/com/ieltsstudio/service/UserAiSettingsService.java:55
↓ 3 callersMethodresponse
(String content)
backend/src/test/java/com/ieltsstudio/service/AiParseServiceLegacyCleanupTest.java:81
↓ 3 callersMethodresponse
(String content)
backend/src/test/java/com/ieltsstudio/service/QwenAiParseServiceProviderTest.java:94
↓ 3 callersMethodresponse
(String content)
backend/src/test/java/com/ieltsstudio/service/AiParseServiceWordGenerationProviderTest.java:84
↓ 3 callersMethodsadd
(String key, String... members)
backend/src/main/java/com/ieltsstudio/infra/RedisOps.java:20
↓ 3 callersMethodsafeInsert
插入 quota 行,处理 (user_id, period_start) 唯一约束并发冲突: 插入失败时重新查询已存在的行返回。
backend/src/main/java/com/ieltsstudio/service/AdminQuotaService.java:189
↓ 3 callersMethodsanitize
通用脱敏:移除 Authorization 头、屏蔽疑似 key 片段、截断过长内容。 <p>适用于把任意输入(请求头、字符串、异常 message)写入日志前的处理。</p> @param input 原始输入 @return 脱敏后的字符串;null 返回空串
backend/src/main/java/com/ieltsstudio/ai/util/AiLogSanitizer.java:95
↓ 3 callersMethodselectAdminOperationLogs
分页查询审计日志,按 created_at DESC 排序。 <p>所有筛选参数均可为 null(表示不过滤)。使用 {@code <script>} 动态 SQL 保持项目现有 Mapper 风格。</p> @param offset 偏移量(page pageSize) @par
backend/src/main/java/com/ieltsstudio/mapper/AdminOperationLogMapper.java:40
↓ 3 callersMethodsendJson
发送 JSON 响应。
backend/src/test/java/com/ieltsstudio/ai/client/OpenAiCompatibleClientLocalServerTest.java:81
↓ 3 callersMethodstartServer
启动绑定 127.0.0.1 + 随机端口的 fake provider,返回 baseUrl。
backend/src/test/java/com/ieltsstudio/ai/client/OpenAiCompatibleClientLocalServerTest.java:56
↓ 3 callersMethodtext
构造纯文本消息
backend/src/main/java/com/ieltsstudio/ai/model/AiChatMessage.java:31
↓ 3 callersMethodtrimToNull
(String s)
backend/src/main/java/com/ieltsstudio/service/AdminQuotaService.java:252
↓ 3 callersMethodtruncate
截断到 maxLen 字符,避免 DB 列长度溢出
backend/src/main/java/com/ieltsstudio/service/AdminAuditLogService.java:255
↓ 3 callersFunctionupdateResolvedTheme
()
frontend/src/stores/theme.js:27
↓ 3 callersMethodvalidate
统一基础参数校验,三个入口方法共用
backend/src/main/java/com/ieltsstudio/ai/service/AiUsageGuard.java:304
↓ 3 callersMethodworkflowParse
Three-step workflow parse using DeepSeek (each step has a focused prompt): Step 1A: Extract passages only (focused on article text extraction) Ste
backend/src/main/java/com/ieltsstudio/service/AsyncParseService.java:597
↓ 2 callersFunction_checkBatchComplete
()
frontend/src/stores/word.js:636
↓ 2 callersFunction_errorKey
(bid)
frontend/src/stores/word.js:139
↓ 2 callersFunction_hasRealToken
()
frontend/src/stores/word.js:158
↓ 2 callersFunction_loadStudyState
(bookId)
frontend/src/stores/word.js:169
↓ 2 callersFunction_localScore
(questions)
frontend/src/stores/exam.js:558
↓ 2 callersFunction_refreshBookMeta
(bookId)
frontend/src/stores/word.js:437
↓ 2 callersFunction_reviewKey
(bid)
frontend/src/stores/word.js:142
↓ 2 callersFunction_saveErrorCounts
()
frontend/src/stores/word.js:151
← previousnext →101–200 of 952, ranked by callers