308 lines
8.2 KiB
Markdown
308 lines
8.2 KiB
Markdown
# AIwelink 当前知识与开发安排
|
||
|
||
这份总览回答四个问题:
|
||
|
||
1. AIwelink 现在要做什么;
|
||
2. 哪些事情已经确定;
|
||
3. 哪些事情还需要拍板;
|
||
4. 开发应该按什么顺序推进。
|
||
|
||
原来的文档已经备份到 `docs_old/`。
|
||
当前版本放在 `docs/`,内容以容易阅读和实际执行为目标。
|
||
|
||
## 1. 当前状态
|
||
|
||
- 产品方向:帮助大学生认识自己、找到项目机会;
|
||
- 用户在真实合作中积累成长记录;
|
||
- 第一阶段从大学生竞赛和技术项目开始;
|
||
- 技术主线已经确定:Next.js、NestJS、PostgreSQL、Redis、OSS、Docker Compose;
|
||
- 代码目录处于初始化前阶段;
|
||
- AI 助手的模型、对话编排和任务队列列为待决定事项;
|
||
- 第一场重点竞赛、运营节奏和收费价格列为待安排事项;
|
||
- 商业、市场和运营资料继续放在飞书。
|
||
|
||
## 2. 我们已经知道什么
|
||
|
||
### 2.1 用户要完成的事情
|
||
|
||
用户进入平台后,应该可以完成下面的过程:
|
||
|
||
```text
|
||
登录
|
||
-> 填写资料并了解自己
|
||
-> 看到适合的竞赛或项目
|
||
-> 选择项目角色
|
||
-> 邀请朋友并授权共享
|
||
-> 生成双方的合作建议
|
||
-> 申请加入项目
|
||
-> 记录项目进展和队友反馈
|
||
-> 完成复盘并更新个人画像
|
||
```
|
||
|
||
平台的价值来自真实行动和结果。推荐、报告和积分都要服务于这条过程。
|
||
|
||
### 2.2 第一阶段的产品范围
|
||
|
||
第一阶段优先完成这些功能:
|
||
|
||
- 微信登录、邮箱绑定和会话管理;
|
||
- 基础资料和个人画像;
|
||
- 自我认知助手的提问、回答和报告;
|
||
- 竞赛、项目和招募信息;
|
||
- 项目角色、成员和申请;
|
||
- 邀请链接和双方共享许可;
|
||
- 双人合作建议;
|
||
- 项目进展、队友反馈和复盘;
|
||
- 积分流水和基础兑换;
|
||
- 推荐内容和推荐理由;
|
||
- 首页工作台和公开机会页。
|
||
|
||
运营后台、完整商业交易、复杂推荐模型和大规模数据服务放在后续阶段安排。
|
||
|
||
### 2.3 数据应该留下什么
|
||
|
||
核心业务数据集中在 PostgreSQL:
|
||
|
||
- 用户和登录身份;
|
||
- 基础资料和公开资料;
|
||
- 测评回答和个人画像版本;
|
||
- 项目、成员、申请和行为记录;
|
||
- 队友反馈和项目复盘;
|
||
- 邀请、共享许可和审计记录;
|
||
- 积分流水、订单和权益;
|
||
- 推荐内容、推荐理由和用户反馈。
|
||
|
||
Redis 处理缓存、限流、短期状态和任务队列。
|
||
阿里云 OSS 保存简历、作品、报告和项目附件。
|
||
|
||
## 3. 已确认的工程规则
|
||
|
||
### 3.1 应用和访问路径
|
||
|
||
- Web 使用 Next.js + React + TypeScript;
|
||
- API 使用 NestJS + Fastify Adapter;
|
||
- Web 和 API 共用一个域名;
|
||
- API 路径统一从 `/api/v1` 开始;
|
||
- Web 负责页面和交互,API 负责业务规则;
|
||
- 入口代理按路径把请求转给 Web 或 API。
|
||
|
||
### 3.2 代码分层
|
||
|
||
数据库访问按下面的顺序组织:
|
||
|
||
```text
|
||
Controller
|
||
-> Application Service
|
||
-> Repository
|
||
-> PostgreSQL
|
||
```
|
||
|
||
普通查询使用 Drizzle ORM。
|
||
向量检索、全文搜索、推荐排序和复杂报表使用参数化原生 SQL。
|
||
Controller 通过 Repository 访问数据库。
|
||
|
||
### 3.3 部署和基础设施
|
||
|
||
第一阶段的服务包括:
|
||
|
||
```text
|
||
nginx
|
||
web
|
||
api
|
||
worker
|
||
postgres
|
||
redis
|
||
```
|
||
|
||
这些服务使用 Docker Compose 部署到自有 ECS。
|
||
文件上传到 OSS。
|
||
Uptime Kuma 检查首页、健康接口、端口和 HTTPS 证书。
|
||
|
||
## 4. 还需要拍板的事项
|
||
|
||
这些决定会直接影响产品和代码,建议按顺序确认:
|
||
|
||
### 4.1 确定第一个用户场景
|
||
|
||
需要明确第一场重点竞赛或项目,并写出完整流程:
|
||
|
||
- 用户从哪里进入;
|
||
- 需要填写哪些信息;
|
||
- 怎样看到机会;
|
||
- 怎样邀请队友;
|
||
- 怎样提交申请;
|
||
- 怎样记录项目结果。
|
||
|
||
### 4.2 确定个人画像的内容
|
||
|
||
需要确定自我认知助手的输入和输出:
|
||
|
||
- 需要问哪些问题;
|
||
- 报告包含哪些部分;
|
||
- 哪些内容可以公开分享;
|
||
- 用户怎样修改或补充报告;
|
||
- 项目反馈怎样更新画像。
|
||
|
||
### 4.3 确定项目和申请规则
|
||
|
||
需要确定:
|
||
|
||
- 项目有哪些状态;
|
||
- 项目角色怎样定义;
|
||
- 谁可以发布项目;
|
||
- 申请怎样审核;
|
||
- 成员怎样加入和退出;
|
||
- 项目完成后需要提交哪些结果。
|
||
|
||
### 4.4 确定 AI 助手方案
|
||
|
||
需要选择:
|
||
|
||
- 第一阶段使用的模型供应商;
|
||
- 单轮问答还是多轮对话;
|
||
- 报告是否异步生成;
|
||
- 任务失败后的重试方式;
|
||
- 记录哪些提示词、版本和费用信息。
|
||
|
||
### 4.5 确定运行方式
|
||
|
||
需要确定:
|
||
|
||
- PostgreSQL 和 Redis 自建还是托管;
|
||
- 备份保留多久;
|
||
- 生产环境的域名和证书管理;
|
||
- 日志、指标和告警使用哪些工具;
|
||
- 发布和回滚由谁负责。
|
||
|
||
## 5. 建议的开发顺序
|
||
|
||
### 第一步:写清第一个场景
|
||
|
||
先用一页文档写完「用户参加一场竞赛并找到队友」的过程。
|
||
再把页面、接口、数据和成功条件列出来。
|
||
|
||
产出:
|
||
|
||
- 用户流程图;
|
||
- 页面清单;
|
||
- API 清单;
|
||
- 数据表草图;
|
||
- 第一阶段成功指标。
|
||
|
||
### 第二步:初始化单仓库
|
||
|
||
创建下面的基础目录:
|
||
|
||
```text
|
||
apps/web
|
||
apps/api
|
||
apps/worker
|
||
packages/contracts
|
||
packages/db
|
||
packages/validation
|
||
packages/ui
|
||
packages/config
|
||
infra/docker
|
||
docs/decisions
|
||
```
|
||
|
||
同时配置 TypeScript、Lint、测试命令、环境变量示例和数据库迁移流程。
|
||
|
||
### 第三步:先做最小 API
|
||
|
||
建议先完成:
|
||
|
||
1. 登录和会话;
|
||
2. 用户资料;
|
||
3. 机会和项目;
|
||
4. 项目成员和申请;
|
||
5. 邀请和共享许可;
|
||
6. 积分流水;
|
||
7. 健康检查接口。
|
||
|
||
这些接口先用固定测试数据跑通,再接入真实页面。
|
||
|
||
### 第四步:接入自我认知助手
|
||
|
||
先定义统一的输入、输出和任务状态:
|
||
|
||
- 输入:用户回答、资料和项目上下文;
|
||
- 输出:结构化个人画像、推荐理由和待确认建议;
|
||
- 状态:待处理、处理中、完成、失败;
|
||
- 记录:模型名称、版本、提示词版本、耗时和费用。
|
||
|
||
模型供应商确定后,只替换具体实现,不改变业务接口。
|
||
|
||
### 第五步:完成 Web 主流程
|
||
|
||
Web 先实现这些页面:
|
||
|
||
- 公开机会页;
|
||
- 登录页;
|
||
- 个人资料页;
|
||
- 自我认知助手页;
|
||
- 首页工作台;
|
||
- 项目详情页;
|
||
- 邀请和共享确认页;
|
||
- 双人合作建议页;
|
||
- 项目申请页;
|
||
- 项目进展和复盘页。
|
||
|
||
每个页面都要能回到明确的下一步操作。
|
||
|
||
### 第六步:联调和试用
|
||
|
||
按真实用户顺序测试:
|
||
|
||
```text
|
||
登录
|
||
→ 填写资料
|
||
→ 完成自我认知
|
||
→ 浏览机会
|
||
→ 邀请朋友
|
||
→ 确认共享
|
||
→ 申请项目
|
||
→ 记录进展
|
||
→ 完成复盘
|
||
```
|
||
|
||
记录用户在哪一步停下、哪些字段看不懂、推荐理由是否有帮助,再调整页面和数据结构。
|
||
|
||
## 6. 第一阶段完成标准
|
||
|
||
第一阶段完成时,至少要满足:
|
||
|
||
- 用户可以完成登录并保存资料;
|
||
- 用户可以完成一次自我认知并得到结构化报告;
|
||
- 用户可以浏览机会和项目,并看到推荐原因;
|
||
- 用户可以邀请朋友,双方可以明确选择共享内容;
|
||
- 用户可以生成双方合作建议;
|
||
- 用户可以申请加入项目并看到申请状态;
|
||
- 项目可以记录成员、进展、结果和队友反馈;
|
||
- 复盘结果可以形成新的个人画像版本;
|
||
- 积分流水可以追溯到具体行为;
|
||
- 关键接口有权限检查、错误格式和请求编号;
|
||
- 核心流程有自动化测试;
|
||
- 生产环境有健康检查、备份和恢复步骤。
|
||
|
||
## 7. 需要持续记录的知识
|
||
|
||
后续每次决定都记录在对应位置:
|
||
|
||
- 跨模块技术决定:`docs/decisions/`;
|
||
- API 接口和模块实现:`apps/api/docs/`;
|
||
- 数据库结构和迁移:`packages/db/docs/`;
|
||
- 部署、备份和恢复:`infra/docs/`;
|
||
- 临时讨论:`docs-local/`;
|
||
- 商业、市场、运营和合作:飞书。
|
||
|
||
每条决定写清楚「问题、选择、原因、影响和后续复查条件」。
|
||
这样新成员可以直接看懂,也方便以后修改。
|
||
|
||
## 8. 当前一句话结论
|
||
|
||
AIwelink 先做一个围绕真实竞赛和项目的成长平台。
|
||
用户从了解自己开始,找到机会和队友,完成项目,再用结果更新自己的认识。
|
||
|
||
开发先把这条用户流程跑通,再扩展 AI 助手、推荐系统、商业服务和更复杂的基础设施。
|