5.1 KiB
5.1 KiB
AIwelink 技术栈选型
状态:第一阶段基线
范围:Web 应用、REST API、数据存储、文件存储、部署和基础监控
说明:Agent 的具体实现方案暂不定型,不在本文件中做最终技术承诺。
1. 总体原则
AIwelink 第一阶段采用模块化、容器化和可渐进扩展的架构:
- 前端与业务 API 分离。
- 对外 API 统一遵循 RESTful 资源设计。
- Web 与 API 通过同一域名提供服务,API 使用
/api/v1路径反向代理。 - PostgreSQL 作为业务主数据库,使用
JSONB、全文搜索和pgvector扩展。 - Redis 用于缓存、限流和异步任务基础设施,不作为最终业务数据源。
- 文件统一存储在阿里云 OSS,数据库只保存文件元数据。
- 应用和任务容器化,第一阶段部署在自有 ECS + Docker Compose,后续按规模迁移到 Kubernetes。
- 用户身份、个人画像、授权和项目行为按数据敏感性分层存储。
- 先采用 Uptime Kuma 做基础可用性监控,后续再升级完整可观测性体系。
2. 已确认技术选型
| 层 | 选型 |
|---|---|
| Web 前端 | Next.js + React + TypeScript |
| 业务 API | NestJS + Fastify Adapter |
| API 风格 | RESTful API,路径前缀 /api/v1 |
| 数据访问 | Drizzle ORM 为默认访问工具,复杂查询补充原生 SQL |
| 主数据库 | PostgreSQL |
| 向量能力 | PostgreSQL pgvector 扩展 |
| 缓存与队列基础设施 | Redis |
| 文件存储 | 阿里云 OSS |
| 运行环境 | Docker |
| 第一阶段部署 | 自有 ECS + Docker Compose |
| 后续部署 | Kubernetes |
| 身份系统 | API 内部 Identity 模块 |
| 初期监控 | Uptime Kuma |
3. 服务边界
浏览器
│
▼
Nginx / 入口反向代理
├── / -> Next.js Web 容器
└── /api/v1/* -> NestJS + Fastify API 容器
│
Drizzle / SQL Repository
│
PostgreSQL + pgvector
│
Redis
│
阿里云 OSS
Next.js 负责页面和交互,NestJS 负责业务规则和 REST API。浏览器使用同源的 /api/v1/... 路径访问 API,不需要第一阶段建立 API 子域名。
4. 业务模块边界
API 内部按业务模块组织,至少包括:
Identity:微信登录、邮箱绑定、会话和登录审计。Users:基础用户资料、学校、专业和年级。Profiles:个人画像、公开画像和画像版本。Consents:画像共享授权、撤销和授权审计。Projects:竞赛、项目、队伍、成员和申请。Invitations:邀请链接、接受记录和邀请关系。Points:积分流水、任务和兑换权益。Commerce:课程、API 权益、订单和退款记录。Recommendations:推荐候选、推荐原因和行为反馈。Operations:内容审核、举报、活动和运营配置。
Agent 模块只保留未来可接入的边界,暂不确定模型供应商、编排方式、队列方案和报告生成流程。
5. 数据分层原则
数据按业务含义和敏感性拆分,不提前做多数据库分片:
- 身份数据与联系方式。
- 原始测评回答。
- AI 推测或生成的画像。
- 真实项目行为与合作证据。
- 用户主动公开的画像。
- 授权记录与审计记录。
大型追加型数据先使用独立表、索引和归档策略。只有实际数据量和查询模式证明需要时,再引入 PostgreSQL 分区表或其他专用存储。
6. 文件和媒体
简历、作品、报告和项目附件存储在阿里云 OSS:
- API 创建临时上传凭证。
- 浏览器直接上传 OSS。
- API 接收上传完成通知。
- PostgreSQL 保存文件元数据和权限关系。
- 私有文件通过临时签名 URL 访问。
应用服务器不作为大文件长期存储位置。
7. 部署和演进
第一阶段使用 Docker Compose 管理:
- Web 容器。
- API 容器。
- Worker 容器(具体 Agent 方案未定型)。
- PostgreSQL。
- Redis。
生产环境建议将应用容器与 PostgreSQL、Redis 分离到不同主机或使用托管服务,并配置备份和恢复演练。
后续迁移 Kubernetes 时,应用服务应保持无状态,配置通过环境变量或 Secret 注入,文件不写入容器本地磁盘。
8. 监控和测试边界
第一阶段使用 Uptime Kuma 监控:
- 首页可访问性。
/api/v1/health/live存活状态。/api/v1/health/ready依赖就绪状态。- HTTPS 证书和端口状态。
Uptime Kuma 只负责可用性监控,不替代自动化测试。测试工具和覆盖范围另行确定;核心链路至少应覆盖登录、授权、邀请、项目申请和积分流水。
9. 暂不引入
第一阶段暂不引入:
- 微服务拆分。
- Kubernetes。
- 独立向量数据库。
- Elasticsearch / OpenSearch。
- ClickHouse。
- MongoDB。
- 复杂机器学习推荐服务。
- 已定型的 Agent 编排框架。
这些能力在真实规模和业务需求出现后再评估。