【架构优化】从 httpapi.filterIssues 中拆出负责人与关键词匹配谓词
维护者通常 1 天内回复
评估
调研方向
Start in internal/httpapi/issues.go and read filterIssues, paying attention to the assignee and keyword branches inside its loop. The issue asks for two private predicates, issueMatchesAssignee and issueMatchesQuery, with the original matching behaviour kept intact. Run go test ./internal/httpapi/ to confirm the existing filter behaviour before changing anything. Note that pull request #439 is already open against this issue, so check that work before starting.
由索引模型根据 Issue 内容生成。
描述
现状问题
internal/httpapi/issues.go 的 filterIssues 在一个循环里同时处理项目、状态、来源、负责人、关键词五类过滤条件,其中:
- 负责人过滤用了
unassigned分支 +matched临时变量的两层嵌套 if/else; - 关键词过滤内联拼接检索文本(标题/ID/编号/TAPD ID/外部 ID),并在每条记录上重复计算
needle。
循环体被这两段嵌套逻辑撑长,难以单独阅读和测试。
重构方案
- 拆出
issueMatchesAssignee(item, assignee) bool:保持unassigned(大小写不敏感)、按用户 ID 数字匹配、按 AssigneeID 大小写不敏感匹配的原语义; - 拆出
issueMatchesQuery(item, needle) bool:保持原检索文本拼接与fuzzyIssueTitleMatch回退; filterIssues循环体改为调用上述两个谓词,needle在循环外计算一次;排序逻辑不动。
影响范围
仅 internal/httpapi/issues.go 中 filterIssues 及新增两个包内私有函数;对外接口、查询参数语义、排序规则均不变。
验证方式
- 新增
issue_filter_predicates_test.go覆盖负责人(空、unassigned、用户 ID、AssigneeID 大小写)、关键词(标题、编号、外部 ID、模糊匹配、不匹配)以及filterIssues组合过滤结果; gofmt、go vet ./internal/httpapi/、go test ./internal/httpapi/通过(本机缺 Chromium 的既有失败除外)。
- 主要语言
- Go
- 星标
- 141
- 派生
- 28
- 平均合并
- 1 天 15 小时
- 30 天内合并 PR
- 113
环境准备
- 提供 Dockerfile 或 Docker Compose 文件
- 有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
Tencent/LoopForge 的其他 Issue
-
难度 2/5 1-3 小时 新手友好度 74/100
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 75/100
维护者通常 1 天内回复
-
[Bug]: 官方镜像未安装 wecom-cli,企业微信通知报「通知服务未安装 wecom-cli」可能已有人在做 @newexploreor 于 1 天前认领。 未关闭bug
难度 2/5 1-3 小时 新手友好度 76/100
Tencent/LoopForge#156 · 1 条评论 · 已指派 1 人 ·
维护者通常 1 天内回复
-
【架构优化】合并 gitwork/workbranch.go 中 push/pull 重复的默认提交身份注入为 withFallbackIdentity可能已有人在做 @fx-kurumi 今天认领。 未关闭
难度 2/5 1-3 小时 新手友好度 40/100
维护者通常 1 天内回复
-
【架构优化】从 runtime.installNPMCLI 中拆出 npm 参数拼装 npmCLIInstallArgs 与安装结果启用 activateNPMStage可能已有人在做 @fx-kurumi 今天认领。 未关闭
难度 2/5 1-3 小时 新手友好度 30/100
维护者通常 1 天内回复
查看 Tencent/LoopForge 的全部 Issue
相似的 Issue
-
team:library-maintainers
难度 2/5 1-3 小时 新手友好度 82/100
padok-team/burrito#1208 · 1 条评论 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 62/100
bazel-contrib/rules_go#4784 · 1 条评论 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 75/100
-
难度 2/5 1-3 小时 新手友好度 62/100
POSIdev-community/aictl#40 ·
-
难度 1/5 1 小时以内 新手友好度 62/100
prime-radiant-inc/evener#6306 ·
维护者通常 1 天内回复