简介

本文对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%免费】👇👇
在这里插入图片描述

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐