删除功能

怎样移除你用不到的模块。

每个可选模块都是一个垂直切片,下面每一份删除步骤都经过机器验证: bun run verify:deletion 会在仓库的副本里逐个执行删除,并要求构建、类型检查和 单元测试全部通过。

通用步骤:

  1. 删除 src/features/<name>/
  2. 删除它在 src/routes/ 下的路由。
  3. src/core/db/schema.ts 里删掉它那一行(如果它在以下文件里注册过,也一并 删掉:src/core/payment/handlers.ts / src/core/stats/handlers.ts / src/core/account/handlers.ts / src/core/jobs/handlers.ts / src/core/audit/handlers.ts / src/core/email/handlers.ts / src/core/user-detail/handlers.ts)。
  4. 删掉它的导航链接、仪表盘统计块和文案。
  5. 运行 bun run db:generate 生成删表迁移,然后构建。

积分(Credits)

删除 src/features/credits/src/routes/_app/credits.tsx。从 schema 汇总文件、 payment、stats 和 user-detail 的 handlers 里各删一行,再删掉导航链接、仪表盘里的 积分统计、侧边栏底部的余额行(src/routes/_app.tsx[feature: credits] 注释之间的部分),以及 src/config/plans.ts 里的 creditPacks 一节。

文件(Files)

删除 src/features/files/src/routes/_app/files.tsx,以及两个 src/routes/api/files* 路由。删掉汇总文件里的那一行、account 和 user-detail 的 handler 行、导航链接、仪表盘统计,以及 wrangler.jsonc 里的 R2 绑定。

博客与文档

删除 src/features/content/content/{blog,docs}/src/routes/_marketing/{blog,docs}/,再删掉博客/文档的导航链接(落地页上也有 指向文档的链接)。保留 mdx 插件、src/mdx.d.tscontent/legal/——服务条款和 隐私政策页面属于核心部分,要用到它们。

候补名单(Waitlist)

删除 src/features/waitlist/src/routes/waitlist.tsxsrc/routes/_app/admin/waitlist.tsxsrc/routes/api/v1/admin/waitlist.ts。 删掉汇总文件里的那一行、core/statscore/user-detailcore/account 的 handler 行、后台导航项、src/routes/_app/admin/index.tsx 里的 waitlist.* 标签、src/config/app-config.ts 里的 waitlist 开关,以及读取这个开关的那些 行动号召分支。

通知(Notifications)

删除 src/features/notifications/。删掉汇总文件里的那一行、core/notifycore/account 的 handler 行,以及铃铛(src/routes/_app.tsx[feature: notifications] 注释之间的部分——侧边栏顶部一行和移动端顶栏)。 src/core/notify/ 保留:没有注册任何接收端时,每一次 notify() 调用都是空操作。

分析(Analytics)

删除 src/features/analytics/src/routes/api/ph/$.tssrc/config/app-config.ts 里的 analytics 块。从 core/paymentcore/auditcore/account 的 handler 注册表里删掉它的行。它没有数据表,所以不需要迁移。 把 PostHog 的 key 留空就能关掉它,什么都不用删。

审计日志(Audit log)

删除 src/features/audit/src/routes/_app/admin/audit.tsxsrc/routes/api/v1/admin/audit.ts。从 schema 汇总文件以及 core/auditcore/statscore/user-detailcore/paymentcore/accountcore/jobs 的 handler 注册表里各删一行,再删掉后台导航链接。src/core/audit/ 保留:没有注册 任何接收端时,代码里每一次 audit() 调用都是空操作。

邮件日志(Email log)

删除 src/features/email-log/src/routes/_app/admin/email-log.tsxsrc/routes/api/v1/admin/emails.ts。从 schema 汇总文件以及 core/emailcore/statscore/user-detailcore/accountcore/jobs 的 handler 注册表里各删一行,再删掉后台导航链接。src/core/email/ 保留——发信照常工作, 只是投递事件没有接收端了。

反馈(Feedback)

删除 src/features/feedback/src/routes/_app/admin/feedback.tsxsrc/routes/api/v1/admin/feedback.ts。从 schema 汇总文件以及 core/statscore/user-detail 的 handler 注册表里各删一行,再删掉 src/components/app-sidebar.tsx 里的后台导航项、用户菜单里的「帮助与反馈」 及其对话框(src/routes/_app.tsx[feature: feedback] 注释之间的部分), 以及 src/routes/_app/admin/index.tsx 里的 feedback.* 标签。

推广分成(Affiliate)

删除 src/features/affiliate/src/routes/_app/affiliate.tsxsrc/routes/_app/admin/affiliate.tsx 和推荐跳转路由 src/routes/r.$code.ts。 从 schema 汇总文件以及 core/paymentcore/accountcore/jobscore/statscore/settingscore/authz 的 handler 注册表里各删一行。然后 剪掉以下位置的 [feature: affiliate] 块:src/components/app-sidebar.tsx (用户侧和后台侧的导航项,外加 HandCoinsIcon 的 import)、通知铃铛的渲染器、 src/routes/_app/admin/index.tsx 里的指标标签、 src/features/auth/components/account-section.tsx 里的删除保护分支、设置页的分组 列表,以及 src/config/private-paths.ts。最后把 src/core/account/events.ts 里的保护码类型收窄回 'ACTIVE_SUBSCRIPTION'——已经没有任何地方会抛出 PENDING_PAYOUT 了。