-
Notifications
You must be signed in to change notification settings - Fork 107
fix: 开发环境自动初始化价格表 (Fixes #10) #11
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
解决 Issue #10: 开发环境下价格表种子文件未自动初始化的问题 ## 问题描述 - 用户首次使用 ADMIN_TOKEN 登录后台时,系统无价格表数据 - 导致用户添加、供应商管理等功能无法正常使用 - 需要手动上传价格表,影响 onboarding 体验 ## 根本原因 `instrumentation.ts` 中的 `ensurePriceTable()` 仅在生产环境执行: ```typescript if (process.env.NODE_ENV === "production" && process.env.AUTO_MIGRATE !== "false") ``` 开发环境启动时不会自动导入 `public/seed/litellm-prices.json` ## 解决方案 新增开发环境分支,在开发模式下自动初始化价格表: ```typescript else if (process.env.NODE_ENV === "development") { logger.info("Development mode: initializing price table if needed"); await ensurePriceTable(); } ``` ## 影响范围 - **开发环境**: 首次启动时自动导入价格表,无需手动上传 - **生产环境**: 行为不变,继续正常工作 - **Docker 部署**: 行为不变(NODE_ENV=production 默认已启用) ## 测试步骤 1. 删除现有数据库(或使用空数据库) 2. `pnpm dev` 启动开发服务器 3. 查看日志确认 "Development mode: initializing price table if needed" 4. 登录后台验证价格表数据已自动导入 Fixes #10 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
|
Claude finished @claude[bot]'s task —— View job 代码审查完成 ✅我已完成对此 PR 的审查。这是一个优秀的修复方案,很好地解决了 Issue #10 中描述的问题。 审查结果总体评价:✅ 推荐合并 此 PR 成功解决了开发环境下价格表未自动初始化的问题,实现简洁、安全,符合项目的设计原则。 优点
潜在改进点(可选)虽然当前实现已经很好,但有几个可以考虑的小优化: 1. 数据库连接检查(低优先级)当前实现: else if (process.env.NODE_ENV === "development") {
logger.info("Development mode: initializing price table if needed");
await ensurePriceTable();
}潜在问题:
建议(可选): else if (process.env.NODE_ENV === "development") {
logger.info("Development mode: initializing price table if needed");
// 可选:检查数据库连接
const { checkDatabaseConnection } = await import("@/lib/migrate");
const isConnected = await checkDatabaseConnection();
if (isConnected) {
await ensurePriceTable();
} else {
logger.warn("Database not connected, skipping price table initialization");
}
logger.info("Development environment ready");
}权衡:
结论:当前实现已足够好,此改进非必需。 2. 环境变量控制(低优先级)建议:可以考虑添加环境变量 else if (process.env.NODE_ENV === "development") {
if (process.env.AUTO_INIT_PRICE_TABLE !== "false") {
logger.info("Development mode: initializing price table if needed");
await ensurePriceTable();
}
}理由:
结论:当前需求不强烈,可以在未来有需求时再添加。 代码质量检查
测试建议虽然 PR 描述中已包含测试步骤,但建议测试以下场景:
最终建议✅ 推荐立即合并 此 PR 实现了预期功能,代码质量高,影响范围可控。上述改进点为可选优化,不影响合并决策。 相关链接
|
代码审查通过 ✅审查结果此 PR 代码质量优秀,逻辑清晰,完美解决了 Issue #10 描述的问题。修改方案合理,影响范围可控。 主要优点
代码质量检查
建议(可选)代码已经足够优秀,无需强制修改。如果未来需要优化,可以考虑:
测试验证建议合并前进行以下验证(如果 CI 未覆盖): # 1. 清空数据库测试
docker compose down -v
docker compose up -d db redis
pnpm dev # 观察日志输出
# 2. 验证价格表已导入
# 登录后台 → 设置 → 价格管理
# 3. 确认生产环境不受影响
NODE_ENV=production pnpm start总结这是一个高质量的 bug 修复 PR,推荐立即合并。此修复将显著改善开发者体验,解决首次 onboarding 时的痛点。 🤖 自动审查 by Claude Code |
代码审查结果 ✅这个 PR 实现得非常好!完美解决了 Issue #10 中描述的问题。 优点
代码质量
影响范围分析
建议无需修改,代码已经达到生产就绪状态。建议直接合并。 审查结论:✅ LGTM (Looks Good To Me) - 可以合并 |
摘要
解决 Issue #10: 首次登录后台时价格表未自动初始化,导致系统功能无法正常使用。
问题详情
当前行为:
ADMIN_TOKEN登录后台litellm-prices.json根本原因:
src/instrumentation.ts:13中的价格表初始化逻辑仅在生产环境执行NODE_ENV=development)不会自动导入种子文件修复内容
代码变更
在
src/instrumentation.ts中新增开发环境分支:工作机制
生产环境 (
NODE_ENV=production):开发环境 (
NODE_ENV=development):public/seed/litellm-prices.json自动导入失败处理:
影响范围
NODE_ENV=production默认已启用)测试步骤
pnpm dev启动开发服务器ADMIN_TOKEN登录后台相关资源
public/seed/litellm-prices.json(858KB)src/lib/price-sync/seed-initializer.tsmodel_pricesFixes #10
🤖 Generated with Claude Code