Files
NewPlatform/docs/architecture/technology-stack.md
T
2026-08-23 00:16:15 +08:00

5.4 KiB
Raw Blame History

AIwelink 技术方案

本文说明第一阶段的 Web、业务 API、数据存储、文件存储、部署和基础监控方案。

AI 助手的模型供应商、对话编排方式和后台任务方案列为后续技术决定。 本文先约定接口和职责,具体实现等业务流程确定后再选。

1. 总体方案

第一阶段使用模块清楚、可以逐步扩展的架构:

  • Web 页面和业务 API 分开部署;
  • Web 和 API 通过一个域名对外提供服务,API 统一使用 /api/v1 路径;
  • PostgreSQL 保存需要事务保证的数据,并使用 JSONB、全文搜索和 pgvector;
  • Redis 处理缓存、限流和异步任务;
  • 阿里云 OSS 保存简历、作品、报告和项目附件;
  • Web、API 和任务程序都运行在 Docker 容器中;
  • 第一阶段使用自有 ECS 和 Docker Compose,规模增长后再迁移到 Kubernetes;
  • 用户身份、个人资料、项目行为和授权记录按敏感程度分开保存;
  • 初期用 Uptime Kuma 检查网站和 API 是否可访问。

2. 已确定的技术选型

领域 当前选择
Web 前端 Next.js + React + TypeScript
业务 API NestJS + Fastify Adapter
API 形式 REST API,路径前缀 /api/v1
数据访问 Drizzle ORM;复杂查询使用参数化原生 SQL
主数据库 PostgreSQL
向量检索 PostgreSQL 的 pgvector 扩展
缓存和任务队列 Redis
文件存储 阿里云 OSS
运行环境 Docker
第一阶段部署 自有 ECS + Docker Compose
后续部署 Kubernetes
身份系统 API 内部的 Identity 模块
初期监控 Uptime Kuma

3. 服务怎样连接

浏览器
  |
  v
Nginx 或其他入口代理
  |-- /              -> Next.js Web 容器
  |-- /api/v1/*      -> NestJS + Fastify API 容器
                              |
                      Drizzle / SQL Repository
                              |
                    PostgreSQL + pgvector
                              |
                            Redis
                              |
                          阿里云 OSS

Next.js 负责页面和交互。 NestJS 负责业务规则和 REST API。 浏览器通过同一个域名下的 /api/v1/... 路径调用 API。

4. API 内部模块

API 按业务模块组织,第一阶段至少包含:

  • Identity:微信登录、邮箱绑定、会话和登录记录;
  • Users:基础资料、学校、专业和年级;
  • Profiles:个人画像、公开画像和画像版本;
  • Consents:画像共享授权、撤销和授权记录;
  • Projects:竞赛、项目、队伍、成员和申请;
  • Invitations:邀请链接、接受记录和邀请关系;
  • Points:积分流水、任务和兑换权益;
  • Commerce:课程、API 权益、订单和退款记录;
  • Recommendations:推荐内容、推荐理由和用户反馈;
  • Operations:内容审核、举报、活动和运营配置。

AI 助手先通过独立接口接入。 模型、任务队列和报告生成流程确定后,再决定服务是否单独部署。

5. 数据怎样分层

数据按业务含义和敏感程度安排存储位置:

  • 身份信息和联系方式;
  • 原始测评回答;
  • AI 生成的个人画像;
  • 真实项目行为和合作证据;
  • 用户主动公开的画像;
  • 授权记录和审计记录。

大表先使用合理的表结构、索引和归档策略。 数据量和查询方式出现明确需求后,再评估 PostgreSQL 分区或其他存储方式。

6. 文件和媒体

简历、作品、报告和项目附件保存到阿里云 OSS,流程如下:

  1. API 创建临时上传凭证;
  2. 浏览器直接上传 OSS;
  3. API 接收上传完成通知;
  4. PostgreSQL 保存文件信息和权限关系;
  5. 后台任务按需解析、审核或建立搜索索引。

应用服务器只处理上传授权和文件信息,不承担大文件的长期保存。

7. 部署和后续扩展

第一阶段用 Docker Compose 管理这些服务:

  • Web 容器;
  • API 容器;
  • Worker 容器,用于异步任务;
  • PostgreSQL;
  • Redis。

生产环境逐步把应用容器和 PostgreSQL、Redis 分开部署,或改用托管服务。 同时设置备份、恢复和升级流程。

迁移 Kubernetes 时,应用服务保持无状态。 配置通过环境变量或 Secret 注入,文件继续放在 OSS,数据库迁移单独执行。

8. 监控和测试

Uptime Kuma 负责基础可用性检查:

  • 首页是否能打开;
  • /api/v1/health/live 是否返回进程存活;
  • /api/v1/health/ready 是否确认 PostgreSQL、Redis 和必要配置可用;
  • HTTPS 证书和端口是否正常。

测试单独建设,至少覆盖 TypeScript 类型检查、Lint、API 测试和关键流程端到端测试。 发布前还要检查数据库迁移。 核心流程包括登录、授权、邀请、项目申请和积分流水。

9. 第一阶段的工作重点

先完成用户登录、个人资料、自我认知、机会浏览、邀请共享、项目申请和积分记录。 再根据真实使用数据决定以下能力的时间:

  • 微服务拆分;
  • Kubernetes 生产部署;
  • 独立向量数据库;
  • Elasticsearch 或 OpenSearch;
  • ClickHouse;
  • MongoDB;
  • 复杂机器学习推荐服务;
  • 专门的 AI 助手编排框架。

这些能力都保留后续空间。 当前开发围绕用户找到机会、组成队伍并完成项目展开。