码巢引擎2026年开发文档
00-开发规范
后端规范
README
后端开发手册
前端规范
README
TypeScript最佳实践
前端布局规范
前端页面模板
前端颜色与组件规范
核心规范
组件配置手册
问题排查指南
页面模板
最佳实践
README
bp-20260223-m7ps
图片上传优化总结
BUG自动记录系统使用指南
README
TYPE_SAFETY_GUIDE
常见BUG知识库
常见BUG知识库
开发前检查清单
开发安全规范
开发规范-完整版-含FutureBirdAadminAi部署
数据模型字典
文档分类规范
文档标准化规范
文档模板-基础版
文档模板-技术版
类型安全快速参考卡
类型安全规范体系
规范更新指南
过期文档清理机制
错误处理规范
错误预防指南
常见BUG知识库
常见BUG知识库
01-快速开始
Gitee快速开始
README
协作快速开始
快速开始
质量保证快速开始
02-部署指南
Docker更新指南
Docker部署
FutureBirdAadminAi部署指南
FutureBirdAadminAi部署问题分析
README
发布指南
宝塔Docker部署教程
宝塔PM2部署教程
宝塔图形化部署教程
快速发布指南
数据库和依赖变更处理指南
构建和发布
构建标准
构建检查清单
生产部署快速开始
生产部署方案
生产部署标准
生产部署检查清单
程序备份性能
自动修复和发布指南
自动化发布命令使用指南
部署快速开始
部署指南
项目更新部署指南
03-开发指南
Git凭据配置
Git推送规则
Git自动配置
README
全局样式
协作设置
定时任务
开发指南
开发流程
开发环境标准
技术改进
贡献指南
项目目录树
项目目录结构
04-API文档
API接口文档
README
hr-api
企业API
05-数据库
DATABASE_SCHEMA
README
分区指南
数据库字典
数据持久化
数据模型统一
数据迁移
06-架构设计
RBAC-PERMISSIONS
README
SaaS客户引导流程设计
companyId统一规范
employee-permission-system-design
enterprise-data-linkage
仓库实现总结
仓库模式
企业管理端员工权限系统分析
前端架构
前端重构总结
员工权限系统评估报告
员工管理菜单重构方案
权限系统混乱问题分析
架构优化计划
架构使用指南
架构结构
架构结构
状态管理
用户身份管理体系
系统架构
面试管理模块重构规划
项目技术栈
07-测试质量
README
测试修复标准
测试报告
质量保证系统
08-版本管理
CHANGELOG
README
VERSION_RULES
09-配置指南
README
SMTP配置指南
主题切换指南
渠道配置指南
环境变量指南
环境隔离
12-项目记忆
README
知识库导入指南
记忆系统指南
13-迁移指南
README
备份迁移指南
管理员迁移指南
迁移快速开始
17-其他
README
压缩摘要
18-开放平台
01-架构设计
02-API接口设计
03-安全机制
04-前端设计
05-数据库设计
开放平台API指南
开放平台API说明
19-智能进化
AI执行规则
AI进化机制
README
自动化实现总览
黄金规则
40-操作教程
README
微信公众号域名配置指南
微信本地开发调试指南
44-技能文件
alipay-payment-integration
references
checklist
SKILL
audio
python
README
typescript
README
SKILL
database
python
README
typescript
README
SKILL
design-style-thinking
SKILL
doctor
references
sql-patterns
SKILL
document-generation
python
README
SKILL
email
SKILL
embedding
python
README
typescript
README
SKILL
expo-advanced
references
audio-record-play
file-upload
masonry-layout
save-to-gallery
top-tab-navigation
SKILL
feishu-base
SKILL
feishu-message
SKILL
fetch-url
python
README
typescript
README
SKILL
frontend-design
LICENSE
SKILL
FutureBird-coding-web-performance-best-practice
SKILL
general-dev-preview
references
web-preview
SKILL
image-generation
python
README
typescript
README
SKILL
knowledge
references
python
README
typescript
README
cli
SKILL
llm
python
README
typescript
README
SKILL
miniapp-upload-asr
SKILL
pptx-generation
python
README
SKILL
project-memory-loader
scripts
project_memory_loader
SKILL
repair
scripts
merge-commit-map
SKILL
shadcn-web-base-theme
assets
colors
amber
artistic-green
bento-blue
blue
cyan
emerald
fuchsia
gray
green
indigo
lime
low-pink
neutral
orange
purple
red
retro-brown
rose
sky
supbase-green
teal
tech-purple
vintage-grey
violet
yellow
fonts
business
classic
playful
radius
2xl
2xs
lg
md
none
sm
xl
xs
shadow
artistic
bento
cool
retro
superbase
tech
tool
vintage
default
references
colors
fonts
quick
radius
shadows
scripts
theme
SKILL
package
skill-creator-coze
scripts
init_skill
quick_validate
SKILL
storage
python
README
typescript
README
SKILL
supabase
assets
supabase-client
supabase-client
references
_future
asset-supabase-browser
asset-supabase-config-inject
asset-supabase-config-route
python-auth
python-realtime
python-storage
typescript-auth
typescript-realtime
typescript-storage
typescript-supabase-browser
typescript-supabase-config-inject
typescript-supabase-config-route
python
README
database
edge-functions
orm-model-guide
supabase_client
typescript
README
database
drizzle-schema-guide
edge-functions
supabase-client
cli
rls
SKILL
supabase-auth
references
typescript
supabase-browser
supabase-config-inject
supabase-config-route
auth-config
verify-session
SKILL
ui-design-ref
reference
3D黏土风
克莱因蓝高定风
暗黑科技风
杂志风
极光柔和
柔和卡片
玻璃拟态
纯白极简风
自然有机
SKILL
ui-ux-pro-max
scripts
core
design_system
search
SKILL
vercel-composition-patterns
rules
architecture-avoid-boolean-props
architecture-compound-components
patterns-children-over-render-props
patterns-explicit-variants
react19-no-forwardref
state-context-interface
state-decouple-implementation
state-lift-state
AGENTS
SKILL
vercel-react-best-practices
rules
advanced-event-handler-refs
advanced-init-once
advanced-use-latest
async-api-routes
async-defer-await
async-dependencies
async-parallel
async-suspense-boundaries
bundle-barrel-imports
bundle-conditional
bundle-defer-third-party
bundle-dynamic-imports
bundle-preload
client-event-listeners
client-localstorage-schema
client-passive-event-listeners
client-swr-dedup
js-batch-dom-css
js-cache-function-results
js-cache-property-access
js-cache-storage
js-combine-iterations
js-early-exit
js-hoist-regexp
js-index-maps
js-length-check-first
js-min-max-loop
js-set-map-lookups
js-tosorted-immutable
rendering-activity
rendering-animate-svg-wrapper
rendering-conditional-render
rendering-content-visibility
rendering-hoist-jsx
rendering-hydration-no-flicker
rendering-hydration-suppress-warning
rendering-svg-precision
rendering-usetransition-loading
rerender-defer-reads
rerender-dependencies
rerender-derived-state-no-effect
rerender-derived-state
rerender-functional-setstate
rerender-lazy-state-init
rerender-memo-with-default-value
rerender-memo
rerender-move-effect-to-event
rerender-simple-expression-in-memo
rerender-transitions
rerender-use-ref-transient-values
server-auth-actions
server-cache-lru
server-cache-react
server-dedup-props
server-parallel-fetching
server-serialization
AGENTS
SKILL
video-edit
python
README
typescript
README
SKILL
video-generation
python
README
typescript
README
SKILL
volcano-ark
SKILL
web-design-guidelines
SKILL
web-search
python
README
typescript
README
SKILL
webrtc-best-practice
SKILL
websocket-guide
references
nextjs
nodejs
SKILL
wechat-bot
SKILL
wechat-official-account
SKILL
README
README
未来鸟:企业数字化转型奔腾的力量!
-
+
首页
技术改进
> **文档版本**: v1.0.0 > **创建日期**: 2026-02-12 > **最后更新**: 2026-02-12 > **维护人**: 未来鸟FutureBird码巢企业服务引擎开发组 > **状态**: [最新] --- # 技术改进文档 本文档说明了项目中实施的技术改进及其使用方法。 ## 目录 1. [TypeScript类型定义](#typescript类型定义) 2. [统一错误处理](#统一错误处理) 3. [请求日志中间件](#请求日志中间件) 4. [API响应缓存](#api响应缓存) 5. [数据库查询优化](#数据库查询优化) 6. [前端性能优化](#前端性能优化) 7. [UI组件库统一化](#ui组件库统一化) 8. [渠道管理系统优化](#渠道管理系统优化) --- ## TypeScript类型定义 ### 位置 `src/types/api.ts` ### 功能 提供统一的API类型定义,包括: - API响应格式 - 错误类型和错误类 - 分页参数 - 查询参数 ### 使用示例 ```typescript import { ApiResponse, ValidationError, NotFoundError, UnauthorizedError, } from '@/types/api'; // 创建成功响应 const response: ApiResponse<User> = { success: true, data: user, }; // 抛出错误 if (!user) { throw new NotFoundError('用户不存在'); } // 验证错误 if (!email) { throw new ValidationError('邮箱不能为空', { field: 'email' }); } ``` --- ## 统一错误处理 ### 位置 `src/lib/error-handler.ts` ### 功能 - 统一的错误处理机制 - 自动错误日志记录 - 标准化的错误响应格式 - 支持多种错误类型 ### 使用示例 #### 在API路由中使用 ```typescript import { errorHandler, createSuccessResponse, createErrorResponse } from '@/lib/error-handler'; export async function GET(request: NextRequest) { try { const data = await fetchData(); return NextResponse.json(createSuccessResponse(data)); } catch (error) { const response = await errorHandler.handle(error as Error, { request: { method: request.method, url: request.url, }, }); return NextResponse.json(response, { status: 500 }); } } ``` #### 使用包装函数 ```typescript import { errorHandler } from '@/lib/error-handler'; const wrappedHandler = errorHandler.wrap(async (id: string) => { return await getUserById(id); }); ``` --- ## 请求日志中间件 ### 位置 `src/lib/request-logger.ts` ### 功能 - 记录所有API请求 - 统计响应时间 - 识别慢请求 - 支持控制台和数据库日志 ### 使用示例 #### 在API路由中使用 ```typescript import { withRequestLog } from '@/lib/request-logger'; export const GET = withRequestLog(async (request: NextRequest) => { // 处理请求 return NextResponse.json({ data: '...' }); }); // 或者跳过特定请求 export const POST = withRequestLog( async (request: NextRequest) => { // 处理请求 return NextResponse.json({ data: '...' }); }, { skipLog: true } ); ``` #### 查看统计 ```typescript import { requestLogger } from '@/lib/request-logger'; // 获取慢请求统计 const stats = requestLogger.getSlowRequestStats(); ``` --- ## API响应缓存 ### 位置 `src/lib/api-cache.ts` ### 功能 - 内存缓存支持 - 自动缓存过期管理 - 缓存命中率统计 - 支持自定义缓存键生成 - 缓存失效管理 ### 使用示例 #### 在API路由中使用 ```typescript import { withCache } from '@/lib/api-cache'; export const GET = withCache( async (request: NextRequest) => { const data = await fetchData(); return NextResponse.json(data); }, { ttl: 300, // 缓存5分钟 includeQuery: true, // 包含查询参数 } ); ``` #### 手动管理缓存 ```typescript import { apiCache, CacheInvalidator } from '@/lib/api-cache'; // 设置缓存 apiCache.set('key', data, 300); // 获取缓存 const cached = apiCache.get('key'); // 删除缓存 apiCache.delete('key'); // 按前缀删除缓存 CacheInvalidator.invalidateChannel('channel-123'); // 获取缓存统计 const stats = apiCache.getStats(); console.log(`缓存命中率: ${stats.hitRate}%`); ``` --- ## 数据库查询优化 ### 位置 `src/lib/query-optimizer.ts` ### 功能 - 查询条件构建器 - 分页助手 - 批量查询优化 - 查询性能监控 ### 使用示例 #### 构建查询条件 ```typescript import { QueryBuilder } from '@/lib/query-optimizer'; const queryParams = QueryBuilder.buildQueryParams({ page: 1, pageSize: 20, sortBy: 'createdAt', sortOrder: 'desc', status: 'active', createdAt: { $gte: '2024-01-01', $lte: '2024-12-31', }, }); // 使用Drizzle ORM const data = await db .select() .from(users) .where(and(...queryParams.where)) .orderBy(...queryParams.orderBy) .limit(queryParams.limit) .offset(queryParams.offset); ``` #### 分页助手 ```typescript import { PaginationHelper } from '@/lib/query-optimizer'; // 验证分页参数 const pagination = PaginationHelper.validatePagination({ page: 1, pageSize: 20, }); // 计算分页信息 const paginationInfo = PaginationHelper.calculatePagination( totalRecords, pagination.page, pagination.pageSize ); // 获取分页元数据 const meta = PaginationHelper.getMeta( totalRecords, pagination.page, pagination.pageSize ); ``` #### 批量查询优化 ```typescript import { BatchQueryOptimizer } from '@/lib/query-optimizer'; // 批量查询 const resultMap = await BatchQueryOptimizer.batchQuery( items, async (item) => await getDetails(item.id), 50 // 批次大小 ); ``` #### 查询性能监控 ```typescript import { queryPerformanceMonitor, monitorQuery } from '@/lib/query-optimizer'; // 获取查询统计 const stats = queryPerformanceMonitor.getStats('getUserById'); // 获取慢查询 const slowQueries = queryPerformanceMonitor.getSlowQueries(1000); // 使用装饰器监控查询 class UserService { @monitorQuery('getUserById') async getUserById(id: string) { return await db.query.users.findFirst({ where: eq(users.id, id) }); } } ``` --- ## 前端性能优化 ### 位置 `src/lib/utils/performance.ts` ### 功能 - 防抖和节流函数 - 深度比较和克隆 - 文件处理工具 - 性能监控Hook ### 使用示例 #### 防抖和节流 ```typescript import { debounce, throttle, useDebounce, useDebouncedCallback } from '@/lib/utils/performance'; // 防抖函数 const debouncedSearch = debounce((query: string) => { console.log('Searching:', query); }, 300); // 节流函数 const throttledScroll = throttle(() => { console.log('Scrolled'); }, 200); // 防抖Hook const debouncedValue = useDebounce(searchInput, 300); // 防抖回调Hook const handleSearch = useDebouncedCallback( async (query: string) => { const results = await search(query); setResults(results); }, 500 ); ``` #### 性能监控 ```typescript import { usePerformanceMonitor } from '@/lib/utils/performance'; function MyComponent() { const metrics = usePerformanceMonitor(); return ( <div> <p>FCP: {metrics.fcp}ms</p> <p>LCP: {metrics.lcp}ms</p> <p>CLS: {metrics.cls}</p> </div> ); } ``` --- ## Next.js配置优化 ### 位置 `next.config.optimized.ts` ### 功能 - 代码分割优化 - 图片优化 - 生产环境构建优化 - 缓存配置 ### 使用方法 将 `next.config.ts` 重命名为 `next.config.optimized.ts`,然后更新配置: ```typescript import nextConfig from './next.config.optimized'; export default nextConfig; ``` --- ## 性能优化建议 ### 1. 图片优化 - 使用WebP或AVIF格式 - 实现懒加载 - 使用CDN ### 2. 代码分割 - 使用动态导入 - 路由级别的代码分割 - 组件级别的懒加载 ### 3. 缓存策略 - 使用API缓存 - 实现Service Worker - 配置HTTP缓存头 ### 4. 数据库优化 - 使用索引 - 优化查询 - 实现批量操作 ### 5. 监控和分析 - 监控慢查询 - 追踪错误 - 分析性能指标 --- ## 下一步改进计划 1. **集成Redis缓存** - 替换内存缓存 2. **实现分布式追踪** - 使用Jaeger或Zipkin 3. **添加性能测试** - 集成Lighthouse CI 4. **优化数据库连接池** - 使用PgBouncer 5. **实现自动扩展** - 基于负载的自动扩展 --- ## UI组件库统一化 ### 背景 项目中使用多套UI组件库(shadcn/ui、antd),导致视觉风格不一致。为了提供统一的用户体验,决定采用shadcn/ui作为核心组件库。 ### 实施策略 #### 1. 新功能优先使用shadcn/ui ```typescript // ✅ 使用 shadcn/ui import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Card } from "@/components/ui/card"; ``` #### 2. 渐进式替换antd组件 ```typescript // ❌ 旧代码 - 使用 antd import { Button } from "antd"; // ✅ 新代码 - 使用 shadcn/ui import { Button } from "@/components/ui/button"; ``` #### 3. 统一的样式规范 ```tsx // TabsList 统一样式 <TabsList className="grid w-full grid-cols-6 bg-white dark:bg-slate-800/50 p-1.5 rounded-2xl shadow-sm border border-slate-200 dark:border-slate-700/50"> <TabsTrigger className="rounded-xl data-[state=active]:bg-gradient-to-r data-[state=active]:from-[#07C160] data-[state=active]:to-[#06A550] data-[state=active]:text-white data-[state=active]:shadow-lg data-[state=active]:shadow-[#07C160]/20"> <Settings className="w-4 h-4 mr-2" /> 配置 </TabsTrigger> </TabsList> ``` ### 已完成模块 - ✅ 邮件服务管理 - ✅ 渠道管理(微信公众号、微信小程序、企业微信、企业微信服务商) ### 技术特点 - **深色模式**:完整的dark:前缀样式支持 - **响应式**:自适应网格布局 - **无障碍**:符合WCAG标准 - **类型安全**:完整的TypeScript类型定义 --- ## 渠道管理系统优化 ### 问题描述 渠道管理页面存在以下问题: 1. 缺少关键配置项(服务器URL、消息加解密方式) 2. 运行时错误(currentConfig未定义) 3. 空状态Tab菜单不显示 4. UI风格不统一 ### 解决方案 #### 1. 添加服务器URL配置 **位置**:`src/app/admin/channels/page.tsx` - 微信公众号基础配置Tab ```tsx <div className="space-y-2"> <Label htmlFor="serverUrl">服务器URL(Server URL)</Label> <Input id="serverUrl" placeholder="请输入服务器地址,例如:https://yourdomain.com/api/wechat/callback" value={serverUrl} onChange={(e) => setServerUrl(e.target.value)} /> </div> ``` #### 2. 添加消息加解密方式选择 ```tsx <div className="space-y-2"> <Label htmlFor="encryptType">消息加解密方式</Label> <Select value={encryptType} onValueChange={(value: any) => setEncryptType(value)}> <SelectTrigger id="encryptType"> <SelectValue placeholder="请选择消息加解密方式" /> </SelectTrigger> <SelectContent> <SelectItem value="plain">明文模式(不加密)</SelectItem> <SelectItem value="compatible">兼容模式(明文+密文)</SelectItem> <SelectItem value="safe">安全模式(加密)</SelectItem> </SelectContent> </Select> </div> ``` #### 3. 修复运行时错误 使用可选链操作符避免访问undefined属性: ```tsx // ❌ 错误:可能崩溃 {currentConfig.appId && (...)} // ✅ 正确:安全访问 {currentConfig?.appId && (...)} ``` #### 4. 修复空状态Tab菜单 Tab菜单始终可见,空状态时显示友好提示: ```tsx <TabsTrigger value="config">基础配置</TabsTrigger> <TabsTrigger value="menu">自定义菜单</TabsTrigger> <TabsContent value="menu"> {!currentConfig ? ( <Alert> <AlertCircle className="h-4 w-4" /> <AlertDescription> 暂无配置,请先添加配置后再使用此功能。 </AlertDescription> </Alert> ) : ( <div>菜单内容...</div> )} </TabsContent> ``` #### 5. 统一UI风格 复用邮件页面的TabsList样式: ```tsx <TabsList className="grid w-full grid-cols-6 bg-white dark:bg-slate-800/50 p-1.5 rounded-2xl shadow-sm border border-slate-200 dark:border-slate-700/50"> <TabsTrigger className="rounded-xl data-[state=active]:bg-gradient-to-r data-[state=active]:from-[#07C160] data-[state=active]:to-[#06A550] data-[state=active]:text-white data-[state=active]:shadow-lg data-[state=active]:shadow-[#07C160]/20"> ... </TabsTrigger> </TabsList> ``` ### 完整配置清单 微信公众号基础配置现在包含完整的6个核心字段: 1. **AppID** - 微信公众号的唯一标识 2. **AppSecret** - 微信公众号的密钥 3. **服务器URL(Server URL)** - 消息接收地址 ⭐ 新增 4. **Token** - 验证令牌 5. **EncodingAESKey** - 消息加解密密钥 6. **消息加解密方式** - 明文/兼容/安全 ⭐ 新增 ### 用户体验提升 - 📝 **完整配置**:所有微信公众平台必填字段都有对应输入 - 🔒 **安全选项**:提供三种消息加解密方式,灵活选择 - 💡 **友好提示**:输入框有清晰的placeholder提示 - ✅ **数据持久化**:配置正确保存和加载 - 🔄 **实时更新**:保存后立即刷新配置 - 🎨 **统一风格**:所有渠道配置使用相同的UI风格 ### 技术细节 - **状态管理**:使用useState和useEffect管理配置状态 - **类型安全**:TypeScript类型定义:`'plain' | 'compatible' | 'safe'` - **表单验证**:必填字段验证(AppID、AppSecret、Token) - **智能初始化**:根据encodingAESKey自动判断加解密方式 - **深色模式**:完整的dark:前缀样式支持 ### 知识库集成 将渠道配置指南导入到知识库,方便用户快速查找配置信息: **导入信息**: - 文档:`docs/CHANNEL_CONFIG_GUIDE.md` - 数据集:`payroll_development_collection` - Doc ID:7602557878204989486 - 导入日期:2025-01-31 **配置指南包含内容**: - 微信公众号配置(AppID、AppSecret、服务器URL、Token、EncodingAESKey、消息加解密方式) - 微信小程序配置(AppID、AppSecret、服务器域名) - 企业微信配置(企业ID、AgentId、AgentSecret、可信域名) - 企业微信服务商配置(服务商CorpId、SuiteId、SuiteSecret、回调URL) - 常见问题解答(配置验证失败、消息收不到、菜单发布失败等) **使用方法**: ```bash # 搜索微信公众号配置 npx FutureBirdAadminAi-coding-ai knowledge search -d payroll_development_collection -q "微信公众号配置" --top-k 5 # 搜索服务器URL npx FutureBirdAadminAi-coding-ai knowledge search -d payroll_development_collection -q "服务器URL" --top-k 3 # 搜索常见问题 npx FutureBirdAadminAi-coding-ai knowledge search -d payroll_development_collection -q "配置失败" --top-k 5 ``` **验证结果**: - ✅ 搜索"微信公众号服务器URL配置" → 相关度 74.72% - ✅ 搜索"服务器URL格式" → 相关度 69.64% - ✅ 文档已正确索引,可正常检索 --- ## 相关资源 - [Next.js文档](https://nextjs.org/docs) - [Drizzle ORM文档](https://orm.drizzle.team) - [TypeScript文档](https://www.typescriptlang.org/docs) - [Web性能优化指南](https://web.dev/fast/)
未来鸟
2026年7月27日 10:24
转发
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
分享
链接
类型
密码
更新密码
有效期
Markdown文件
Word文件
PDF文档(打印)
AI