接入 drizzle 和 neon 数据库,改造项目的 nitro 接口,实现真实的后端
目前,本项目的 nitro 接口使用的是本地数据,不是来自数据库的数据。
我需要你帮我链接 neon,创建数据库。并接入 drizzle,实现对数据库的字段变更维护操作。
并帮我增加合适的 neon MCP。
001 从其他项目模仿 neon 的初始化配置
从 D:\code\github-desktop-store\learn-nitro-starter-with-vercel__ruan-cat\package.json 项目内,模仿学习,并初始化,配置本项目的 neon drizzle 配置。
- 安装对应的依赖。
- 配置对应的配置文件。
- 在 admin 后台项目的 package.json 内补全关于 drizzle ORM 的命令。
- 在
apps\admin\README.md内补全对 apps\admin\package.json 命令的说明。
002 改造 vercel 环境变量的存储与获取方式;拓展增设 admin 项目对 env:pull 命令的使用;编写教程文档
- 现在在 admin 项目内运行该环境变量拉取命令时,会要求先 link 现存的 vercel 项目。我希望你帮我完成改造。
- 对
vercel-deploy-tool.config.ts文件,将写死的三个 vercel 变量,存储在项目根目录的环境变量内。这三个变量可以上传到 git,在项目根目录内新建合适命名的 env 环境变量文件,并存储这三个 vercel 字符串变量。确保该文件不会被 git 忽略掉。可以正常提交。 - 确保 vercel-deploy-tool.config.ts 文件能够使用合适的
@dotenvx/dotenvx暴露出来的工具,正常的读取环境变量。写法参考apps\admin\drizzle.config.ts文件。 - 在项目根目录,在合适的位置,新建文件夹,新建一个 vitest 测试用例,该测试用例主要用于测试能否正常获取上述三个 vercel 环境变量字符串。
- 确保你新建的 vitest 测试用例,满足 CLAUDE.md 的要求,并且能够被根目录的 package.json 的 test 命令运行。
- 在你完成上述的环境变量存储改造后,再开始下一个阶段的任务。
- 这是下一个阶段的任务,请你改造并编写合适的 admin 项目的 env:pull 命令,在使用 pull 拉取环境变量时,先完成 vercel link 命令。、
- link 命令所需的 vercel token,来自于全局环境变量。如果在 github workflow 流水线环境内,会全局提供。在本项目内,在根目录内的
.env文件内存储。 - link 所需的项目名称,已经被你改造并存储在对应的环境变量内,请使用。
- 请你恰当的使用
@dotenvx/dotenvx所提供的能力,改写命令,确保运行命令时能够获取多个不同环境变量文件的值。
- link 命令所需的 vercel token,来自于全局环境变量。如果在 github workflow 流水线环境内,会全局提供。在本项目内,在根目录内的
- 再完成 link 链接 vercel 项目后,再开始获取 vercel 环境变量,最终拿到 neon 数据库的敏感信息。
- 最后,在
apps\admin\src\docs目录内,新建合适文件夹,新建合适命名的 markdown 文档,说明清楚这一整套环境变量数据获取的流程,确保其他人能够快速上手理解这一套环境变量获取流程。- 你编写的文档是满足 vitepress 文档格式的 markdown 文档。正确的使用 index.md 命名的页面文件。
01 更改 link 的过程,修改脚本
我不认可你在 apps\admin\scripts\env-pull.ts 内实现 link 的做法。我希望你通过运行 vercel link 命令的方式完成项目链接,并不需要你手动的去新建文件。这不是你的职责。
link 时,请注意使用 token 和 project 项目名称。
003 设计专用的前缀变量,重设 admin 项目使用
- apps\admin\package.json 的
env:pull,即apps\admin\scripts\env-pull.ts的const envFilePath = resolve(adminDir, ".env");,改成存储在特定专用的 vercel 命名风格的环境变量文件名称。命名为.env.vercel.local。我不希望这个apps\admin\.env子包的文件被覆盖掉。 - 在
apps\admin\.gitignore内,作为子包的忽略文件,确保你忽略掉特定拉取的环境变量文件。其他的环境变量文件正常保留,在子包内,确保.env.vercel.local这个从 vercel 内获取的 neon 环境变量文件,会被忽略掉。 - 确保
apps\admin\.gitignore内补全了合适的说明注释。 - 注意阅读以下环境变量例子:
comm_admin_11__DATABASE_URL="xxx"
comm_admin_11__DATABASE_URL_UNPOOLED="xxx"
comm_admin_11__NEON_AUTH_BASE_URL="xxx"
comm_admin_11__NEON_PROJECT_ID="xxx"- 现在,你从 vercel 获取的环境变量,都会带有
comm_admin_11_前缀。请你在apps\admin\.envadmin 项目的项目级别环境变量内,设置一个环境变量,专门存储这个写死的前缀字符串。并且在该前缀环境变量增加注释,重点说明该变量在https://vercel.com/ruancat-projects/~/integrations/neon/icfg_aFCpQJZiS9sXcBJfKSgHG3ZR/resources/storage/store_1hsWrjTtdSHtwdJQ/projectsurl 内设置并维护。 - 在 admin 项目内,编写一个通用工具函数,从
apps\admin\.env获取环境变量,先获取前缀环境变量的comm_admin_11_前缀,再获取来自.env.vercel.local环境变量的 neon 数据库字段。注意实现字段名的拼接,实现从.env.vercel.local内获取正确命名的环境变量。 - 模仿
tests\vercel-env.test.ts的内容,也在 admin 项目内,编写一个测试用例,测试获取环境变量。允许测试的环境变量为comm_admin_11__PGDATABASE="neondb",测试是否能读取字符串neondb即可。 - 确保你编写的 admin 专用的
tests\vercel-env.test.ts测试用例,能够被apps\admin\package.json的 vitest 识别到。能够被 test 命令使用并测试到。 - 在本项目全局查询
DATABASE_URL字符串。admin 项目更改对 DATABASE_URL 环境变量的使用。并且去更改其他关于 neon 环境变量的使用。环境变量的命名规则改了,增加了前缀。请改成使用你编写的环境变量获取函数来完成。 - 最后,在
apps\admin\src\docs\env-setup目录内,专门新建一个文档,说明清楚 admin 项目时如何获取来自 vercel 环境变量的,有哪些细节。目的是为了让其他人能够快速看懂,快速上手这部分的逻辑。
004 初始化 neon 数据库的数据库表字段定义 init-neon-db-schema
- 目前,
apps/type/src/business目录是空的(刚开始时)。因此 type 项目的db:generate命令无法使用。因为没有具体的表设置,所以无法生成数据库迁移 sql。 - 我需要你全面的阅读全部类型项目内出现的文件。了解清楚涉及到的业务类型有哪些。
- 你需要全面的阅读
apps\admin\server\api内出现的 nitro 接口,了解清楚涉及到那些数据内容。 - 根据你阅读的内容,在
apps/type/src/business/{domain}/{module}目录内,设计,并新建数据库表。每个模块对应一个schema.ts文件。 - 这是一个上下文繁重的任务,文件非常多,但是迁移改造难度简单的任务。请你适当的使用 MCP 或者是 skills 技能,使用和 gemini 相关的工具或技能,辅助你完成大量上下文的阅读任务。
- 这是一个多文件任务,请你设计多个并行运行的子代理,批量的,高效率完成代码修改任务。
请你适当的使用 gemini 相关的 MCP 或者是 skills 技能,完成多文件的阅读,与归纳整理
01 检查任务并自我复查是否有缺漏缺省的内容
请你仔细检查一下,是否有缺漏的模块没有新建 apps/type/src/business/{domain}/{module}/schema.ts 数据库表字段设计。
为 openspec 的 init-neon-db-schema 任务,重新检查,完成全部类型项目、nitro 接口涉及到的全部模块的表设计。
重新制作完整的,完善的,细致的 openspec\changes\init-neon-db-schema\tasks.md 任务清单列表。确保你没有出现模块缺漏。确保全部 nitro 对应接口的模块,都有完整的数据库表设计。
02 列举说明清楚 schema 目录内全部的数据库表,便于查询了解
现在 apps/type/src/business 目录内有很多数据库表。我也能在 neon 内看到这些新建的数据库表了,但是我直接去阅读 neon 时,看到那么多表名,还是搞不清这些表。
- 新建本地技能
neon-db-list: 请你帮我新建一个本地级别的 skills 技能,这个技能本质上就是一个清单表,全部数据库表名的清单表。在.claude\skills\neon-db-list内新建这款技能。- 新建技能时,请务必满足 skills 的要求。请你使用全局提供的
skill-creator技能,来新建这款本地项目级别的技能neon-db-list。
- 新建技能时,请务必满足 skills 的要求。请你使用全局提供的
- 更新
CLAUDE.md文件,说明清楚,只要在apps\admin\server\db\schemas目录内,增加新的数据库表,或者是数据库表改名了,删除数据库表了。都需要主动去更新.claude\skills\neon-db-list的清单。为CLAUDE.md文件增加这款行为规范。
03 增加类型项目内的字段,是否要同步去增加 schema 目录内数据库表字段?
在类型项目内,最近的提交内,有很多文件的类型拓展了。增加了很多字段。请问对于 init-neon-db-schema 任务而言,是否要继续同步增加表字段?
请你阅读 openspec\specs 内关于 init-neon-db-schema 任务的内容。并为我分析问题。
04 排查现有的 schema 是否存在冲突配置
我很怀疑 apps/type/src/business 目录内设计的数据库表之间的关系很混乱。是否会出现键关联冲突的问题。
请你帮我深度检查以下隐患,避免出现故障。
005 排查 openspec\specs 存在的潜在冲突与风险内容
请你帮我分析全部的 openspec\specs 的规范,看看这些规范是不是有相互冲突的?
我准备实现有意义的接口了。实现真正的 nitro + drizzle 的后端接口。帮我仔细分析以下,历史的 openspec\specs 规范内,是不是会有和编写实际后端接口相悖的内容?
如果有,请你编写一份完整详细的报告,并告诉我如何实现旧规范前提下的迁移改造,实现真正的 nitro + drizzle 的后端接口。
01
- 请你把对 openspec\specs\nitro-api\spec.md 的修改,迁移到
.claude\skills\use-nitro内,迁移 openspec\specs\nitro-api\spec.md 的能力。让现在的.claude\skills\use-nitro学会如何用真实的 neon + drizzle 实现真正的接口请求。而不是使用 mock 假数据。 - 让
use-nitro项目级别技能,参考apps\admin\src\docs\reports\2026-02-03-nitro-drizzle-migration-report.md报告,学会具体的 mock 假数据迁移成真数据的实施方案。未来实现 mock 接口代码改写成 neon 真实数据时,其更改操作规范就是由use-nitro来提供的。 - 回退
openspec\specs\nitro-api的写法。在你确保已经将相关的核心技能,核心的写法迁移整合到use-nitro项目级别技能之后,再开始回退openspec\specs\nitro-api目录的规范写法。 - 文件夹目录改名,改成
openspec\specs\nitro-api-with-mock。 - 对
openspec\specs\nitro-api-with-mock\spec.md这个文件增加说明注释,说明这是基于 nitro + 本地 mock 数据的编码规范。在此处仅仅作为归档记录,不作为有效规范。
02
请你恰当的拆分文件,说明清楚在 mock 模式下,和 neon 真实情况下 nitro 接口应该如何编写。
现在你的做法是完全覆盖掉了关于 mock 模式下的知识点。我希望你保留关于 mock + nitro 的编写技能。同时保留关于 mock 和 neon 真实数据库的 nitro 接口编写能力。
并且提供清晰的,mock 接口写法迁移成 neon 数据库接口的写法。
006 分析 nitro 假数据并编写 neon 数据库插入脚本 analyze-mock-data-and-create-db-seed
我们项目目前没有有意义的 server/db/seed.ts 文件,所以"db:seed"命令是无法运行的。
- 请你阅读
https://github.com/ruan-cat/learn-nitro-starter-with-vercel/blob/dev/server/db/seed.ts代码,了解清楚为了实现有意义的数据库写入,需要怎么编写代码。 - 请你全面的阅读清楚
apps\admin\server\api内的全部mock-data.ts文件,思考如何服用这些数据,使得你可以实现有意义的server/db/seed.ts,最终实现对 neon 数据库的批量写入功能。我期望能够运行db:seed命令,对数据库表实现一次全量的数据预备。数据库存储一大堆数据。 - 这是一个简单,但是文件数量巨大的任务。请你务必使用和 gemini 相关的技能或 MCP,帮助你检索文件。帮助你探索文件。
- 我希望最后的
server/db/seed.ts文件,实现了有意义的模块导入和代码分治。
01 更新 apps\admin\README.md 文档
openspec 的 analyze-mock-data-and-create-db-seed 任务,增加了新的 package.json 命令,请你及时更新 apps\admin\README.md 文档,更新对命令的说明文档,避免出现误导和混乱。为 db:generate-seed 和 db:seed 命令编写文档。
请你阅读 apps\admin\src\docs\reports\2026-02-03-analyze-mock-data-and-create-db-seed-inspection.md 报告,将更新的新命令,整理内容,并编写专门的文档。在 apps\admin\src\docs 内新建专门的文档,说明清楚如何正确使用 db:generate-seed 和 db:seed 命令。
02 继续执行 analyze-mock-data-and-create-db-seed 任务
现在数据库表增加了新的表,需要你为这个数据库表增加新的 seed 种子数据。
03 处理 apps\admin\server\db\seed-sql 内文件出现的类型报错,并评估 analyze-mock-data-and-create-db-seed 任务是否已经完整的执行完成了
请你帮我评估一下,目录 apps\admin\server\db\seed-sql 内文件,其导入的模块,是否都是有意义的?我看到有些模块导入进来但是没有使用。这让我非常怀疑 analyze-mock-data-and-create-db-seed 任务是否已经完整的执行完成了?还是说这个任务执行的有欠缺?不完整?
如果不完整,有欠缺。请你及时更新 openspec 的 analyze-mock-data-and-create-db-seed 任务对应的 tasks.md 文件,补充完善。
随后,开始处理 apps\admin\server\db\seed-sql 内文件出现的类型报错。我不希望看到这些种子生成脚本内,出现任何类型报错。必须是完全正确的代码。
04 检查 seed 生成脚本内隐藏的风险项
- 针对 openspec 的
analyze-mock-data-and-create-db-seed任务。 - 全面阅读
apps\admin\server\db\seed-sql出现的 seed 数据生成脚本。 - 检查
apps\admin\scripts\generate-seed-sql.ts和apps\admin\scripts\run-seed-sql.ts生成脚本。 - 在实际执行
run-seed-sql脚本时,直接就卡死失败了。无法继续执行下去。后台项目的db:seed命令无法继续执行下去。 - 请你帮我检查一下上述的 sql seed 种子数据的生成代码,看看在生成 sql 时,是否存在隐晦的数据库关系冲突的写法。导致运行脚本时直接出错。
- 你也可以远程链接 neon 数据库。使用 neon MCP 来连接远程数据库,检查数据库的表设置和相关的关联内容,是否出现冲突?
05 总结故障,并编写合适的 skills 技能,避免未来在处理 schema 数据库表、和生成 seed 种子数据时,出现故障
请你阅读以下报告,并总结经验,在 .claude\skills 内编写技能。避免以后出现故障。
- apps\admin\src\docs\reports\2026-02-06-schema-architecture-audit.md
- apps\admin\src\docs\reports\2026-02-06-schema-conflict-analysis.md
- apps\admin\src\docs\reports\2026-02-06-seed-script-fixes.md
007 评估类型项目改造报告,并生成一份完整的全栈类型改造评估报告
- 请你完整的阅读
apps\admin\src\docs\reports\2026-02-05-gemini-zod.md报告。 - 请你评估一下,为了实现全栈化的,统一类型来源的代码改造,这样的破坏性变更。需要对类型项目做怎么样的改造?
- 需要安装那些和 drizzle 相关的依赖?需要安装 zod tRPC 之类的全栈类型统一库么?
- 数据库表 schemas ,需要增加那些内容?需要怎么使用上述的包,才能暴露出来自数据库表生成出来的业务类型?
- 来自 schema 表字段定义文件生成的全栈业务类型,该怎么组织封装到现在的类型项目内?
- 目前的类型项目要怎么完成改造,才能避免出现严重的破坏?
- 来自 schema 生成的业务类型,要怎么给 nitro 全栈接口使用?
- 改造后的类型项目,要怎么确保前端的类型使用不会出现故障?
请你深度的检索,思考,评判,并给我出具一份非常长的,详细的报告。帮助我了解全貌。
有效产出文档如下:
- apps\admin\src\docs\reports\2026-02-05-trpc-vs-shared-schema-analysis.md
- apps\admin\src\docs\reports\2026-02-05-full-stack-type-transformation-assessment.md
- apps\admin\src\docs\reports\2026-02-06-full-stack-type-transformation-assessment.md
01 检查报告之间的内容潜在冲突校验
请你帮我阅读以下这几款报告文档,并深度思考,这些报告之间是否存在冲突,这些报告介绍的基于类型项目的全栈改造方案,是否有彼此冲突的地方?
apps\admin\src\docs\reports\2026-02-05-gemini-zod.mdapps\admin\src\docs\reports\2026-02-05-trpc-vs-shared-schema-analysis.mdapps\admin\src\docs\reports\2026-02-05-full-stack-type-transformation-assessment.mdapps\admin\src\docs\reports\2026-02-06-full-stack-type-transformation-assessment.md
008 面向全栈项目,重构类型项目 full-stack-type-transformation
对应 openspec 任务 full-stack-type-transformation 。
001 拓展非常详细清晰的 full-stack-type-transformation 任务
针对目录 openspec\changes\full-stack-type-transformation 的 openspec 任务。
我认为现在的规范,和具体的实施细节,写的太简单了,不够详细。具体的操作细节存在失真。要求你重新审阅 full-stack-type-transformation 的全部文件,补全具体的操作规范和实施细节。
该任务本质上是参考以下文档实现的。目前的 full-stack-type-transformation 任务没有完整的,完善的,齐全的以 openspec 实施规范,完整的记录以下报告的实施方案。
apps\admin\src\docs\reports\2026-02-05-gemini-zod.mdapps\admin\src\docs\reports\2026-02-05-trpc-vs-shared-schema-analysis.mdapps\admin\src\docs\reports\2026-02-05-full-stack-type-transformation-assessment.mdapps\admin\src\docs\reports\2026-02-06-full-stack-type-transformation-assessment.md
002 检查过往规范和文档对于类型项目操作规范的冲突
现在我们开始全面重构类型项目,重构成面向全栈的项目了。我相信现在的规范,肯定和 openspec\changes\full-stack-type-transformation 体现的规范有巨大冲突。
请你全面阅读以下文件,找到过往类型项目的操作规范,与现行的类型项目操作规范,有那些显著的冲突项。请你帮我罗列出来,以报告的形式全盘罗列出来。务必罗列出一份完整的,巨大的,全面的冲突规范报告。编写到 apps\admin\src\docs\reports\2026-02-06-full-stack-type-transformation-conflict-analysis.md 内。
openspec\specs全部的历史 spec 文件。重点检查和类型项目相关的规范。.claude\skills本地的 skills 规范。CLAUDE.mdAI 记忆文件。- 其他关于类型项目定位、类型项目指导规范、schema 存储位置、schema 生成 sql 的内容。包括但不限于任何形式的报告、文档、迁移脚本、代码。
你需要检查的冲突项和误导项:
- schema 数据存储位置的硬编码写法。
- 类型项目的定位与处理规范。
003 完成 resolve-type-transformation-conflicts 相关的清理与重构任务
我们现在处于项目架构转型的危险区,关键期。是偿还技术债务的关键一步。
该系列任务是为了充分解决 apps\admin\src\docs\reports\2026-02-06-full-stack-type-transformation-conflict-analysis.md 报告所述的一些列关于类型项目架构改造的内容。
请你严格的,充分思考的,谨慎地,完成类型项目的重构,清理错误的硬编码路径,标记过时的文档等任务。
009 压缩合并 openspec 现存的 spec 规范,整理归纳成概括性强的 skills 技能规范
现在的 openspec 的 spec 规范,实在是太多了。这很不对劲。随着 openspec 能够完成的任务越来越多,openspec 出现的 spec 规范文件也是越来越多了。
我需要你帮我全面的检查,现在现存的全部 openspec\specs 规范文件内,请你按照内容,做好分类。并设计一个多个有意义的,全面的,充分的,详实的,概括性强的 skills 文档,用 skills 技能文档,来代替现在已经蔓延出来的,过多的 openspec\specs 规范文件。
我需要你做出总结,实现对 openspec\specs 规范文件的全面压缩,压缩、改造、迁移成 skills 技能文档。
你的 skills 编写在 .claude\skills 目录内。
你必须使用 skill-creator 这款技能。使用 skill-creator 这款技能的要求,去创建满足规格的技能文档。
- 先检查冲突内容,确保这些文本所传达的意思,没有出现相互冲突的情况:
CLAUDE.md.claude\skills全部文件openspec\specs全部规范文件
- 根据你对内容的理解,以及对项目整体的理解。设计合适数目的 skills。并在
.claude\skills目录内新建内容。 - 对于数量繁多的 spec 规范,和具体的操作规范,我希望你以 skills 参考引用文件的形式,来引用导入这些具体的执行 spec 规范。
- 不允许你出现对 spec 操作规范理解失误和失真的情况。我不希望经过本次改造后,出现 spec 知识丢失和遗忘的情况。
- 设计合适的步骤,做出检查,检查对
openspec\specs全部规范文件的理解和整合效果。 - 最后,我才允许你大批量的删除掉
openspec\specs内现存的文件。最终解决使用 openspec 时出现的 spec 文件蔓延,散乱,不便于统一阅读的情况。
001 清除掉过时的 对话沟通术语表 ,并更新该表
- 阅读 CLAUDE.md 文档。
- 清除掉过时的
对话沟通术语表。针对现存的对话沟通术语表,请你认真审视那些项是不合时宜的,那些全新的概念项需要添加进来? - 认真评估本项目的 schema 数据库表相关的文件,为了给 AI 大模型给予清晰的记忆项,请你总结一条简短的,清晰的记忆项,在 CLAUDE.md 写入相关的 schema 知识,告知大模型如何对待本项目出现的 schema 。
- 认真评估关于
openspec\specs的概念。我希望 AI 大模型能够学会看情况读取 openspec\specs 目录的规范,了解清楚本项目能够使用的,遵守的规范文档。
010 完成 nitro 接口改写任务 nitro-interface-rewrite
我需要你设计,并完成一次重大的代码写法改造改写任务。
- 全面检查
apps\admin\server\api内出现的全部 nitro 接口。了解清楚在使用本地假数据时,nitro 接口是怎么编写的。 - 全面阅读现在的类型项目,搞清楚现在的类型项目提供了那些业务类型。schema 有哪一些?
- 阅读
openspec\specs的全部规范,了解清楚有哪些东西能够指导编写 nitro 接口。我需要编写借助 drizzle 请求 neon 数据库的,真实的 nitro 接口。我希望未来的 nitro 接口,全部都使用真实的 neon 数据库。 - 我希望改造后的 nitro 接口,能够使用项目目前已经准备好的,zod 相关的验证库,实现有意义的验证。
- 你阅读以下的这些报告,并指定具体能够完成有效改造 nitro 接口的规划设计。
apps\admin\src\docs\reports\2026-02-05-gemini-zod.mdapps\admin\src\docs\reports\2026-02-05-trpc-vs-shared-schema-analysis.mdapps\admin\src\docs\reports\2026-02-05-full-stack-type-transformation-assessment.mdapps\admin\src\docs\reports\2026-02-06-full-stack-type-transformation-assessment.md
我需要你充分的,全面的,深入的思考上述内容,并为我指定一个完整全面的 nitro 接口改造计划。我需要你的计划做到以下几点,并解决掉以下几个议题:
- nitro 改造计划将要学习
.claude\skills内那些现存的 nitro 指导技能? - nitro 接口怎么导入现在来自 drizzle 和 zod 生成的 neon 数据库表类型?如何使用 schema 生成的业务数据库表类型?
- nitro 接口怎么确保使用类型项目提供的 zod 来完成入参和写表的校验?
- nitro 接口怎么使用 drizzle 来查表?写表?
- nitro 接口写表或查表时出现的错误处理怎么弄?
- 在 nitro 接口全面的使用 schema 数据库表生成的业务类型时,该怎么对待之前已经写好的,数量众多的 Interface 业务类型?
- 删除掉旧的类型项目提供的 Interface 业务类型时,怎么去同步迁移,改造前端项目直接使用的这些 Interface 业务类型,并完成平稳的替换和过渡?
我要求你的 nitro 改造计划,要写的足够完善,足够长。我要求你至少要写够 2000 行,作为一个及其详实的计划文档,必须要写够足够的行数。至少要到 2000 行。
01 继续改进现有的 nitro-interface-rewrite 任务
- 改进,增强任务文档: 任务清单细节密集但缺少阶段边界、依赖顺序、验收标准与回滚策略,执行上容易失控。那就按照你的设计,去改进
openspec\changes\nitro-interface-rewrite\tasks.md文档。 - 技能引用缺口: 任务要求“明确要学习哪些 .claude/skills”,但当前计划未列出具体技能清单与作用范围,容易造成执行时的规范漂移。建议至少显式引用 nitro-api-development、type-project-organization、schema-and-seed-guardian、neon-db-list、project-schema-registry、code-style 等技能,并给出“何时必须引用”的边界。 nitro-api-development。
- 规范冲突未闭环: 以 skills 技能为准。按照
.claude\skills\nitro-api-development\SKILL.md即,nitro-api-development技能为准。 - 标准写法冲突迹象: 要求以
defineHandler,一律以技能为准。去修改openspec\changes\nitro-interface-rewrite\design.md文档,让这个设计文档以nitro-api-development技能为准。 - 迁移路径不完整: 任务列出大量 API 与 schema,但没有“从现有接口到目标表”的映射表、也没有“先试点、后批量”的阶段策略。缺少“依赖数据库表已存在”的前提校验步骤。按照你的设计,去改造成
先试点、后批量的试点批量迁移策略。改造openspec\changes\nitro-interface-rewrite\tasks.md任务清单表。 - 旧 Interface 处理不完整: 任务要求明确对旧 Interface 的处置与前端迁移方式,但计划中没有具体“过渡策略”和“替换顺序”说明,只在提案里粗略提到 Shadow Migration,需要更细的可执行规则。
按照你的设计,去增加合适的,清晰的,可执行规划。去探索该部分的设计。
- 错误处理与事务策略不明确: 清单提到 handleDbError,但未定义“什么时候必须事务”“哪些错误要映射到哪些业务码”“是否统一返回结构”。这会造成接口风格不一致。
去改造对应的写法。说明清楚什么时候应该使用该能力。
需要先形成“统一规范基线 + 分阶段迁移计划 + 类型迁移策略 + 错误处理标准 + 业务映射表”的完整计划文档,再进入实施会更稳。
02 迭代更新现有的接口:补全错误处理、参数获取、返回值字段等来自nitro-api-development技能的新要求
我们的 nitro 接口编写要求规范改了。之前已经实现的接口都需要及时的应用新的规范,以便确保接口及时满足新的规范。
新的 skill 规范为: .claude\skills\nitro-api-development ,即 nitro-api-development 技能。
你需要重点关注的几个增加的新规范要点:
- 破坏性变更: 返回字段格式有变化。请注意使用最新的,正确的接口返回值字段约束。请你主动使用来自类型项目提供的
JsonVO类型,来实现严格的约束。 - post 请求要使用 readBody 函数来完成参数获取。避免出现参数解析错误的情况。
- 破坏性变更: 整个接口都应该加上 try-catch 格式,并使用严格的错误返回值类型。并主动暴露出足够的错误信息。
需要你更新的,现有的,已经经过一次 neon+drizzle 真实数据库改造的接口目录如下:
apps\admin\server\api\dev-team\config-manage ,即该目录内的全部接口。都需要经过你的补充改造。
请你先列举清楚全部 apps\admin\server\api\dev-team\config-manage 子目录下的全部 nitro 接口,确保不会出现缺漏缺省的情况。在不缺漏接口的前提下,开始根据 skills 技能规范的要求,改造代码。
03 根据增加的 schema 数据库表,及时补全对应的文档和内容
请注意 git ba4926b89ab836058cad8d3757b995420f6289b0 的提交,这次提交按照设计,增加了数据库表字段
我需要你严谨地执行 schema-change-sync 技能的要求,以及其他技能的要求。去补全相关的:
- 数据库迁移 sql
- 暴露的业务类型
- 需要补全补充的 skills 文档
- neon-db-list
- project-schema-registry
- 从 schema 内生成的业务类型
- 以及前端部分的修改。
我列举的内容可能有缺省,你需要认真阅读 schema-change-sync 的要求,去确定需要修改的范围,然后补充对应的修改。
04 根据报告提及到的特殊情况,继续完成对应 nitro 接口的改造
阅读以下报告的要求,根据特殊情况,继续完成 nitro-interface-rewrite 任务。
- apps\admin\src\docs\reports\2026-02-14-nitro-interface-rewrite-completion-report.md
05 为 nitro 接口补全格式化函数
在 .claude\skills\nitro-api-development\SKILL.md 技能内,增加了新的代码编写要求,提供 formatDateTime 格式化函数,处理接口返回值的日期格式化问题。
请你对现在的 nitro 接口,补全这个日期格式化函数,务必遵循 nitro-api-development 的严格要求。
这是一个简单的改造任务,但是涉及的文件众多,你在遵循 skill 技能的时候,可能会出现严重的偏差和失忆,请按照我的步骤,来新建 agent team 子代理团队,避免主代理的上下文窗口过大,导致失忆。
- 阅读
apps\admin\src\router\rank\rank-route-keys.ts文件,明确清楚全部 nitro 接口文件,他们都按照路由 key 的目录层级来组织 nitro 接口文件。这帮助你定位 nitro 接口文件。 - 注意按照业务模块,和处理接口的数目,合理的新建,划分 agent team 子代理需要处理的文件数目。不要出现某个子代理处理过多 nitro 接口的情况。你应该新建多个专门改写 nitro 接口的子代理成员。
- 当你的其中一个 agent team 子代理,发现所处理的文件,已经使用了
formatDateTime格式化函数。那么就应该去通知其他全部的子代理,通知整个 agent 团队的成员,以这个apps\admin\server\api\dev-team\cache-manage\refresh-cache\list.post.ts对formatDateTime格式化函数的使用为参考,认真学习代码用法。 - 新建一个独立的 agent,用来独立检查 nitro 接口是否都使用上
formatDateTime格式化函数了。使用 glob 语法检索文件目录的方式,独立查询并检验。如果发现有缺漏,就把缺省的文件地址,发给对应的子代理成员,要求其补全。避免缺漏。
06 更新迭代 createdAt 和 updatedAt 的字段设计差异
在现在的 schema 表字段设计,和前端字段中,出现了一个明显巨大的差异项。时间字段差异。
- 前端字段是
createTime,后端字段是createdAt - 前端字段是
updateTime,后端字段是updatedAt
我需要你按照以下的设计,去完成字段设计更改。我选择更改 schema 数据表的字段。而不是前端字段。
这是一个更改文件数目巨大的任务,需要你全面的使用 agent team 来分模块,分任务类型的完成修改任务。最后由主代理及时的关闭掉子代理团队成员。
- 去更新 skills 文档对日期的使用。后端的字段现在是 createTime 和 updateTime 。这是破坏性变更。请你重点去检查现在的 skills 文档对 createdAt 和 updatedAt 的使用。比如:
nitro-api-development对日期的使用就是错误的。- .claude\skills\nitro-api-development\SKILL.md
07 全面检查 nitro 接口对各项技能的执行程度和落实程度
我们的 nitro 接口经过了很多轮的迭代,其行为标准都参差不齐。效果很差。
我需要你实现对全体 nitro 接口的对比。要求你对全部的 nitro 接口,逐个的对比现行的 skills 标准,检查这些接口写法是否充分的满足 skills 的要求。检查结果编写到一个公共的、统一的报告文档内。供我进行下一个阶段的研判。
你的工作模式是新建一个多个并行运行的子代理团队,即一个 agent team。不允许主代理亲自参与具体的任务。
- 新建 agent team 子代理成员,专门负责检索清楚全部和 nitro 相关的 skill 文档,包括
CLAUDE.md文档。明确清楚 nitro 接口的检查核实标准。 - 阅读
apps\admin\src\router\rank\rank-route-keys.ts,明确清楚 nitro 接口是基于业务路由的形式做文件目录层级的。确保你可以检索到全部的 nitro 接口。 - 根据模块,接口数目,做对比任务的划分。确保每一个独立并行的 agent team 团队成员,能够分配到足够数目的 nitro 接口。并执行后续的对比任务。确保每一个 agent team 子代理成员不会出现任务过多,过载的情况。
- 每一个 agent team 子代理成员,必须写入到同一个报告文档内,对每一个检查的 nitro 接口文件做详细的说明。包括符合 skill 规范,和缺漏的,不符合规范的部分。允许这个报告文档变得很长。
- 最后,主代理将优雅地逐个关闭已经完成任务的 agent team 子代理成员。
务必确保每一个 agent team 成员都能够并发的开始任务,节约时间。避免出子代理之间现串行执行任务,和单一子代理过载执行任务的情况。
011 设计面向 nitro 接口的 vitest 测试文件
现在 nitro 接口逐步的开始获取到 neon 数据库数据了。但是我不清楚这一整套流程是否正常,需要使用测试工具来完成接口调用以便实现接口测试。
现在运行后台项目提供的测试命令时,会失败,请解决这个故障。在合适的地方,确保在纯 node 环境下运行的接口测试命令,能够正常的获取环境变量并连接数据库。进而实现接口测试。
vitest 新建统一的配置钩子,来完成 neon 环境变量的获取
为了测试 nitro 接口,测试真实的 neon 数据库连接。为了确保在 github action 这样的云环境内仍旧可以完成测试任务,你肯定是需要做好拉取远程 vercel 环境变量的步骤的。我希望你用 context7 MCP 工具,或者是其他联网查询的工具,看看在这样的场景下,怎么去给整个 vitest 配置一个集中式的获取环境变量的步骤。看看 vitest 的官方文档。
012 处理 nitro 接口的生产环境故障
初步判断是 cloudflare worker 无法连接 neon 数据库导致的故障。现在已经放弃在 cloudflare worker 继续部署项目了。而是在 vercel 平台内完成全栈部署。
- 及时关闭掉你开启的 Background 任务。
- 不要在环境变量内写死敏感的值,apps\admin.env.development 不应该这样。
- 你的本次更改属于非常巨大的破坏性变更,请你认真检查现在的后台项目提供的文档教程,肯定有过时的内容,请更改。
- 另外,我们的 skills 技能,关于 neon drizzle 链接数据库的内容,肯定是差异很大的,请你认真检查现在过时的 skills 内容,完成更改。
- 务必确保你编写的计划,能够使用 agent team,新建多个并发运行的子代理,完成修改任务。确保教程文档,和 skills 指导技能,都能够及时的完成更新。确保不会过时。
- 确保不要继续占用主代理的上下文窗口。
/git-commit 本次更改非常多,我需要你制定一个非常详细的计划,实现对本次大批量更改的提交。应该分为多个 git commit 提交。务必按照业务类型,修改内容,修改范围,划分出多个细致的 git commit 提交信息。
务必使用 agent team 来实现计划的生成,避免占用主代理的上下文窗口。
01 对传递的值有疑惑
不行,这有问题。请你认真看看 apps\admin\.env.vercel.local 文件。
我说的环境变量是从 vercel 这里获得的,且前缀是 comm_admin_11 ,你让我在 wrangler 内设置的环境变量是 comm_admin_11__DATABASE_URL 。我对你的大小写很有疑惑。
apps/admin/.env 文件不可能存放任何 neon 环境变量。相反,neon 的环境变量都来自 apps\admin\.env.vercel.local 文件,且该文件来自于后台项目提供的 env:pull 命令。
请你考虑该内容后,再考虑让我协助你的内容。
02 用 nitro 的 cloudflare.wrangler 来完成 nitro 在 cloudflare worker 内设置敏感环境变量
我对你设置 wrangler.toml 的方案很感兴趣。我记得 nitro 配置文件的 cloudflare.wrangler 配置内,是可以实现配置 wrangler.toml 文件的。我希望你改造一下 apps\admin\nitro.config.ts 配置文件,让这个文件在 cloudflare worker 环境内完成部署时,可以实现从 apps\admin\.env.vercel.local 复制粘贴环境变量到 nitro.config.ts 配置文件内。这样设置更加优雅。
我不喜欢直接用 npx wrangler secret put comm_admin_11__DATABASE_URL 的方式来设置环境变量。很不优雅。
我预想的设计是这样的,在 cloudflare worker 环境内:
- 整个部署的入口是运行
package.json的build:cloudflare:admin命令。 - 进而开始运行
apps\admin\package.json的build:prod:cloudflare命令。 - 按照 turbo 设计的链路,开始运行
env:pull命令,拉取环境变量。 - 而我已经在 cloudflare worker 内,预先设置了
D:\code\github-desktop-store\01s-11comm\.env文件路径提供的 vercel 环境变量。即VERCEL_TOKEN环境变量。这个环境变量会允许env:pull命令最近获取有效的apps\admin\.env.vercel.local文件。 - 然后按照 turbo 设计的链路,最后开始运行
apps\admin\package.json提供的vite:build:prod:cloudflare命令,对整个 vite 项目,根据 nitro 这款 vite 插件,一次性打包成全栈项目。
我记得根据 nitro v3 的文档,是可以实现在 apps\admin\nitro.config.ts 的 cloudflare.wrangler 配置内,写入环境变量,进而实现写好 wrangler.toml 文件。
请你使用 context7 MCP,去专门获取如何在 nitro.config.ts 配置内,设置环境变量的文档。
另外,我们项目很早就实现过如何获取 apps\admin\.env.vercel.local 内的环境变量,并且携带固定前缀 comm_admin_11_ 。我们有现成的函数,请你积极的在 apps\admin\nitro.config.ts 使用。
我希望设置后的 nitro.config.ts ,能够确保无论在什么环境内,都能够写入 vercel 环境变量到 cloudflare.wrangler 配置内。
另外,我记得在 .output 目录内,在 NITRO_PRESET=cloudflare_module 构建用途的环境变量设置下,运行 vite:build:prod:cloudflare 命令会在 .output 目录内,生成有效的 wrangler.toml 配置文件。只要你检查到本地的 wrangler.toml 内最终提供了目标环境变量,带有前缀的 neon 数据库环境变量,那么就认定为改造成功。
我给你说明清楚了实现链路,请你查询资料,并实现我给你的思路。
请你适当的更改 docs\plans\2026-02-20-cloudflare-worker-neon-fix.md 这份计划文档,并且最后也希望你统筹整理好代码。
03 避免 apps\admin\nitro.config.ts 文件出现重复冗余的代码
我不喜欢你在 apps\admin\nitro.config.ts 内重复编写 apps\admin\server\utils\vercel-env.ts 内已经实现好的代码,请你优化 apps\admin\nitro.config.ts 配置文件,确保不要出现明显的代码冗余情况。
请你使用相对路径的方式,使用这些配置。
并且,请你运行后台项目提供的 vite:build:prod:cloudflare 命令,以便确保修改后的 nitro 配置文件,仍旧可以正常实现为了 cloudflare worker 环境下的 build 构建行为。
另外,请告诉我,你是通过查询 apps\admin\.output\**\wrangler.json 还是通过查询 apps\admin\.output\**\wrangler.toml 文件来确定你成功的让 nitro 实现写入 vercel 且带有特定前缀的环境变量的?
04 更新文档
- 请你将这一套 nitro 接口如何获取环境变量的流程,写到
apps\admin\src\docs内,便于其他人维护本项目时,能够轻松阅读清楚这一整套的逻辑链路。搞懂数据流转的方式。内容包括:- 获取环境变量的命令运作链路。
- 数据存储特点。
- 本地验证方式。
- 移动你的文件
2026-02-20-cloudflare-worker-neon-fix到本项目专门的报告文档目录内。统一报告类文档的存储位置。
013 使用 "h3" 路径来导入是错误的,应该用 nitro/h3 路径来导入
注意 apps\admin\server\db\index.ts 文件。这个文件竟然直接使用 h3 作为路径来导入。这个是不对的。
我们项目已经是 nitro v3 了,这是 v3 版本的破坏性变更。
请你检查除了 apps\admin\server\db\index.ts 以外,还有那些报告文档,markdown 文档,错误的误导我们使用错误的 h3 路径导入,而不是 nitro/h3 路径来导入。将这些错误的误导内容,改成正确的写法。
更改这个 typescript 文件后,我希望你构建面向 cloudflare worker 的后台项目 build 构建命令,运行这个构建命令,并且检查是否可以正常构建。
运行后台项目的 nitro 接口测试命令,确保本地接口仍旧正常连接 neon 数据库。
014 解决 nitro 接口没有严格鉴权的风险项问题
设计了 openspec 任务 nitro-api-authentication
根据 apps\admin\src\docs\reports\2026-02-20-fullstack-project-risk-analysis.md 报告,我们现在的 nitro 接口存在严重的鉴权缺失的风险项。我们需要解决这个风险项目。
注意这个风险项: Nitro 接口安全 | 🔴 极高 | **无认证授权机制,所有 API 可被任意访问**
- 请你找到关于 neon、drizzle、nitro、相关的接口鉴权与验证方案。
- 新建多个 agent team 来完成并发的调研,给出解决方案。
- 主动使用网络搜索,和 context7 MCP 来完成调研。