Files
NewPlatform/docs/project-handoff.md
T
2026-08-23 00:16:15 +08:00

290 lines
10 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# AIwelink 项目交接说明
这份文档帮助新成员快速了解 AIwelink 要解决的问题。
文档也说明第一阶段要做什么,以及当前已经确定的工程规则。
当前状态:产品方向和主要技术选型已经确定。
代码目录处于初始化前阶段。
商业、市场和运营安排仍以飞书中的文件为准。
## 1. AIwelink 是什么
AIwelink 帮助大学生认识自己的能力,找到合适的学习或项目机会。
用户在真实合作中积累经验。
第一阶段从大学生竞赛和技术项目开始。平台长期要做的事情是:
```text
了解自己
-> 找到合适的机会
-> 参加真实项目
-> 和合适的人合作
-> 得到项目结果和队友反馈
-> 更新对自己的认识
```
这里的「个人画像」指对用户能力、偏好、目标和合作方式的结构化描述。
画像会随着项目反馈持续更新。
## 2. 产品要解决什么问题
### 2.1 把信息变成行动
校园墙擅长让信息被看见。
AIwelink 进一步把信息整理成可执行的项目机会,帮助合适的人开始合作并完成项目。
项目或竞赛机会应尽量写清楚:
- 要做什么,以及何时截止;
- 需要哪些角色和能力;
- 每个角色要投入多少时间;
- 用户下一步可以做什么;
- 最后能留下什么作品或结果。
平台重点关注有效申请、成功组队、持续合作和完成项目的队伍数量。
### 2.2 让画像随着实践更新
AI 自我认知助手(Agent)先给出阶段性判断。
用户参加项目后的行为、队友反馈和项目复盘,会帮助平台持续更新这份判断。
平台要帮助用户回答:
- 我擅长哪类任务?
- 我适合在项目中承担什么角色?
- 什么工作环境更适合我?
- 哪些环节可能让我的合作变困难?
- 下一步应该尝试什么,或补哪项能力?
### 2.3 社交从一起做事开始
平台的社交功能围绕共同目标展开。
第一阶段优先服务用户已经认识的朋友、同学和队友。
恋爱交友放到后续产品规划中。
推荐的合作过程是:
```text
查看个人画像
-> 邀请认识的人
-> 双方明确同意共享内容
-> 生成双方的合作建议
-> 一起参加项目或挑战
-> 根据结果建立长期合作关系
```
双方合作报告重点说明优势互补、分工建议和可能的冲突。
报告还会给出沟通方式和适合一起尝试的项目。
### 2.4 推荐要让用户知道原因
平台可以推荐竞赛、项目、学习内容、项目角色、合作对象、课程、导师和 AI 工具。
每条推荐都应说明原因,并同时提供三类选择:
1. 当前能力可以完成的机会;
2. 能补足短板的机会;
3. 有一定挑战、适合探索的机会。
这样的推荐会帮助用户理解自己,并保留尝试不同方向的空间。
### 2.5 首页先告诉用户下一步做什么
首页把机会和下一步行动放在最前面,首先展示:
1. 适合用户的机会和项目;
2. 用户正在参与的项目;
3. 自我认知和成长任务;
4. 已完成的作品和项目经验;
5. 用户遇到具体问题后再推荐课程、API 或导师服务。
首页要回答一个简单问题:「现在最值得做的下一件事是什么?」
## 3. 第一阶段要验证的完整流程
第一阶段先验证下面这条流程能否真正帮助用户完成项目:
```text
自我认知助手
-> 生成个人画像
-> 推荐竞赛、项目和学习方向
-> 邀请朋友并取得共享许可
-> 生成双方合作建议
-> 参加一次真实项目或挑战
-> 记录项目行为和队友反馈
-> 复盘并更新个人画像
```
免费自我认知助手可以作为推广入口。
用户完成报告后,可以分享由自己选择的安全摘要。
邀请朋友并完成有效合作行为后,可以获得积分。
积分可兑换深度报告、API 额度、课程优惠或挑战资格。
积分奖励绑定报告完成、授权共享、生成合作报告、参加项目和完成复盘等真实行为。
## 4. 商业方向
平台先提供免费的机会和自我认知服务。
用户进入项目并遇到真实需求后,再提供付费服务:
```text
赛事和项目机会
-> 组队并开始合作
-> 产生 AI 工具和能力需求
-> 使用 API、课程、训练营或导师服务
-> 为学校、赛事方和企业提供组织服务
```
可能的收入来源包括:
- 面向竞赛团队的模型 API 和工具包;
- 赛事课程、训练营、作品评审和答辩辅导;
- 导师、作品评审和项目启动服务;
- 学校、社团和赛事方的报名、组队与活动管理;
- 企业命题赛、品牌合作和人才发现。
API 和课程在用户进入项目或明确遇到问题后出现,与当前任务直接相关。
## 5. 已确定的技术方案
| 领域 | 当前选择 |
| --- | --- |
| Web | Next.js、React、TypeScript |
| 业务 API | NestJS + Fastify Adapter |
| API 形式 | REST API,路径统一以 `/api/v1` 开头 |
| 数据访问 | Drizzle ORM;复杂查询使用参数化原生 SQL |
| 主数据库 | PostgreSQL |
| 向量检索 | PostgreSQL 的 `pgvector` 扩展 |
| 缓存和任务队列 | Redis |
| 文件存储 | 阿里云 OSS |
| 第一阶段部署 | 自有 ECS + Docker Compose |
| 后续部署 | Kubernetes |
| 身份系统 | API 内部的 `Identity` 模块 |
| 初期可用性监控 | Uptime Kuma |
AI 助手使用哪家模型、怎样编排对话、是否拆成独立服务,列为后续技术决定。
当前实现先保留清晰的接口,模型和框架确定后再接入。
### 5.1 Web 和 API 如何访问
Web 和 API 是两个独立应用,但第一阶段共用一个公网域名:
```text
https://aiwelink.com/ -> Next.js Web
https://aiwelink.com/api/v1/* -> NestJS REST API
```
入口代理(例如 Nginx)根据路径把请求转给不同容器。
第一阶段沿用同一个域名,核心业务统一放在 NestJS API 中。
### 5.2 API 规则
- URL 使用小写短横线,JSON 字段使用 `camelCase`;
- 使用资源名词和复数路径,例如 `/projects`;
- 使用标准 HTTP 方法和状态码;
- 列表优先使用游标分页;
- 订单、积分发放等容易重复提交的写操作按需支持 `Idempotency-Key`;
- 错误返回统一格式,并带 `requestId`;
- 权限由服务端统一检查,前端按钮只负责展示状态;
- 长时间任务建成任务资源,客户端可以查询任务进度和结果。
### 5.3 数据访问规则
代码按下面的顺序访问数据库:
```text
Controller
-> Application Service
-> Repository Interface
-> Drizzle Repository 或 SQL Repository
-> PostgreSQL
```
普通增删改查和事务使用 Drizzle。
向量相似度、全文搜索、复杂推荐和报表使用参数化 SQL。
Controller 通过 Repository 访问数据库。
### 5.4 数据和文件怎么放
用户身份、测评原始回答、AI 生成的画像和项目行为,按敏感程度分开保存。
公开内容、授权记录也分别管理。
大表先用索引、归档和 PostgreSQL 分区处理。
跨数据库分片等数据规模明确后再安排。
简历、作品、报告和项目附件放在阿里云 OSS。
浏览器直接上传,API 负责签发临时凭证、记录文件信息和检查权限。
私有文件用短期签名 URL 访问,应用容器只负责传输和权限控制。
## 6. 代码仓库和文档放在哪里
项目使用一个 Git 仓库(Monorepo),计划采用下面的目录:
```text
AIwelink/
├─ apps/
│ ├─ web/ # Next.js Web
│ ├─ api/ # NestJS REST API
│ ├─ worker/ # 异步任务,AI 助手方案待决定
│ └─ admin/ # 后续运营后台
├─ packages/
│ ├─ contracts/ # OpenAPI、DTO、共享接口
│ ├─ db/ # Drizzle Schema、迁移、种子数据
│ ├─ validation/ # 共享数据校验
│ ├─ ui/ # 跨应用 UI
│ ├─ config/ # 共享配置
│ └─ tooling/ # 工程工具配置
├─ infra/ # Docker、ECS、备份和后续 Kubernetes 配置
├─ scripts/ # 根目录脚本
├─ docs/ # 进入 Git 的工程文档
├─ docs-local/ # 本地临时文档,Git 忽略
└─ .github/ # 后续 CI/CD 配置
```
文档放置规则:
| 内容 | 位置 |
| --- | --- |
| 总体架构、技术栈、工程规范 | 根目录 `docs/`,提交到 Git |
| API 接口和模块实现 | `apps/api/docs/`,提交到 Git |
| 数据库结构和迁移规范 | `packages/db/docs/`,提交到 Git |
| Docker、ECS、备份等运维说明 | `infra/docs/`,提交到 Git |
| 临时需求、草稿和未确认讨论 | `docs-local/`,不提交到 Git |
| 商业、市场、运营和合作 | 飞书,不复制到 Git |
如果商业或运营决定会影响代码,只在 `docs/decisions/` 记录脱敏后的技术结论。
## 7. 新成员开始开发前要做什么
1. 先阅读本文件和[当前知识与安排](./current-knowledge-and-plan.md)。
再阅读 `docs/architecture/` 下的技术文档。
2. 新 API 遵循 `/api/v1` 和资源式 REST 设计。
3. 新业务模块放在 `apps/api/src/modules/` 对应目录。
4. 数据库访问统一经过 Repository。
5. 新的跨模块技术决定写进 `docs/decisions/`。
6. 商业和运营内容回到飞书维护。
7. AI 助手方案列为待决定事项。先保留接口和任务范围,模型和框架确定后再接入。
## 8. 后续再安排的能力
下面这些能力等真实用户和数据出现后再安排:
- 微服务拆分;
- Kubernetes 生产部署;
- 独立向量数据库;
- Elasticsearch 或 OpenSearch;
- ClickHouse;
- MongoDB;
- 复杂的机器学习推荐服务;
- 已经定型的 AI 助手编排框架;
- 跨数据库分片。
当前先验证用户能找到机会、组队并完成项目。
基础设施的复杂度根据真实数据再增加。
## 9. 一句话总结
AIwelink 通过真实项目帮助年轻人认识自己、找到合适的机会,并和合适的人把事情做完。
技术上先使用模块清楚的单仓库、独立 Web 和 REST API。
数据使用 PostgreSQL、Redis 和 OSS,第一阶段部署在 ECS + Docker Compose。
待决定的部分先保留接口,等真实需求出现后再选择。