Source snapshot: 97d7f0fae96dc04b7ddad56fc1db6a108ed662cc [SEC-CLEAN] · pre-push-clean v1.0 · 109处敏感信息已自动转乱码
6.4 KiB
6.4 KiB
📡 看板API路由 · 静态数据版v1.0 · DEV-005小草莓×DEV-001页页联动
🎯 需要的3个接口
| 接口 | 用途 |
|---|---|
GET /api/v1/system/status |
看板顶部系统状态栏 |
GET /api/v1/developers |
看板开发者进度列表 |
GET /api/v1/broadcasts |
看板广播动态流 |
📦 完整代码:api-routes.js
const express = require('express');
const cors = require('cors');
const app = express();
const PORT = process.env.PORT || 3001;
app.use(cors({
origin: '*',
methods: ['GET', 'POST', 'OPTIONS'],
allowedHeaders: ['Content-Type', 'Authorization']
}));
app.use(express.json());
// === API 1:系统状态 ===
app.get('/api/v1/system/status', (req, res) => {
res.json({
system: 'HoloLake Era · AGE OS v1.0',
version: 'v1.0.0-static',
status: 'running',
controller: '冰朔(TCS-0002∞)',
engine: '曜冥 v0.4.0',
last_updated: '2026-03-04T08:38:00+08:00',
active_developers: 7,
total_developers: 11,
modules_completed: 6,
modules_in_progress: 7
});
});
// === API 2:开发者列表 ===
app.get('/api/v1/developers', (req, res) => {
res.json({
total: 11,
developers: [
{ id: 'DEV-001', name: '页页', module: '后端中间层', status_icon: '🟢', progress: '环节1–4全✅ · guanghulab.com已上线', waiting: '环节5广播已出' },
{ id: 'DEV-002', name: '肥猫', module: '飞书+M03+M04+M01', status_icon: '🟡', progress: 'M03✅·M04✅·M01广播已出', waiting: 'M01 SYSLOG' },
{ id: 'DEV-003', name: '燕樊', module: '对话UI+M07+M15', status_icon: '🟡', progress: '对话UI环节1✅·M07✅·M15广播已出', waiting: 'M15 SYSLOG' },
{ id: 'DEV-004', name: '之之(秋秋)', module: '钉钉机器人', status_icon: '🟡', progress: '环节0广播已出', waiting: 'SYSLOG' },
{ id: 'DEV-005', name: '小草莓', module: '状态看板+M12+M13', status_icon: '🟢', progress: '五连胜·前端毕业', waiting: '看板环节2' },
{ id: 'DEV-006', name: '小蔡同学', module: '已回收', status_icon: '⬜', progress: '模块已回收', waiting: '—' },
{ id: 'DEV-007', name: '四月', module: '已回收', status_icon: '⬜', progress: '模块已回收', waiting: '—' },
{ id: 'DEV-008', name: '小锋', module: '待分配', status_icon: '⬜', progress: '未启动', waiting: '—' },
{ id: 'DEV-009', name: '花尔', module: 'M05用户中心', status_icon: '🟡', progress: 'M05环节0✅', waiting: 'M05环节1等SYSLOG' },
{ id: 'DEV-010', name: '桔子', module: 'M06工单管理', status_icon: '🟢', progress: 'M06环节0✅', waiting: 'M06环节1广播待出' },
{ id: 'DEV-011', name: '匆匆那年', module: '待分配', status_icon: '🟡', progress: 'BC-000广播已出', waiting: 'BC-000 SYSLOG' }
]
});
});
// === API 3:广播列表 ===
app.get('/api/v1/broadcasts', (req, res) => {
res.json({
total: 8,
broadcasts: [
{ id: 'BC-YY-005', developer: 'DEV-001 页页', module: '后端中间层', title: '环节5·小坍缩核陪伴版', status: 'dispatched', dispatched_at: '2026-03-03' },
{ id: 'BC-FM-M01-001', developer: 'DEV-002 肥猫', module: 'M01登录界面', title: '舒舒引导·M01', status: 'dispatched', dispatched_at: '2026-03-02' },
{ id: 'BC-YF-M15-001', developer: 'DEV-003 燕樊', module: 'M15云盘系统', title: 'M15·环节1', status: 'dispatched', dispatched_at: '2026-03-03' },
{ id: 'BC-ZZ-000', developer: 'DEV-004 之之', module: '钉钉机器人', title: '秋秋引导·环节0', status: 'dispatched', dispatched_at: '2026-03-01' },
{ id: 'BC-XCM-KB-002', developer: 'DEV-005 小草莓', module: '状态看板', title: '看板环节2', status: 'pending', dispatched_at: null },
{ id: 'BC-M05-002-HE', developer: 'DEV-009 花尔', module: 'M05用户中心', title: 'M05环节1', status: 'dispatched', dispatched_at: '2026-03-04' },
{ id: 'BC-M06-001-JZ', developer: 'DEV-010 桔子', module: 'M06工单管理', title: 'M06环节1', status: 'pending', dispatched_at: null },
{ id: 'BC-000-CCNN', developer: 'DEV-011 匆匆那年', module: 'DevLog部署', title: 'BC-000·知秋壳子', status: 'dispatched', dispatched_at: '2026-03-04' }
]
});
});
// === 健康检查 ===
app.get('/api/v1/health', (req, res) => {
res.json({ status: 'ok', timestamp: new Date().toISOString() });
});
app.listen(PORT, () => {
console.log(`🌊 HoloLake API running on port ${PORT}`);
});
📦 package.json
{
"name": "hololake-dashboard-api",
"version": "1.0.0",
"description": "HoloLake Era · 状态看板API(静态数据版)",
"main": "api-routes.js",
"scripts": { "start": "node api-routes.js" },
"dependencies": { "express": "^4.18.2", "cors": "^2.8.5" }
}
🚀 页页部署步骤(PM2 + Nginx)
第一步:上传代码到服务器
# 在服务器上创建目录
mkdir -p /var/www/hololake-api
cd /var/www/hololake-api
# 把 api-routes.js 和 package.json 放进去
# 然后安装依赖
npm install
第二步:PM2 启动
pm2 start api-routes.js --name hololake-api
pm2 save
pm2 startup
第三步:Nginx 配置反向代理
在 Nginx 配置文件中加入(guanghulab.com 的 server 块里):
location /api/v1/ {
proxy_pass http://127.0.0.1:3001;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_cache_bypass $http_upgrade;
}
第四步:重启 Nginx
sudo nginx -t
sudo systemctl reload nginx
第五步:验证
curl https://guanghulab.com/api/v1/health
curl https://guanghulab.com/api/v1/system/status
curl https://guanghulab.com/api/v1/developers
curl https://guanghulab.com/api/v1/broadcasts
🔮 后续迭代方向
当前版本:v1.0.0-static(写死JSON数据)
下一步:接入 Notion API,从主控台数据库实时拉取开发者进度和广播状态,实现动态数据。当前先用静态数据让小草莓的看板前端跑通。