feat(backend): Phase 0 项目骨架完成 — 后端/前端/数据库/Docker

- 后端:FastAPI + SQLAlchemy + Alembic,7 张核心表迁移成功
- 前端:Next.js 16 + TailwindCSS 4 + 三端布局(投资人/创始人/Admin)
- 数据库:PostgreSQL 16,7 张核心实体表(tenants/users/companies/monthly_reports/health_scores/risk_events/audit_logs)
- Docker:docker-compose.yml + 前后端 Dockerfile
- 测试:健康检查 4 个测试全部 GREEN
- 文档:README/run.md/AGENTS.md/docs 体系完整
This commit is contained in:
selfrelease
2026-07-18 21:50:15 +08:00
parent f09aa33589
commit 51feae55ba
72 changed files with 8048 additions and 0 deletions
+93
View File
@@ -0,0 +1,93 @@
# 需求文档 (0-req)
> 来源:AI+投后管理方案v2.0.md
> 状态:已确认
---
## 一、系统定位
AI+ Portfolio Operating System —— 面向主投 AI、AI+ 和企业服务方向的投资机构,同时服务投资人和创始人的投后管理与组合协同平台。
## 二、核心用户
| 角色 | 端 | 核心诉求 |
|---|---|---|
| GP / 合伙人 | 投资人端(桌面) | Portfolio 全局健康度、退出时机、Alpha 归因 |
| 投后负责人 | 投资人端(桌面) | 风险工作台、干预闭环、协同推进 |
| 投资经理 | 投资人端(桌面+移动) | 负责企业跟进、月报审阅、风险处理 |
| 被投企业创始人 | 创始人端(移动优先) | AI 副驾驶、月报提交、融资规划、投资人沟通 |
| 系统管理员 | Admin 端 | 租户管理、权限配置、审计日志 |
## 三、Phase 1 MVP 需求
### 3.1 企业档案管理
- 投资机构创建/编辑/查看被投企业档案
- 企业基本信息、业务与产品、投资关系
- 支持按行业、阶段、基金筛选
- 企业列表 + 详情页
### 3.2 月报在线提交 + AI 解析
- 创始人端在线提交月报(结构化表单 + 文件上传)
- AI 自动解析月报文件,提取关键指标
- AI 生成投后摘要和关注点清单
- 投资经理追加评论和建议
- 追踪月报提交及时性
### 3.3 健康度评分
**通用健康度(先做 2 个维度)**
- 财务健康度:现金 Runway、月度收入与增长率、毛利率、经营性现金流
- 经营健康度:客户数量与增长、客户留存率、客单价
**AI+ 专项健康度(先做 2 个维度)**
- 商业化健康度:PoC 数量、转化率、付费客户数、MRR 增长、LTV/CAC
- 成本与单位经济:推理成本占收入比、单位推理成本、毛利率(扣除推理成本后)
每个评分附带:评分依据、趋势变化、主要扣分项、建议动作、负责人、复查时间。
### 3.4 投资机构驾驶舱
- Portfolio 健康度分布图
- 本周新增风险与处理状态
- AI 周报摘要
- 重大事项提醒
- 企业健康度趋势对比
### 3.5 风险预警
- 指标越界自动预警(先不做弱信号)
- 风险列表:按严重程度、类型、企业、状态筛选
- 每个风险附带证据链、建议动作、负责人和时限
- 风险处理闭环:识别→分派→处理→复查→关闭
### 3.6 投后报告自动生成
- AI 根据月报数据自动生成投后摘要
- 支持按企业、按基金、按组合生成报告
- 报告可导出 PDF
### 3.7 移动端轻量入口
- 风险预警推送(实时)
- AI Copilot 基础问答
- 待办事项查看与审批
## 四、非功能需求
| 维度 | 要求 |
|---|---|
| 性能 | 页面首屏 ≤ 2sAPI P95 ≤ 500ms |
| 安全 | 多租户隔离、字段级权限、AI 权限继承、全链路审计 |
| 部署 | Docker Compose(MVP)→ 边缘算力机私有化(长期) |
| 数据 | PostgreSQL 存储,Redis 缓存,PgVector 向量检索 |
| 兼容 | Chrome/Safari/Edge 最新版,iOS/Android Safari/Chrome |
| i18n | 中英文,文案进 JSON |
## 五、Phase 2-4 需求概要(后续迭代)
- **Phase 2**:财务数据接入校验、投资协议解析、董事会管理、弱信号采集基础版
- **Phase 3**:协同机会中心、创始人 AI 副驾驶、人才引力场、客户增长引擎、OKR 对齐
- **Phase 4**:投后 Alpha 归因、退出时机预测、组合再平衡、数字孪生、知识图谱
+273
View File
@@ -0,0 +1,273 @@
# PRD + 技术设计 (1-prd)
> 状态:待确认
> 范围:Phase 0 + Phase 1 MVP
---
## 一、产品概要
### 1.1 定位
AI+ Portfolio Operating System —— 投资人和创始人的共同操作系统。Phase 1 聚焦"投后信息与风险管理"。
### 1.2 核心用户旅程
**投资人端**
1. 登录 → 驾驶舱(Portfolio 全局视图)
2. 查看本周新增风险 → 进入风险工作台处理
3. 查看企业详情 → 审阅月报 AI 摘要 → 追加评论
4. 查看健康度趋势 → 识别下降企业
5. 导出投后报告
**创始人端**
1. 登录 → 企业经营概览
2. 提交月报(AI 辅助填充)
3. AI 副驾驶问答("投资人最关心什么")
4. 查看自身健康度评分和建议
---
## 二、技术架构
### 2.1 整体架构
```
┌─────────────────────────────────────────────┐
│ 前端 (Next.js) │
│ (investor) (founder) (admin) │
│ ↓ ↓ ↓ │
│ 统一 API Client + Auth │
└──────────────────┬──────────────────────────┘
│ REST API (JSON)
┌──────────────────┴──────────────────────────┐
│ 后端 (FastAPI) │
│ Routers → Services → Models │
│ AI Layer: Parser / Health / Risk / Report │
└──────┬──────────┬──────────┬────────────────┘
│ │ │
PostgreSQL Redis Ollama (本地AI)
+ PgVector
```
### 2.2 前端架构
**路由结构**
```
frontend/src/app/
├── (investor)/ # 投资人端(B 端专业风格)
│ ├── layout.tsx # 左 Sidebar + 灰色背景
│ ├── page.tsx # 驾驶舱
│ ├── companies/ # 企业列表 + 详情
│ ├── reports/ # 月报管理
│ ├── risks/ # 风险工作台
│ └── settings/
├── (founder)/ # 创始人端(C 端温暖风格)
│ ├── layout.tsx # 顶部 Header + indigo 主色
│ ├── page.tsx # 经营概览
│ ├── reports/submit/ # 月报提交
│ └── copilot/ # AI 副驾驶
├── (admin)/ # Admin 端
│ ├── layout.tsx # slate-950 Header + amber 主色
│ └── page.tsx # 管理后台
├── login/
└── layout.tsx # 根布局(字体 + Provider
```
**设计 Token**
- 字体:Geist Sans + Geist Mono
- 色彩:oklch 体系,CSS 变量定义
- 圆角:`--radius: 0.625rem`
- 投资人端:`--primary: oklch(0.21 0.006 285.885)` (gray-900)
- 创始人端:`--primary: oklch(0.546 0.245 262.881)` (indigo-600)
- Admin 端:`--primary: oklch(0.769 0.188 70.08)` (amber-400)
**共享组件**
- `LoadingSpinner` / `EmptyState` / `HealthScoreBadge`
- `HealthGauge`(仪表盘)/ `HealthRadar`(雷达图)/ `HealthTrend`sparkline
- `RiskCard` / `RiskTimeline`
- `AIChatDrawer`(底部抽屉式 AI 对话)
- `FilterBar`(筛选栏)
- `DataTable`(数据表格)
### 2.3 后端架构
**目录结构**
```
backend/
├── app/
│ ├── main.py # FastAPI app + 中间件 + 路由注册
│ ├── core/
│ │ ├── config.py # 环境变量配置 (pydantic-settings)
│ │ ├── database.py # SQLAlchemy engine + session
│ │ ├── security.py # JWT + 密码哈希
│ │ └── permissions.py # 权限中间件
│ ├── models/ # SQLAlchemy ORM 模型
│ │ ├── user.py
│ │ ├── company.py
│ │ ├── report.py
│ │ ├── health_score.py
│ │ └── risk.py
│ ├── schemas/ # Pydantic 请求/响应 schema
│ ├── routers/ # API 路由
│ │ ├── auth.py
│ │ ├── companies.py
│ │ ├── reports.py
│ │ ├── health.py
│ │ ├── risks.py
│ │ └── dashboard.py
│ └── services/ # 业务逻辑 + AI 服务
│ ├── ai_parser.py # 月报 AI 解析
│ ├── health_calculator.py
│ ├── risk_engine.py
│ └── report_generator.py
├── alembic/ # 数据库迁移
├── tests/ # 测试
├── pyproject.toml
└── Dockerfile
```
**API 设计**
- 版本:`/api/v1/`
- 响应壳:`{code, message, data, trace_id, timestamp}`
- 认证:Bearer JWT
- 分页:`?page=1&page_size=20&sort=-created_at`
### 2.4 数据库设计(Phase 1 核心表)
```sql
-- 租户
tenants (id, name, type, config_json, created_at, ...)
-- 用户
users (id, tenant_id, email, password_hash, role, name, phone, ...)
-- role: gp | partner | post_invest_lead | investor | founder | admin
-- 企业
companies (id, tenant_id, name, industry, stage, logo_url,
description, founded_at, total_funding, website, ...)
-- 月报
monthly_reports (id, company_id, period_year, period_month,
status, raw_content, ai_summary, ai_concerns,
submitted_by, submitted_at, reviewed_by, reviewed_at, ...)
-- 健康度
health_scores (id, company_id, total_score, financial_score,
operational_score, ai_commercial_score, ai_cost_score,
trend, evidence_json, recommendations_json,
calculated_at, ...)
-- 风险
risk_events (id, company_id, type, severity, status,
title, description, evidence_json,
suggested_action, assigned_to, due_at,
identified_at, closed_at, ...)
-- 审计
audit_logs (id, tenant_id, user_id, action, resource_type,
resource_id, detail_json, ip, created_at)
```
### 2.5 AI 服务设计
**月报解析 Agent**
- 输入:月报文件(Excel/PDF/结构化表单)
- 输出:结构化指标 JSON + 摘要文本 + 关注点列表
- 模型:Ollama 本地模型(qwen2.5 或 llama3.2
- 约束:Structured Output / JSON Schema
- 兜底:解析失败时返回原始文本 + 标记需人工审阅
**健康度计算引擎**
- 输入:月报指标 + 历史趋势
- 输出:分项评分 + 总分 + 趋势 + 扣分项 + 建议动作
- 实现:规则引擎(非 LLM),可配置权重
- AI+ 专项:商业化 + 成本维度,同样规则驱动
**风险检测引擎**
- 输入:最新指标 + 阈值规则
- 输出:RiskEvent 列表
- 实现:规则引擎,指标越界自动生成风险
- Phase 2 再加弱信号关联
---
## 三、UI/UX 设计
### 3.1 投资人端
**驾驶舱**
- 顶部:Portfolio 健康度分布热力图(企业 × 维度)
- 左中:本周新增风险卡片列表(红/黄/绿状态条)
- 右中:AI 周报摘要(可折叠)
- 底部:健康度趋势对比(多企业 sparkline)
**企业详情工作台**
- 左侧导航:基本信息 / 财务 / 经营 / 组织 / 风险 / AI+ 专项
- 中部:当前选中维度详情(表格 + 图表)
- 右侧:AI 建议 + 待办 + 风险预警(抽屉式)
- 底部:投后管理时间线
**风险工作台**
- 左侧:筛选栏(严重程度 / 类型 / 企业 / 状态)
- 中部:风险卡片列表(每张卡含证据链折叠面板)
- 右侧:选中风险的处理闭环时间线
### 3.2 创始人端
**经营概览**
- 顶部:大数字卡片(Runway / MRR / 客户数 / 健康度)
- 中部:关键指标趋势图
- 底部:AI 副驾驶入口(浮动按钮)
**月报提交**
- 分步表单:基本信息 → 财务数据 → 经营数据 → AI+ 专项
- AI 辅助:上传文件后自动填充建议值
- 提交前预览 AI 摘要
**AI 副驾驶**
- 底部抽屉式对话窗口
- 上下文感知:自动注入当前企业数据
- 快捷问题按钮:"投资人关心什么" / "融资建议" / "组织诊断"
### 3.3 响应式
- 投资人端:< md 时 Sidebar 折叠为抽屉,驾驶舱卡片单列
- 创始人端:移动端优先,卡片流 + 底部 Tab 导航
- Admin 端:< md 时表格横向滚动
---
## 四、部署架构
### 4.1 开发环境(Docker Compose
```yaml
services:
postgres: # PostgreSQL 16 + PgVector
redis: # Redis 7
ollama: # 本地 AI 推理
backend: # FastAPI + hot reload
frontend: # Next.js + hot reload
```
### 4.2 端口表
| 服务 | 端口 | 说明 |
|---|---|---|
| frontend | 3000 | Next.js dev server |
| backend | 8000 | FastAPI dev server |
| postgres | 5432 | PostgreSQL |
| redis | 6379 | Redis |
| ollama | 11434 | 本地 AI 推理 |
---
## 五、风险与对策
| 风险 | 对策 |
|---|---|
| AI 解析准确率不足 | Structured Output 约束 + 人工审阅兜底 |
| 月报格式差异大 | 先支持结构化表单,再支持文件上传 |
| 私有化部署复杂 | MVP 用 Docker Compose,长期才做边缘算力机 |
| 多租户数据隔离 | 从架构层面 tenant_id 贯穿,中间件强制 |
+147
View File
@@ -0,0 +1,147 @@
# 任务清单 (2-task)
> 粒度:每个任务 2-5 分钟
> 状态标记:[ ] 待办 / [~] 进行中 / [x] 完成 / [!] 阻塞
---
## Phase 0:项目骨架
### T0.1 项目目录结构
- [x] 创建 `frontend/` `backend/` `docs/daily/` `docs/decisions/` 目录
- [x] 创建 `.gitignore`Python + Node + IDE + .env
- [x] 创建 `.env.example`
- 验证:目录结构正确
### T0.2 后端项目初始化
- [x] `backend/pyproject.toml`FastAPI + SQLAlchemy + Alembic + Pydantic + pytest
- [x] `backend/app/__init__.py`
- [x] `backend/app/main.py`FastAPI app 实例 + 健康检查 `/health`
- [x] `backend/app/core/config.py`(环境变量配置)
- [x] `backend/app/core/database.py`SQLAlchemy engine + session
- [x] `backend/tests/__init__.py`
- [x] `backend/tests/test_health.py`4 个测试全部 GREEN
- 验证:`pytest tests/test_health.py -v` → 4 passed
### T0.3 前端项目初始化
- [x] `npx create-next-app@latest frontend`TypeScript + TailwindCSS 4 + App Router
- [x] 安装 lucide-react + recharts + sonner + radix-ui + cva + clsx + tailwind-merge
- [x] 配置 `globals.css`oklch 色彩、系统字体、`--radius: 0.625rem`、打印样式)
- [x] 创建三端布局:`(investor)` 路由组 + `founder/` + `admin/` 目录
- [x] 创建共享组件:`LoadingSpinner` / `EmptyState` / `HealthScoreBadge`
- [x] 创建 `lib/utils.ts`cn 函数)+ `lib/api.ts`API 客户端)
- 验证:`pnpm build` → 8 路由全部构建成功
### T0.4 Docker Compose 开发环境
- [x] `docker-compose.yml`PostgreSQL 16 + Redis 7 + Ollama
- [x] `backend/Dockerfile`
- [x] `frontend/Dockerfile`
- [ ] `docker-compose.dev.yml`(开发覆盖:挂载源码 + hot reload
- 验证:`docker compose up -d` 全部 healthy
### T0.5 数据库迁移基座
- [x] `backend/alembic.ini`
- [x] `backend/alembic/` 初始化
- [x] 首个 migration:创建 7 张核心表(tenants/users/companies/monthly_reports/health_scores/risk_events/audit_logs
- 验证:`alembic upgrade head` 成功,`\dt` 显示 8 张表
---
## Phase 1MVP 核心功能
### T1.1 认证与权限
- [ ] `backend/app/models/user.py`User + Role + Tenant
- [ ] `backend/app/routers/auth.py`(登录 / 注册 / refresh token
- [ ] `backend/app/core/security.py`JWT + 密码哈希)
- [ ] `backend/app/core/permissions.py`(角色级 + 字段级权限中间件)
- [ ] `backend/tests/test_auth.py`RED
- [ ] `frontend/src/app/login/page.tsx`
- [ ] `frontend/src/lib/auth.ts`token 管理 + 自动刷新)
- 验证:登录 → 获取 token → 访问受保护 API
### T1.2 企业档案管理
- [ ] `backend/app/models/company.py`CompanyProfile
- [ ] `backend/app/routers/companies.py`CRUD + 筛选)
- [ ] `backend/app/schemas/company.py`Pydantic schema
- [ ] `backend/tests/test_companies.py`RED
- [ ] `frontend/src/app/(investor)/companies/page.tsx`(列表 + 筛选)
- [ ] `frontend/src/app/(investor)/companies/[id]/page.tsx`(详情工作台骨架)
- [ ] `frontend/src/components/company/CompanyCard.tsx`
- 验证:创建企业 → 列表显示 → 详情页可访问
### T1.3 月报管理 + AI 解析
- [ ] `backend/app/models/report.py`MonthlyReport + ReportItem
- [ ] `backend/app/routers/reports.py`(提交 / 查看 / AI 解析)
- [ ] `backend/app/services/ai_parser.py`(月报 AI 解析服务)
- [ ] `backend/app/schemas/report.py`
- [ ] `backend/tests/test_reports.py`RED
- [ ] `frontend/src/app/(founder)/reports/submit/page.tsx`(创始人提交月报)
- [ ] `frontend/src/app/(investor)/reports/page.tsx`(投资人查看月报)
- 验证:创始人提交月报 → AI 解析 → 投资人查看摘要
### T1.4 健康度评分
- [ ] `backend/app/models/health_score.py`HealthScore + ScoreItem
- [ ] `backend/app/services/health_calculator.py`(财务 + 经营 + AI+ 专项)
- [ ] `backend/app/routers/health.py`(查询 / 重算)
- [ ] `backend/tests/test_health.py`RED
- [ ] `frontend/src/components/health/HealthGauge.tsx`(仪表盘组件)
- [ ] `frontend/src/components/health/HealthRadar.tsx`(雷达图组件)
- [ ] `frontend/src/components/health/HealthTrend.tsx`(趋势 sparkline
- 验证:月报数据 → 自动算分 → 前端展示仪表盘 + 雷达图
### T1.5 投资机构驾驶舱
- [ ] `backend/app/routers/dashboard.py`(聚合数据接口)
- [ ] `backend/tests/test_dashboard.py`RED
- [ ] `frontend/src/app/(investor)/page.tsx`(驾驶舱首页)
- [ ] `frontend/src/components/dashboard/HealthDistribution.tsx`
- [ ] `frontend/src/components/dashboard/RiskSummary.tsx`
- [ ] `frontend/src/components/dashboard/AIWeeklyBrief.tsx`
- 验证:登录后看到驾驶舱,数据来自后端
### T1.6 风险预警
- [ ] `backend/app/models/risk.py`RiskEvent + Evidence
- [ ] `backend/app/services/risk_engine.py`(指标越界检测引擎)
- [ ] `backend/app/routers/risks.py`(列表 / 处理 / 关闭)
- [ ] `backend/tests/test_risks.py`RED
- [ ] `frontend/src/app/(investor)/risks/page.tsx`(风险工作台)
- [ ] `frontend/src/components/risk/RiskCard.tsx` + `RiskTimeline.tsx`
- 验证:指标越界 → 自动生成风险 → 工作台展示 → 处理闭环
### T1.7 投后报告
- [ ] `backend/app/services/report_generator.py`AI 报告生成)
- [ ] `backend/app/routers/reports_export.py`PDF 导出)
- [ ] `backend/tests/test_report_export.py`RED
- [ ] `frontend/src/app/(investor)/reports/view/[id]/page.tsx`
- 验证:选择企业 → 生成报告 → 导出 PDF
### T1.8 移动端适配
- [ ] 投资人端响应式:< md Sidebar 折叠为抽屉
- [ ] 创始人端移动布局:卡片流 + 底部导航
- [ ] AI Copilot 浮动对话窗口(底部抽屉式)
- [ ] 风险预警 toast 推送
- 验证:Chrome DevTools 移动端模拟,三端布局正常
---
## 依赖关系
```
T0.1 → T0.2 → T0.5 → T1.1 → T1.2 → T1.3 → T1.4 → T1.5
T1.6 → T1.7
T0.3 → T1.2(前端依赖)
T0.4 → T0.5DB 依赖 Docker
T1.8 依赖 T1.1-T1.7 全部完成
```
## 里程碑
| 里程碑 | 任务 | 预期 |
|---|---|---|
| M0:骨架可运行 | T0.1-T0.5 | 1 周 |
| M1:认证 + 企业档案 | T1.1-T1.2 | 1 周 |
| M2:月报 + 健康度 | T1.3-T1.4 | 2 周 |
| M3:驾驶舱 + 风险 | T1.5-T1.6 | 1 周 |
| M4:报告 + 移动端 | T1.7-T1.8 | 1 周 |