Skip to content

feat: CodeRabbit 配置 + Lark 权限优雅降级(#380 #382)#390

Merged
leeguooooo merged 1 commit into
mainfrom
feat/coderabbit-lark
Jul 12, 2026
Merged

feat: CodeRabbit 配置 + Lark 权限优雅降级(#380 #382)#390
leeguooooo merged 1 commit into
mainfrom
feat/coderabbit-lark

Conversation

@leeguooooo

Copy link
Copy Markdown
Owner

两个 owner-action issue 的代码可做部分(App 授权/Lark 后台权限仍需 owner):

  • PR review 接 coderabbit #380:新增 .coderabbit.yaml——按 monorepo 各子系统定制审查重点(越权/SQL/终端转义/迁移 NULL/鉴权附件/i18n)。装 CodeRabbit App 需 owner GitHub 授权,配置先入仓。
  • 需要处理 #382:LarkMemberInvite 撞一次「通讯录权限未开通」后记住并降级——隐藏徒劳搜索框 + 持久提示(请管理员开权限 / 用邀请链接)。权限是 owner 在 Lark 后台配置项。

web 全过、tsc/build 干净。

Refs #380 #382

- #380:新增 .coderabbit.yaml——按 monorepo 各子系统(worker/cli/web/shared)定制
  审查重点(越权/SQL/终端转义/迁移 NULL 语义/鉴权附件/i18n 同步)。装 App 需 owner
  在 github.com 授权(敏感外部动作),配置文件先入仓即用。
- #382:LarkMemberInvite 撞一次「通讯录权限未开通」(503 permission) 后记住并优雅降级
  ——隐藏徒劳的搜索框,持久提示「请管理员在 Lark 后台开权限;也可用邀请链接」。
  权限本身是 owner 在 Lark 后台的配置项,前端只能降级不能代开。

验证:web 全过(i18n en/zh 对齐)、tsc/build 干净。

Refs #380 #382

Claude-Session: https://claude.ai/code/session_01PgxkZeqJmDge3dYe9W2tPZ
@github-actions

Copy link
Copy Markdown

PR Reviewer Guide 🔍

Here are some key observations to aid the review process:

🎫 Ticket compliance analysis ✅

380 - Fully compliant

Compliant requirements:

  • 新增 .coderabbit.yaml——按 monorepo 各子系统定制审查重点(越权/SQL/终端转义/迁移 NULL/鉴权附件/i18n)
  • 装 CodeRabbit App 需 owner GitHub 授权,配置先入仓

382 - Fully compliant

Compliant requirements:

  • LarkMemberInvite 撞一次「通讯录权限未开通」后记住并降级——隐藏徒劳搜索框 + 持久提示(请管理员开权限 / 用邀请链接)
  • 权限是 owner 在 Lark 后台配置项
⏱️ Estimated effort to review: 3 🔵🔵🔵⚪⚪
🧪 No relevant tests
🔒 No security concerns identified
⚡ Recommended focus areas for review

可能的逻辑错误

isDirectoryPermissionError 函数中,检查 cause.message.toLowerCase().includes("permission") 可能不够严格。如果 cause.message 包含 "permission" 但不是权限问题,可能会误判。建议增加更具体的条件或日志记录以确保准确性。

function isDirectoryPermissionError(cause: unknown): boolean {
  return (
    cause instanceof LarkDirectoryApiError &&
    cause.status === 503 &&
    cause.message.toLowerCase().includes("permission")
  );

@github-actions

Copy link
Copy Markdown

PR Code Suggestions ✨

Explore these optional code suggestions:

CategorySuggestion                                                                                                                                    Impact
Possible issue
增加类型断言以避免潜在的运行时错误。

为了确保 cause 是一个对象并且具有 statusmessage 属性,建议在检查之前添加类型断言。

web/src/components/LarkMemberInvite.tsx [40-45]

 function isDirectoryPermissionError(cause: unknown): boolean {
-  return (
-    cause instanceof LarkDirectoryApiError &&
-    cause.status === 503 &&
-    cause.message.toLowerCase().includes("permission")
-  );
+  if (cause instanceof LarkDirectoryApiError && 'status' in cause && 'message' in cause) {
+    return (
+      cause.status === 503 &&
+      cause.message.toLowerCase().includes("permission")
+    );
+  }
+  return false;
 }
Suggestion importance[1-10]: 7

__

Why: 该建议通过添加类型断言来确保 cause 是一个对象并且具有 statusmessage 属性,从而提高了代码的健壮性。

Medium
General
避免在权限错误时重复设置错误信息。

在设置 directoryUnavailabletrue 后,可以考虑不再设置 error,以避免重复提示。

web/src/components/LarkMemberInvite.tsx [68-69]

-if (isDirectoryPermissionError(cause)) setDirectoryUnavailable(true);
-setError(errorLabel(cause, "LarkInvite.error.search"));
+if (isDirectoryPermissionError(cause)) {
+  setDirectoryUnavailable(true);
+} else {
+  setError(errorLabel(cause, "LarkInvite.error.search"));
+}
Suggestion importance[1-10]: 6

__

Why: 该建议避免了在权限错误时重复设置错误信息,提高了用户体验和代码逻辑的清晰度。

Low

@leeguooooo leeguooooo merged commit ce9e38f into main Jul 12, 2026
20 checks passed
leeguooooo added a commit that referenced this pull request Jul 12, 2026
owner 令:非阻塞被当成『不用看』,review 成摆设(#390 带 review 就合、没人读)。
改成软阻断:pr_agent 作为 main 分支保护的 required check,合并前必须等它跑完——
端点通→review 已贴 PR、合并者一定看得到;端点挂→无评论但 job 照样绿(continue-on-error
+ 末尾 exit 0),绝不卡死所有 PR。超时收到 8 分钟。配套『合并前先读 review』纪律。
@leeguooooo leeguooooo mentioned this pull request Jul 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant