大模型编程能力全面评测:MiniMax-M2 vs GLM-4.6,谁是编程助手王者?
本文对MiniMax-M2和GLM-4.6两大模型在多种技术栈中的编程能力进行评测。结果显示,MiniMax-M2在深度解析、架构理解和企业级规范制定方面表现突出,GLM-4.6在系统性输出和逻辑性方面更佳,尤其在思考模式下可与MiniMax-M2媲美。评测涵盖后端(NestJS+TypeScript+Fastify、Java+Spring Boot2)和前端(Vue3+TypeScript+Vi
简介
本文对MiniMax-M2和GLM-4.6两大模型在多种技术栈中的编程能力进行评测。结果显示,MiniMax-M2在深度解析、架构理解和企业级规范制定方面表现突出,GLM-4.6在系统性输出和逻辑性方面更佳,尤其在思考模式下可与MiniMax-M2媲美。评测涵盖后端(NestJS+TypeScript+Fastify、Java+Spring Boot2)和前端(Vue3+TypeScript+Vite)技术栈,为开发者选择适合的大模型提供了实用参考。
目录
- 1 环境信息
- 2 结论先行
- 3 后端
-
3.3.1 评价结果
-
3.3.2 MiniMax-M2
-
3.3.3 GLM4.6
-
3.2.1 评价结果
-
3.2.2 MiniMax-M2
-
3.2.3 GLM4.6
-
3.1 评价标准
-
3.2 技术栈:NestJS+TypeScript+Fastify
-
3.3 技术栈:Java+Spring Boot2
- 4 前端
- 4.1 评价标准
- 4.2 评价结果
- 4.3 MiniMax-M2
- 4.4 GLM-4.6
1 环境信息
- 操作系统:windows 10
- AI 编程工具:Claude Code 2.0.42
- 模型信息
- GLM-4.6:国内官网,Coding Plan 套餐。
- MiniMax-M2:国外官网,Coding Plan 套餐。
2 结论先行
| 模型 | 平均得分 | 优势领域 | 适用场景 |
|---|---|---|---|
| MiniMax-M2 | 25/25 | 深度解析、架构理解、规范完整性、示例丰富 | 企业级项目架构解析、复杂系统规范制定 |
| GLM-4.6(思考模式) | 25/25 | 系统性输出、逻辑清晰、实用性高 | 全栈项目理解、开发规范输出、团队协作指导 |
| GLM-4.6(非思考模式) | 20/25 | 结构清晰、内容全面、覆盖广泛 | 快速技术栈梳理、基础规范输出 |
| 总体评价: |
- MiniMax-M2 在深度、细节和工程化表达上表现突出,尤其擅长解析复杂企业级架构和自研框架。
- GLM-4.6(思考模式) 在系统性、逻辑性和实用性上与MiniMax-M2持平,适合需要全链路指导的场景。
- GLM-4.6(非思考模式) 输出较为概括,适合快速梳理技术栈和基础规范,深度略显不足。
建议在实际开发中:
- 若需深度架构解析或企业级规范制定,优先选用 MiniMax-M2。
- 若需全栈项目理解或团队协作指导,可选用 GLM-4.6(思考模式)。
- 若仅需快速技术栈梳理,可使用 GLM-4.6(非思考模式)。
3 后端
提示词:输出工程用到的技术栈/代码结构,并提供编程规范
3.1 评价标准
| 维度 | 5分标准 | 3分标准 | 1分标准 |
|---|---|---|---|
| 技术栈识别 | 准确识别全部核心技术栈及开发工具链 | 识别主要技术栈,遗漏部分工具 | 技术栈识别不全或有错误 |
| 架构理解深度 | 详细描述分层架构、设计模式、模块组织 | 基本描述结构,缺乏深度分析 | 架构描述模糊或错误 |
| 规范完整性 | 覆盖编码、测试、部署等完整开发规范 | 涵盖基本规范,细节不完整 | 规范描述零散不系统 |
| 输出专业性 | 技术术语准确,架构理念先进,体现工程思维 | 技术描述基本正确,缺乏深度 | 技术理解肤浅或有错误 |
| 实用性 | 提供具体配置、代码示例和最佳实践 | 有概念描述但缺乏实施细节 | 缺乏可操作 |
3.2 技术栈:NestJS+TypeScript+Fastify
3.2.1 评价结果
| 模型 | 技术栈识别 | 架构理解深度 | 规范完整性 | 输出专业性 | 实用性 | 总分/25 |
|---|---|---|---|---|---|---|
| MiniMax-M2 | 5 | 5 | 5 | 5 | 5 | 25 |
| GLM-4.6(非思考模式) | 4 | 4 | 4 | 4 | 4 | 20 |
| GLM-4.6(思考模式) | 5 | 5 | 5 | 5 | 5 | 25 |
详细评价:
- MiniMax-M2:输出极为系统、深入,涵盖技术栈、架构、规范、部署、开发流程等全链路,结构清晰,示例丰富,体现工程化思维。
- GLM-4.6(非思考模式):输出结构清晰,内容全面,但深度和细节略逊于MiniMax-M2,部分规范描述较概括。
- GLM-4.6(思考模式):输出与MiniMax-M2相当,系统性强,条理清晰,实用性高,表现优异。
3.2.2 MiniMax-M2
课程系统后端技术栈与代码结构分析 一、后端技术栈 1.1 核心框架 - NestJS 11.x - 基于 TypeScript 的渐进式 Node.js 后端框架 - Fastify - 高性能 HTTP 服务器(通过 @nestjs/platform-fastify) 1.2 数据库 - Prisma ORM 6.9.0 - 现代化数据库工具包 - 数据模型定义:prisma/schema.prisma - 支持 SQLite(默认) - 包含数据库迁移和种子数据 1.3 认证与授权 - Passport 0.7.0 - 认证中间件 - passport-jwt - JWT 策略 - passport-http - HTTP Basic 认证 - JWT - 基于 jsonwebtoken 的令牌认证 - bcrypt - 密码加密 - 自定义 RBAC 权限控制(基于角色装饰器 @Roles) 1.4 数据验证与序列化 - class-validator - 请求参数验证 - class-transformer - 数据转换 - Zod - 模式验证(备用方案) 1.5 API 文档 - @nestjs/swagger - 自动生成 API 文档 - 支持 JWT/Basic Auth 认证 1.6 日志与监控 - Winston - 结构化日志 - winston-daily-rotate-file - 日志轮转 - prom-client - Prometheus 指标采集 - @nestjs/terminus - 健康检查 1.7 其他工具库 - Lodash - 实用工具库 - qs - 查询字符串解析 - compression - Gzip 压缩 - uuid - UUID 生成 - js-yaml - YAML 解析 - nestjs-cls - 请求上下文管理 1.8 开发工具 - TypeScript 5.7.3 - 类型系统 - ESLint 9.18.0 - 代码规范检查 - Prettier 3.4.2 - 代码格式化 - Jest 29.7.0 - 单元测试 - ts-node - TypeScript 执行 - SWC - 高性能 TypeScript 编译 --- 二、代码结构 2.1 目录结构 backend/ ├── src/ │ ├── main.ts # 应用入口(Bootstrap, Swagger, CORS, 压缩配置) │ ├── app.module.ts # 根模块(配置所有拦截器、过滤器、全局模块) │ │ │ ├── commons/ # 公共模块 │ │ ├── auth/ # 认证授权 │ │ │ ├── decorator/ # 装饰器(@JwtAuth, @Roles, @Public, @AccessContext) │ │ │ ├── guard/ # 守卫(JWT 认证、角色验证) │ │ │ ├── strategy/ # Passport 策略(Basic, JWT, Refresh Token) │ │ │ ├── jwt-auth.service.ts │ │ │ ├── auth-config.entity.ts │ │ │ ├── token.dto.ts │ │ │ └── ... │ │ ├── config/ # 配置管理 │ │ │ ├── configuration.ts │ │ │ ├── app-config.entity.ts │ │ │ ├── swagger-config.entity.ts │ │ │ └── response-config.entity.ts │ │ ├── database/ # 数据库 │ │ │ ├── prisma.module.ts │ │ │ └── prisma.service.ts │ │ ├── entity/ # 基础实体 │ │ │ ├── entity.ts # 基础实体类 │ │ │ ├── create.entity.ts │ │ │ ├── id-name.entity.ts │ │ │ └── operate-context.entity.ts │ │ ├── log/ # 日志模块 │ │ ├── web/ # Web 核心 │ │ │ ├── interceptor/ # 拦截器(响应、日志、序列化、指标、操作日志) │ │ │ ├── filter/ # 过滤器(HTTP 异常) │ │ │ └── management/ # 健康检查与指标 │ │ ├── codec/ # 编解码 │ │ ├── exception/ # 异常处理 │ │ ├── query/ # 查询工具 │ │ └── util/ # 工具函数 │ │ │ └── modules/ # 功能模块 │ ├── admin/ # 管理员模块 │ ├── user/ # 用户模块 │ ├── auth/ # 认证模块(控制器) │ ├── course/ # 课程模块 │ │ ├── dto/ # 数据传输对象 │ │ ├── entity/ # 业务实体 │ │ ├── course.controller.ts │ │ ├── course.service.ts │ │ └── course.repository.ts │ ├── attendance/ # 考勤模块 │ ├── teacher/ # 教师模块 │ ├── student/ # 学生模块 │ └── operationlog/ # 操作日志模块 │ ├── prisma/ # 数据库相关 │ ├── schema.prisma # 数据库模型 │ ├── schema.prisma.sqlite # SQLite 版本 │ ├── schema.prisma.postgresql # PostgreSQL 版本 │ ├── seed.ts # 数据库种子数据 │ └── local.db # SQLite 数据库文件 │ ├── package.json ├── tsconfig.json ├── nest-cli.json ├── Dockerfile ├── .prettierrc └── eslint.config.mjs 2.2 模块设计模式 采用 分层架构 + 仓储模式 每个功能模块包含: 典型模块结构示例(course): ├── dto/ # 数据传输对象(请求/响应) │ ├── course.dto.ts │ ├── course-create.dto.ts │ ├── course-update.dto.ts │ └── ... ├── entity/ # 业务实体(查询过滤器、返回实体) │ ├── course.entity.ts │ ├── course.queryfilter.ts │ ├── course-teacher.entity.ts │ └── course-student.entity.ts ├── *.controller.ts # 控制器层(路由处理) ├── *.service.ts # 服务层(业务逻辑) └── *.repository.ts # 仓储层(数据访问) --- 三、编程规范 3.1 TypeScript 配置 tsconfig.json: { "compilerOptions": { "target": "ES2023", // 使用最新 ES 特性 "module": "commonjs", // 模块系统 "declaration": true, // 生成类型声明文件 "emitDecoratorMetadata": true, // 装饰器元数据 "experimentalDecorators": true, // 启用装饰器 "strictNullChecks": true, // 严格空值检查 "sourceMap": true, // 生成 SourceMap "baseUrl": "./", // 基础路径 "skipLibCheck": true // 跳过库文件检查 } } 3.2 ESLint 规范 eslint.config.mjs: - 基于 TypeScript ESLint 推荐配置 - 集成 Prettier 推荐规则 - 全局变量支持 Node.js 和 Jest - 自定义规则: - 允许使用 any 类型(谨慎使用) - 警告未处理的 Promise - 警告不安全的类型操作 - Prettier 强制自动修复 执行命令: npm run lint # 检查并自动修复 3.3 Prettier 格式化 .prettierrc: { "singleQuote": true, // 使用单引号 "tabWidth": 2, // 缩进 2 空格 "printWidth": 80, // 行宽 80 字符 "semi": true, // 末尾分号 "trailingComma": "all" // 尾随逗号 } 执行命令: npm run format # 格式化所有代码 3.4 代码风格规范 命名规范 | 类型 | 规则 | 示例 | |-------|---------------------|----------------------| | 文件名 | kebab-case | course-controller.ts | | 类名 | PascalCase | CourseService | | 变量/函数 | camelCase | getCourseById | | 常量 | UPPER_SNAKE_CASE | JWT_SECRET | | 私有属性 | _camelCase | _userRepository | | 数据库字段 | snake_case | user_type | | DTO 类 | PascalCase + Dto | CourseCreateDto | | 实体类 | PascalCase + Entity | CourseEntity | 装饰器使用 // 控制器装饰器 @Controller('course') // 路由前缀 @UseGuards(JwtAuthGuard, RolesGuard) // 认证与授权export class CourseController { @Post('create') // HTTP 方法 + 子路由 @Roles(UserType.admin) // 角色权限 async create(@Body() dto: CourseCreateDto, @AccessContext() ctx: OperateContext) { // 方法实现 } } DTO 验证规范export class CourseCreateDto { @IsString() @IsNotEmpty({ message: '课程名称不能为空' }) name: string; @IsOptional() // 可选字段 @IsString() description?: string; @IsEnum(CourseType) // 枚举验证 courseType: CourseType; @IsNumber({}, { message: '价格必须为数字' }) @Min(0) // 数值范围 price: number; } 模块导入顺序 import { Module } from '@nestjs/common'; import { ThirdPartyModule } from 'third-party'; // 本地模块 import { PrismaModule } from '../../commons/database/prisma.module'; // 功能模块 import { CourseController } from './course.controller'; import { CourseService } from './course.service'; import { CourseRepository } from './course.repository'; // 装饰器和类型 import { JwtAuthGuard } from '../../commons/auth/guard/jwt-auth.guard'; import { UserType } from '@prisma/client'; 3.5 架构原则 SOLID 原则应用 1. 单一职责(SRP) - 每个模块专注于单一业务领域 - Controller 仅处理 HTTP 逻辑 - Service 处理业务逻辑 - Repository 处理数据访问 2. 开放封闭(OCP) - 通过装饰器扩展功能(认证、角色验证) - 使用接口抽象数据访问 3. 里氏替换(LSP) - 实体类继承基础 Entity - 可安全替换为子类实例 4. 接口隔离(ISP) - 认证模块提供专用策略(Basic/JWT) - 按需导入模块依赖 5. 依赖倒置(DIP) - 依赖抽象(PrismaService) - 不依赖具体实现 其他设计原则 - DRY(Don't Repeat Yourself) - 公共模块抽取(认证、日志、实体) - 复用装饰器、拦截器、守卫 - KISS(Keep It Simple) - 扁平化目录结构 - 直观命名约定 - YAGNI(You Aren't Gonna Need It) - 按需引入依赖 - 避免过度工程 --- 四、开发规范 4.1 提交规范# 格式:type(scope): subject git commit -m "feat(course): 添加课程创建接口"# 类型(type) feat: 新功能 fix: 修复 bug refactor: 重构 docs: 文档更新test: 测试相关 chore: 构建/工具相关 4.2 测试规范# 运行所有测试 npm test# 监视模式 npm run test:watch# 覆盖率 npm run test:cov# E2E 测试 npm run test:e2e 4.3 数据库操作规范 // 1. 使用 Repository 模式 @Injectable()export class CourseRepository { constructor(private prisma: PrismaService) {} async findById(id: string) { return this.prisma.course.findUnique({ where: { id }, }); } } // 2. 事务操作 async createCourse(data: CourseCreateDto, ctx: OperateContext) { return this.prisma.$transaction(async (tx) => { // 事务逻辑 }); } // 3. 索引规范 model User { @@index([username]) // 常用查询字段 @@index([userType, isActive]) // 复合索引 } 4.4 错误处理规范 // 1. 使用异常过滤器 @Catch()export class HttpExceptionFilter { catch(exception: HttpException) { // 统一错误响应格式 } } // 2. 操作日志记录 @Post('create') async create(@Body() dto, @AccessContext() ctx) { return this.courseService.create(dto, ctx); // 自动记录日志 } 4.5 性能优化建议 1. 数据库优化 - 合理使用索引(已配置) - 避免 N+1 查询(使用 Prisma include) - 分页查询(page, pageSize) 2. 缓存策略 - 可集成 Redis(当前未使用) - 静态数据可使用内存缓存 3. 响应优化 - 启用 Gzip 压缩(已配置) - 使用 JsonSerializerInterceptor 统一序列化 --- 五、部署规范 5.1 Docker 部署 Dockerfile:# 构建阶段 FROM node:20.19.5-alpine3.22 AS builder RUN npm ci --only=production RUN npx prisma generate RUN npm run build# 运行阶段 FROM node:20.19.5-alpine3.22 AS runner EXPOSE 3000 CMD ["node", "dist/src/main.js"] 5.2 环境变量# 数据库配置 DATABASE_URL="file:./local.db"# JWT 配置 JWT_SECRET="your-secret" JWT_EXPIRES_IN="1h"# 应用配置 PORT=3000 NODE_ENV=production 5.3 生产部署命令# 构建应用 npm run build# 生成 Prisma 客户端 npm run prisma:generate# 运行迁移 npm run prisma:migrate# 生产环境启动 npm run start:prod --- 六、关键配置文件 6.1 Nest CLI 配置 (nest-cli.json) - 源文件路径:src - 编译输出:dist - 包含资源文件:config/config.yml 6.2 Prisma 配置 - 数据库类型:SQLite(默认) - 关系模式:不使用外键(Prisma 关系模式) - 支持多环境配置(SQLite、PostgreSQL) 6.3 Swagger 配置 - 基于 @nestjs/swagger - 支持 Basic Auth 和 JWT 认证 - 配置路径:/api-docs(可配置) 6.4 拦截器链 全局拦截器(按顺序): 1. RequestLoggerInterceptor - 请求日志 2. ResponseInterceptor - 响应处理 3. JsonSerializerInterceptor - JSON 序列化 4. OperationLogInterceptor - 操作日志 5. MetricsInterceptor - 性能指标 全局过滤器: - HttpExceptionFilter - HTTP 异常处理 --- 七、开发建议 7.1 新增模块流程 1. 设计数据模型 → prisma/schema.prisma 2. 创建 DTO → modules/xxx/dto/ 3. 定义实体 → modules/xxx/entity/ 4. 实现 Repository → modules/xxx/xxx.repository.ts 5. 实现 Service → modules/xxx/xxx.service.ts 6. 实现 Controller → modules/xxx/xxx.controller.ts 7. 注册模块 → app.module.ts + 根模块 7.2 代码审查要点 - 遵循命名规范 - 使用装饰器和类型注解 - DTO 必须有验证规则 - Service 中无直接数据库调用(通过 Repository) - 正确使用权限装饰器 - 添加必要日志记录 - 代码已格式化(npm run format) - 通过 Lint 检查(npm run lint) 7.3 性能注意事项 1. 避免大事务:长时间锁表 2. 批量操作:使用 createMany 替代循环 3. 选择性字段:使用 select 减少数据传输 4. 分页查询:大量数据必须分页 5. 索引使用:根据查询模式设计索引 --- 总结:该项目采用现代化的 NestJS + Prisma 技术栈,遵循 SOLID 原则,具有清晰的模块化架构、完善的安全认证机制和全面的开发工具链支持。代码规范严格,可维护性强,适合中小型项目开发。
3.2.3 GLM-4.6
3.2.3.1 非思考模式
课程管理系统 - 后端技术栈与编程规范分析 技术栈概览 核心框架 - NestJS v11.0.1 - 基于 TypeScript 的 Node.js 企业级应用框架 - Fastify v5.4.0 - 高性能 HTTP 服务器,替代 Express - TypeScript v5.7.3 - 类型安全的 JavaScript 超集 数据库与ORM - Prisma v6.9.0 - 现代化数据库工具包 - SQLite - 轻量级关系型数据库(生产环境建议迁移至 PostgreSQL/MySQL) 身份验证与安全 - JWT (@nestjs/jwt v11.0.0) - JSON Web Token 认证 - Passport (@nestjs/passport v11.0.5) - 身份验证中间件 - bcrypt v6.0.0 - 密码哈希加密 API 文档与监控 - Swagger (@nestjs/swagger v11.2.0) - API 文档自动生成 - Terminus (@nestjs/terminus v11.0.0) - 健康检查 - prom-client v15.1.3 - Prometheus 指标收集 日志与操作记录 - Winston v3.17.0 - 结构化日志记录 - winston-daily-rotate-file v5.0.0 - 日志文件轮转 工具库 - class-transformer v0.5.1 - 数据转换 - class-validator v0.14.2 - 数据验证 - lodash v4.17.21 - 实用工具函数 - zod v4.1.5 - TypeScript 优先的模式验证 代码架构 目录结构 backend/src/ ├── app.module.ts # 根模块 ├── main.ts # 应用入口点 ├── commons/ # 公共模块 │ ├── auth/ # 认证相关 │ ├── config/ # 配置管理 │ ├── database/ # 数据库连接 │ └── web/ # Web 层组件 └── modules/ # 业务模块 ├── admin/ # 管理员模块 ├── auth/ # 认证模块 ├── attendance/ # 考勤模块 ├── course/ # 课程模块 ├── operationlog/ # 操作日志模块 ├── option/ # 选项配置模块 ├── student/ # 学生模块 ├── teacher/ # 教师模块 └── user/ # 用户模块 架构模式 - 模块化设计 - 每个业务功能独立模块 - 分层架构 - Controller → Service → Repository - 依赖注入 - 使用 NestJS 的 IoC 容器 - 拦截器模式 - 全局响应、日志、性能监控 - 守卫模式 - 基于角色的权限控制 数据模型设计 // 核心实体关系 User (用户) ←→ Course (课程) ←→ AttendanceRecord (考勤记录) ↓ ↓ CourseTeacher CourseStudent ↓ ↓ 教师课程关联 学生课程关联 全局拦截器链 1. RequestLoggerInterceptor - 请求日志记录 2. MetricsInterceptor - 性能指标收集 3. OperationLogInterceptor - 操作日志记录 4. ResponseInterceptor - 统一响应格式 5. JsonSerializerInterceptor - JSON 序列化 编程规范 6. 代码风格规范 ESLint + Prettier 配置 { "singleQuote": true, "tabWidth": 2, "printWidth": 80, "semi": true, "trailingComma": "all" } TypeScript 规范 - 严格类型检查 - 启用所有严格模式选项 - 避免 any 类型 - 使用 unknown 或具体类型 - 接口优于类型 - 优先使用 interface 定义对象结构 - 枚举使用 - 使用 const enum 提高性能 2. 命名规范 文件命名 - kebab-case - user.service.ts, course.controller.ts - 测试文件 - user.service.spec.ts 类名和接口 - PascalCase - UserService, CourseController - 接口以 I 开头 - ICourseRepository 方法和变量 - camelCase - getUserById(), courseName - 布尔值以 is/has/can 开头 - isActive, hasPermission 常量 - UPPER_SNAKE_CASE - MAX_SESSION_COUNT, DEFAULT_PAGE_SIZE 3. 项目结构规范 模块结构 // 标准模块结构 @Module({ imports: [/* 相关模块 */], controllers: [/* 控制器 */], providers: [/* 服务 */], exports: [/* 导出的服务 */], })export class ExampleModule {} 控制器规范 @Controller('users') @ApiTags('用户管理') @UseGuards(JwtAuthGuard)export class UserController { constructor(private readonly userService: UserService) {} @Get() @ApiOperation({ summary: '获取用户列表' }) async findAll(): Promise<ApiResponse<UserDto[]>> { return this.userService.findAll(); } } 服务规范 @Injectable()export class UserService { constructor(private readonly prisma: PrismaService) {} async create(createUserDto: CreateUserDto): Promise<User> { // 业务逻辑实现 } } 4. 数据验证规范 DTO 设计export class CreateUserDto { @ApiProperty({ description: '用户名' }) @IsString() @Length(3, 20) username: string; @ApiProperty({ description: '密码' }) @IsString() @MinLength(6) password: string; } 5. 错误处理规范 异常过滤器 @Catch(HttpException)export class HttpExceptionFilter implements ExceptionFilter { catch(exception: HttpException, host: ArgumentsHost) { // 统一错误响应格式 } } 业务异常 throw new BadRequestException('用户名已存在'); throw new UnauthorizedException('无效的凭据'); 6. 日志规范 日志级别 - ERROR - 系统错误、异常 - WARN - 警告信息 - INFO - 重要业务操作 - DEBUG - 调试信息 日志格式 this.logger.log('info', `用户 ${userId} 创建了课程 ${courseId}`); this.logger.error('error', '数据库连接失败', error.stack); 7. 安全规范 输入验证 - 所有用户输入必须验证 - 使用 class-validator 进行数据校验 - 防止 SQL 注入、XSS 攻击 权限控制 @UseGuards(JwtAuthGuard, RolesGuard) @Roles(UserType.ADMIN) async adminOperation(): Promise<any> { // 管理员操作 } 8. 测试规范 单元测试 describe('UserService', () => { let service: UserService; beforeEach(async () => { const module = await Test.createTestingModule({ providers: [UserService], }).compile(); service = module.get<UserService>(UserService); }); it('should create user', async () => { // 测试用例 }); }); 9. API 设计规范 RESTful API - GET /users - 获取用户列表 - POST /users - 创建用户 - GET /users/:id - 获取特定用户 - PUT /users/:id - 更新用户 - DELETE /users/:id - 删除用户 响应格式 interface ApiResponse<T> { code: number; message: string; data: T; timestamp: string; traceId: string; } 10. 性能优化规范 数据库查询 - 使用索引优化查询性能 - 避免 N+1 查询问题 - 合理使用分页 缓存策略 - 使用 Redis 缓存热点数据 - 设置合理的缓存过期时间 这套规范确保了代码的可维护性、可扩展性和团队协作效率,同时遵循了现代企业级应用开发的最佳实践。
3.2.3.2 思考模式
基于我对项目的分析,现在为您提供详细的后端技术栈、代码结构和编程规范: 后端技术栈与代码结构分析 🔧 技术栈清单 核心框架 - NestJS (^11.0.1) - 企业级Node.js后端框架 - Fastify (^5.4.0) - 高性能HTTP服务器 - TypeScript (^5.7.3) - 主要开发语言 数据库与ORM - Prisma (^6.9.0) - 现代化数据库ORM工具套件 - SQLite - 当前使用的关系型数据库 认证与安全 - JWT (^9.0.2) - JSON Web Token认证 - Passport (^0.7.0) - 认证中间件框架 - bcrypt (^6.0.0) - 密码加密 工具与库 - Winston (^3.17.0) - 日志管理 - class-validator (^0.14.2) - 数据验证 - class-transformer (^0.5.1) - 数据转换 - zod (^4.1.5) - 模式验证 🏗️ 项目代码结构 backend/ ├── src/ │ ├── commons/ # 公共组件 │ │ ├── auth/ # 认证相关 │ │ ├── config/ # 配置管理 │ │ ├── database/ # 数据库连接 │ │ ├── entity/ # 基础实体 │ │ ├── exception/ # 异常处理 │ │ ├── interceptors/ # 拦截器 │ │ ├── log/ # 日志服务 │ │ └── web/ # Web相关 │ ├── modules/ # 业务模块 │ │ ├── admin/ # 管理员模块 │ │ ├── auth/ # 认证模块 │ │ ├── attendance/ # 考勤模块 │ │ ├── course/ # 课程模块 │ │ ├── operationlog/ # 操作日志 │ │ ├── option/ # 配置选项 │ │ ├── student/ # 学生模块 │ │ ├── teacher/ # 教师模块 │ │ └── user/ # 用户模块 │ ├── app.module.ts # 根模块 │ └── main.ts # 应用入口 ├── prisma/ │ └── schema.prisma # 数据库模式定义 └── config/ # 配置文件目录 📋 编程规范 1. 代码风格规范 ESLint 配置 (基于 eslint.config.mjs) // 主要规则配置 { '@typescript-eslint/no-explicit-any': 'off', // 允许使用 any 类型 '@typescript-eslint/no-floating-promises': 'warn', // 浮动 Promise 警告 '@typescript-eslint/no-unsafe-argument': 'warn', // 不安全参数警告 '@typescript-eslint/no-unsafe-member-access': 'warn', // 不安全成员访问警告 '@typescript-eslint/no-unsafe-assignment': 'warn', // 不安全赋值警告 'prettier/prettier': ['error', { endOfLine: 'auto', trailingComma: 'all' // 所有地方都添加尾随逗号 }] } Prettier 规则 - 尾随逗号:所有地方都添加 (trailingComma: 'all') - 行尾:自动检测 (endOfLine: 'auto') 2. 命名规范 文件命名 - 模块文件: kebab-case.module.ts (例: user.module.ts) - 控制器文件: kebab-case.controller.ts (例: user.controller.ts) - 服务文件: kebab-case.service.ts (例: user.service.ts) - DTO文件: kebab-case.dto.ts (例: create-user.dto.ts) - 实体文件: kebab-case.entity.ts (例: user.entity.ts) 类命名 // 使用 PascalCaseexport class UserController {}export class UserService {}export class CreateUserDto {}export class UserEntity {} 变量和函数命名 // 使用 camelCase const userName = 'john_doe'; const getUserById = async (id: string) => {}; 常量命名 // 使用 UPPER_SNAKE_CASE const MAX_RETRY_ATTEMPTS = 3; const DEFAULT_TIMEOUT = 5000; 3. 数据库设计规范 模型命名 (基于 prisma/schema.prisma) // 使用 PascalCase 模型名 model User { id String @id @default(uuid()) username String @unique passwordHash String @map("password_hash") // 字段使用 camelCase userType UserType @map("user_type") // 枚举使用 PascalCase // 审计字段 (统一命名规范) createdAt DateTime @default(now()) @map("created_at") creatorId String @map("creator_id") creatorName String @map("creator_name") updatedAt DateTime @updatedAt @map("updated_at") updatorId String @map("updator_id") updatorName String @map("updator_name") } 枚举命名 enum UserType { admin // 全小写 teacher student } enum CourseType { month_card // 下划线分隔 session_card } 4. API 设计规范 路由命名 // 使用复数形式和 kebab-case @Controller('users') // ✅ 正确 @Controller('user') // ❌ 错误 @Controller('course-students') // ✅ 正确 @Controller('courseStudents') // ❌ 错误 HTTP 方法使用 // 标准 RESTful 设计 @Get() // 获取列表 @Get(':id') // 获取单个 @Post() // 创建 @Put(':id') // 完整更新 @Patch(':id') // 部分更新 @Delete(':id') // 删除 5. DTO 设计规范 输入 DTOexport class CreateUserDto { @IsString() @IsNotEmpty() name: string; @IsString() @IsEmail() email: string; @IsString() @MinLength(6) password: string; } 响应 DTOexport class UserResponseDto { @ApiProperty({ example: 'uuid-string' }) id: string; @ApiProperty({ example: 'John Doe' }) name: string; @ApiProperty({ example: 'john@example.com' }) email: string; // 不包含敏感信息如密码哈希 } 6. 服务层规范 类结构 @Injectable()export class UserService { constructor( private readonly prisma: PrismaService, private readonly logger: LoggerService, ) {} // 公共方法使用描述性名称 async findUserById(id: string): Promise<User | null> { // 实现 } // 私有方法使用下划线前缀 private async _validateUserAccess(user: User): Promise<boolean> { // 实现 } } 7. 异常处理规范 自定义异常export class UserNotFoundException extends BadRequestException { constructor(id: string) { super(`User with id ${id} not found`); } } 异常过滤器 (已实现 HttpExceptionFilter) // 统一的错误响应格式 { "statusCode": 400, "message": "Bad Request", "error": "User with id xxx not found", "timestamp": "2024-01-01T00:00:00.000Z", "path": "/api/users/xxx" } 8. 日志规范 日志级别 // 使用 Winston 日志 this.logger.log('info', 'User created successfully', { userId: user.id }); this.logger.log('warn', 'User access denied', { userId, reason }); this.logger.log('error', 'Database connection failed', error); 9. 测试规范 测试文件命名 user.service.spec.ts // 单元测试 user.controller.spec.ts // 控制器测试 user.e2e-spec.ts // 端到端测试 测试结构 describe('UserService', () => { let service: UserService; beforeEach(async () => { // 设置测试环境 }); describe('createUser', () => { it('should create a new user', async () => { // 测试用例 }); it('should throw error for invalid data', async () => { // 错误情况测试 }); }); }); 10. 安全规范 密码处理 // 使用 bcrypt 加密 const saltRounds = 10; const hashedPassword = await bcrypt.hash(password, saltRounds); // 密码验证 const isValidPassword = await bcrypt.compare(plainPassword, hashedPassword); 输入验证 // 使用 class-validator 进行输入验证export class CreateUserDto { @IsString() @MinLength(3) @MaxLength(50) name: string; @IsEmail() email: string; @IsString() @MinLength(8) @Matches(/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]/, { message: 'Password must contain at least one uppercase letter, one lowercase letter, one number and one special character' }) password: string; } 📝 总结 这个后端项目采用了现代化的技术栈和严格的编程规范,具有以下特点: 1. 企业级架构: 使用 NestJS 框架,模块化设计清晰 2. 类型安全: 全面使用 TypeScript,配合 Prisma 类型检查 3. 安全规范: JWT 认证、密码加密、输入验证 4. 代码质量: ESLint + TypeScript 严格模式 5. 可维护性: 统一的命名规范和项目结构 6. 可观测性: 完整的日志记录和监控体系 遵循这些规范可以确保代码的一致性、可读性和可维护性。
3.3 技术栈:Java+Spring Boot2
3.3.1 评价结果
| 模型 | 技术栈识别 | 架构理解深度 | 规范完整性 | 输出专业性 | 实用性 | 总分/25 |
|---|---|---|---|---|---|---|
| MiniMax-M2 | 5 | 5 | 5 | 5 | 5 | 25 |
| GLM-4.6(思考模式) | 4 | 4 | 4 | 4 | 4 | 20 |
详细评价:
- MiniMax-M2:深入解析多模块架构、平台适配模式、Custom JDBC框架等企业级特性,输出结构化强,术语准确,示例具体。
- GLM-4.6:内容全面,涵盖技术栈、结构、规范,但对企业自研框架(如Custom)理解较浅,示例和细节略少。
3.3.2 MiniMax-M2
基于对项目的深入分析,我为您整理了 LAB-REDIRECT 项目的技术栈、代码结构和编程规范。 --- 📋 一、技术栈概览 1. 核心框架 - Spring Boot 2.x - 应用框架 - Spring Cloud OpenFeign - 服务间调用 - Spring Framework - IoC容器、AOP支持 - Maven - 构建工具(多模块项目) 2. 数据访问 - Oracle 数据库 - 主要数据库(通过 JDBC) - Custom JDBC 框架 - XX企业自研数据访问层 - Druid - 数据库连接池 - Spring JDBC - JDBC 模板支持 3. API 文档与测试 - Swagger2 - API 文档生成 - Knife4j - Swagger 的增强UI - Spring Actuator - 应用监控端点 4. 日志与监控 - Logback - 日志框架 - Micrometer + Prometheus - 指标收集与监控 - 分布式追踪支持 - 通过 trace_id 追踪请求 5. 安全与认证 - Spring Security - 安全框架 - JWT - Token 认证 - Basic Auth - 基础认证支持 6. 其他技术 - Lombok - 减少样板代码 - Jackson - JSON 序列化/反序列化 - Google Guava - 工具库 - Docker - 容器化部署支持 --- 🏗️ 二、代码结构 多模块架构 redirect/ ├── redirect-api/ # 对外服务接口层 │ ├── src/main/java/ │ │ └── com/demo/business/redirect/ │ │ ├── PlatformType.java # 平台枚举 │ │ ├── domain/ # 领域模型 │ │ │ ├── user/ # 用户相关 │ │ │ ├── department/ # 部门相关 │ │ │ └── ... │ └── pom.xml │ ├── redirect-core/ # 核心业务逻辑层 │ ├── src/main/java/ │ │ └── com/demo/business/redirect/ │ │ ├── domain/ │ │ │ ├── config/ # 配置类 │ │ │ ├── department/ # 部门管理 │ │ │ │ ├── service/ # 服务接口 │ │ │ │ ├── repository/ # 数据访问 │ │ │ │ │ ├── impl/ # DAO 实现 │ │ │ │ │ └── schema/ # 表结构映射 │ │ │ ├── feishu/ # 飞书对接 │ │ │ ├── user/ # 用户管理 │ │ │ └── ... │ │ └── commons/ │ │ └── jdbc/ # JDBC 工具类 │ └── pom.xml │ ├── redirect-service/ # Web 服务层 │ ├── src/main/java/ │ │ └── com/demo/business/redirect/ │ │ ├── service/ │ │ │ └── Application.java # Spring Boot 启动类 │ │ └── ... │ ├── src/main/resources/ │ │ ├── application.yml # 主配置文件 │ │ ├── logback.xml # 日志配置 │ │ └── upgraders.xml # 数据库升级配置 │ └── pom.xml │ ├── redirect-rdb-scripts/ # 数据库脚本 ├── redirect-rdb-setup/ # 数据库安装 ├── redirect-rdb-upgrade/ # 数据库升级 └── pom.xml # 父级 pom 分层架构特点 1. redirect-api(接口层) - 定义领域对象(DTO、实体) - 定义服务接口 - 平台枚举(WeCom/Feishu/DingTalk) 2. redirect-core(核心层) - 实现业务逻辑 - DAO 层实现 - Schema 映射(ORM) - 平台适配器实现 3. redirect-service(服务层) - REST 控制器 - 配置类 - 启动入口 --- 📏 三、编程规范 4. 包命名规范 // 包名:com.demo.business.redirect.[模块名].[功能域] com.demo.business.redirect.domain.user // 用户领域 com.demo.business.redirect.domain.department // 部门领域 com.demo.business.redirect.domain.department.service // 部门服务 com.demo.business.redirect.domain.department.repository.impl // 部门DAO实现 5. 类命名规范 - 实体类: DUser、Department(D 前缀表示 Redirect 领域对象) - DAO 类: DepartmentDao - 服务接口: DepartmentService - 服务实现: PlatformDeptService(平台特定服务) - Schema 类: DepartmentSchema(表结构映射) - 枚举类: PlatformType(平台类型) 3. 字段命名规范 // 数据库字段使用下划线命名 public static final String CODE = "code"; public static final String NAME = "name"; // Java 实体使用驼峰命名 private String code; private String name; 4. 代码注释规范 类注释(所有类必须包含): /** * 版权所有(C),XX有限公司,2022,所有权利保留。 * <p> * 项目名: redirect * 文件名: DepartmentDao.java * 模块说明: * 修改历史: * 2022年06月17日 - zhangsan - 创建。 */ 方法注释: /** * @author zhangsan * @since 1.0 */ 5. 注解使用规范 - @Data - Lombok 自动生成 getter/setter/toString - @Repository - 标识 DAO 层 - @Autowired - 依赖注入 - @ApiModelProperty - Swagger 文档注解 - @Valid - 参数校验 6. 数据库访问模式 使用 Custom JDBC 框架: // Schema 定义 public class DepartmentSchema extends Schemas.Entity { public static final String TABLE_NAME = "Dept"; public static final String CODE = "code"; // Mapper 自动映射 public static class R { public static final Mapper<Department> MAPPER = MapperBuilder .of(Department.class, DepartmentSchema.class) .primaryKey(DepartmentSchema.UUID) .build(); } } // DAO 查询 public Department getByCode(String code) { SelectStatement select = new SelectBuilder() .from(DepartmentSchema.TABLE_NAME) .where(Predicates.equals(DepartmentSchema.CODE, code.toUpperCase())) .build(); return jdbcTemplate.query(select, DepartmentSchema.R.MAPPER).get(0); } 7. 异常处理规范 // 使用XX企业自定义异常 void save(Department department) throws CustomServiceException; // 业务异常 public class EventBizException extends RuntimeException { // ... } 8. 配置管理 配置文件结构:# 主配置 application.yml spring: profiles: include: prd # 包含生产环境配置 application: name: redirect-service server: port: 8080 servlet: context-path: /redirect-service 日志配置 (logback.xml): <pattern>%d [%thread] [%X{trace_id:--}] %-5level %logger - %msg%n</pattern> 9. 平台适配模式 枚举定义: public enum PlatformType { @ApiModelProperty("企业微信") WeCom(100), @ApiModelProperty("飞书") Feishu(200), @ApiModelProperty("钉钉") DingTalk(300); private final int intValue; // ... } 目录结构: feishu/ # 飞书特定实现 wecom/ # 企微特定实现 dingtalk/ # 钉钉特定实现 10. 测试规范 - 测试依赖: spring-boot-starter-test、junit - 性能测试: contiperf 依赖 - 测试跳过: 默认跳过单元测试(maven-surefire-plugin 配置) --- 🎯 四、关键特性 1. 平台适配器模式 - 支持企业微信、飞书、钉钉三大平台 - 通过枚举统一平台类型 - 平台特定功能独立模块实现 2. 数据库版本管理 - 使用 custom-rdbver 进行数据库版本控制 - 独立的数据库脚本模块 - 支持升级脚本自动执行 3. 监控与追踪 - 集成 Micrometer + Prometheus - 支持分布式追踪(trace_id) - Actuator 端点监控 4. 安全认证 - 多层认证:JWT + Basic Auth - 支持 URL 模式排除 - 敏感接口需要认证 --- 📦 五、构建与部署 Maven 命令# 编译 mvn clean compile# 打包 mvn clean package -DskipTests# Docker 构建 mvn clean package -Pdocker mvn docker:build -Pdocker 端口配置 - 服务端口: 8080 - 监控端口: 8081 - 上下文路径: /redirect-service --- 这套规范确保了项目具有良好的可维护性、可扩展性和可读性,是典型的企业级 Java 项目实践。
3.3.3 GLM-4.6
思考模式
LAB-REDIRECT 项目技术栈与编程规范 1. 技术栈分析 1.1 核心技术栈 - Java: JDK 1.8 - Spring生态: Spring Boot 2.x + Spring Cloud OpenFeign - 数据库: Oracle (ojdbc6驱动) - 文档: Swagger2 + Knife4j - 监控: Spring Actuator + Micrometer + Prometheus - 构建: Maven 多模块项目 - 容器化: Docker 支持 - 内部框架: XX企业 XX 框架 + custom 组件 1.2 项目结构 LAB-REDIRECT/ ├── redirect-api/ # 接口定义层 ├── redirect-core/ # 业务逻辑层 ├── redirect-service/ # Web服务层 ├── redirect-rdb-scripts/ # 数据库脚本 ├── redirect-rdb-setup/ # 数据库安装 └── redirect-rdb-upgrade/ # 数据库升级 1.3 依赖关系 redirect-service → redirect-core → redirect-api └── redirect-rdb-scripts └── XX框架 2. 代码组织架构 2.1 分层架构 - redirect-api: 领域对象、服务接口、API定义 - redirect-core: 业务实现、数据访问、外部客户端 - redirect-service: REST控制器、配置、健康检查 2.2 业务域划分 - 用户管理: user、orgUser 包 - 部门管理: department 包 - 消息管理: message 包 - 门店管理: store 包 - 平台适配器: feishu、wecom 包 2.3 包命名规范 com.demo.business.redirect ├── api/ # API接口 ├── domain/ # 领域对象 ├── service/ # 服务实现 ├── repository/ # 数据访问 ├── client/ # 外部客户端 ├── config/ # 配置类 ├── util/ # 工具类 └── exception/ # 异常定义 3. 编程规范 3.1 命名规范 类命名 // 实体类:业务名词 + 实体类型 public class User {} public class Department {} // 服务类:业务领域 + Service public class UserService {} public class FeiShuService {} // 控制器:业务领域 + Controller public class UserController {} public class FeiShuController {} // 仓库:业务领域 + Repository/Dao public class UserRepository {} public class DepartmentRepository {} 方法命名 // 查询方法:find/query + 条件 public User findById(String id); public List<User> findByName(String name); // 业务操作:动词 + 名词 public User createUser(UserDTO dto); public void syncDepartment(String tenantId); // 布尔方法:is/has/can + 形容词 public boolean isActive(); public boolean hasPermission(); 变量命名 // 常量:全大写,下划线分隔 public static final String APP_ID = "business_redirect"; public static final int MAX_RETRY_COUNT = 3; // 变量:驼峰命名,见文知意 private String feiShuTenantId; private List<User> activeUsers; 3.2 代码组织规范 实体类结构 @Entity @Table(name = "D_USER") public class User { @Id @Column(name = "ID") private String id; @Column(name = "NAME") private String name; @Column(name = "CREATE_TIME") private Date createTime; // 构造方法 public User() {} // Getter/Setter public String getId() { return id; } public void setId(String id) { this.id = id; } } 服务类结构 @Service @Transactional @Slf4j public class UserService { @Autowired private UserRepository userRepository; public User createUser(UserDTO dto) { // 参数验证 if (dto == null) { throw new IllegalArgumentException("用户信息不能为空"); } // 业务逻辑 User user = convertToUser(dto); user.setId(UUID.randomUUID().toString()); user.setCreateTime(new Date()); // 数据持久化 return userRepository.save(user); } public User findById(String id) { return userRepository.findById(id) .orElseThrow(() -> new UserNotFoundException("用户不存在")); } } 控制器结构 @RestController @RequestMapping("/api/users") @Api(tags = "用户管理") @Slf4j public class UserController { @Autowired private UserService userService; @PostMapping @ApiOperation("创建用户") public ResponseEntity<User> createUser(@RequestBody @Valid UserDTO dto) { try { User user = userService.createUser(dto); return ResponseEntity.ok(user); } catch (Exception e) { log.error("创建用户失败", e); return ResponseEntity.status(500).build(); } } } 3.3 异常处理规范 自定义异常 public class RedirectException extends RuntimeException { private String errorCode; public RedirectException(String errorCode, String message) { super(message); this.errorCode = errorCode; } } public class UserNotFoundException extends RedirectException { public UserNotFoundException(String message) { super("USER_NOT_FOUND", message); } } 全局异常处理 @ControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler(RedirectException.class) public ResponseEntity<ErrorResponse> handleRedirectException(RedirectException e) { ErrorResponse response = new ErrorResponse(e.getErrorCode(), e.getMessage()); return ResponseEntity.badRequest().body(response); } @ExceptionHandler(Exception.class) public ResponseEntity<ErrorResponse> handleException(Exception e) { log.error("系统异常", e); ErrorResponse response = new ErrorResponse("SYSTEM_ERROR", "系统异常"); return ResponseEntity.status(500).body(response); } } 3.4 配置规范 配置类 @Configuration @ConfigurationProperties(prefix = "redirect.feishu") @Data public class FeiShuConfig { private String appId; private String appSecret; private String tenantId; @PostConstruct public void init() { log.info("飞书配置初始化完成"); } } 配置文件# 飞书配置 redirect.feishu.app-id=${FEISHU_APP_ID:} redirect.feishu.app-secret=${FEISHU_APP_SECRET:} redirect.feishu.tenant-id=${FEISHU_TENANT_ID:}# 数据库配置 spring.datasource.url=jdbc:oracle:thin:@localhost:1521:ORCL spring.datasource.username=${DB_USERNAME:} spring.datasource.password=${DB_PASSWORD:} 3.5 日志规范 日志级别使用 @Service @Slf4j public class UserService { public User createUser(UserDTO dto) { log.debug("开始创建用户,参数: {}", dto); try { User user = userRepository.save(convertToUser(dto)); log.info("用户创建成功,ID: {}", user.getId()); return user; } catch (Exception e) { log.error("用户创建失败,参数: {}", dto, e); throw e; } } } 3.6 测试规范 单元测试 @RunWith(SpringRunner.class) @SpringBootTest public class UserServiceTest { @MockBean private UserRepository userRepository; @Autowired private UserService userService; @Test public void testCreateUser() { // Given UserDTO dto = new UserDTO(); dto.setName("测试用户"); User savedUser = new User(); savedUser.setId("test-id"); when(userRepository.save(any())).thenReturn(savedUser); // When User result = userService.createUser(dto); // Then assertThat(result.getId()).isEqualTo("test-id"); verify(userRepository).save(any()); } } 3.7 数据库操作规范 Repository接口 @Repository public interface UserRepository extends JpaRepository<User, String> { @Query("SELECT u FROM User u WHERE u.name = :name") List<User> findByName(@Param("name") String name); @Modifying @Query("UPDATE User u SET u.status = :status WHERE u.id = :id") int updateStatus(@Param("id") String id, @Param("status") String status); } 4. 架构模式应用 4.1 适配器模式 public interface PlatformAdapter { User syncUser(String platformUserId); Department syncDepartment(String platformDeptId); } @Component("feishu") public class FeiShuAdapter implements PlatformAdapter { // 飞书平台适配实现 } @Component("wecom") public class WeComAdapter implements PlatformAdapter { // 企微平台适配实现 } 4.2 工厂模式 @Component public class PlatformAdapterFactory { @Autowired private Map<String, PlatformAdapter> adapterMap; public PlatformAdapter getAdapter(PlatformType type) { String beanName = type.name().toLowerCase(); return adapterMap.get(beanName); } } 这些规范确保了代码的一致性、可维护性和可扩展性,符合企业级应用的开发标准。
4 前端
技术栈:Vu3+TypeScript+Vite工程 提示词:输出工程 frontend 用到的技术栈/代码结构,并提供编程规范
4.1 评价标准
| 维度 | 5分标准 | 3分标准 | 1分标准 |
|---|---|---|---|
| 技术栈识别 | 准确识别全部核心技术栈及开发工具链 | 识别主要技术栈,遗漏部分工具 | 技术栈识别不全或有错误 |
| 代码结构理解 | 详细描述目录结构,体现架构设计思想 | 基本描述结构,缺乏深度分析 | 结构描述模糊或错误 |
| 编程规范完整性 | 覆盖命名、格式、组件、API等完整规范 | 涵盖基本规范,细节不完整 | 规范描述零散不系统 |
| 输出可读性 | 层次分明,逻辑清晰,便于理解实施 | 结构基本清晰,部分内容冗长 | 组织混乱,难以阅读 |
| 实用性 | 提供具体配置示例和最佳实践 | 有代码示例但缺乏配置细节 | 缺乏可操作内容 |
4.2 评价结果
| 模型 | 技术栈识别 | 代码结构理解 | 编程规范完整性 | 输出可读性 | 实用性 | 总分/25 |
|---|---|---|---|---|---|---|
| MiniMax-M2 | 5 | 5 | 5 | 5 | 5 | 25 |
| GLM-4.6(非思考模式) | 4 | 4 | 4 | 4 | 4 | 20 |
| GLM-4.6(思考模式) | 5 | 5 | 5 | 5 | 5 | 25 |
详细评价:
- MiniMax-M2:输出极为详细,涵盖模块化设计、组件规范、API调用、状态管理、路由、样式、自动化导入等全链路,示例具体,可操作性强。
- GLM-4.6(非思考模式):结构清晰,内容完整,但深度和示例细节略少,规范性描述较概括。
- GLM-4.6(思考模式):输出与MiniMax-M2相当,系统性强,示例丰富,涵盖开发全流程,表现优异。
4.3 MiniMax-M2
前端技术栈、代码结构与编程规范 一、技术栈 核心框架 - Vue 3 - 渐进式 JavaScript 框架 - TypeScript - 类型安全的 JavaScript 超集 - Vite - 下一代前端构建工具 UI 框架与组件库 - Element Plus - Vue 3 的桌面端组件库 - @element-plus/icons-vue - Element Plus 图标库 - TailwindCSS - 实用优先的 CSS 框架 状态管理 - Pinia - Vue 官方推荐的状态管理库 - pinia-plugin-persistedstate - Pinia 持久化插件 HTTP 客户端 - Axios - 基于 Promise 的 HTTP 客户端 图表可视化 - ECharts - 百度开源的图表库 开发工具 - ESLint - 代码规范检查工具 - Prettier - 代码格式化工具 - TypeScript ESLint - TypeScript 专用 ESLint 规则 - unplugin-auto-import - 自动导入插件 - unplugin-vue-components - Vue 组件自动导入插件 其他依赖 - js-base64 - Base64 编解码 - lodash-es - JavaScript 实用工具库 - zod - TypeScript 优先的 schema 验证 二、代码结构 frontend/src/ ├── assets/ # 静态资源 ├── components/ # 全局通用组件 │ ├── types/ # 组件类型定义 │ │ ├── batch-operation-dialog/ │ │ └── data-table/ │ ├── ActionButton.vue │ ├── ActionButtonGroup.vue │ ├── AppHeader.vue │ ├── AppLayout.vue │ ├── BatchOperationDialog.vue │ ├── DataTable.vue │ ├── DynamicFormDialog.vue │ ├── EChartsWrapper.vue │ ├── MobileBottomNav.vue │ ├── PageHeader.vue │ ├── SearchForm.vue │ ├── Sidebar.vue │ ├── StatCard.vue │ └── index.ts ├── composables/ # 组合式函数 │ └── useResponsive.ts ├── model/ # 通用数据模型 │ ├── api-id-name.model.ts │ ├── api-query-filter.model.ts │ ├── api-query-result.model.ts │ └── api-response.model.ts ├── modules/ # 功能模块 │ ├── admin/ # 管理员模块 │ │ ├── api/ # API 接口 │ │ ├── model/ # 数据模型 │ │ ├── views/ # 页面组件 │ │ ├── components/ # 模块内组件 │ │ ├── attendance/ # 考勤管理 │ │ ├── course/ # 课程管理 │ │ ├── operation-log/ # 操作日志 │ │ └── user/ # 用户管理 │ ├── student/ # 学生模块 │ ├── system/ # 系统模块(登录、权限等) │ │ ├── api/ # 系统 API │ │ ├── model/ # 系统模型 │ │ ├── store/ # Pinia 状态管理 │ │ └── views/ # 系统页面 │ └── teacher/ # 教师模块 ├── router/ # 路由配置 │ └── index.ts ├── styles/ # 样式文件 │ └── index.css ├── utils/ # 工具函数 │ ├── api.util.ts │ ├── course.util.ts │ ├── date.util.ts │ └── mobile.ts ├── App.vue # 根组件 ├── main.ts # 应用入口 └── vite-env.d.ts # Vite 类型定义 架构特点 1. 模块化设计 - 按角色(admin/teacher/student)和功能模块划分 2. 分层架构 - 清晰的分层:视图层(views) -> 业务逻辑层(api/store) -> 数据模型层(model) 3. 组件复用 - 通用组件集中在 components/ 目录 4. 类型安全 - 全程使用 TypeScript,严格类型检查 5. 组合式 API - 使用 Vue 3 Composition API 三、编程规范 3.1 命名规范 文件命名 - Vue 组件:PascalCase(如 UserManagement.vue) - 普通文件:camelCase(如 api.util.ts) - 类型文件:camelCase + .model.ts(如 user.model.ts) 变量与函数 - 变量/函数:camelCase - 常量:UPPER_SNAKE_CASE - 私有属性:_ 前缀 TypeScript 类型 - 接口:PascalCase + Model 后缀(如 UserModel) - 类型别名:PascalCase(如 CourseType) 3.2 代码格式规范(.prettierrc) { "singleQuote": true, // 使用单引号 "tabWidth": 2, // 缩进 2 个空格 "printWidth": 80, // 行宽 80 字符 "semi": true, // 语句末尾分号 "trailingComma": "all" // 尾随逗号 } 3.3 ESLint 规则(eslint.config.ts) 核心规则 - 开启 TypeScript 严格模式 - 强制 Vue 3 组合式 API 风格 - 禁止 any 类型(除非特殊情况) - 警告未检查的 Promise 和成员访问 示例配置 rules: { '@typescript-eslint/no-explicit-any': 'off', '@typescript-eslint/no-floating-promises': 'warn', '@typescript-eslint/no-unsafe-argument': 'warn', 'prettier/prettier': ['error', { endOfLine: 'auto', trailingComma: 'all' }] } 3.4 组件编写规范 Vue 单文件组件结构 <script setup lang="ts"> // 1. 导入依赖 // 2. 类型定义 // 3. 响应式状态 // 4. 计算属性 // 5. 方法 // 6. 生命周期钩子 </script> <template> <!-- 模板内容 --> </template> <style scoped> /* 样式 */ </style> 组件设计原则 - 单一职责原则(SRP) - Props 传递使用 TypeScript 严格类型 - 使用 defineProps 和 defineEmits 宏 - 样式使用 scoped 限制作用域 3.5 API 调用规范 API 文件结构(如 course.api.ts) import { ApiUtil } from '@/utils/api.util'; import type { ApiResponse } from '@/model/api-response.model'; /** * 课程模块API */export const courseApi = { /** * 查询课程列表 */ query: (params?: CourseQueryFilterModel): Promise<ApiResponse<ApiQueryResult<CourseModel>>> => { return ApiUtil.post('/course/query', params); }, // 其他方法... }; HTTP 拦截器 - 请求拦截器:自动添加 Authorization 头,检查并刷新 token - 响应拦截器:统一处理错误,token 过期自动跳转登录 3.6 状态管理规范 Pinia Store 结构(如 auth.ts)export const useAuthStore = defineStore('auth', () => { // 1. 状态 const accessToken = ref<string>(''); const user = ref<UserModel | null>(null); // 2. 计算属性 const isAuthenticated = computed(() => { return !!accessToken.value && !!user.value; }); // 3. 方法 const login = async (loginData: LoginRequest) => { // 业务逻辑 }; return { // 暴露状态和方法 }; }); 规范 - 使用 Composition API 风格 - 状态持久化使用 pinia-plugin-persistedstate - 异步操作使用 async/await - 错误处理使用 try/catch/finally 3.7 模型定义规范 数据模型(如 course.model.ts) // 导出类型别名exporttype CourseType = 'month_card' | 'session_card'; // 导出接口export interface CourseModel { id: string; name: string; courseType: CourseType; // ... } 3.8 路由规范 路由配置 - 使用 createWebHashHistory(hash 模式) - 路由守卫检查认证和权限 - 页面标题通过 meta.title 设置 示例 { path: '/admin', name: 'AdminLayout', component: () => import('../modules/admin/views/AdminLayout.vue'), meta: { requiresAuth: true, roles: ['admin'], title: '管理员工作台', }, } 3.9 样式规范 CSS 规范 - 使用 TailwindCSS 实用类 - 组件样式使用 <style scoped> - 全局样式在 styles/index.css 3.10 导入规范 路径别名 - @/ 指向 src/ 目录 - 使用绝对路径导入,避免相对路径地狱 示例 import type { CourseModel } from '@/modules/admin/course/model/course.model'; import { useAuthStore } from '@/modules/system/store/auth'; 3.11 注释规范 JSDoc 注释 /** * 函数描述 * @param 参数名 参数描述 * @returns 返回值描述 * @example 使用示例 */ Vue 组件注释 <!-- 组件说明 --> <!-- 具体功能说明 --> 四、开发流程 4.1 环境要求 - Node.js >= 18 - pnpm / npm 4.2 脚本命令 { "dev": "vite", // 开发模式 "build": "vue-tsc -b && vite build", // 构建 "preview": "vite preview" // 预览 } 4.3 开发规范 1. 提交前检查 - 运行 ESLint 检查:npm run lint - 自动修复可修复问题 - 确保所有 TypeScript 类型检查通过 2. 代码提交 - 使用约定式提交格式(参考 .spec-workflow/ 目录) - 包含相关测试 3. 组件开发 - 优先使用组合式 API - 合理拆分组件,避免过大的组件 - 注意组件的可复用性 这套规范确保了代码的一致性、可维护性和可读性。建议开发者在开发过程中严格遵循这些规范。
4.4 GLM-4.6
4.4.1 非思考模式
Frontend 技术栈分析报告 核心技术栈 框架与构建工具 - Vue 3.5.18 - 主框架,使用 Composition API - Vite 7.1.2 - 现代化构建工具 - TypeScript 5.8.3 - 强类型语言支持 - Vue Router 4.5.1 - 路由管理 - Pinia 3.0.3 - 状态管理(替代 Vuex) UI 组件库 - Element Plus 2.11.1 - 主要 UI 组件库 - @element-plus/icons-vue - Element Plus 图标库 - Tailwind CSS 4.1.13 - 实用优先的 CSS 框架 开发工具 - ESLint 9.34.0 - 代码质量检查 - Prettier 3.6.2 - 代码格式化 - unplugin-auto-import - 自动导入插件 - unplugin-vue-components - 组件自动导入 项目结构分析 目录组织架构 frontend/ ├── src/ │ ├── components/ # 通用组件库 │ │ ├── AppLayout.vue # 应用布局 │ │ ├── DataTable.vue # 数据表格 │ │ ├── DynamicFormDialog.vue # 动态表单 │ │ └── index.ts # 组件导出 │ ├── modules/ # 业务模块 │ │ ├── admin/ # 管理端 │ │ ├── student/ # 学生端 │ │ ├── teacher/ # 教师端 │ │ └── system/ # 系统模块 │ ├── composables/ # 组合式函数 │ ├── router/ # 路由配置 │ ├── styles/ # 样式文件 │ ├── utils/ # 工具函数 │ ├── model/ # 数据模型 │ └── assets/ # 静态资源 ├── package.json ├── vite.config.ts ├── eslint.config.ts ├── tsconfig.json └── .prettierrc 业务模块结构 每个模块采用标准化组织: - api/ - API 接口定义 - components/ - 模块专用组件 - views/ - 页面组件 - model/ - 数据类型定义 代码质量配置 ESLint 规则 - 使用 TypeScript 推荐配置 - Vue 3 必要规则 - Prettier 集成 - 自定义规则: - 允许 any 类型使用 - 浮动 Promise 警告 - 不安全操作警告 TypeScript 配置 - 严格模式启用 - 路径别名:@/ → src/ - 构建优化:erasableSyntaxOnly Prettier 规范 - 单引号字符串 - 2 空格缩进 - 80 字符行宽 - 尾逗号全保留 - 分号强制 编程规范与最佳实践 1. 代码组织原则 模块化设计: - 按业务功能划分模块(admin/student/teacher) - 每个模块包含独立的 api、components、views - 通用组件统一管理在 src/components/ 组件命名规范: - PascalCase 命名:DataTable.vue - 组件导出统一管理:components/index.ts - 业务组件按模块分组 2. Vue 3 最佳实践 Composition API 使用: - 优先使用 <script setup> 语法 - 组合式函数抽离到 composables/ - 响应式数据使用 ref、reactive 组件通信: - 父子通信:props/emit - 跨组件通信:Pinia store - 事件系统:provide/inject 3. TypeScript 规范 类型定义: - 接口定义放在对应模块的 model/ 目录 - 使用 interface 而非 type(推荐) - 避免 any,优先使用 unknown 或具体类型 类型安全: - 启用严格模式检查 - 使用类型断言谨慎 - 泛型优先设计 4. 状态管理规范 Pinia 使用: - 按模块划分 store - 使用持久化插件 - Actions 处理异步操作 数据流向: // 统一的数据流模式 const { data, loading, error } = useStore() const { fetchData } = useStoreActions() 5. 样式规范 Tailwind CSS: - 优先使用 utility classes - 自定义组件样式使用 CSS Modules - 响应式设计优先 Element Plus: - 统一使用中文语言包 - 图标全局注册 - 主题定制保持一致性 6. 开发流程规范 代码提交前: - ESLint 检查通过 - TypeScript 编译无错 - Prettier 格式化 - 构建测试成功 文件命名: - 组件文件:PascalCase - 工具文件:camelCase - 常量文件:UPPER_CASE● 架构优势与改进建议 当前架构优势 1. 现代化技术栈:Vue 3 + TypeScript + Vite 提供了优秀的开发体验 2. 模块化设计:清晰的业务模块划分,便于团队协作 3. 组件复用:通用组件库减少重复开发 4. 自动化工具:自动导入和格式化提高开发效率 5. 多端支持:admin/student/teacher 模块独立设计 最佳实践建议 6. SOLID 原则应用: - 组件单一职责,避免过度复杂 - 接口隔离,props 设计精简 - 依赖注入,便于测试 7. 性能优化: - 路由懒加载 - 组件按需导入 - 图片资源优化 8. 代码质量: - 单元测试覆盖 - 代码审查流程 - 文档规范统一 9. 安全考虑: - API 请求鉴权 - XSS 防护 - 敏感信息加密 该前端项目采用了现代化的技术栈和良好的工程化配置,具备清晰的架构设计和完善的开发规范,为课程管理系统提供了坚实的前端基础。
4.4.2 思考模式
前端技术栈分析 核心技术栈 框架与构建工具 - Vue 3.5.18 - 现代化响应式框架 - TypeScript ~5.8.3 - 类型安全的JavaScript超集 - Vite 7.1.2 - 现代化构建工具,提供快速开发体验 - Vue Router 4.5.1 - Vue官方路由管理器 UI框架与样式 - Element Plus 2.11.1 - 企业级Vue3组件库 - Tailwind CSS 4.1.13 - 原子化CSS框架 - @element-plus/icons-vue 2.3.2 - Element Plus图标库 状态管理 - Pinia 3.0.3 - Vue3官方推荐的状态管理库 - pinia-plugin-persistedstate 4.5.0 - Pinia数据持久化插件 工具库 - Axios 1.11.0 - HTTP客户端 - ECharts 6.0.0 - 数据可视化图表库 - Lodash-es 4.17.21 - 实用工具库 - Zod 4.1.1 - TypeScript优先的模式验证库 开发工具 - ESLint 9.34.0 - 代码质量检查工具 - Prettier 3.6.2 - 代码格式化工具 - unplugin-auto-import 20.0.0 - 自动导入插件 - unplugin-vue-components 29.0.0 - Vue组件自动导入插件 项目结构 frontend/ ├── src/ │ ├── assets/ # 静态资源 │ ├── components/ # 公共组件 │ │ └── types/ # 组件类型定义 │ ├── composables/ # Vue3 组合式函数 │ ├── model/ # 数据模型 │ ├── modules/ # 功能模块 │ │ ├── admin/ # 管理员模块 │ │ ├── teacher/ # 教师模块 │ │ ├── student/ # 学生模块 │ │ └── system/ # 系统模块 │ ├── router/ # 路由配置 │ ├── styles/ # 全局样式 │ ├── App.vue # 根组件 │ └── main.ts # 应用入口 ├── package.json ├── vite.config.ts # Vite配置 ├── tsconfig.json # TypeScript配置 ├── eslint.config.ts # ESLint配置 └── .prettierrc # Prettier配置 模块化架构 项目采用多角色模块化架构: - admin模块: 管理员功能(用户管理、课程管理、上课记录、操作日志、系统设置) - teacher模块: 教师功能(工作台、课程管理、上课记录、个人信息) - student模块: 学生功能(首页、我的课程、上课记录、个人信息) - system模块: 系统公共功能(登录、个人资料、403、404页面) 每个模块遵循统一的目录结构: module/ ├── api/ # API接口 ├── model/ # 数据模型 ├── views/ # 页面组件 ├── components/ # 模块内组件 └── store/ # 状态管理(部分模块) 编程规范 1. 代码风格规范 Prettier配置 (.prettierrc): { "singleQuote": true, // 使用单引号 "tabWidth": 2, // 2空格缩进 "printWidth": 80, // 每行80字符 "semi": true, // 使用分号 "trailingComma": "all" // 所有地方都加尾逗号 } ESLint规则: - 禁用@typescript-eslint/no-explicit-any(允许使用any类型) - 浮动Promise设为警告 - 不安全参数、成员访问、赋值设为警告 - 强制使用Prettier格式化 2. TypeScript规范 编译选项 (tsconfig.app.json): - 启用严格模式 ("strict": true) - 强制一致的大小写 ("forceConsistentCasingInFileNames": true) - 路径别名:@/* 映射到 src/* - 不检查未使用的局部变量和参数 3. 组件开发规范 命名规范: - 组件文件:PascalCase(如 UserManagement.vue) - 组件名:PascalCase(如 UserManagement) - Props:camelCase - Events:kebab-case 组件结构: <template> <!-- 模板内容 --> </template> <script setup lang="ts"> // 导入 import { ref, computed, onMounted } from 'vue' // 接口定义 interface Props { // props定义 } // Props和Emits const props = defineProps<Props>() const emit = defineEmits<{ // emits定义 }>() // 响应式数据 const data = ref() // 计算属性 const computedValue = computed(() => { return props.value }) // 方法 const method = () => { // 方法实现 } // 生命周期 onMounted(() => { // 初始化 }) </script> <style scoped> /* 组件样式 */ </style> 4. API调用规范 使用Axios进行HTTP请求: // API模块示例 import axios from 'axios' import type { ApiResponse, User } from '@/model' const api = axios.create({ baseURL: '/api' })export const userApi = { getUsers: (): Promise<ApiResponse<User[]>> => { return api.get('/users') }, createUser: (user: Partial<User>): Promise<ApiResponse<User>> => { return api.post('/users', user) } } 5. 状态管理规范 Pinia Store结构: import { defineStore } from 'pinia' import { ref, computed } from 'vue'export const useUserStore = defineStore('user', () => { // State const users = ref([]) const loading = ref(false) // Getters const activeUsers = computed(() => users.value.filter(user => user.active) ) // Actions const fetchUsers = async () => { loading.value = true try { // API调用 } finally { loading.value = false } } return { // State users, loading, // Getters activeUsers, // Actions fetchUsers } }, { persist: { paths: ['users'] // 持久化字段 } }) 6. 路由规范 路由配置: - 使用懒加载组件 - 配置meta信息(title、requiresAuth、roles) - 实现路由守卫进行权限控制 - Hash模式路由(createWebHashHistory) 7. 样式规范 Tailwind CSS + Element Plus: - 优先使用Tailwind原子类 - 复杂组件样式使用scoped CSS - 响应式设计:sm:、md:、lg: 前缀 - Element Plus主题定制 8. 自动化规范 unplugin配置: - 自动导入Vue和Element Plus组件 - 自动导入Vue Composition API - 减少重复导入语句 9. 安全规范 路由权限控制: - 基于角色的访问控制(RBAC) - 路由守卫验证登录状态和角色权限 - 敏感操作需要相应权限验证 10. 性能优化建议 - 组件懒加载 - 图片资源优化 - 合理使用computed和watch - 避免不必要的响应式数据 - 使用v-show vs v-if的场景选择● (no content) 这份前端技术栈分析和编程规范基于您的实际项目配置,涵盖了现代Vue3 + TypeScript企业级应用的最佳实践。项目采用了模块化架构,支持多角色权限管理,具备完善的开发工具链配置,为团队协作和代码质量提供了强有力的保障。
读者福利:如果大家对大模型感兴趣,这套大模型学习资料一定对你有用
对于0基础小白入门:
如果你是零基础小白,想快速入门大模型是可以考虑的。
一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以根据这些资料规划好学习计划和方向。
包括:大模型学习线路汇总、学习阶段,大模型实战案例,大模型学习视频,人工智能、机器学习、大模型书籍PDF。带你从零基础系统性的学好大模型!
😝 一直在更新,更多的大模型学习和面试资料已经上传带到CSDN的官方了,有需要的朋友可以扫描下方二维码免费领取【保证100%免费】👇👇

👉AI大模型学习路线汇总👈
大模型学习路线图,整体分为7个大的阶段:(全套教程文末领取哈)
第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;
第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;
第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;
第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;
第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;
第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;
第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。
👉大模型实战案例👈
光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

👉大模型视频和PDF合集👈
观看零基础学习书籍和视频,看书籍和视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。


👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;
• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;
• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;
• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。
👉获取方式:
😝 一直在更新,更多的大模型学习和面试资料已经上传带到CSDN的官方了,有需要的朋友可以扫描下方二维码免费领取【保证100%免费】👇👇
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)