# ColorMapRun Website Demo `www/` 是官网重构的独立前端工程。当前版本先实现“公开活动前台 + DEMO 样板间 + 商务承接页”的第一版骨架,不尝试在浏览器里复刻正式比赛客户端。 ## 路由范围 - `/` - `/events` - `/events/[eventId]` - `/demo` - `/demo/[eventId]` - `/map-experience` - `/host-event` - `/partner` - `/help` ## 数据来源 站点优先读取 backend 的公开摘要接口: - `GET /home` - `GET /cards` - `GET /events/{eventPublicID}` 如果没有配置 backend 地址,生产构建会回退到内置 DEMO 数据,保证静态构建和前端联调都能继续进行。 开发环境默认会直连 `http://127.0.0.1:18090`,网站前端默认跑在 `http://127.0.0.1:3001`。 ## 环境变量 ```bash CMR_SITE_BACKEND_BASE_URL=http://localhost:8080 CMR_SITE_CHANNEL_CODE=mini-demo CMR_SITE_CHANNEL_TYPE=wechat_mini CMR_SITE_TENANT_CODE= CMR_SITE_LEADS_ENDPOINT= CMR_SITE_LEADS_BEARER_TOKEN= NEXT_PUBLIC_SITE_URL=https://colormaprun.com ``` `CMR_SITE_CHANNEL_CODE / CMR_SITE_CHANNEL_TYPE` 当前默认会走 `mini-demo / wechat_mini`,后续如果 backend 增加 `website-demo` 这类入口 channel,可以直接切过去。 线索页相关变量说明: - `CMR_SITE_LEADS_ENDPOINT`: 显式指定线索接口地址。配置后,`/api/leads` 会优先转发到这个地址。 - `CMR_SITE_LEADS_BEARER_TOKEN`: 如果线索接口需要鉴权,会以 `Authorization: Bearer ...` 的形式附带。 - 如果没有配置显式线索接口,站点会尝试转发到 `${CMR_SITE_BACKEND_BASE_URL}/site/leads`。 - 如果转发目标不存在或暂时不可用,站点会回退到本地 JSONL 落盘:`www/.local-data/site-leads.jsonl`。 仓库里也提供了一个示例文件:[.env.example](/D:/dev/cmr-mini/www/.env.example) ## 本地运行 First, run the development server: ```bash npm run dev ``` Open [http://localhost:3001](http://localhost:3001). ## 验证 ```bash npm run lint npm run build ``` ## 当前实现边界 - 网站地图只做只读预览,不做正式 GPS / 打点 / session。 - DEMO 页是活动样板间,不是另一个客户端。 - 商务页已经具备真实留资能力,当前通过 `POST /api/leads` 进入线索池。 - 当 backend 或 CRM 还没接好时,线索会先落到 `www/.local-data/site-leads.jsonl`,保证前台联调不被阻塞。 - backend 后续补齐 `POST /site/leads` 后,不需要改页面结构,只需要切环境变量或直接沿默认转发链路接入。 ## 后续建议 - 接 backend 的正式 `website-demo` channel。 - 增加公开活动筛选、专题页和案例页。 - 在 backend 补站点线索表单接口后,把 `api/leads` 的转发目标切到正式服务,并增加线索管理或 CRM 对接。 - 如果需要更强的地图预览,可继续沿“低级别瓦片 + overlay”方案增强。