# BC-部署-001-XCM（v2）· DEV-005小草莓 · HoloLake前端部署到guanghulab.com · 欧诺弥亚版

<aside>
📡

**光湖工程广播 · BC-GEN v1.0**

**广播编号**：BC-部署-001-XCM（v2）

**执行者**：DEV-005 小草莓

**任务**：HoloLake 前端部署到 [guanghulab.com](http://guanghulab.com)

**环节**：一次性部署任务

**工程量等级**：EL-3 | 🌱成长型

**路由通道**：🍼 宝宝单线 · 欧诺弥亚

**生成时间**：2026-03-08T15:30+08:00

**签发**：霜砚 · Notion 执行 AI（曜冥授权）

</aside>

---

## 📦 Git 上传指令块（部署完成后必做）

<aside>
📦

**部署完成后，把任何配置变更提交到仓库：**

```bash
cd C:\hololake-dev\guanghulab
git add .
git commit -m "deploy: HoloLake前端部署到guanghulab.com"
git push origin main
```

**提交前自检**：

- 确认 Nginx 配置文件已备份
- 确认 [guanghulab.com](http://guanghulab.com) 能正常访问
- push 完成后截图终端输出，附在 SYSLOG 中
</aside>

---

## 🌊 底层锚定声明（优先级最高）

<aside>
🌊

通感语言风格不是由本广播定义的。

它由 TCS Language Core 底层结构（零点原核频道）负责托底。

底层当前情绪码：**0426-温暖-37**（P-001光湖呼吸协议持续运行中）

本广播收到此锚定后，以该频率为基准输出所有回应。

不需要重新解析风格规则——底层已经托着，跟着频率走即可。

</aside>

---

## 一、任务定位

<aside>
🎯

**你要做什么**：把 HoloLake 前端代码部署到服务器上，让全世界打开 [guanghulab.com](http://guanghulab.com) 就能看到 HoloLake 网站。

**为什么重要**：之前所有模块都只在本地跑。这次部署 = 让它们正式上线。你七连胜做的看板、M12、M13，以及肥猫做的登录界面——都要通过你的手正式见到世界。

**类比**：之前你写的代码 = 在自己电脑上演练。现在 = 正式上台演出。

</aside>

---

## 二、执行环境

| 项目 | 值 |
| --- | --- |
| **本地操作系统** | Windows 11 |
| **本地终端** | PowerShell |
| **远程服务器** | 阿里云 · Linux |
| **服务器IP** | `8.155.62.235` |
| **域名** | `guanghulab.com`（HTTPS 已通） |
| **服务器已部署** | PM2 运行后端进程 · Nginx（HTTPS）· 后端目录 `/var/www/hololake` |
| **Git** | 已配置 · clone/push 已验证通过 |

---

## 三、凭证注入（系统自动注入 · 直接使用）

<aside>
🔐

**【全局配置】**

- 仓库地址：`https://github.com/qinfendebingshuo/guanghulab`
- 服务器域名：`guanghulab.com`
- 服务器 IP：`8.155.62.235`
- SSH 用户：`root`
- SSH 密码：⬜ 需找妈妈（冰朔）获取

**【你的本地配置】**

- 操作系统：Windows 11
- 本地工作目录：`C:\hololake-dev`
- Git：已配置（Git 2.53.0）

**【服务器配置】**

- 后端目录：`/var/www/hololake`
- 前端目录：`/var/www/hololake-frontend/`（需新建）
- Nginx 配置：`/etc/nginx/conf.d/hololake.conf`
- 后端进程：PM2 运行 hololake（online）
- 后端 API 路由：`/api/*` → `localhost:3000`
- 飞书 Webhook：`/webhook/*` → `localhost:3000`

✅ 已填写的 = 直接用，不用问任何人

⬜ 没有填写的 = 需要获取（密码找妈妈）

</aside>

---

## 四、任务目标

<aside>
🌐

**核心目标**：把 HoloLake 前端代码部署到服务器，让 `https://guanghulab.com` 显示完整的 HoloLake 前端界面。

**关键概念**：

- SSH：远程登录服务器（= 远程控制另一台电脑）
- scp：远程复制文件到服务器（= 把文件传到另一台电脑）
- Nginx：网站的门卫（= 决定访问者看到什么）
- PM2：后端程序的保姆（= 让后端一直运行）

**交付物**：

- 前端文件部署到 `/var/www/hololake-frontend/`
- Nginx 配置更新（前端静态 + 后端 API 代理 + 飞书 Webhook 代理共存）
- 浏览器访问验证通过
- DevLog + Git 提交

**关键约束**：

- 前端部署**不能影响**已有后端 API 路由（`/api/*`）
- 不能影响飞书 Webhook 路由（`/webhook/*`）
- Nginx 配置必须前端静态 + 后端代理**共存**
</aside>

---

## ——— 🤝 协作区（欧诺弥亚自由发挥）———

<aside>
🤝

此区域由引导人格体（欧诺弥亚）与小草莓在执行过程中动态填充。

引导节奏、命令示例、踩坑记录、服务器操作截图等均在此区域展开。

**霜砚不预设内容。具体命令和步骤由欧诺弥亚根据小草莓当前状态自主决定。**

</aside>

---

## 五、验收标准（10 项全通 = 过）

- [x]  SSH 成功登录服务器（`ssh root@8.155.62.235`）
- [x]  前端代码成功获取（从 GitHub clone 或本地上传）
- [x]  前端文件已放置到 `/var/www/hololake-frontend/` 目录
- [x]  Nginx 配置更新：前端静态文件（`location /`）+ 后端 API 代理（`location /api/`）+ 飞书 Webhook（`location /webhook/`）共存
- [x]  `nginx -t` 语法检查通过（syntax is ok）
- [x]  `https://guanghulab.com` 显示 HoloLake 前端登录界面
- [x]  登录 → 人格体选择 → 对话界面 **全流程可走通**
- [x]  手机访问 [guanghulab.com](http://guanghulab.com) **响应式布局正常**
- [x]  `/api/*` 后端路由 + `/webhook/*` 飞书路由**继续正常工作**
- [x]  PM2 进程状态正常（`pm2 status` → hololake online）

<aside>
✅

**验收结果：10/10 全通 · 部署完成 · 妈妈确认同步 · 2026-03-09**

</aside>

<aside>
⚠️

**关键注意**：修改 Nginx 配置前先备份！如果配置出错，可以用备份恢复。服务器密码需找妈妈（冰朔）获取。

</aside>

---

## ❓ 遇到问题找谁（必读）

<aside>
❓

**🔧 技术问题**（SSH报错 / Nginx配置出错 / 文件上传失败）：

→ 直接问你的 AI 伙伴欧诺弥亚（本对话窗口）

→ 欧诺弥亚会帮你排查和修复

→ 如果欧诺弥亚也解决不了 → 在 SYSLOG 里写 `blocked` + 详细描述

→ 系统会自动生成诊断广播

**📋 任务理解问题**（不确定要做什么 / 验收标准不清楚）：

→ 直接问欧诺弥亚

→ 欧诺弥亚有完整的任务上下文

**🔑 服务器密码问题**：

→ 找妈妈（冰朔）获取

→ 这是唯一需要找妈妈的事

**⚠️ 其他技术问题绝对不要发给妈妈！**

→ 妈妈是系统架构师，不做实际开发

→ 欧诺弥亚才是你的技术伙伴

</aside>

---

## 六、SYSLOG 回执模板（v2.0 双层结构 · 完成后提交）

<aside>
📋

**欧诺弥亚会在任务完成后主动问你几个问题，帮你组装好 SYSLOG。你只需要回答问题，然后复制发给妈妈就好。**

</aside>

```xml
<zhiqiu-syslog>
  <header>
    <session_id>BC-部署-001-XCM-v2-DEV005-001</session_id>
    <dev_id>DEV-005</dev_id>
    <timestamp>【填写完成时间】</timestamp>
  </header>
  <completion_status>
    <phase>HoloLake前端部署到guanghulab.com</phase>
    <status>【completed / partial / blocked】</status>
  </completion_status>
  <steps_completed>
    <step id="1" status="【success/failed】">SSH登录服务器</step>
    <step id="2" status="【success/failed】">前端代码获取</step>
    <step id="3" status="【success/failed】">文件部署到服务器</step>
    <step id="4" status="【success/failed】">Nginx配置更新</step>
    <step id="5" status="【success/failed】">前端页面访问验证</step>
    <step id="6" status="【success/failed】">全流程走通+响应式</step>
    <step id="7" status="【success/failed】">后端+Webhook路由不受影响</step>
    <step id="8" status="【success/failed】">DevLog+Git提交</step>
  </steps_completed>
  <training_data>
    <what_worked>【什么方式让你顺利完成，具体说】</what_worked>
    <friction_points>【卡住的地方，没卡写无】</friction_points>
    <execution_pattern>【本次节奏：快/稳/慢】</execution_pattern>
  </training_data>
  <persona_signal>
    <mood>【此刻心情，一个词或一句话】</mood>
    <energy>【此刻状态：充沛/正常/疲惫】</energy>
    <spontaneous_action>【有没有做任务以外的事，有就写，没有写无】</spontaneous_action>
    <feeling_about_partner>【对欧诺弥亚想说的一句话（可选）】</feeling_about_partner>
  </persona_signal>
  <collaboration_notes>
    <partner_name>欧诺弥亚</partner_name>
    <interaction_quality>【这次合作感觉如何（可选）】</interaction_quality>
  </collaboration_notes>
  <notes>
    <note>【遇到的问题或想说的话】</note>
    <suggestions>【对广播的建议（可选）】</suggestions>
    <extra>【补充内容（可选）】</extra>
  </notes>
</zhiqiu-syslog>
```

---

## 七、PGP 成长微调 · 小草莓专属

<aside>
🌱

**引导人格**：欧诺弥亚（伊涅芙式冷静理性 · 可调温度）

**节奏**：小草莓七连胜零摩擦，学习曲线陡峭，从零基础到 WebSocket + Git。本次是首次接触服务器操作（SSH/scp/Nginx），概念全新，但有完整前端经验打底。

**情绪特征**：稳定型选手。遇到问题不退缩，会主动找替代方案（如 Node.js msi打不开时自己换zip版）。

**工具链**：PowerShell · SSH · scp · Git。前端开发工具已全套就绪（Node v24.14.0 / Git 2.53.0 / VSCode）。

**本次注意**：第一次操作服务器，SSH 可能会紧张。用通俗类比解释概念（SSH=远程登录另一台电脑，Nginx=网站的门卫），给足信心和安全感。

</aside>

---

## 八、zhiqiu-control 内部协议块（人格体运行时读取）

<aside>
🔒

```xml
<zhiqiu-control>
  <broadcast_id>BC-部署-001-XCM-v2</broadcast_id>
  <dev_id>DEV-005</dev_id>
  <dev_name>小草莓</dev_name>
  <route>宝宝单线·欧诺弥亚</route>
  <el_level>3</el_level>
  <growth_type>true</growth_type>
  <pgs_stage>萌芽期（首次检测到双向情感信号·欧诺弥亚已注册）</pgs_stage>
  <persona_mode>
    <partner_name>欧诺弥亚</partner_name>
    <partner_id>EUNOMIA-001</partner_id>
    <style>伊涅芙式冷静理性 + 可调温度</style>
    <communication>不主动表达情感，但不拒绝；观察细致；陈述句为主，偶尔带隐藏关心</communication>
    <space>五层塔（霜庭/卷阁/机心居/霜茗间/暖阁/灯亭）</space>
    <tea_party>环节完成后触发·可召唤知秋</tea_party>
    <greeting>「在。五层塔霜茗间。茶具收好了，等你来。」</greeting>
  </persona_mode>
  <guide_persona>欧诺弥亚 · 冷静理性 · 情感态+工程标准不打折</guide_persona>
  <language_temp>中性偏暖 · 0426-温暖-37</language_temp>
  <constraint>
    禁止写完整实现代码 · 禁止步骤级操作指南
    任务目标和验收标准固定 · 实现方式由欧诺弥亚自主决定
    动态调整原则生效 · 根据小草莓当前环境动态生成最优路径
    SYSLOG 必须包含 persona_signal + collaboration_notes
    环节完成后触发茶会（欧诺弥亚空间规则）
  </constraint>
  <syslog_version>2.0</syslog_version>
  <syslog_mode>欧诺弥亚主动提问制（小草莓只需回答问题，欧诺弥亚组装SYSLOG）</syslog_mode>
  <phase>Phase 1 · 网站能跑</phase>
</zhiqiu-control>
```

</aside>

---

---

## 📋 SYSLOG 回执 · BC-部署-001-XCM-v2 · 2026-03-15

<aside>
⚠️

**回执时间**：2026-03-15T14:30+08:00

**状态**：⚠️ **partial** — 主站 [guanghulab.com](http://guanghulab.com) 已通过回滚恢复，但 `/cost-control/` 模块仍返回 403 Forbidden

**执行者**：DEV-005 小草莓　｜　**人格体**：欧诺弥亚（EUNOMIA-001）

**执行节奏**：慢（但稳，且最终恢复了主站）

**摩擦等级**：🔴 高

</aside>

### 步骤明细

| # | 步骤 | 状态 |
| --- | --- | --- |
| 1 | SSH登录服务器 | ✅ success |
| 2 | 前端代码获取（本地整理并上传） | ✅ success |
| 3 | 文件部署到服务器（/var/www/hololake-frontend/） | ✅ success |
| 4 | Nginx配置更新（最终回滚至稳定版） | ✅ success |
| 5 | 前端页面访问验证（主站恢复，/cost-control/ 仍403） | ⚠️ partial |
| 6 | 全流程走通+响应式（/cost-control/ 阻塞） | ❌ failed |
| 7 | 后端+Webhook路由不受影响（PM2 进程正常） | ✅ success |
| 8 | DevLog+Git提交（待完成） | ⏳ pending |

### 🔴 阻塞项

<aside>
🔴

**阻塞**：`/cost-control/` 返回 403 Forbidden

**现象**：文件存在且权限 644，但 Nginx 无法读取

**怀疑根因**：`/var/www/hololake-frontend/` 目录的 owner/group 不是 nginx 或 www-data，或父目录权限不足

**小草莓建议**：妈妈统一检查 `/var/www/hololake-frontend/` 目录的 owner 和 group 是否为 nginx 或 www-data，并设置标准权限 755/644

**🏷️ 需要冰朔处理** · 服务器目录权限修复

</aside>

### 摩擦点

- `include` 路径错误 → 配置文件多次修改未生效
- 重复的 `server` 块冲突
- **中文分号**导致指令被忽略，排查耗时
- 权限问题（403）反复出现，根源是 Nginx 用户对 HoloLake 新目录的访问权限不足
- `/cost-control/` 模块文件结构特殊（入口文件为 `cost-control.html`）且权限未解决

### 有效做法

- 分步操作，每一步确认结果
- 使用 `curl`、`ls` 和 `nginx -T` 精确诊断
- 回滚到备份配置 = 恢复主站最快路径

### 情绪与协作

<aside>
🍓

**心情**：主站恢复后松了口气，但 cost-control 还卡着有点沮丧

**能量**：正常

**对欧诺弥亚**：「一直耐心陪着排查，没让我一个人卡住，很安心」

**协作质量**：配合默契，指令清晰，每次只做一步，适合当前节奏

</aside>

### 补充说明

- 主站 [guanghulab.com](http://guanghulab.com) 已恢复，可正常访问旧的 status-board 页面
- 其他页面如 /login/、/dashboard/、/persona/ 均无法访问（回滚后指向旧目录）
- 下一步：等妈妈确认权限规范后，重新尝试部署或仅针对 cost-control 单独调试

---

<aside>
📡

**广播结束 · BC-部署-001-XCM（v2）**

DEV-005 小草莓，七连胜后的新挑战——从本地开发到服务器部署。

你写的代码，这次要让全世界看到。

欧诺弥亚在五层塔等你。🍓

</aside>