参与通是一个围绕投资机会筛选、意向处理、条款协作与谈判留痕的演示型全栈应用。
技术上采用 Hono + Vite + Cloudflare Pages/Workers,前端为 Tailwind + 原生 JS 的模块化拆分。
业务流转如下:
发起通 (Originate) -> 评估通 (Assess, AI 筛子) -> 参与通 (Deal Connect) -> 条款通/合约通
在本项目(参与通)中,主要覆盖:
- 机会看板浏览(项目视图/品牌视图)
- 投资者与融资方双视角切换
- 营业额预估工作台(模型/融资方/自行填写三来源)
- 条款工作台(公共条款 + 私有预测 + 派生指标)
- 意向表达与融资方意向处理(多请求队列、锁定规则)
- 谈判协作(多方案、反提案、纪要、邀请、合约输出快照)
- 时间线审计与历史参数回填
- 登录、注册、游客模式
- 演示数据加载(按品牌生成多项目)
- 多维筛选与排序:行业、状态、关键词、时间/金额/评分排序
- 统计卡:全部机会 / 筛后通过 / 已表达意向 / 已确认参与
- 品牌视图点击后自动切换到项目视图并带入品牌关键词
- 搜索框一键清空按钮
- 筛子库内置 10 个模型:行业偏好、风控优先、高回报、区域聚焦、综合评估、高成长、大额项目、团队实力、短周期、稳健保守
- 支持筛子管理弹窗:添加/移除个人面板筛子
全部机会为内置固定项,不可移除
- 视角:
investor(投资者)/financer(融资方) - 融资方视角主要变化:
- 隐藏评估通筛子相关区域
- 看板列表标题切换为
融资项目 - 列表仅展示前 2 个项目(演示约束)
- 意向 Tab 文案切为
意向处理 - 主题色切为琥珀系
做功课:项目一页纸、同行参考、筛子辅助评估营业额预估:走势对比图(历史实际 + 三类预测),并可将选中值写回工作台条款工作台:三区模型与公式联动,支持提交方案草稿意向处理:结构化意向提交、融资方处理、多请求锁定/释放谈判:多方案对比、接受/拒绝/反提案、纪要、邀请、合约输出预览时间线:记录关键事件,支持按事件快照回填条款参数
- 入口:
src/index.tsx - 路由挂载:
/api/auth->src/routes/auth.ts/api/deals->src/routes/deals.ts- 页面路由与 favicon ->
src/routes/pages.ts
当前后端为演示态:
- 鉴权数据在内存
Map中 GET /api/deals返回空数组(机会数据由前端演示数据构造并缓存)
脚本按顺序加载(见 src/pages/main-html.ts):
state.js:全局状态、筛子定义、可比参考数据shared.js:通用能力(toast、视角切换、Tab 切换、解析函数)intent.js:意向提交与处理逻辑negotiation.js:谈判、时间线、合约输出逻辑forecast.js:营业额预估工作台与图表workbench.js:条款工作台计算与提案提交auth.js:登录注册与演示数据生成sieves.js:筛子管理与筛选应用dashboard.js:看板渲染、搜索/过滤/排序、卡片交互project-session.js:项目详情与会话页入口ui.js:弹窗、引导、辅助 UIapp-init.js:应用启动、localStorage 恢复
当前项目为前端本地持久化 + 后端演示态内存存储。
主要 localStorage key:
ec_allDeals:项目主列表ec_mySieves:个人筛子面板ec_perspective:当前视角ec_researchInputsByDeal:做功课/预估输入ec_forecastByDeal:营业额预估工作台状态ec_workbenchByDeal:条款工作台状态ec_intentByDeal:意向请求与处理状态ec_negotiationByDeal:提案、纪要、邀请ec_timelineByDeal:时间线事件ec_contractPayloadByDeal:流向合约通的公共参数快照ec_onboarded:新手引导是否已完成
如需重置演示环境,可清理以上 key 或直接清空站点 localStorage。
- Node.js >= 18
- npm >= 9
npm install
npm run hooks:install
npm run dev默认会启动 Vite 开发服务(端口由 Vite 分配,通常为 5173)。
如需按 Cloudflare Pages 方式本地预览:
npm run build
npm run previewnpm run dev # Vite 开发
npm run build # 构建 dist
npm run preview # Wrangler Pages 本地预览
npm run lint # 静态 JS 语法检查
npm run typecheck # TypeScript 检查
npm run check # lint + typecheck + build
npm run deploy # build + wrangler pages deploy
npm run hooks:install # 安装本地 git hook.githooks/pre-commit会自动执行npm run checkscripts/check-static-js.mjs会对public/static/js/**/*.js逐文件执行node --check
wrangler.jsonc 已配置:
pages_build_output_dir: ./distcompatibility_date: 2026-02-25nodejs_compatflag
部署步骤示例:
npm install
npm run build
npx wrangler login
npx wrangler pages project create <your-project-name> --production-branch main
npx wrangler pages deploy dist --project-name <your-project-name>或直接使用:
npm run deploy说明:npm run deploy 是否需要额外参数,取决于你本地 Wrangler 的项目绑定状态。
| Method | Path | 说明 |
|---|---|---|
POST |
/api/auth/register |
注册 |
POST |
/api/auth/login |
登录 |
POST |
/api/auth/logout |
退出 |
GET |
/api/auth/me |
当前用户(演示态返回 null) |
GET |
/api/deals |
机会列表(演示态空数组) |
GET |
/ |
主页面 |
GET |
/favicon.svg |
站点图标 |
.
├── src
│ ├── index.tsx
│ ├── pages
│ │ └── main-html.ts
│ └── routes
│ ├── auth.ts
│ ├── deals.ts
│ └── pages.ts
├── public
│ └── static
│ ├── base.css
│ ├── style.css
│ └── js
│ ├── app-init.js
│ ├── auth.js
│ ├── dashboard.js
│ ├── forecast.js
│ ├── intent.js
│ ├── negotiation.js
│ ├── project-session.js
│ ├── shared.js
│ ├── sieves.js
│ ├── state.js
│ ├── ui.js
│ └── workbench.js
├── scripts
│ └── check-static-js.mjs
├── .githooks
│ └── pre-commit
├── ecosystem.config.cjs
├── package.json
├── tsconfig.json
├── vite.config.ts
├── wrangler.jsonc
└── README.md
- 每次改动后先执行
npm run check再提交 - 功能改动优先保持模块边界清晰(看板、会话、意向、谈判、预估、工作台)
- 涉及状态结构变更时,注意兼容旧 localStorage(项目中已有多处迁移逻辑示例)
- 合并外部分支后,优先回归以下路径:
- 视角切换 -> 看板过滤/搜索 -> 项目会话 6 Tab -> 意向处理 -> 谈判 -> 时间线
- 后端鉴权与用户信息为内存态,不适用于生产
- 项目数据主要来自前端 mock 生成,不依赖真实后端数据源
- 未接入真实数据库(如 D1)与权限系统
- 未接入真实合约通,仅输出公共参数快照预览
如需下一步产品化,建议优先补齐:真实身份体系、D1 持久化、服务端会话/权限校验、审计日志后端化。