📜 版本历史
问心牌 Web 端更新日志
v4.6.8 — 60 张牌原图读象校准(v4.6.7 跳过合并入档)
2026-07-04
🎴 60 张牌原图读象校准(v4.6.8 主改动)
- 数据 Web 端:
card-details.js60 张牌的imageReading/layers.{upper,middle,lower}/symbols按牌面原图三段(天象/人事/地象)重新校准 - 数据 小程序:
data/cardDetails.ts同源 60 条牌义数据同步 - 新功能 Web 端:每张牌新增
source = "牌面原图三段校准-v4.6.8-20260704"+matchPolicy字段,便于追溯校准口径 - 校准 Web 端:
index.html缓存版本号?v=4.6.5→?v=4.6.8(同步 card-details.js 引用) - 说明 Web 端:仅校准牌面图像信息;牌号、六十甲子、天干地支、五行、吉平凶、基础牌意、问事提示结构均保持不变
- 辅助 本地:
前端/读象校准输出/三段总览/5 张校准总览图(01-12 / 13-24 / 25-36 / 37-48 / 49-60)已存档
📱 小程序个人主体适配(v4.6.7 跳过合并入档)
- 调整 小程序:个人主体小程序不能使用微信手机号快速验证,删除页面中的「使用微信手机号 / 绑定手机号授权」按钮及
getPhoneNumber回调链路 - 文案 小程序:账号页文案改为「绑定或注册手机号」,保留手动输入手机号+密码绑定入口(
/api/auth/wx-bind-phone-password) - 后端 说明:
/api/auth/wx-phone后端接口保留为备用能力,本次小程序前端不调用;后端无需任何改动
🛠 后端
- 说明 后端:本次两个版本(v4.6.7 + v4.6.8)均为纯前端/小程序改动,后端零改动,
wenxin-api服务无需重启
📝 文档同步
- 说明 前端:
前端/README.md+04-60牌读象分区速查.md同步更新 - 说明 小程序:详情记录见
微信小程序适配/六十牌原图读象校准-v4.6.8-20260704.md+个人主体微信登录手动手机号绑定-v4.6.7-20260704.md
v4.6.6 — 微信手机号解绑与历史归属
2026-07-04
🔓 微信账号解绑手机号 / 误绑拆分
- 新功能 后端:新增
POST /api/auth/wx-unbind-phone,入参{ "mode": "keep_wechat" | "return_phone" },需登录态 - 新功能 后端:
keep_wechat模式释放当前手机号,账号改wx_...占位号,所有历史保留在当前微信账号,可重新注册该手机号 - 新功能 后端:
return_phone模式误绑拆分,手机号账号保留手机号原历史,微信身份拆成新独立账号,仅迁走origin_identity='wechat'的历史 - 新功能 小程序:个人页账户设置新增「解绑或拆分手机号」入口(
user.wx_bound && user.phone_bound时展示),二次确认防误操作
📊 起课历史来源标记(origin_identity)
- 新功能 后端:
readings表新增origin_user_id(INTEGER, INDEX) 与origin_identity(VARCHAR(16),取值phone/wechat) - 新功能 后端:access_token / refresh_token payload 增加
auth_channel字段,get_current_user注入user._auth_channel供保存起课时读取 - 新功能 后端:保存起课时按当前 token 的
auth_channel写入readings.origin_identity——Web 手机号登录/注册/刷新→phone;小程序微信登录、微信授权绑定、微信绑定当前账号、微信解绑后继续登录→wechat - 迁移 后端:上线首次启动自动给存量 readings 补
origin_user_id = user_id+origin_identity = 'phone'(已验证:189 条全部迁移,null=0) - 关键 后端:来源判断按「本次登录/会话渠道」而非「账号是否绑定微信」,同一账号即使已绑微信,只要从 Web 手机号登录起课仍标
phone(不污染)
📝 文档同步
- 说明 后端:
后端/README.md同步上线,新增「手机号解绑与历史归属策略」章节与v4.6.6-wx-unbind-phone版本历史 - 说明 小程序:详情记录见
微信小程序适配/微信手机号解绑与历史归属-v4.6.6-20260704.md
v4.6.5 — 头像昵称合规适配
2026-07-04
📷 头像上传 + 昵称填写(Web 端 + 小程序)
- 新功能 后端:新增
users.avatar_url字段 +POST /api/auth/me/avatar(multipart,jpg/png/gif/webp,≤2MB) - 新功能 后端:main.py 挂载
/uploads/avatars/静态目录,环境变量PUBLIC_BASE_URL/WENXIN_UPLOAD_DIR/MAX_AVATAR_BYTES - 新功能 Web 端:
user.html/user.js头像 UI(file input + FormData 上传),个人中心展示avatar_url - 新功能 小程序:头像按钮
open-type="chooseAvatar"+ 昵称type="nickname"+wx.uploadFile上传 - 依赖 后端 venv 已装
python-multipart 0.0.20
⚠️ 备选 AI 按钮(⚡)暂时不可用
- 调整 v4.6.5 简化了 main.py provider 注册,pro provider 暂未上线,点击"备选 AI"按钮会失败。修复后将补一条新版本说明。
v4.6.4 — 微信反向绑定 + 管理员角色变更
2026-07-04
🔄 手机号账号反向绑定微信
- 新功能 后端:新增
POST /api/auth/wx-bind-current,手机号/密码登录后可绑定当前微信(wx.login()code 即可) - 新功能 小程序:手机号/密码登录 → 个人页"账号设置"新增"绑定当前微信"入口
- 逻辑 微信之前产生的临时账号的起课记录会迁移到当前手机号账号,临时账号软删除
👑 管理员角色变更
- 新功能 后端:新增
PUT /api/admin/users/{user_id}/role,支持user/admin切换 - 新功能 小程序:管理员用户详情页"设为管理员 / 设为普通用户"按钮
- 保护 管理员不能移除自己的管理员权限,避免误锁后台
v4.6.3 — 手动手机号密码绑定兜底
2026-07-04
🔐 微信环境无法弹手机号授权时的兜底路径
- 新功能 后端:新增
POST /api/auth/wx-bind-phone-password,需已登录微信账号(HeaderAuthorization: Bearer ***,Body{ phone, password } - 新功能 小程序:个人页"绑定手机号"区域新增"绑定已有 Web 手机号账号"表单(手机号 + Web 端登录密码)
- 逻辑 手机号已注册 → 校验原密码 → 合并账号 + 迁移 readings;未注册 → 当前微信账号直接升级为手机号账号(占位 → 真实手机号)
v4.6.2 — 微信登录第一版(手机号可选绑定)
2026-07-04
🪪 微信登录不再强制手机号授权
- 新功能 后端:新增
POST /api/auth/wx-login//api/auth/wx-phone//api/auth/wx-bind-existing,支持微信身份直接登录并创建占位账号(wx_<16hex>) - 新功能 小程序:未登录页新增"微信登录"区块 + 个人页"绑定手机号/同步 Web 账号"入口
- 逻辑 微信登录 → 直接进入账号(不弹手机号授权)→ 个人页可选"绑定手机号";已注册手机号需密码确认合并,未注册则设新密码
- 后端 新增字段
users.wx_phone/users.wx_bound_at,admin 用户列表返回脱敏手机号和绑定时间 - 环境 新增
WECHAT_MINI_APPID/WECHAT_MINI_SECRET(写入/opt/divine-api/.env)
v4.6.0 — 用户系统接入微信身份字段
2026-07-03
🗄️ users 表加微信身份字段(基线)
- 新功能 后端:
models.py新增users.wx_unionid(UNIQUE 索引)+users.wx_openid字段;init_db()启动时自动 ALTER - 新功能 后端:
auth.py/admin.py登录响应新增wx_bound标记(bool) - 说明 仅基线字段,无对外接口。微信登录逻辑在 v4.6.2 才正式上线
Web v4.5.2
2026-06-28
🌿 月干支修正:节气查表 + 五虎遁
- 修复 月干支使用公历月简化映射,每月1日切月支,实际月支以节气(芒种/小暑等)为界
- 技术 新增
MONTH_BOUNDARIES天文查表(2020-2040),pyephem 黄经精度±1分钟 - 技术 月干改五虎遁(丙辛之年庚作首),超出年份自动回退
- 技术 年/日/时干支不变(已验证正确)
Web v4.5.1
2026-06-28
⚡ 备选 AI 独立 Pro 调用 · provider 分离
- 修正 备选 AI 按钮从 fallback 分离为独立
proprovider,直接调用 DeepSeek v4 Pro - 修正 AI 详解按钮 fallback 回归 Flash(deepseek-v4-flash),备选 AI 用 Pro(deepseek-v4-pro),各司其职
- 技术 后端新增
PRO_MODEL环境变量 +proprovider 独立注册 - 技术 备选 AI 点击即独立运作,无需先点 AI 详解
Web v4.5.0
2026-06-28
⚡ 新增备选 AI 解读按钮
- 新功能 AI 详解按钮旁增加备选 AI按钮(⚡),调用 DeepSeek v4 Pro 模型
- 新功能 后端支持
provider参数指定模型,优先调用指定 provider - 技术 两个按钮可独立触发,结果框顶部标注来源(AI 断事 / 备选 AI 断事)
- 修复
call_llm不再修改全局 providers 列表,避免 provider 永久重排
Web v4.4.8
2026-06-28
🐛 AI 解读永久禁用修复
- 修复 网络波动后 provider 被永久禁用→移除
p["enabled"] = False,每次请求重新尝试 - 修复 不再需要重启服务恢复 provider
Web v4.4.7
2026-06-07
⏱ AI 解读超时保护
- 技术 MiniMax 调用加
timeout=180,超时自动切 deepseek fallback - 技术 服务器环境变量
WENXIN_AI_TIMEOUT=180
Web v4.4.6
2026-06-07
🐛 spread_type 字段校验修复(全栈测试发现)
- 修复
SaveReadingReq.spread_type缺校验,无效字符串(如invalid_xyz/""/SQL 注入字符)都静默接受 - 技术 加
field_validator限定为{taiji, liangyi, sancai, weekly, cross},无效 type → 422 + 错误信息含合法值列表 - 技术 同时清理 DB 中 35 条脏数据(14 非法 type + 21 测试 cards)
Web v4.4.5
2026-06-07
🔐 登录限流按账户重构
- 新功能 限流从 IP 改为手机号:5 次/3 分钟按账户锁,避免家里/办公网共享 IP 互锁
- 新功能 IP 软兜底:10 次/1 分钟防高频扫描
- 新功能 登录成功自动清零该手机号计数
- 技术 auth.py 新增 4 个独立函数:
_check_ip_soft/_check_phone_lock/_record_phone_failure/_clear_phone_rate
Web v4.4.4
2026-06-07
🐛 周运目标下拉位置修复 · 封版
- 修复 周运目标下拉在报数/线下模式跑到各自选择器后面→DOM 重排,
weekTargetRow提至抽牌方式正下方 - 技术 三种模式均正确:随机(周运目标→描述)· 报数(周运目标→报数输入)· 线下(周运目标→线下选择器)
Web v4.4.3
2026-06-07
🎨 牌位标注 · 备注 · CSS修复
- 新功能 后台起课记录标注牌位:太极/主体用·客体用/天牌·人牌·地牌/周运总牌·周日~周六/守护神牌·人牌·气运牌·天牌·地牌,管理员不需还原即可辨识
- 新功能 三才阵展示重排:存储序人→天→地自动重排为显序天→人→地(DISPLAY_REORDER [1,0,2])
- 新功能 起课备注完善:前端 #remarkInput + API 保存/更新 + 管理员后台编辑保存
- 修复 周运目标下拉只在随机抽牌显示→三种抽牌方式均可见(
updateDrawMode改为周运模式始终显示 weeklyField) - 修复 CSS
.number-field/.offline-field的display:none被 v4.4.2 误删→恢复 - 技术 POSITION_LABELS 措辞优化;get_display_positions + DISPLAY_REORDER 支持存储/展示顺序转换
Web v4.4.2
2026-06-07
🎨 周运目标 CSS
- 新功能
.week-target-row下拉框样式定义 - 已知bug CSS 合并时误删
.number-fielddisplay:none(v4.4.3已修复)
Web v4.4.1
2026-06-06
🆕 周运本周/下周选择 · 防重复
- 新功能 周运目标选择:测本周 / 测下周,后端
week_start列 +week_target参数 - 新功能 防重复起课:按
(user_id, week_start)唯一键,每周只允许一条周运记录 - 新功能 weekly-status API:前端下拉框根据已有记录自动灰显禁用
- 修复 TDZ 崩溃:
getWeeklyTargetInfo()引用未初始化变量,加第二参数拆解隐式依赖 - 技术 models.py + readings.py + admin.py 三文件联动
Web v4.4.0
2026-06-06
🆕 三才抽序 · 太极点击 · 报数洗牌 · 周运报数
- 新功能 三才抽牌顺序调整:第一张→人位,第二张→天位,第三张→地位(
spreadMeta.sancai.positions+ ti/yong 对同步修正) - 新功能 三才独立牌组映射:
sancaiCategories调为 [十二星, 十二神, 十二景]——人=天星、天=天神、地=地景 - 新功能 三才牌阵视觉排列:天(左) → 人(中) → 地(右),抽序人天地但摆放天人地
- 新功能 太极牌点击放大:单牌太极阵支持点击弹出详情弹层,与其他牌阵一致
- 新功能 报数洗牌机制:起课抽牌时先对牌组 Fisher-Yates 洗牌,报数对应临时序号取牌,模拟现实"先洗牌再抽牌"
- 新功能 十字法报数盲抽:十字五牌法报数下拉去牌名显示(只留数字),配合洗牌实现真正的盲抽体验
- 新功能 周运报数模式:周运支持报数抽牌,总运牌(60取1)+ 七日牌(60取7)独立洗牌,
updateDrawMode解除周运报数禁用 - 技术新增
shuffleArray;drawByNumbers内部洗牌; 十字法/三才分离/周运每组独立洗牌
Web v4.3.2
2026-06-06
🔧 Hotfix:连续起课时间不刷新
- 修复 连续多次点击「起课抽牌」时起课时间不刷新:
handleSubmit开头未清除currentReading和storedDivTime,导致时间优先链捡到上一次起课的旧时间 - 技术
handleSubmit开头加currentReading = null; setStoredDivTime(null),确保每次新起课时间优先链落到底部getDivinationTime()取实时
Web v4.3.1
2026-06-06
🔧 Hotfix:起课时间还原取当前时间而非原始时间
- 修复 起课时间还原时显示当前时间而非原始时间:
renderReading/completeCrossReading直接getDivinationTime()取实时,不读已存值 - 修复 IIFE 还原时间在 render 之后执行,render 已用当前时间覆盖 — 改为 render 之前
setStoredDivTime,render 自然捡到原始时间 - 技术
getDivinationTime()替换为优先链:currentReading?.divinationTime || getStoredDivTime() || getDivinationTime()
Web v4.3.0
2026-06-06
🎯 太极居中 · 起课时间 · AI去Markdown
- 新功能 太极阵单牌居中:CSS taiji-spread flex + text-align center,牌面图片和文字在容器内居中,不靠左
- 新功能 起课时间模块:起课时自动取公历 + 干支时间(
🕐 2026.06.06 18:07 📅 丙午年 甲午月 辛亥日 丁酉时),显示在牌阵上方首个元素,支持保存、还原、AI 输入 - 新功能 干支算法:年干支 (y-4)%60、月干支从年干推算、日干支 2024-01-01=甲子基准、时干支从日干推算,纯前端 JS 实现
- 修复 AI 断语中 Markdown 加粗符号(
**文字**)影响阅读,renderPlainText统一 strip** - 后端
readings表新增divination_time TEXT列,SaveReadingReq 支持divination_time字段,admin 详情返回时间 - 注入
renderReading/completeCrossReading/renderWeeklyReading三处统一注入时间;resetReading清时间;IIFE 还原恢复时间 - 缓存 app.js
?v=4.3.0,styles.css?v=4.3.0 - 全栈 前端 4 文件(app.js / styles.css / index.html / changelog.html)+ 后端 3 文件(models.py / readings.py / admin.py),6/6 MD5 校验一致
Web v4.2.3
2026-06-06
🏷️ 周运小卡干支五行角标(绝对定位版)
- Hotfix v4.2.2 当时 meta-row 撑破周运牌阵 layout 导致牌阵消失,v4.2.3 改用 CSS 绝对定位 重新实现:左下角暗红底白字显示干支(
甲子),右下角深棕底白字显示五行(水) - 技术
position: absolute+pointer-events: none+z-index: 2,完全不撑卡片高度,不影响弹层点击 - 样式 新增
.weekly-badge/.weekly-badge-stem/.weekly-badge-element三个类,仅作用于.weekly-arc-card,不影响其他牌阵 - 缓存 app.js 缓存版本号
?v=4.2.2→?v=4.2.3
Web v4.2.2
2026-06-06
🃏 周运牌阵显示增强 + 每日地支关系 + 体用生克
- 新功能 周运小卡显示天干地支 + 地支五行属性(如
甲子+水标签),弹层之前就有,现在小卡本身也常驻显示 - 新功能 周运每日解读追加地支关系行:周运总牌地支 与 今日地支 → 六合/六冲/六害/三合/三刑/无特殊关系
- 新功能 周运每日解读追加体用生克行:周运总牌(体)· 今日(用)→ 5 级断语(用生体大吉 / 体克用小吉 / 体用平平和 / 体生用小凶 / 用克体大凶)
- 复用 全部复用 v3.4+ 已有的
analyzeBranchRelation()与tiYongJudgement()函数,不重复造轮子 - 样式 干支用浅色描边小标签(
card-stem-branch),五行用半透明背景小标签(card-element),保留古风调性
Web v4.2.1
2026-06-06
🐛 还原起课时备注不显示修复
- 修复 从个人中心还原带备注的起课记录到首页牌阵,备注 textarea 不显示备注内容
- 根因 渲染备注依赖
currentReading._remark跨函数桥,但 IIFE 还原路径只设 weeklyState/crossState/调 render 函数,从不在 currentReading 上写 _remark - 修法 去掉跨函数桥,IIFE 末尾直接 DOM 写入
#remarkInput.value+#remarkCount.textContent,覆盖 5 种牌阵(太极/两仪/三才/周运/十字) - 附带 修
renderReading末尾currentReading._remark引用未做 null 保护的潜在报错(currentReading = null时不再抛错)
Web v4.2.0
2026-06-06
📍 起课记录位置标注 + 备注笔记 + 幂等保存
- 新功能 后台管理
admin.html起课记录卡片化:每张牌明确标注对应位置(太极/主位(体)/客位(用)/天位(过去)/人位(现在)/地位(未来)/周运总牌+周日~周六/守护神/人牌/气运/天牌/地牌) - 新功能 管理员后台可编辑保存每条起课的备注,调
PUT /api/admin/users/{uid}/readings/{rid}/remark - 新功能 管理员后台单条起课详情接口
GET /api/admin/users/{uid}/readings/{rid}:返回完整 cards/positions/relation_summary/weekly_summary/ai_answer - 新功能 管理员后台起课记录支持 AI 解读折叠展开(<details>)+ 总断徽章 + 周运周序号标签
- 新功能 主页/用户中心起课记录详情加备注编辑区(≤5000字,含实时字数计数与保存按钮)
- 修复 用户中心详情页 position 标签只对十字法阵显示的 bug:改为用后端存的
positions数组,所有牌阵都标注位置 - 架构 session_id 幂等键:每次起课生成唯一会话 ID(同卦的所有保存/AI 解读都更新同一条记录,不会重复创建)
- 数据库
readings表加session_id列 + 联合唯一索引(user_id, session_id);旧数据 session_id 为 NULL 不受影响 - 后端
POST /api/readings改 upsert:按 (user_id, session_id) 查重,命中则更新,否则新建;返回{updated: bool} - 后端
/api/wenxin接收session_id字段:首次 AI 解读时无 reading_id,靠 session_id 找到同一条记录更新 - 校验
remark字段统一max_length=5000(Pydantic Field),前后端双重校验 - 后端 管理员后台起课记录补全
positions/remark/ai_answer/total/cards_summary/week_label/week_range/session_id等字段 - 后端 后台响应新增
display_positions字段:按瑞局口语映射好的紧凑标签(与前端positionLabels保持一致)
Web v4.1.2
2026-06-06
按钮样式 + 还原弹窗修复
- 修复 个人中心按钮不可见:
:root未定义--bronze变量,按钮背景透明致白字不可见 - 修复 十字法阵还原时多余「是否保存」弹窗:还原记录无需再保存
Web v4.1.1
2026-06-06
报数/线下模式自动卦解
- 修复 十字法阵报数/线下模式提交后未自动生成解卦内容,需额外点击「起课成卦」
Web v4.1
2026-06-05
十字五牌阵(三才问事法阵)
- 新增 三才问事法阵 · 十字五牌:随机/报数/线下三种模式,固定抽牌顺序(守护神→人牌→气运牌→天牌→地牌)
- 新增 十字法阵独立筛选分类「法阵」,与周运并列
- 新增 牌面缩略图显示 + 天干地支名 + 五行属性完整展示
- 新增 三才核心(人牌·天牌·地牌)视觉分组,守护神/气运牌为纯信息牌不参与生克
- 修复 十字法阵报数/线下模式选择器错位(crossField→numberSelects/offlineSelects)
- 修复 抽牌进度文本逐张更新
- 变更 抽取中间牌时牌阵区渐显,非等全部抽完才显示
Web v4.0.7
2026-06-06
🆕 管理员后台 + 权限控制
- 新功能 新增管理后台页面
admin.html,管理员专用入口 - 新功能 数据概览:用户总数、起课数、周运用户、7 日新增
- 新功能 用户搜索(按手机号或 ID)、详情查看、起课记录
- 新功能 重置密码(随机密码 / 自定义密码)、封禁/解封
- 新功能 管理员可为用户设置昵称、自定义密码
- 新功能 用户个人中心自助修改昵称、修改密码
- 权限 个人中心「管理后台」入口仅 admin 角色可见
- 权限 admin.html 校验 JWT 中的 admin 角色,非管理员自动拦截
- 权限 版本历史页 changelog.html 仅管理员可查看,非管理员显示锁定提示
- 权限 首页「版本」链接移除,管理员通过「管理」导航或后台内链访问
Web v4.0.6
2026-06-06
🐛 周序号修复
- 修复 周序号算法:去掉 +2 偏移,改为按 Sun-Sat 周习惯(W1 = 该年第一个周日)计算
- 修复 之前偏差约 2 周,例 2026-06-07 从显示 W25 修正为 W23
- 部署 v4.0.4+v4.0.5 前端静态文件补上线,线上同步到 v4.0.6
Web v4.0.5
2026-06-06
🆕 周运目标周显示
- 新功能 周运牌阵显示年周与日期范围,例如 26-W25 · 2026.6.7-2026.6.13
- 新功能 weekly_summary 保存 weekInfo,历史还原优先使用保存时的目标周
- 新功能 起课历史列表的周运记录显示对应年周和日期范围
Web v4.0.4
2026-06-05
🔧 全栈验收修复
- 修复 主页面、用户页、版本页静态资源缓存版本统一到 v4.0.4
- 修复 AI 解读与起课详情改为安全文本渲染,避免历史内容注入 HTML
- 修复 手动保存起课改为等待接口结果后提示,不再提前提示已保存
- 修复 /api/wenxin 自动保存补充周运服务端限频,防止绕过 /api/readings 重复保存本周周运
Web v4.0.3
2026-06-05
🆕 周运拦截 + 筛选搜索
- 新功能 周运抽牌前置检查,本周已有记录则禁止重抽
- 新功能 起课列表分类筛选:全部 / 周运 / 太极 / 两仪 / 三才
- 新功能 关键词搜索(搜问题/牌类/AI解读)
- 新功能 日期范围筛选
- 后端 readings.py +q / +date_from / +date_to
Web v4.0.2
2026-06-05
🆕 周运保存 + 还原修复
- 新功能 周运抽完最后一日弹出保存确认
- 修复 保存完整度升级:全量牌数据 + topicKey + 牌组模式 + 周运摘要
- 修复 周运还原样式:重建 weeklyState → 弧形牌阵
- 修复 三才分离模式 saveReadingIfLoggedIn 未定义 bug
Web v4.0.1
2026-06-05
🆕 删除 + 还原到牌阵
- 新功能 起课记录删除(列表 + 详情页,确认弹窗)
- 新功能 起课记录还原到牌阵(详情页 → 首页完整渲染)
- 新功能 保存确认弹窗 + 两个手动保存按钮
Web v4.0
2026-06-05
🆕 用户系统
- 新功能 手机号 + 密码注册 / 登录
- 新功能 个人中心(用户信息 · 起课列表 · 详情还原)
- 新功能 起课自动保存(登录后调 AI 自动存)
- 新功能 周运限频(登录用户每周一次,周日清零)
- 新功能 管理员后台(查用户 · 重置密码 · 封禁 · 统计)
🔧 技术变更
- 后端 拆文件:models.py / auth.py / readings.py / admin.py(1317 行)
- 数据库 SQLite(wenxin.db),3 表
- 鉴权 JWT(access 15min + refresh 30d cookie)
Web v3.7.5
2026-06-05
🆕 周运牌阵
- 新功能 1 张总运 + 7 张日运,不重复,吉平凶评分
- 新功能 半圆布局 + 点击放大读象弹层
- 新功能 两仪紧凑一行布局(用在左体在右)
- 新功能 周运入口移到问事类型
🔧 配置
- 修复 M3→M2.7-hs(解决 3+ 张牌超时)
- 修复 nginx 180s 封顶链路
- 调参 max_tokens 10000 · timeout 180s
Web v3.6.x
2026-06-05
🆕 逐图牌义库
- 新功能 card-details.js(60 张牌逐图详解)
- 新功能 后端 Prompt 改版(固定解读顺序 · 应期条件语气)
- 新功能 读象/上中下层次按牌名匹配(速查表 + 课堂笔记双轨)
Web v3.5
2026-06-04
🆕 关系工具子系统
- 新功能 五行/地支/牌面三种查询模式
- 新功能 体用行动建议生成器
- 新功能 三合完成度检测
Web v3.4
2026-06-04
🆕 体用五级断语
- 新功能 3 级(吉/平/凶)升级到 5 级(大吉~大凶)
- 新功能 tiYongJudgement 函数统一处理
- 修复 地支五行替代天干作为生克计算基准
Web v3.3
2026-06-
🆕 三才双牌组 + 抽牌简化
- 新功能 三才阵双牌组(统一 60 张 / 三套独立 12 张)
- 新功能 13 个问事类型(1 综合 + 12 单类)
- 优化 移除毫秒分组逻辑
Web v3.2
2026-06-
🔧 五行重构
- 新功能 element 字段由天干定五行改为地支定五行
- 新功能 element-tag 展示地支单字
- 修复 两仪/三才生克同步用地支五行
Web v1.0 — v3.1
2026-05 — 06
- 初版上线(60 张文字牌 · 太极/两仪牌阵)
- LLM 接入(MiniMax→M3)
- HMAC token 自签鉴权 · 速率限制
- 三才阵 · 线下抽牌 · 牌库密码墙
- Fallback 机制(opencode-go deepseek-v4-flash)