Charile Zhou
|
e08759b869
|
revert: 移除 Alpine 镜像源和构建工具配置
Deploy / Build and Push Images (push) Failing after 5m8s
Deploy / Deploy to Knative (push) Has been skipped
- 移除阿里云 Alpine 镜像源配置
- 移除 python3/make/g++ 构建工具安装
- 原��:仅构建 amd64 架构,bcrypt 可直接使用预编译二进制
- 简化 Dockerfile,减少镜像构建时间和体积
|
2026-01-23 00:33:42 +08:00 |
|
Charile Zhou
|
f26cd1a739
|
perf(docker): 配置阿里云 Alpine 镜像源加速构建
Deploy / Build and Push Images (push) Failing after 1m53s
Deploy / Deploy to Knative (push) Has been skipped
- 使用阿里云 mirrors.aliyun.com 替代官方 dl-cdn.alpinelinux.org
- 显著加速 apk 包下载速度(python3, make, g++ 等)
- 对国内网络环境友好
|
2026-01-23 00:24:20 +08:00 |
|
Charile Zhou
|
9b24ef50d7
|
fix(docker): 安装构建工具支持 native modules 编译
Deploy / Deploy to Knative (push) Has been cancelled
Deploy / Build and Push Images (push) Has been cancelled
问题:
- ARM64 架构编译时,bcrypt 无法从 GitHub 下载预编译二进制
- Alpine 镜像中缺少 Python 和编译工具,导致从源代码编译失败
解决方案:
- 在 base 阶段安装 python3、make、g++
- 这些工具在 deps/builder 阶段用于编译 native modules
- 最终 runner 镜像中不包含这些工具(已编译的二进制从中间镜像复制)
支持的架构:linux/amd64 和 linux/arm64
|
2026-01-23 00:19:33 +08:00 |
|
Charile Zhou
|
5ce21e2008
|
fix(docker): 修复 prod-deps 阶段 Prisma Client 生成失败
Deploy / Build and Push Images (push) Failing after 14m59s
Deploy / Deploy to Knative (push) Has been skipped
问题:
- prod-deps 阶段使用 --prod 安装时不包含 devDependencies
- pnpm db:generate 依赖 dotenv-cli 和 prisma(都是 devDependencies)
- 导致 "sh: dotenv: not found" 错误
解决方案:
- 先安装所有依赖(包括 devDependencies)
- 生成 Prisma Client
- 使用 pnpm prune --prod 删除 devDependencies
- 保持最终镜像体积最小化
|
2026-01-22 23:57:56 +08:00 |
|
Charile Zhou
|
4e8b660213
|
refactor(docker): 简化镜像源配置,统一在 base stage 设置
Deploy / Build and Push Images (push) Failing after 2m39s
Deploy / Deploy to Knative (push) Has been skipped
- 移除无用的 npm config set(项目使用 pnpm)
- 在 base stage 统一设置 pnpm config,deps 和 prod-deps 自动继承
- 减少重复配置,代码更简洁
|
2026-01-22 23:42:53 +08:00 |
|
Charile Zhou
|
fd5efabd76
|
feat(docker): 使用内部 Verdaccio npm 镜像源
- 所有 npm registry 从 npmmirror.com 改为 verdaccio.tegical.world
- 包括 Corepack、npm 和 pnpm 的镜像源配置
- 完全隔离外网依赖,提升构建速度和稳定性
|
2026-01-22 23:40:53 +08:00 |
|
Charile Zhou
|
02f48c2955
|
fix(docker): 配置 Corepack 使用 npmmirror 下载 pnpm
Deploy / Build and Push Images (push) Failing after 4m40s
Deploy / Deploy to Knative (push) Has been skipped
- 添加 ENV COREPACK_NPM_REGISTRY 环境变量
- 解决 Corepack 仍然尝试从 registry.npmjs.org 下载 pnpm 的问题
- npm config 只影响 npm,Corepack 需要单独配置
|
2026-01-22 23:28:15 +08:00 |
|
Charile Zhou
|
9a1285b4cc
|
fix(docker): 配置 npm 镜像源解决网络访问问题
Deploy / Build and Push Images (push) Failing after 3m6s
Deploy / Deploy to Knative (push) Has been skipped
- 配置 npm registry 为 https://registry.npmmirror.com
- 解决 Corepack 下载 pnpm 超时问题
- 配置 pnpm registry 加速依赖安装
- 应用于所有 stage (deps, prod-deps)
|
2026-01-22 23:00:37 +08:00 |
|
Charile Zhou
|
0201b5336e
|
feat(docker): 使用 Harbor 内部代理拉取 Node 镜像
Deploy / Build and Push Images (push) Failing after 1m51s
Deploy / Deploy to Knative (push) Has been skipped
- Node 镜像改为 harbor.tegical.world/docker.io/node:24.11.1-alpine
- 通过内部 Harbor 代理访问 Docker Hub,避免网络问题
- 提升镜像拉取速度和稳定性
|
2026-01-22 22:53:34 +08:00 |
|
Charile Zhou
|
31ca44dbc3
|
refactor(docker): runner stage 复用 base 而非重新 FROM
Deploy / Build and Push Images (push) Failing after 1m29s
Deploy / Deploy to Knative (push) Has been skipped
- 将 runner stage 从 'FROM node:20-alpine' 改为 'FROM base'
- 统一版本管理,只需修改 base stage 一处
- 避免 base 和 runner 使用不同 Node 版本的风险
|
2026-01-22 22:41:05 +08:00 |
|
Charile Zhou
|
771920afbc
|
fix(docker): 对齐 Node 版本并简化 pnpm 配置
Deploy / Deploy to Knative (push) Has been cancelled
Deploy / Build and Push Images (push) Has been cancelled
- Node 版本从 20 升级到 24.11.1,与 .nvmrc 保持一致
- 移除 corepack prepare pnpm@9,由 package.json 的 packageManager 字段管理
- Corepack 会自动读取 packageManager: "pnpm@9.15.2" 并使用
|
2026-01-22 22:39:48 +08:00 |
|
Charile Zhou
|
0a87cf8939
|
fix(docker): 移除 syntax 指令避免访问 Docker Hub
Deploy / Deploy to Knative (push) Has been cancelled
Deploy / Build and Push Images (push) Has been cancelled
- 移除 Dockerfile 第一行的 syntax=docker/dockerfile:1
- 该指令会导致 BuildKit 尝试从 Docker Hub 拉取镜像
- 修复无法访问 Docker Hub 导致的构建失败问题
- 对于标准 Dockerfile 特性,此指令非必需
|
2026-01-22 22:38:15 +08:00 |
|
charilezhou
|
08bd6397c8
|
ci: 添加 Gitea Actions CI/CD 和 Knative 部署配置
- 添加 CI workflow(PR 构建检查)
- 添加 Deploy workflow(main 分支自动部署)
- 添加 Web/API 多阶段 Dockerfile
- 添加 Knative Service 配置(自动扩缩容)
- 添加 K8s ConfigMap、Secret、Namespace 配置
- 添加 .dockerignore 优化构建
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-22 17:38:28 +08:00 |
|
charilezhou
|
3943bd112f
|
docs: 更新 OIDC Provider 文档并完善环境配置
文档更新:
- 从"实施方案"改为"实施文档",标记为已完成状态
- 添加快速开始章节,提供完整的使用示例
- 补充第一方应用自动授权的两种场景实现细节
- 补充 Grant Scope 存储的 payload 结构说明
- 新增客户端服务章节(cuid2 ID + 随机密钥)
- 更新关键文件清单(后端/前端/共享类型)
环境配置:
- 添加 FRONTEND_URL 配置
- 添加 OIDC Provider 开发环境配置
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-20 17:29:26 +08:00 |
|
charilezhou
|
90513e8278
|
feat: 实现完整的 OIDC Provider 功能
- 后端:基于 node-oidc-provider 实现 OIDC Provider
- 支持 authorization_code、refresh_token、client_credentials 授权类型
- Redis adapter 存储会话数据,Prisma adapter 存储持久化数据
- 客户端管理 CRUD API(创建、更新、删除、重新生成密钥)
- 交互 API(登录、授权确认、中止)
- 第一方应用自动跳过授权确认页面
- 使用 cuid2 生成客户端 ID
- 前端:OIDC 客户端管理界面
- 客户端列表表格(支持分页、排序)
- 创建/编辑弹窗(支持所有 OIDC 配置字段)
- OIDC 交互页面(登录表单、授权确认表单)
- 共享类型:添加 OIDC 相关 TypeScript 类型定义
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-20 17:22:32 +08:00 |
|
charilezhou
|
8db25538d4
|
docs: 添加 OIDC Provider 实施方案文档
- 基于 panva/node-oidc-provider 的完整实施方案
- 混合存储策略:PostgreSQL(Client、Grant、RefreshToken)+ Redis(短期令牌)
- 前端采用 SSR + Server Actions,独立路由组 (oidc)
- 包含 Prisma 模型、适配器、控制器、前端页面等完整设计
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-20 11:02:48 +08:00 |
|
charilezhou
|
66cce5a765
|
feat(api): health 接口添加 storage 服务监控
- StorageService 添加 healthCheck 方法
- 健康检查响应增加 storage 状态
- 更新共享类型定义
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-20 10:37:33 +08:00 |
|
charilezhou
|
1b84aff71a
|
feat: DataTable 错误状态支持和 403 页面退出登录
- DataTable 组件添加 error 和 onRetry 属性,支持错误状态渲染
- 新增 Alert 组件(shadcn/ui 风格)
- 403 页面添加重新登录按钮,方便权限更新后刷新缓存
- auth.ts 退出登录时同时清除权限缓存
- CrudService restore 方法修复:显式指定 deletedAt 条件绕过软删除过滤
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-19 20:28:15 +08:00 |
|
charilezhou
|
3119460f13
|
feat(plop): 优化生成器支持 Prisma 关联关系
- 支持一对多/多对一关系定义并生成到 Prisma schema
- 简化流程:查询关联配置根据关系自动预填
- 修复 Handlebars 模板 HTML 转义导致的乱码问题
- 修复 controller 模板缺少 Prisma 导入的问题
- 新增页面模板 (page.hbs) 生成前端页面
- 添加 FindAllParams/PaginationQueryDto 索引签名修复类型兼容
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-19 17:30:18 +08:00 |
|
charilezhou
|
3ae13fd512
|
feat: 添加教学管理模块(教师、学生、班级)
后端:
- 新增 Teacher、Student、Class 模块及 CRUD 接口
- 新增 ClassTeacher 多对多关系支持任课教师管理
- Student 支持班级关联查询
- Class 支持班主任一对一和任课教师多对多关系
- 更新 Prisma schema 和种子数据
前端:
- 新增教师、学生、班级管理页面
- 新增对应的 hooks 和 services
- 更新路由常量和 hooks 导出
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-19 15:39:10 +08:00 |
|
charilezhou
|
0156e17131
|
refactor(api): CrudService 分层架构重构
- 新增 BaseCrudService 抽象基类,提取通用辅助方法
- 新增 RelationCrudService 支持关联查询和一对一关系管理
- 新增 ManyToManyCrudService 支持多对多关系管理
- 重构 CrudService 继承 BaseCrudService
- 迁移 UserService 到 ManyToManyCrudService(用户-角色多对多)
- 迁移 RoleService 到 ManyToManyCrudService(角色-权限、角色-菜单双多对多)
- 更新 CrudService 使用文档
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-19 15:37:27 +08:00 |
|
charilezhou
|
c759b50efd
|
chore(api): 更新种子数据菜单结构
- 添加文件管理权限 (file:read, file:delete)
- 调整菜单层级:用户管理、文件管理等移至系统管理下
- 优化种子数据初始化逻辑
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-19 13:48:50 +08:00 |
|
charilezhou
|
0acea22262
|
feat(api): 文件管理模块添加列表和统计接口
- 添加 GET /files 分页查询接口
- 添加 GET /files/stats 统计信息接口
- FileService 使用 @CrudOptions 配置过滤字段
- 新增 FileQueryDto、PaginatedFileResponseDto、FileStatsResponseDto
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-19 13:47:56 +08:00 |
|
charilezhou
|
76f835a2ad
|
feat(api): StorageService 支持 MINIO_PUBLIC_URL 配置
- 添加 publicUrl 配置支持外部访问地址
- getPresignedUrl 方法自动替换内部地址为公开地址
- 移除已迁移到 file 模块的路径前缀常量
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-19 13:47:36 +08:00 |
|
charilezhou
|
2914d1e090
|
feat(api): CrudService 添加配置式过滤和 count 方法
- 新增 FilterOperator、FilterFieldConfig、FilterableField 类型
- 添加 filterableFields 配置项支持声明式过滤字段
- 实现 buildFilterWhere 方法自动构建 where 条件
- 添加 count 方法支持条件计数
- findAll/count 方法支持泛型参数兼容 DTO 类型
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-19 13:47:09 +08:00 |
|
charilezhou
|
5fab73e514
|
refactor(api): 优化文件上传验证分层
Controller 层(Multer 配置):
- 添加全局文件大小限制(10MB)和类型过滤
- 在文件写入内存前进行基本验证,防止恶意大文件
Service 层(业务规则):
- 新增 FILE_PURPOSE_CONFIG 配置映射
- 按场景(头像/附件)进行细化验证
- 提取 validateFile 方法,职责清晰
常量重组织:
- storage.constants.ts 只保留全局限制和存储路径
- file.constants.ts 添加场景特定限制配置
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-19 13:07:20 +08:00 |
|
charilezhou
|
4e1be2b494
|
feat(api): 更新用户模块支持头像功能
- 更新 AuthDto 调整验证规则
- 更新 UserDto 添加头像相关字段
- 更新 UserController 支持更新用户头像
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-19 12:36:39 +08:00 |
|
charilezhou
|
d9673e2ba3
|
chore: 更新配置和依赖
- 添加 MinIO 和邮件服务相关环境变量
- 添加 @nestjs-modules/mailer, minio, multer 等依赖
- 更新 app.module.ts 注册新模块
- docker-compose 添加 MinIO 服务配置
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-19 12:36:20 +08:00 |
|
charilezhou
|
1627d98be5
|
feat: 更新数据模型和共享类型
- 更新 Prisma schema 添加 File 模型和相关字段
- 更新共享类型定义,添加文件和密码重置相关类型
- 添加 CaptchaScene.RESET_PASSWORD 场景
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-19 12:36:04 +08:00 |
|
charilezhou
|
e008179c03
|
feat: 添加忘记密码功能
后端:
- 新增 MailService 集成 Nodemailer 发送邮件
- 新增 EmailCodeService 管理邮箱验证码
- 新增 sendResetPasswordEmail 和 resetPassword 接口
- 支持验证码过期和次数限制
前端:
- 新增忘记密码页面 (forgot-password)
- 新增 ForgotPasswordForm 组件,支持邮箱验证和密码重置
- 更新 auth.service.ts 添加相关 API 调用
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-19 12:35:24 +08:00 |
|
charilezhou
|
58529f0321
|
feat: 添加文件上传功能
后端:
- 新增 StorageService 集成 MinIO 对象存储
- 新增 FileService 和 FileController 处理文件上传
- 支持头像上传场景,含文件类型和大小验证
- 支持生成临时访问 URL
前端:
- 新增 AvatarUpload 组件,支持拖拽和点击上传
- 新增 useUploadAvatar 和 useFileUrl hooks
- 新增 file.service.ts 封装文件 API
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-19 12:34:58 +08:00 |
|
charilezhou
|
d747f98d08
|
refactor(api): 优化 PrismaService 类型设计,修复依赖注入问题
- 重构 PrismaService 使其类型包含所有模型访问器
- 使用 PrismaServiceImpl 内部类 + 类型断言导出 PrismaService
- 所有 Service 现在可以直接使用 PrismaService 类型注入
- 修复 NestJS 依赖注入无法识别类型别名的问题
- 统一各 Service 的 PrismaService 导入方式
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-19 12:34:11 +08:00 |
|
charilezhou
|
57456be013
|
refactor(api): 移除手动 softDelete 配置,改为基于 schema 自动检测
- 从 CrudServiceOptions 中移除 softDelete 属性
- CrudService 基于 Prisma schema 自动检测模型是否支持软删除
- 新增 supportsSoftDelete getter 用于判断软删除支持
- 更新 findDeleted/restore 方法使用自动检测
- PrismaService 底层已自动处理软删除逻辑
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-19 12:33:46 +08:00 |
|
charilezhou
|
6369e5c6e7
|
refactor(api): 调整 seed 数据结构
- 新增权限管理相关权限(permission:create/update/delete)
- 新增权限管理菜单
- 菜单移除 permission 字段
- 清空角色默认权限和菜单(由管理员手动分配)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-17 21:38:15 +08:00 |
|
charilezhou
|
c081f5a01f
|
feat(api): 优化认证模块
- 注册时自动分配默认用户角色(user)
- GET /auth/menus 改名为 GET /auth/privilege
- 添加日志记录默认角色不存在的警告
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-17 21:37:40 +08:00 |
|
charilezhou
|
fe4ea4121c
|
feat(api): 添加用户角色管理接口
- GET /users/:id/roles 获取用户详情(包含角色)
- PATCH /users/:id/roles 分配角色给用户
- 新增 AssignRolesDto、UserRoleResponseDto、UserWithRolesResponseDto
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-17 21:37:01 +08:00 |
|
charilezhou
|
f4c42cee27
|
refactor(api): 移除菜单的 component 和 permission 字段
- Schema 移除 Menu.component 和 Menu.permission 字段
- isStatic 默认值改为 false
- MenuTreeNode 增加 isExternal、isStatic、isEnabled、sort 字段
- DTO 同步更新
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-17 21:36:27 +08:00 |
|
charilezhou
|
ce5a96c622
|
feat(api): 验证码接口支持主题参数
- 新增 theme 查询参数(light/dark)
- dark 主题使用 inverse=true(深色背景浅色文字)
- 默认使用 dark 主题
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-17 21:34:47 +08:00 |
|
charilezhou
|
df69eedcd9
|
refactor(api): 移除 barrel imports 改用直接导入
- 将所有模块的 barrel imports 改为直接导入具体文件
- 删除不再需要的 index.ts 文件(共 10 个)
- 更新 CLAUDE.md 添加禁止后端使用 barrel imports 的规范
- 避免循环依赖问题,提高代码可追溯性
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-17 14:39:33 +08:00 |
|
charilezhou
|
279ee53251
|
fix: 修复菜单模块导入和服务接口调整
- 修复 menu.controller.ts 装饰器导入路径
- 调整 menu.service.ts 接口方法名和参数
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-17 14:10:14 +08:00 |
|
charilezhou
|
15d6e6e29e
|
feat(api): 实现权限管理系统
- 添加 Menu、Role、Permission 数据模型及关联表
- 实现 PermissionModule 提供菜单、角色、权限 CRUD
- 扩展 AuthController 添加获取用户菜单权限接口
- PrismaService 支持新模型的软删除
- 添加数据库种子脚本
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-17 14:05:09 +08:00 |
|
charilezhou
|
c958271027
|
feat: 完善认证系统和前端 Demo 页面
- 添加图形验证码模块(登录/注册需验证码)
- 添加 refresh token 机制和 API 接口
- 认证响应返回 token 有效期
- 添加 Redis 模块支持验证码存储
- 添加前端验证码组件和用户管理 Demo 页面
- 添加 CRUD 基类和分页响应 DTO mixin
- 添加请求/响应加密模块(AES-256-GCM)
- 完善共享类型定义和前后端类型一致性
- 更新 CLAUDE.md 文档
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-16 19:17:11 +08:00 |
|
charilezhou
|
1c7e2c3a7c
|
chore: 调整环境变量文件管理策略
- .gitignore 移除 .env,允许提交默认开发配置
- .env.example 添加详细注释说明
- 新增 .env 默认开发配置文件
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-16 14:58:12 +08:00 |
|
Charile Zhou
|
3567aaff4d
|
feat: 切换 PostgreSQL 并实现软删除功能
- 数据库从 SQLite 切换到 PostgreSQL,添加 Docker Compose 配置
- 使用 dotenv-cli 支持 .env 和 .env.local 环境变量加载
- 使用 Prisma $extends 实现底层自动软删除机制
- 新增用户恢复和查询已删除用户的 API 接口
- 更新文档和类型定义
|
2025-12-31 20:24:54 +08:00 |
|
charilezhou
|
b5624a664d
|
docs: 更新 CLAUDE.md 并格式化代码
- 补充 React 19、lodash-es、SQLite/cuid2 技术细节
- 运行 prettier 格式化受影响文件
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2025-12-28 16:36:19 +08:00 |
|
charilezhou
|
0a2eda3961
|
chore: 将 Prisma 数据库文件加入 gitignore
- 更新 .gitignore 规则匹配所有子目录下的 prisma/*.db
- 从 git 跟踪中移除 apps/api/prisma/dev.db
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2025-12-28 15:52:00 +08:00 |
|
charilezhou
|
458348a1a3
|
chore: 升级 Next.js 16 和 ESLint 9
- Next.js 从 15.1.3 升级到 16.1.1
- ESLint 从 8.x 升级到 9.39,迁移到 flat config 格式
- 将 .eslintrc.js 替换为 eslint.config.mjs
- 更新 eslint-config-next 到 16.1.1
- 添加 eslint-plugin-react 支持
- 更新 CLAUDE.md 版本信息
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2025-12-28 15:37:43 +08:00 |
|
charilezhou
|
b5e8b5e805
|
refactor: 使用 lodash-es 重写 shared 工具函数并升级 cuid
- shared 包工具函数改用 lodash-es 实现 (deepClone, isEmpty, capitalize 等)
- Prisma User.id 默认值从 cuid() 改为 cuid(2) 以使用更安全的 cuid2
- 更新 CLAUDE.md 文档,补充 @CurrentUser 装饰器和 lodash 使用约定
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2025-12-28 15:04:55 +08:00 |
|
charilezhou
|
74ced8c0c6
|
chore: 初始化 monorepo 项目脚手架
- 配置 pnpm workspace + Turborepo
- 创建 Next.js 15 前端应用 (apps/web)
- 创建 NestJS 10 后端应用 (apps/api)
- 集成 Prisma ORM + Swagger + JWT 认证
- 添加共享包 (packages/shared, eslint-config, typescript-config)
- 添加项目文档 (README, CLAUDE.md, docs/design.md)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2025-12-28 14:51:40 +08:00 |
|