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:
+273
@@ -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 贯穿,中间件强制 |
|
||||
Reference in New Issue
Block a user