【架构优化】从 validateInsightExecution 中拆出单条用量 Token/成本校验 validateInsightUsageAmounts
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 74/100
Piste de recherche
Le travail se trouve dans internal/httpapi/insights.go, à l'intérieur de validateInsightExecution, où la boucle par usage mélange des vérifications de fournisseur/modèle, la déduplication et des vérifications Token/coût. Commence par lire cette boucle, puis déplace les vérifications Token et coût dans une fonction au niveau du paquet validateInsightUsageAmounts(u domain.InsightUsage) string, en gardant les messages et l'ordre des vérifications inchangés. Terminé lorsque TestInsightsValidationAndHTTP passe toujours, qu'un nouveau test piloté par table couvre les valeurs limites valides et chaque branche d'erreur, et que gofmt, go vet ./internal/httpapi/ et go test ./internal/httpapi/ sont propres.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
现状问题
internal/httpapi/insights.go 的 validateInsightExecution(圈复杂度 43)同时承担两层校验:执行汇总本身(类型、ID、状态、时间、时长、URL)和 usage 数组里每一项模型用量。单项用量的 Token 范围、缓存/推理包含关系、成本状态与金额校验约 20 行嵌在 for 循环里,和 provider/model 必填、去重混在一起,阅读和单独测试都不方便。
重构方案
- 把循环体中 Token 与成本的校验抽成包级函数
validateInsightUsageAmounts(u domain.InsightUsage) string,错误文案与判断顺序保持原样。 validateInsightExecution的循环只保留:provider/model 必填 → 同一 provider/model 去重 → 调用validateInsightUsageAmounts,三者顺序与原实现完全一致,因此同时命中多条规则时返回的错误也不变。
影响范围
仅 internal/httpapi/insights.go 一个函数内部拆分 + 新增测试文件;/api/insights/v1/ingest 接口行为、错误文案、返回码均不变,无对外接口变化。
验证方式
- 原有
TestInsightsValidationAndHTTP全部通过; - 新增
validateInsightUsageAmounts表驱动测试,覆盖合法输入(含边界值)与每一条错误分支; gofmt、go vet ./internal/httpapi/、go test ./internal/httpapi/。
- Langage dominant
- Go
- Étoiles
- 141
- Forks
- 28
- Merge moyen
- 1 j 15 h
- PR mergées (30 j)
- 113
Préparer son environnement
- Fournit un Dockerfile ou un fichier Docker Compose
- Propose un modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de Tencent/LoopForge
-
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
Les mainteneurs répondent en général sous 1 jour
-
[Bug]: 官方镜像未安装 wecom-cli,企业微信通知报「通知服务未安装 wecom-cli」Peut-être pris @newexploreor l’a pris il y a 1 jour. Ouvertebug
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
Tencent/LoopForge#156 · 1 commentaire · 1 personne assignée ·
Les mainteneurs répondent en général sous 1 jour
-
【架构优化】合并 gitwork/workbranch.go 中 push/pull 重复的默认提交身份注入为 withFallbackIdentityPeut-être pris @fx-kurumi l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 40/100
Les mainteneurs répondent en général sous 1 jour
-
【架构优化】从 runtime.installNPMCLI 中拆出 npm 参数拼装 npmCLIInstallArgs 与安装结果启用 activateNPMStagePeut-être pris @fx-kurumi l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 30/100
Les mainteneurs répondent en général sous 1 jour
-
【架构优化】从 githubCombinedChecks 中拆出 commit status/check runs 读取与整体状态汇总 githubChecksOverallPeut-être pris @fx-kurumi l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 18/100
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de Tencent/LoopForge
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
bazel-contrib/rules_go#4784 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Уязвимые компоненты в GoOuverte
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
POSIdev-community/aictl#40 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
nebari-dev/nebari-infrastructure-core#774 ·
Les mainteneurs répondent en général sous 1 jour
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
oracle/terraform-provider-oci#2662 ·
-
[BUG]: A pre-hashed ACL password in uppercase hex fails ACL LOAD and crash-loops restarted podsOuvertebug needs-triage
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
valkey-io/valkey-operator#644 ·
Les mainteneurs répondent en général sous 3 jours