guanwei 1.3.1 → 1.3.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +28 -8
- package/dist/assets/index-DVd66cjI.js +102 -0
- package/dist/index.html +1 -1
- package/package.json +13 -7
- package/packages/guanwei-api/package.json +26 -0
- package/packages/guanwei-api/src/mcp-http.ts +89 -0
- package/packages/guanwei-api/src/mcp.ts +108 -0
- package/packages/guanwei-api/src/routes/arts.ts +23 -0
- package/packages/guanwei-api/src/routes/chart.ts +24 -0
- package/packages/guanwei-api/src/server.ts +73 -0
- package/scripts/check-boundary.mjs +80 -0
- package/scripts/check-package.mjs +71 -0
- package/scripts/credentials.mjs +52 -0
- package/scripts/github-history-cleanup.mjs +140 -0
- package/scripts/npm-release.mjs +79 -0
- package/scripts/preflight-release.sh +29 -0
- package/scripts/release.sh +8 -3
- package/server/package.json +24 -0
- package/server/src/index.ts +58 -16
- package/server/src/routes/ai.ts +11 -17
- package/server/src/routes/divine.ts +36 -29
- package/server/src/routes/hour.ts +4 -0
- package/server/src/routes/tarot.ts +30 -7
- package/server/src/routes/users.ts +99 -48
- package/server/src/services/auth.ts +53 -0
- package/server/src/services/chartBrief.ts +10 -0
- package/server/src/services/dataDir.ts +80 -0
- package/server/src/services/divineStore.ts +5 -2
- package/server/src/services/duanyu.ts +3 -3
- package/server/src/services/llmProvider.ts +4 -3
- package/server/src/services/usersDb.ts +45 -0
- package/shared/core/data/gua64.ts +5 -5
- package/shared/core/data/qimen.ts +11 -9
- package/shared/core/data/ziwei.ts +20 -15
- package/shared/core/engine/bazi.ts +64 -13
- package/shared/core/engine/calendar.ts +18 -5
- package/shared/core/engine/chart.ts +3 -1
- package/shared/core/engine/liuren.ts +32 -13
- package/shared/core/engine/liuyao.ts +6 -1
- package/shared/core/engine/qimen.ts +102 -60
- package/shared/core/engine/trueSolarTime.ts +9 -6
- package/shared/core/engine/xiaoliuren.ts +6 -2
- package/shared/core/engine/ziwei.ts +55 -1
- package/shared/core/types.ts +10 -6
- package/src/components/arts/XiaoliurenArt.tsx +1 -1
- package/src/pages/DemoPage.tsx +1 -1
- package/src/services/api.ts +18 -1
- package/src/utils/userStore.ts +6 -2
- package/vite.config.ts +7 -3
- package/dist/assets/index-O2O9peYE.js +0 -102
- package/dist/assets/index-O2O9peYE.js.map +0 -1
- package/server/src/data/db.json +0 -7016
- package/server/src/data/guanwei.db +0 -0
package/README.md
CHANGED
|
@@ -123,6 +123,10 @@ curl http://127.0.0.1:3020/v1/arts # 九术能力清单 + 参数 sch
|
|
|
123
123
|
```
|
|
124
124
|
|
|
125
125
|
> 排盘免费(纯计算零 token);协议风格与未来托管 API 一致(/v1、统一错误码),本地自部署与第三方集成同源。
|
|
126
|
+
>
|
|
127
|
+
> 安全默认:服务只绑 `127.0.0.1` 并内置 per-IP 限流(默认 120 次/分,`GUANWEI_API_RATE_MAX` 可调)、SSE 连接上限与闲置回收。
|
|
128
|
+
> 如需公网/局域网暴露:`GUANWEI_API_HOST=0.0.0.0 npm start`,并请自行加反向代理与更严格的网关限流。
|
|
129
|
+
> Docker 用户可用 `docker compose --profile api up -d` 启动该服务(容器内自动置 `GUANWEI_API_HOST=0.0.0.0`)。
|
|
126
130
|
|
|
127
131
|
## 🚀 快速开始(一行命令)
|
|
128
132
|
|
|
@@ -184,7 +188,7 @@ guanwei start
|
|
|
184
188
|
|
|
185
189
|
镜像:`ghcr.io/rubyccll/guanwei-guanwei-web` / `guanwei-guanwei-backend`;端口冲突时 `WEB_PORT=5180 API_PORT=3020 docker compose up -d` 覆盖。也可直接 `docker pull ghcr.io/rubyccll/guanwei-guanwei-web:latest`。
|
|
186
190
|
|
|
187
|
-
#### 方式六:本地 Node.js(≥ 22.
|
|
191
|
+
#### 方式六:本地 Node.js(≥ 22.13.0,需 node:sqlite 内置支持)
|
|
188
192
|
|
|
189
193
|
```bash
|
|
190
194
|
./scripts/setup.sh # 交互式:选服务商 + 输入 Key
|
|
@@ -236,24 +240,40 @@ cd server && npx tsx scripts/divineStoreSmoke.ts # SQLite 存储冒烟
|
|
|
236
240
|
├── server/
|
|
237
241
|
│ ├── src/
|
|
238
242
|
│ │ ├── routes/ # divine(排盘)/ ai(解读)/ users / hour(时辰反推)
|
|
239
|
-
│ │ └── services/ # promptBuilder / llmProvider / divineStore /
|
|
240
|
-
│ ├── data/ # SQLite 与用户数据(gitignore)
|
|
243
|
+
│ │ └── services/ # promptBuilder / llmProvider / divineStore / dataDir / auth / usersDb
|
|
241
244
|
│ └── .env.example
|
|
242
245
|
├── shared/core/ # 前后端共用引擎(排盘算法/数据,单一副本)
|
|
243
|
-
├──
|
|
246
|
+
├── packages/guanwei-api/# 开放 API(REST /v1 + MCP)
|
|
247
|
+
├── scripts/ # setup.sh / guanwei(CLI)/ release.sh / preflight-release.sh / check-*.mjs
|
|
244
248
|
├── deploy/ # nginx 配置(Docker 部署)
|
|
245
249
|
├── .devcontainer/ # GitHub Codespaces 模板
|
|
246
250
|
├── Dockerfile.web / Dockerfile.server / docker-compose.yml
|
|
247
|
-
├── docs/
|
|
251
|
+
├── docs/assets/ # 对外素材(banner/截图/GIF/示例报告)
|
|
252
|
+
├── internal/ # 内部文档(规划/监控/SOP/草稿)——**仅本地,git 忽略,永不公开**
|
|
248
253
|
└── tests/ # 测试(含回归集)
|
|
249
254
|
```
|
|
250
255
|
|
|
256
|
+
### 公开区 / 内部区约定(重要)
|
|
257
|
+
|
|
258
|
+
| 区域 | 位置 | 是否公开 |
|
|
259
|
+
|---|---|---|
|
|
260
|
+
| 源码与测试 | `src/` `server/src/` `shared/` `packages/` `tests/` `scripts/` | 公开(git + npm 包) |
|
|
261
|
+
| 对外素材 | `docs/assets/` | 公开(仅 GitHub 展示,不进 npm 包) |
|
|
262
|
+
| 内部文档 | `internal/` | **仅本地**(git 全目录忽略;请勿把内部内容放进公开区) |
|
|
263
|
+
| 运行时数据 | `~/.guanwei/data`(`GUANWEI_DATA_DIR` 可覆盖) | **永不公开**(物理隔离于项目树之外) |
|
|
264
|
+
|
|
265
|
+
发布前自检:`./scripts/preflight-release.sh` —— 依次校验仓库边界、npm 包内容(文件名 + 内容级扫描)、类型、全量测试、版本一致性;CI 与 release 流水线同样内置边界与包内容守卫。
|
|
266
|
+
|
|
251
267
|
## 🔐 安全说明
|
|
252
|
-
-
|
|
253
|
-
-
|
|
268
|
+
- **鉴权**:已内置 token 鉴权(`X-Guanwei-Token`,30 天滚动过期)+ scrypt(随机盐)密码哈希;档案/记录/详情接口均校验归属,归属不符统一 404(不泄露资源存在性)
|
|
269
|
+
- **默认最小暴露**:后端默认只绑 `127.0.0.1`(容器/局域网用 `HOST=0.0.0.0` 显式放开);开放 API 默认只绑本机并内置 per-IP 限流;CORS 默认仅本机来源
|
|
270
|
+
- **限流**:`/api/ai` 30/分、起占 60/分、登录/注册 10/分、其余计算端点 120/分(`GUANWEI_RATE_*` 可调);反代下通过 `trust proxy` 取真实客户端 IP
|
|
271
|
+
- **密钥**:仅存于本地 `server/.env`(已 gitignore),仓库只提供 `.env.example` 模板;Docker 构建排除 `.env`;发布流水线有内容级扫描(密钥形态命中即拒绝发布)
|
|
272
|
+
- **数据隔离**:运行时数据(用户档案 + 占卜记录)默认在 `~/.guanwei/data`,位于项目树之外——npm/Docker 构建上下文物理上取不到;`scripts/check-boundary.mjs` 与 `scripts/check-package.mjs` 在 CI/发布前双重把关
|
|
273
|
+
- **隐私**:出生信息与人生经历会发送给所配置的 LLM 服务商用于生成解读;如需完全离线,请仅使用本地排盘能力(不调用 `/api/ai/*`)
|
|
254
274
|
- AI 报告质量门槛:结构评分不达标不入库,自动留档供改进提示词
|
|
255
275
|
- 测试数据全部虚构/匿名化,不含真实用户隐私;真实案例仅存本地(git 忽略)
|
|
256
|
-
- ⚠️
|
|
276
|
+
- ⚠️ **部署边界**:默认配置面向「本地/内网自部署」。若需公网访问,请在前置反向代理上加网关鉴权(Nginx basic auth / Authelia / Cloudflare Access 等),并显式设置 `GUANWEI_ALLOWED_ORIGINS` 与更严格限流。
|
|
257
277
|
|
|
258
278
|
## 📄 示例输出
|
|
259
279
|
|