Files
jiu/CHANGELOG-server.md
T
wangjia d951549934
Deploy Server / release-deploy-server (push) Successful in 1m1s
chore: release server-v1.1.3
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JJ1g8XV1YhhmHRzhwWEW7o
2026-07-03 22:42:55 +08:00

260 lines
14 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.1.3] - 2026-07-03
### 新功能
- 新增「¥1 首月特惠」套餐(新店专享,30 天标准版全部功能),每个门店限购一次:
下单前服务端校验,已享受过的门店无法重复购买;并发或绕过前端产生的第二笔特惠单
也不会重复叠加时长(回调入账时二次校验兜底)。
- 新增特惠资格查询接口,官网与 App 据此自动置灰已享受过的门店入口。
## [1.1.2] - 2026-07-03
### 新功能
- 在线购买/续费:管理员可在官网直接用支付宝购买或续费门店授权,支付成功即时到账续期
(时长在现有到期时间上叠加,不覆盖)。到账走签名校验+幂等+金额核对三重防护,并有
后台查单兜底,支付通知丢失也不会漏账。
## [1.1.1] - 2026-07-03
### 修复
- 财务页「应收/应付汇总」加载失败(v1.0.85 起全店受影响):多租户加固引入的数据库
预处理协议兼容问题,已修复并补充服务端错误日志。
### 新功能
- 出库/入库统计接口新增草稿单数,供列表页「草稿」卡片使用。
## [1.1.0] - 2026-07-03
> 定价数据模型里程碑版(内容与 1.0.86 相同,版本号升为 1.1.0)。
### 新功能
- 出库单新增「总利润」:建单即计算入库,确认售价、确认进价(成本回填)后自动联动重算。
- 成本与利润仅管理员可见:操作员查询出库单时,服务端自动隐藏成本价、成本小计与利润。
### 改进
- 出入库价格字段口径统一:进价/成本、售价、各级小计与合计分列存储,彻底消除「单价×数量与金额对不上」的歧义(存量数据启动时自动迁移,旧客户端建单仍兼容)。
## [1.0.85] - 2026-07-03
### 新功能
- 入库 / 出库管理页顶部统计卡支持「近 30 天滚动」口径(本月/近30天双窗口,含环比)。
### 改进
- 正式域名回归:服务经 `https://jiu.51yanmei.com` 提供(备案通过,443 加密访问,
安全响应头齐备);扫码标签、老版本客户端经域名自动恢复可用。
### 修复
- 安全加固:单据引用的仓库 / 往来单位 / 商品新增归属校验,杜绝跨店脏引用;
关联数据查询全面收紧店铺隔离范围。
## [1.0.84] - 2026-07-02
### 新功能
- 财务管理新增「收支趋势」月度汇总接口(近 N 个月销售/采购金额),供财务页趋势柱状图使用。
- 财务流水支持按日期区间筛选(本季 / 自定义时间范围)。
### 改进
- 往来单位支持拼音 / 首字母搜索(存量数据启动时自动回填拼音)。
- 商品档案关键词搜索支持商品编码与拼音 / 首字母。
- 库存列表搜索合并为单一关键词(商品名 / 拼音 / 编码一个框搞定)。
### 修复
- 出库 / 入库单按商品编码搜索:历史录入的单据(明细快照编码为空)现在也能搜到——搜索改为「商品主数据编码 + 明细快照编码」双路匹配;新建单据同时自动写入商品快照。
- 运维:割接后 server 部署轨道切换为阿里机主轨(原 EC2 轨移除,避免误启已停用的旧后端)。
## [1.0.83] - 2026-07-02
### 修复
- 供应商 / 客户下拉修复:现在一次返回全部往来单位,不再被截断到 20 条(此前录单和筛选的下拉最多只显示 20 个)。
### 改进
- 入库录单填写的「售价」现在会写入对应商品,作为该商品的建议售价,后续出库可直接带出。
## [1.0.82] - 2026-07-02
### 新功能
- 出入库列表新增顶部 KPI 汇总:本月笔数、本月金额、待审核单数(含较上月环比)。
- 出库单新增「确认售价」:对「先出后定价」的已审核单据补填真实售价,系统据此结算应收并补一条应收流水(不影响成本/库存)。
### 改进
- 列表可按「商品编码」搜索:搜索框关键词与详细搜索的「商品编码」字段均支持。
- 详细搜索多条件改为「同一明细同时命中」,避免由不同明细各自凑齐条件造成的误召回;同时把多字段过滤合并为一次查询,更高效。
- 搜索框关键词范围调整为「单号 / 酒名 / 商品编码」,不再按往来单位名匹配——供应商/客户改用工具栏的独立下拉筛选。
## [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 解析库,按唯一编号自动去重,入库时间取自表格中的「入库日期」