Files
jiu/CHANGELOG-server.md
T
wangjia 5ff41cc505
Deploy Server / release-deploy-server (push) Successful in 1m54s
chore: release server-v1.0.81
修复入库单/出库单按商品名搜不到历史导入单:搜索酒名条件由 COALESCE(被占位名劫持) 改为 p.name OR it.product_name 任一命中,并加回归测试。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YZ4DskSRKsSiheQonFtQvx
2026-06-24 11:56:21 +08:00

178 lines
9.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Changelog — Server(后端)
后端服务(`backend/``jiu-server`)的更新记录。tag 前缀 `server-v*`
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [1.0.81] - 2026-06-24
### 修复
- 入库单 / 出库单按商品名搜索:历史导入的单据现在也能按商品名搜到(此前明细统一挂占位商品,搜索被占位名顶替,只能搜到新建单据)。
## [1.0.80] - 2026-06-24
### 改进
- 运维(不影响线上功能):修复迁移期 CI 影子部署链路——部署私钥写入时补齐结尾换行,解决阿里机 ed25519 部署密钥被判「invalid format」导致 Deploy → Ali 步骤每次失败的问题。
## [1.0.79] - 2026-06-24
### 改进
- 入库单 / 出库单列表的关键词搜索支持按「酒名(商品名)」模糊反查:除单号、往来单位外,输入商品名(含拼音/首字母)即可筛出含该商品的单据。
## [1.0.78] - 2026-06-23
### 新功能
- 入库单新增「确认进价」接口:以 0 价(暂估)入库并已审核/出库的调货单据,价格确定后可补填真实进价。系统在一个事务内前向补偿——回填库存批次成本与已出库明细的成本快照、按差额补一条对供应商的应付流水、重算入库单合计,售价与应收不受影响;仅管理员可操作,支持多次按差额修正。
## [1.0.77] - 2026-06-22
### 新功能
- 出库单列表支持按「商品编码」精确反查:可查出包含某个商品编码的所有出库单。同时为出库明细新增 (门店, 商品编码) 复合索引,在数万条明细下仍保持毫秒级查询,不影响写入。
## [1.0.76] - 2026-06-22
### 修复
- 修复「编辑入库单草稿后合计金额变成 0」的问题:此前每次编辑草稿会把单据合计金额错误清零(明细的单价/金额正常,仅单据头合计未重算),现已按明细正确重算。
## [1.0.75] - 2026-06-22
### 新功能
- 出库单新增「售价」字段:可按实际销售价录入,应收账款改为按「售价 × 数量」计算,更真实地反映销售额(此前应收按成本价计)。
### 修复
- 修复出库单「添加商品」选择器只能看到一小部分商品的问题:库存查询接口的分页上限此前会把超额请求打回,导致选货时只显示约 20 条,现已放宽,可一次加载整仓商品。
## [1.0.74] - 2026-06-21
### 新功能
- 已审核的入库单/出库单支持「退单」:可整单退或按明细行退货。出库单退单的商品数量加回库存、入库单退单对应库存从库存删除,并自动冲减对应的应付/应收账款。权限:入库退单限管理员/超管;出库退单管理员/超管或本人。已被出库消耗的入库明细禁止退单。
### 修复
- 库存导入改为按商品编号匹配商品、不再按名称合并,避免再次导入产生重复编号
## [1.0.73] - 2026-06-21
### 改进
- 撤回审核中单据的权限放宽:管理员/超管可撤回任意单据,普通操作员可撤回本人提交的单据(此前仅管理员)
## [1.0.72] - 2026-06-21
### 新功能
- 审核中(待审核)的入库单/出库单,管理员可「撤回」为草稿,修改后重新提交审核;已审核单据仍只读不可撤回
## [1.0.71] - 2026-06-21
### 改进
- 公开店铺商品页只展示「当前有库存」的商品,并返回每个商品的在库数量与商品编码(序列号),无货商品不再露出
## [1.0.70] - 2026-06-21
### 改进
- 商品名称/系列/规格选择接口支持关键词搜索(按名称或编码),为客户端选择器的服务端全量搜索提供支撑
## [1.0.69] - 2026-06-21
### 改进
- 入库录入改为「每行一个独立产品」:每条明细新建独立商品、发独立序列号(同名同规格录多次也各自独立),不再复用已有商品编号,符合"每个货品一个唯一编号"的管理方式
## [1.0.68] - 2026-06-21
### 修复
- 根治商品编码可能重复的问题:自动编码改为按现有最大序号递增生成(不再复用已删除商品占用过的编号、并发下也不会撞号),并在数据库层为「同门店 + 编码」加唯一约束,从此重复编码无法静默产生
## [1.0.67] - 2026-06-20
### 修复
- 历史导入单审核入库后,库存里商品显示为「历史导入占位」、按真实名搜不到的问题:审核生成库存时改用单据明细自带的真实商品名/编码/系列/规格,库存列表也不再显示已删除的占位商品名
- 库存列表按真实商品名/编码即可搜到这些历史商品
### 新功能
- 入库单 / 出库单列表支持关键词搜索:按单号或往来单位名称即时筛选
## [1.0.66] - 2026-06-20
### 修复
- 入库/出库单据列表改为按业务日期(入库/出库日期)倒序排列:从旧系统迁入的历史单据按真实日期归位到列表顶部,不再因录入时间晚、被排到末尾分页而在首页遗漏
## [1.0.65] - 2026-06-20
### 修复
- 单据列表状态筛选支持一次查询多种状态,配合客户端修复让「入库审核 / 出库审核」标签页完整列出全部待审核单据,不再因分页只显示部分
## [1.0.64] - 2026-06-20
### 改进
- 登录设备并发限制改为「按账号统计全部平台合计」:同一账号在桌面、移动、Web 各端加起来最多同时在线 5 台设备(原先各平台分别计数)
- 达到设备上限时,新设备登录会被明确拒绝并提示「已达到登录设备上限,请提升额度或下线其他设备后重试」,不再静默把最早登录的设备顶下线——由用户自行决定下线哪台或提升额度
## [1.0.63] - 2026-06-20
### 新功能
- 入库/出库单据明细新增商品快照字段(商品编号、名称、系列、规格,出库另含批次号、生产日期)与单据制单人记录,便于完整展示从旧系统迁入、无商品主数据关联的历史进销存单据
## [1.0.62] - 2026-06-19
### 新功能
- 服务端新增多维限流防护:按客户端 IP、按门店分别限速,登录/注册/刷新令牌等敏感接口与公开查询接口各有独立速率上限,有效抵御恶意刷接口与流量冲击(DDoS),正常使用不受影响
- 登录暴力破解加固:除按账号锁定外,新增按来源 IP 的失败次数限制,单一 IP 连续撞库多个账号会被整体拦截
### 改进
- 在反向代理后正确识别真实客户端 IP,使限流与失败锁定按真实来源计数,避免误伤同一出口的正常用户
- 门店可保存录入默认值(默认系列/规格等)等轻量配置,刷新页面后依然保留
## [1.0.61] - 2026-06-19
### 改进
- 平台侧兑换券生成工具随服务端一并发布并部署到服务器,可直接在服务器上批量生成激活码,无需每次本地编译上传;同步清理已退役的授权签名相关配置项
## [1.0.60] - 2026-06-19
### 新功能
- 激活码升级为「时长兑换券」:每张码代表一段时长(如 +1 年 / +6 个月),兑换后叠加到当前授权之后,可购买多张累计续期;过期后兑换则从兑换当天重新起算
- 激活码改为简短易输入的形式(形如 JIUKU-XXXX-XXXX),告别此前需复制粘贴的超长字符串
- 同一张激活码只能被成功兑换一次,重复或无效的码会明确提示
### 改进
- 续费/兑换成功后授权状态即时刷新,无需退出重新登录
- 新门店首次使用仍自动获得 30 天试用,开箱即用
### 新功能
- 会话安全加固:刷新令牌每次续期自动轮换并具备盗用检测,旧令牌一旦被重放即吊销整条会话;新增失败登录记录便于审计风控
### 改进
- 授权状态实时生效:续费、到期或授权被调整后约 30 秒内即对写操作生效,无需退出重新登录
- 修改密码或停用账号后,该账号在所有设备上的登录会立即失效
- 自动清理超过保留期的已撤销/过期会话与失败登录记录,避免数据无限增长
### 修复
- 修复数据库瞬时异常时授权状态被误判为「无授权」、导致界面错误降级的问题
## [1.0.58] - 2026-06-18
### 修复
- 修复已登录用户授权长期停留在「未激活」的问题:此前仅全新登录才会自动发放 30 天试用,靠本地令牌自动续登的老用户始终拿不到,现在续登时也会补发
## [1.0.57] - 2026-06-18
### 新功能
- 未激活门店首次登录自动获得 30 天试用:此前手动建店或老数据无授权时既不提示也不限制,现在登录即开通试用,到期前会正常提醒并按阶段降级
## [1.0.56] - 2026-06-17
### 新功能
- 在线设备/会话管理:服务端记录每次登录会话,支持查看本店在线设备、按平台类(桌面端 / 移动端 / 网页端)分别限制并发登录数,管理员可强制将指定设备下线
- 登录失败锁定:同一账号连续多次密码错误后自动锁定一段时间,防止暴力破解
- 记录账号最近登录时间
### 修复
- 修复被禁用账号仍能凭刷新令牌继续续期登录的安全漏洞:续期时校验账号状态与会话是否有效
## [1.0.55] - 2026-06-17
### 新功能
- 后端服务独立发版流水线启用(`server-v*`),与客户端、官网互不影响
### 修复
- 库存导入改用更稳定的 Excel 解析库,按唯一编号自动去重,入库时间取自表格中的「入库日期」