📊 保康县统计信息平台

架构全景 · 子域名体系 · 数据流向 · 目录结构
📅 2026年7月 🔖 v2.0 🏛️
🏗️ 总体架构
🌐 用户浏览器
📱 企业微信
↓
Cloudflare CDN + DNS
Cloudflare Tunnel
↓
localhost:8081
Nginx Proxy (Docker)
↓
静态文件 / 反向代理
📊 tj.保康.top
统计局网站
📖 bearqh.fun
个人导航 & 子服务
🤖 Hermes Agent
AI 代理 (8642)
🗂️ Wiki
知识库
↓
持久化
💾 NFS / 本地卷
🗄️ SQLite (报表数据)

🔑 架构要点

  • 全站部署在单机 Docker(Windows Docker Desktop)
  • Nginx 统一入口(端口 8081),按 server_name 分发到静态目录或后端服务
  • Cloudflare Tunnel 作为公网入口,无需公网 IP,DNS + ingress 控制域名路由
  • 统计报表数据服务 纯 Python 标准库实现,零第三方依赖,SQLite 持久化
  • 静态页面优先:一级页面都是纯 HTML+CSS,报表编辑器是 SPA
🌐 子域名体系

通过 Cloudflare Tunnel 统一接入,Nginx 按 server_name 路由。

🏛️ 保康.top(统计局)

tj.保康.top
门户网站 · 7个栏目 + 38个页面
首页最新资讯政府信息公开统计数据
统计公报普查专栏互动交流数据服务平台
wiki.保康.top
🧠 知识库浏览器 — vault.熊.online
Obsidian 知识包含模型的 Web 版,64+ 篇笔记可搜索可浏览
知识管理Wiki
保康.top
保康县概览页(baokang/)
概览介绍

🐻 bearqh.fun(个人服务)

doc.bearqh.fun ← 你在这里
保康统计平台架构说明文档
文档架构
bearqh.fun
个人服务导航首页
导航
hermes.bearqh.fun
Hermes Agent API Server(→ 172.20.0.8:8642)
API

🌐 熊.online(全部服务)

熊.online / welcome.熊.online
全站导航 / 欢迎页
info.熊.online
部署总览 — 全栈架构 / 容器 / 网关拓扑
xxgg.熊.online
信息公告
kb.熊.online
知识压缩
bbs.熊.online
讨论版
nextcloud.熊.online
NextCloud 网盘(→ 172.22.0.3:80)
exp / vm.熊.online
在线终端、虚拟机实验
📁 文件目录树
nginx/html/tj/ ← 网站(38 个 HTML)
│ index.html ← 首页(机构信息/经济数据/三列资讯)
│
├─ zxzx/ ← 最新资讯
│ index.html ← 栏目列表页
├─ news/ ← 15篇新闻详情页
shangbannian-jingji-fenxi.html 等
└─ notice/ ← 5篇通知公告详情页
zhifa-jiancha-tongzhi.html 等
│
├─ zwgk/ ← 政府信息公开
index.html
│
├─ tjsj/ ← 统计数据
index.html ← 栏目列表
2025-shangbannian-jingji.html ← 5篇统计分析详情
│
├─ tjgb/ ← 统计公报
index.html
│
├─ pczl/ ← 普查专栏
index.html
│
├─ hdjl/ ← 互动交流
index.html
│
└─ reports/ ← 数据服务平台
index.html ← SPA,目录 + 数据编辑器

│
nginx/conf/conf.d/default.conf ← Nginx 站点配置
docker-compose.yml ← Docker Compose 编排
reports_api.py ← 报表数据 API(Python)
reports-data/ ← SQLite 数据库目录
📊 数据服务平台

位于 tj.保康.top/reports/,提供统计报表目录管理与数据编辑。

浏览器 SPA
reports/index.html
↓ /api/*
Nginx 代理
↓ host.docker.internal:8620
Python API
标准库 HTTPServer
↓
SQLite
reports.db

API 端点

方法路径说明
GET/api/reports获取全部报表列表
GET/api/reports/:id获取单个报表详情(含数据)
POST/api/reports新增报表
PUT/api/reports/:id更新报表信息
DELETE/api/reports/:id删除报表
GET/api/reports/:id/data获取报表数据(表格)
PUT/api/reports/:id/data保存报表数据
POST/api/reports/:id/data/row添加空白行
POST/api/reports/:id/data/import导入表格数据
GET/api/reports/:id/csv导出 CSV(带 BOM)
GET/api/export全部数据备份导出

数据模型

reports 表
id, cat, name, freq, source, owner, status, created_at, updated_at
report_data 表
id, report_id, data(JSON: {columns, rows}), updated

💡 前端功能

  • 目录模式:28个报表按分类分组展示,状态标签、数据标记
  • 编辑模式:点击报表名进入,可在线编辑单元格
  • 增删行列:添加/删除行和列
  • 导入表格:从 Excel/CSV 粘贴数据(Tab/逗号分隔)
  • 导出 CSV:含 UTF-8 BOM,Excel 直接打开
  • 增量保存:1.5s 防抖自动保存,保存状态指示
  • 数据初始化:5个主要报表预设指标模板
🔄 数据流向

🌐 外网访问流程

用户 → https://tj.保康.top/reports/
↓ DNS: CNAME → Cloudflare CDN
↓ Cloudflare Tunnel → localhost:8081 (nginx-proxy)
↓ Nginx 按 server_name → /usr/share/nginx/html/tj/reports/
↓ SPA 加载后请求 /api/reports → Nginx 转发到 host.docker.internal:8620
↓ Python API → SQLite → JSON 响应

🖥️ 本地开发流程

WSL 终端 → python3 reports_api.py → localhost:8620
浏览器 → http://localhost:8620/api/reports
或 → http://localhost:8081/tj/reports/ (通过nginx)

🔧 运维要点

  • 新增子域名:在 nginx 加 server block → 在 tunnel ingress 加规则 → 创建 DNS 记录
  • 更新静态页面:直接改 nginx/html/ 下的文件,nginx 即时响应
  • 报表数据备份:前端"导出备份"按钮下载 JSON,或直接备份 /data/reports.db 文件
  • API 服务重启:Python 进程退出后自动重启(docker restart reports-api)
  • 端口:nginx=8081, hermes-api=8642, hermes-webhook=8644, reports-api=8620
⚙️ 技术栈
组件选型说明
🌐 CDN / DNSCloudflare免费计划,CDN 加速 + Tunnel 穿透
🚇 内网穿透Cloudflare Tunnelcloudflared 容器,无需公网 IP
🔄 反向代理Nginx (Alpine)Docker 容器,统一流量入口 8081
📄 前端框架纯 HTML + CSS + Vanilla JS零依赖,无构建步骤
🔧 报表 APIPython 标准库http.server + sqlite3,零第三方依赖
🗄️ 数据库SQLite (WAL模式)单文件,零运维
🐳 容器编排Docker ComposeWindows Docker Desktop
🤖 AI 代理Hermes AgentWeCom 接入,自动运维
📱 消息平台企业微信通知 / 报表催报