项目文件夹

文件
2026-08-20 11:19:23 +00:00

79 行
2.4 KiB
Markdown

此文件含有模棱两可的 Unicode 字符
此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。
# 武汉 OPC AI 活动共创 Demo
面向武汉一人公司(OPC)与独立创造者社区的活动提案平台。成员可以提交线下或线上活动,
也可以先用一句自然语言想法生成结构化草案,确认后再补齐真实信息并提交。
## 功能
- AI 共创:输入一句活动想法,结合已填写的类型、区域、日期和场地生成活动草案。
- 人工确认:预览草案后主动回填表单;AI 不会直接提交或覆盖真实安排。
- 活动征集:记录活动名称、发起人、类型、区域、日期、地点、说明和私密联系方式。
- 提案广场:公开展示活动信息,不返回提交人的联系方式。
- 模型接入:通过 WeHub `model_router` 调用 OpenAI 兼容的 Chat Completions API。
- 自动建表:函数首次访问数据库时创建 `app.opc_events`
页面主流程为:**写下想法 → 生成 AI 草案 → 人工确认回填 → 补充真实信息 → 提交征集**。
## WeHub 资源
- `static_site web``frontend/dist`
- `function api`Node.js 20,路由 `/api/cloud/*`
- `postgres_database app_db`:活动提案持久化
- `model_router models`AI 活动草案生成
函数环境变量由 `wehub.manifest.json` 通过资源引用注入:
- `DATABASE_URL`
- `OPENAI_BASE_URL`
- `OPENAI_API_KEY`
- `OPENAI_MODEL`
模型密钥只注入后端函数,不会出现在静态页面中。
## API
- `GET /api/cloud/health`
- `GET /api/cloud/events`
- `POST /api/cloud/events`
- `POST /api/cloud/event-draft`
活动想法 `idea` 必填,其余上下文字段可选:
```json
{
"idea": "想办一场独立开发者互相体验产品的周末活动",
"category": "产品交流",
"district": "武昌区",
"venue": "",
"event_date": ""
}
```
成功响应只包含后端校验通过的结构化字段:
```json
{
"ok": true,
"draft": {
"title": "周末产品互诊室",
"category": "产品交流",
"district": "武昌区",
"venue": "武昌区交通便利、可分组交流的共享空间",
"description": "邀请武汉独立开发者带上正在打磨的产品,通过分组体验和反馈交换真实用户视角。"
}
}
```
模型输出缺字段、不是有效 JSON、类别或区域不在允许范围内、字段长度不合规时,接口返回 `502`
草案不会进入表单。
## 本地测试
```sh
cd functions/api
npm ci
npm test
```
完整部署产物由 `wehub-runner build` 生成,不提交 `.wehub/`