diff --git a/.obsidian/app.json b/.obsidian/app.json index 9e26dfe..e0f0673 100644 --- a/.obsidian/app.json +++ b/.obsidian/app.json @@ -1 +1,3 @@ -{} \ No newline at end of file +{ + "attachmentFolderPath": "docs/assets/images" +} diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json index 7a2225e..82da1f6 100644 --- a/.obsidian/workspace.json +++ b/.obsidian/workspace.json @@ -11,14 +11,10 @@ "id": "c1c9b81829eaeb44", "type": "leaf", "state": { - "type": "markdown", - "state": { - "file": "docs/Obsidian笔记体系/Projects/agent/未来规划.md", - "mode": "source", - "source": false - }, + "type": "empty", + "state": {}, "icon": "lucide-file", - "title": "未来规划" + "title": "新标签页" } } ] @@ -183,8 +179,31 @@ "command-palette:打开命令面板": false } }, - "active": "c1c9b81829eaeb44", + "active": "5b497a77c6d68c73", "lastOpenFiles": [ + "docs/Obsidian笔记体系/Projects/女童生长激素项目/宝塔面板.md.tmp.16048.1779593050820", + "docs/Obsidian笔记体系/Projects/女童生长激素项目/ssl证书申请.md.tmp.16048.1779593050693", + "docs/assets/images/Pasted image 20260524111918.png", + "docs/assets/images/Pasted image 20260524104329.png", + "docs/assets/images", + "docs/assets", + "Pasted image 20260524111918.png", + "Pasted image 20260524104539.png", + "Pasted image 20260524104404.png", + "docs/Obsidian笔记体系/Projects/女童生长激素项目/SSL证书续期_20260524.md", + "docs/Obsidian笔记体系/Projects/女童生长激素项目/宝塔面板.md", + "docs/Obsidian笔记体系/Projects/女童生长激素项目/ssl证书申请.md", + "Pasted image 20260524104329.png", + "docs/Obsidian笔记体系/Projects/女童生长激素项目/项目资料.md", + "docs/Obsidian笔记体系/Projects/女童生长激素项目/后台检查报告_20260524.md", + "docs/Obsidian笔记体系/Projects/女童生长激素项目/生长激素缺乏预测模型项目需求文档.md", + "docs/Obsidian笔记体系/Projects/女童生长激素项目/使用系统nginx.md", + "docs/Obsidian笔记体系/Projects/陪诊/瑞来健康项目资料.md", + "docs/Obsidian笔记体系/Projects/女童生长激素项目/宝塔nginx和系统nginx对比分析.md", + "docs/Obsidian笔记体系/Projects/女童生长激素项目/配置完成.md", + "docs/Obsidian笔记体系/Projects/女童生长激素项目/项目目录位置.md", + "docs/Obsidian笔记体系/Projects/女童生长激素项目/后台管理网址.md", + "docs/Obsidian笔记体系/Projects/agent/未来规划.md", "docs/Obsidian笔记体系/Projects/agent/agent资料.md", "docs/Obsidian笔记体系/Projects/agent/wk3.md", "docs/Obsidian笔记体系/Projects/agent/wk4.md", @@ -194,42 +213,19 @@ "docs/Obsidian笔记体系/Projects/陪诊/数据库配置.md", "docs/Obsidian笔记体系/Projects/陪诊/修复计划0512.md", "docs/Obsidian笔记体系/Projects/陪诊/蓝湖.md", - "docs/Obsidian笔记体系/Projects/陪诊/瑞来健康项目资料.md", "docs/Obsidian笔记体系/Projects/个人知库", "docs/Obsidian笔记体系/Projects/陪诊/后台管理系统访问和登录信息.md", "docs/学习笔记/honor工作资料.md", "docs/学习笔记/效率提升.md", - "docs/adb调试命令/adb常用命令.md", - "docs/Obsidian笔记体系/README.md", - "docs/Obsidian笔记体系/Projects/agent/下一步计划0505.md", "未命名 1.base", "未命名.base", "未命名 3.base", - "文档完善提示词模板.md", "未命名 2.base", "Pasted image 20260510081221.png", "Pasted image 20260510095333.png", "Pasted image 20260510091232.png", - "docs/cursor/cursor.md", - "docs/cursor/cursor使用技巧.md", - "docs/Obsidian笔记体系/Projects/agent/项目价值评估.md", - "docs/Obsidian笔记体系/Projects/agent/新方向.md", - "docs/Obsidian笔记体系/Projects/claude code/自主agent改造计划方案.md", - "docs/Obsidian笔记体系/Projects/claude code/claude-code启动.md", - "docs/Obsidian笔记体系/Projects/agent/我想创建一个类似openclaw的agent,和现在的平台有和区别呢.md", - "docs/Obsidian笔记体系/Projects/agent/未来规划.md", - "docs/Obsidian笔记体系/Projects/agent/天工智能体定位.md", "Pasted image 20260510133924.png", - "Pasted image 20260510092432.png", - "Pasted image 20260510083609.png", "docs/Obsidian笔记体系/Projects/瑞来兹软件公司组织架构/产品经理", - "docs/Obsidian笔记体系/Projects/瑞来兹软件公司组织架构/测试", - "docs/Obsidian笔记体系/Projects/瑞来兹软件公司组织架构/新建文件夹", - "docs/Obsidian笔记体系/Projects/瑞来兹软件公司组织架构/开发", - "docs/Obsidian笔记体系/Projects/瑞来兹软件公司组织架构/架构师", - "Pasted image 20260129111501.png", - "Pasted image 20260129111451.png", - "Pasted image 20260129111437.png", - "Pasted image 20260129111431.png" + "docs/Obsidian笔记体系/Projects/瑞来兹软件公司组织架构/测试" ] } \ No newline at end of file diff --git a/docs/Obsidian笔记体系/Projects/女童生长激素项目/SSL证书续期_20260524.md b/docs/Obsidian笔记体系/Projects/女童生长激素项目/SSL证书续期_20260524.md new file mode 100644 index 0000000..10f8f0e --- /dev/null +++ b/docs/Obsidian笔记体系/Projects/女童生长激素项目/SSL证书续期_20260524.md @@ -0,0 +1,148 @@ +# SSL 证书续期操作指南 + +**日期:** 2026-05-24 +**操作结果:** ✅ 续期成功,新证书 2026-05-24 ~ 2026-08-22 +**域名:** ruilaizipj.com, www.ruilaizipj.com +**上次过期:** 2026-04-28 + +--- + +## 方式一:恢复宝塔面板续期(推荐 — 支持自动续期) + +### 1. 登录服务器 + +通过腾讯云控制台 VNC 或 Webshell 登录服务器。 + +### 2. 启动宝塔面板 + +```bash +# 检查面板状态 +bt status + +# 如果未运行,启动面板 +bt start + +# 确认面板端口 +bt default +``` + +如果面板启动失败,尝试: + +```bash +/etc/init.d/bt start +# 或 +systemctl start bt-panel +``` + +### 3. 浏览器登录面板 + +``` +https://101.43.95.130:38193/e626af3f +``` + +- 用户名:`0dbelvc8` +- 密码:`testpasswd` + +如果忘记密码,在服务器上重置: + +```bash +cd /www/server/panel && btpython tools.py panel testpasswd +``` + +### 4. 申请新证书 + +1. 进入:**网站** → 选择站点 `101.43.95.130`(或 `www.ruilaizipj.com`) +2. 点击 **SSL** → **Let's Encrypt** +3. 验证方式:**文件验证** +4. 勾选域名:`ruilaizipj.com` 和 `www.ruilaizipj.com` +5. 点击 **申请证书** +6. 申请成功后点击 **部署** + +### ⚠️ 常见问题:续签提示 "部署失败,请关闭SSL后重新尝试部署" + +如果证书已过期,直接点 **"续签证书"** 可能会报这个错。原因:过期证书仍占用 SSL 配置,导致新证书无法部署。 + +**解决方法:** +1. 在 SSL 页面先点击 **"关闭 SSL"** +2. 关闭后回到 Let's Encrypt 标签 +3. 重新勾选域名,点击 **"申请证书"** +4. 申请成功后点击 **"部署"** + +### 5. 验证证书 + +```bash +# 检查证书是否更新 +openssl x509 -in /www/server/panel/vhost/cert/101.43.95.130/fullchain.pem -noout -dates + +# 测试 HTTPS 访问 +curl -I https://www.ruilaizipj.com +``` + +应返回 HTTP 200。 + +### 6. (建议)切换回宝塔 Nginx 实现自动续期 + +当前使用系统 Nginx,宝塔 Nginx 已停。宝塔 Nginx 支持 Let's Encrypt 自动续期,避免再次过期。 + +```bash +# 停止系统 nginx +systemctl stop nginx +systemctl disable nginx + +# 启动宝塔 nginx +/etc/init.d/nginx start + +# 确认 80/443 端口由宝塔 nginx 监听 +netstat -tlnp | grep -E ':80|:443' +``` + +然后在宝塔面板 **网站** → **SSL** 中确认 **"自动续期"** 已开启。 + +--- + +## 方式二:命令行 certbot 续期(备用) + +如果宝塔面板无法恢复,直接用 certbot: + +```bash +# 1. 安装 certbot +yum install -y epel-release +yum install -y certbot + +# 2. 停止 nginx(certbot 需要 80 端口做验证) +systemctl stop nginx + +# 3. 申请证书(webroot 方式) +certbot certonly --webroot \ + -w /www/wwwroot/code/public \ + -d ruilaizipj.com \ + -d www.ruilaizipj.com \ + --email 你的邮箱 + +# 4. 更新 nginx 配置指向新证书 +vi /etc/nginx/conf.d/default.conf +``` + +修改证书路径: + +```nginx +ssl_certificate /etc/letsencrypt/live/ruilaizipj.com/fullchain.pem; +ssl_certificate_key /etc/letsencrypt/live/ruilaizipj.com/privkey.pem; +``` + +```bash +# 5. 启动 nginx +systemctl start nginx + +# 6. 设置自动续期 cron +echo "0 3 * * * certbot renew --quiet --post-hook 'systemctl reload nginx'" | crontab - +``` + +--- + +## 验证清单 + +- [ ] `curl -I https://www.ruilaizipj.com` 返回 200 +- [ ] `curl -I https://ruilaizipj.com` 返回 200 +- [ ] 浏览器访问不提示证书错误 +- [ ] 证书有效期确认在 90 天内 diff --git a/docs/Obsidian笔记体系/Projects/女童生长激素项目/ssl证书申请.md b/docs/Obsidian笔记体系/Projects/女童生长激素项目/ssl证书申请.md index 3435c53..51818a3 100644 --- a/docs/Obsidian笔记体系/Projects/女童生长激素项目/ssl证书申请.md +++ b/docs/Obsidian笔记体系/Projects/女童生长激素项目/ssl证书申请.md @@ -66,5 +66,5 @@ curl -I https://ruilaizipj.com 去宝塔 SSL -> Let's Encrypt 页面,把 ruilaizipj.com 也勾上,重新点一次 申请证书。 如果你把“申请证书失败的提示信息”贴出来(或截图),我可以直接告诉你是哪一项(DNS/80端口/验证文件)没通过并给出具体修复命令。 -![[Pasted image 20260128165805.png]] +![](../../../assets/images/Pasted%20image%2020260128165805.png) diff --git a/docs/Obsidian笔记体系/Projects/女童生长激素项目/后台检查报告_20260524.md b/docs/Obsidian笔记体系/Projects/女童生长激素项目/后台检查报告_20260524.md new file mode 100644 index 0000000..fdfa8ca --- /dev/null +++ b/docs/Obsidian笔记体系/Projects/女童生长激素项目/后台检查报告_20260524.md @@ -0,0 +1,162 @@ +# 生长激素缺乏预测模型 — 后台检查报告 + +**检查日期:** 2026-05-24 +**检查范围:** 后台管理系统 + 小程序 API +**检查方式:** 远程 API 测试(未登录服务器) + +--- + +## 一、系统概览 + +| 项目 | 值 | +|------|-----| +| 服务器 IP | 101.43.95.130 | +| 后台地址 | http://101.43.95.130/adminghd/login | +| 正式域名 | https://www.ruilaizipj.com | +| 框架 | ThinkPHP 5.0 | +| PHP 版本 | 5.6 | +| 数据库 | MySQL,库名 `ruilai`,charset=`utf8`,表前缀=`t_sys_` | +| Web 服务器 | 系统 Nginx(宝塔 Nginx 已停止) | +| 代码根目录 | /www/wwwroot/code | +| 后台模块 | /www/wwwroot/code/application/adminghd | +| 小程序 API | /www/wwwroot/code/application/app | + +--- + +## 二、功能测试结果 + +### 2.1 后台管理系统 + +| 功能 | 接口 | 状态 | 说明 | +|------|------|------|------| +| 登录页面 | GET /adminghd/login | ✅ | HTTP 200 | +| 登录验证 | POST /adminghd/Login/login | ✅ | 账号 13212345678 / 123456 | +| 用户信息 | /adminghd/Menu/getUserInfor | ✅ | 管理员 | +| 微信用户列表 | POST /adminghd/Wechatinfro/getWechatUserList | ✅ | 暂无注册用户 | +| 计算记录列表 | POST /adminghd/Wechatinfro/getWechatRecordList | ✅ | ~75 条记录,15 页 | +| 资讯列表 | POST /adminghd/Wechatset/getWechatRealTimeInfoList | ✅ | 2 条资讯 | +| 记录中文搜索 | POST ...getWechatRecordList (title=诺言) | ❌ | 返回空,编码问题 | + +### 2.2 小程序 API + +| 功能 | 接口 | 状态 | 说明 | +|------|------|------|------| +| 计算 (Ruilaiwechat) | POST /app/Ruilaiwechat/calculate | ✅ | 计算结果正确 | +| 计算 (Ghdwechat) | POST /app/Ghdwechat/calculate | ⚠️ | 英文名正常,中文名报错 | +| 历史记录查询 | POST /app/Ghdwechat/selectRecordList | ✅ | 正常分页返回 | +| 资讯列表 | POST /app/Ghdwechat/selectRealtimeInfoList | ✅ | 正常返回 | + +### 2.3 计算模型验证 + +**后端公式:** +``` +P = exp(-5.908 + 0.008×IGF-1 + 2.146×LH + 0.286×子宫厚度) / + (1 + exp(-5.908 + 0.008×IGF-1 + 2.146×LH + 0.286×子宫厚度)) +``` + +**验证输入:** IGF=250, LH=0.8, 子宫厚度=10 + +**手算过程:** +``` +Y = -5.908 + 0.008×250 + 2.146×0.8 + 0.286×10 + = -5.908 + 2.0 + 1.7168 + 2.86 + = 0.6688 + +P = e^0.6688 / (1 + e^0.6688) + = 1.9518 / 2.9518 + = 0.661 +``` + +**API 返回:** `calculate_resutlt: 0.661` — **结果一致,公式实现正确。** + +--- + +## 三、发现的问题 + +### 问题 1:字符编码错误(严重) + +**现象:** Ghdwechat/calculate 接口传入中文姓名时抛出异常: + +``` +PDOException: SQLSTATE[HY000]: General error: 1366 +Incorrect string value: '\xB2\xE2\xCA\xD4\xBB\xBC...' for column 'name' at row 1 +``` + +- 错误文件:`/www/wwwroot/code/application/app/controller/Ghdwechat.php` 第 134 行 +- 写入表:`t_sys_wechat_calculate_record` +- 根因分析:数据库 charset 为 `utf8`(3字节UTF-8),`\xB2\xE2\xCA\xD4\xBB\xBC` 是 GBK 编码的"测试患"。说明请求数据以 GBK 编码到达 PHP,但 MySQL 连接期望 UTF-8,导致不兼容。 +- 影响范围:小程序端如传入中文姓名,计算将失败 +- 注意:Ruilaiwechat/calculate 接口无此问题(可能是不同的编码处理) + +**数据库配置(来自异常页面的 dump):** +``` +type: mysql +hostname: 127.0.0.1 +database: ruilai +charset: utf8 ← 不是 utf8mb4 +prefix: t_sys_ +debug: true +``` + +### 问题 2:后台中文搜索不生效(中等) + +**现象:** 在后台计算记录列表中搜索"诺言"(数据库中存在多条该名字的记录),返回空结果。 + +- 接口:`POST /adminghd/Wechatinfro/getWechatRecordList` (title=诺言) +- 返回:`{"lists":[],"lastPage":0}` +- 根因:与问题1同源 — 搜索关键词和数据库存储的编码不一致 + +### 问题 3:生产环境 Debug 模式开启(严重-安全) + +**现象:** API 出错时抛出完整的 ThinkPHP 异常页面,暴露: + +- 完整文件路径(/www/wwwroot/code/...) +- 数据库配置信息(主机、库名、表前缀) +- 完整的 SQL 语句 +- 调用堆栈 + +**配置:** `app_debug: true`(位于 application/config.php) + +**风险:** 攻击者可利用这些信息进行精准攻击。 + +### 问题 4:PHP 5.6 版本过旧(中等) + +PHP 5.6 已于 2018 年 12 月 31 日 EOL,不再接收安全更新。存在已知的远程代码执行漏洞(CVE-2019-11043 等)。 + +--- + +## 四、当前数据库表使用情况 + +| 数据表 | 记录数 | 说明 | +|--------|--------|------| +| t_sys_user | 至少 1 条 | 后台管理员 | +| ghd_wechat_user | 0 条 | 无注册用户 | +| t_sys_wechat_calculate_record | ~75 条 | 计算记录(含最新测试数据) | +| t_sys_wechat_real_time_info | 2 条 | 资讯 | + +--- + +## 五、修复建议(按优先级) + +| 优先级 | 问题 | 修复方案 | +|--------|------|----------| +| 🔴 高 | Debug 模式泄漏信息 | 修改 `application/config.php`:`app_debug => false` | +| 🔴 高 | 字符编码导致中文报错 | 1) 数据库 charset 改为 `utf8mb4`;2) PHP PDO 连接确保 `set names utf8mb4`;3) Ghdwechat.php 排查编码处理逻辑 | +| 🟡 中 | 中文搜索不生效 | 同编码问题修复后应自动解决 | +| 🟡 中 | PHP 5.6 EOL | 升级到 PHP 7.4+(需验证 ThinkPHP 5.0 兼容性) | +| 🟢 低 | 数据库 charset=utf8 | 改为 `utf8mb4` 以支持完整 Unicode(含 emoji 等 4 字节字符) | + +--- + +## 六、未检查项目 + +以下项目需要登录服务器后才能检查: + +- [ ] Nginx 配置文件内容确认 +- [ ] PHP-FPM 运行状态和配置 +- [ ] MySQL 数据库完整表结构 +- [ ] 日志文件(应用日志、错误日志) +- [ ] 磁盘空间和服务器资源 +- [ ] 定时任务 / 数据备份 +- [ ] SSL 证书有效期 +- [ ] 小程序源码(szjs/ 目录) diff --git a/docs/Obsidian笔记体系/Projects/女童生长激素项目/后台管理网址.md b/docs/Obsidian笔记体系/Projects/女童生长激素项目/后台管理网址.md deleted file mode 100644 index e32dac0..0000000 --- a/docs/Obsidian笔记体系/Projects/女童生长激素项目/后台管理网址.md +++ /dev/null @@ -1,3 +0,0 @@ -[https://www.ruilaizipj.com/adminghd/login](https://www.ruilaizipj.com/adminghd/login) -账户:13212345678 -密码:123456 \ No newline at end of file diff --git a/docs/Obsidian笔记体系/Projects/女童生长激素项目/宝塔面板.md b/docs/Obsidian笔记体系/Projects/女童生长激素项目/宝塔面板.md index 4893fea..65f2676 100644 --- a/docs/Obsidian笔记体系/Projects/女童生长激素项目/宝塔面板.md +++ b/docs/Obsidian笔记体系/Projects/女童生长激素项目/宝塔面板.md @@ -1,7 +1,7 @@ https://www.bt.cn/bbs/thread-1172-1-1.html 宝塔面板密码修改 cd /www/server/panel && btpython tools.py panel testpasswd -![[Pasted image 20260128112510.png]] +![](../../../assets/images/Pasted%20image%2020260128112510.png) ## 宝塔面板登录信息 @@ -14,3 +14,8 @@ https://101.43.95.130:38193/e626af3f - 用户名:0dbelvc8 - 密码:testpasswd + + +先关闭然后,点击Let Encrypt重新申请 + +![](../../../assets/images/Pasted%20image%2020260524111918.png) \ No newline at end of file diff --git a/docs/Obsidian笔记体系/Projects/女童生长激素项目/项目目录位置.md b/docs/Obsidian笔记体系/Projects/女童生长激素项目/项目资料.md similarity index 73% rename from docs/Obsidian笔记体系/Projects/女童生长激素项目/项目目录位置.md rename to docs/Obsidian笔记体系/Projects/女童生长激素项目/项目资料.md index c8397fe..6d07bb6 100644 --- a/docs/Obsidian笔记体系/Projects/女童生长激素项目/项目目录位置.md +++ b/docs/Obsidian笔记体系/Projects/女童生长激素项目/项目资料.md @@ -1,3 +1,14 @@ +工作目录 +D:\zhiku\mkdocs\docs\Obsidian笔记体系\Projects +资料目录 +D:\zhiku\mkdocs\docs\Obsidian笔记体系\Projects +D:\zhiku\mkdocs\docs\Obsidian笔记体系\Projects\女童生长激素项目\ssl证书申请.md + +项目资料 +[https://www.ruilaizipj.com/adminghd/login](https://www.ruilaizipj.com/adminghd/login) +账户:13212345678 +密码:123456 + ## 项目根目录: /www/wwwroot/code @@ -34,4 +45,5 @@ └── composer.json        # 项目依赖配置 -后台登录地址 https://www.ruilaizipj.com/adminghd/login 对应的路由在 /www/wwwroot/code/application/adminghd/controller/ 目录下的控制器中处理。 \ No newline at end of file +后台登录地址 https://www.ruilaizipj.com/adminghd/login 对应的路由在 /www/wwwroot/code/application/adminghd/controller/ 目录下的控制器中处理。 + diff --git a/docs/Obsidian笔记体系/Projects/陪诊/瑞来健康项目资料.md b/docs/Obsidian笔记体系/Projects/陪诊/瑞来健康项目资料.md index 69b15f4..3c26b14 100644 --- a/docs/Obsidian笔记体系/Projects/陪诊/瑞来健康项目资料.md +++ b/docs/Obsidian笔记体系/Projects/陪诊/瑞来健康项目资料.md @@ -1,3 +1,14 @@ + + +cd D:\cd\claude-code +$env:ANTHROPIC_API_KEY="sk-fdf7cc1c73504e628ec0119b7e11b8cc" +$env:ANTHROPIC_BASE_URL="https://api.deepseek.com/anthropic" +$env:ANTHROPIC_MODEL="deepseek-v4-pro" +bun run dev + + + + 记忆: 瑞来健康项目资料 @@ -22,18 +33,16 @@ Gitea 和服务器 /home/renjianbo/saars/rlz/和本地 D:\androidPj\rlz 代码 可参考D:\aaa\aiagent\docs\创建工单总结.md +每次修改完成后将经验总结成文档输出到项目文档D:\androidPj\rlz\docs\ - - +数据库配置 DATABASE_URL=mysql+pymysql://root:!Rjb12191@gz-cynosdbmysql-grp-d26pzce5.sql.tencentcdb.com:24936/rlz?charset=utf8mb4 -D:\androidPj\rlz\peizhen -小程序客户端购买了服务,android服务的没有收到订单 diff --git a/docs/assets/images/Pasted image 20260524104329.png b/docs/assets/images/Pasted image 20260524104329.png new file mode 100644 index 0000000..c742e1b Binary files /dev/null and b/docs/assets/images/Pasted image 20260524104329.png differ diff --git a/docs/assets/images/Pasted image 20260524111918.png b/docs/assets/images/Pasted image 20260524111918.png new file mode 100644 index 0000000..12203aa Binary files /dev/null and b/docs/assets/images/Pasted image 20260524111918.png differ diff --git a/docs/学习笔记/产品经理/产品经理技能.md b/docs/学习笔记/产品经理/产品经理技能.md index bdd4c22..ab07f63 100644 --- a/docs/学习笔记/产品经理/产品经理技能.md +++ b/docs/学习笔记/产品经理/产品经理技能.md @@ -1 +1 @@ -![[Pasted image 20260129103227.png]] \ No newline at end of file +![](../../assets/images/Pasted%20image%2020260129103227.png) \ No newline at end of file