gitea.env
55ded8b
priceGuard
minRatio=0.1..1.0
maxRatio=1.0..3.0
minUnitPriceCent
maxUnitPriceCent
maxRatio=3
PURCHASE_PRICE_OUT_OF_RANGE
priceGuard 采用以下两种互斥形态:
{"enabled":true,"minRatio":0.2,"maxRatio":1.5}
{"enabled":false,"absoluteMaxUnitPriceCent":5000}
enabled
true
absoluteMaxUnitPriceCent
referenceUnitPriceCent
minUnitPriceCent=0
maxUnitPriceCent=absoluteMaxUnitPriceCent
属于现有“采购规则”编辑弹窗的小范围扩展,明确复用当前 Element Plus 表单规范,不新增页面或导航,无需完整原型:
覆盖状态:开启、关闭、字段校验失败、保存确认取消、保存成功、历史规则兼容;权限仍仅管理员。
cd server && go test ./app/goauto/purchasecontract ./app/goauto/purchaserule ./app/goauto/purchase
cd web && pnpm lint
pnpm build:prod
android\gradlew.bat -p android testDebugUnitTest
android\gradlew.bat -p android assembleDebug
git diff --check
Business-Rules-and-Glossary
Android-Agent-API-Contract
enabled=true + minRatio + maxRatio
enabled=false + absoluteMaxUnitPriceCent
failed
actualUnitPriceCent
contracts/purchase-rule-live-price-guard-disabled-v1.json
go test ./app/goauto/...
android\gradlew.bat testDebugUnitTest
android\gradlew.bat assembleDebug
pnpm exec eslint src/views/goauto/purchase-rules/index.vue
pnpm lint
web/src/views/goauto/purchase-tasks/index.vue
android/app/build/outputs/apk/debug/app-debug.apk
B0CBCE449055574D2F88E63E38C1EE571BC9B5D19D868220D9EB21F2F2724481
versionCode=48
versionName=0.9.35
85e881bd4fd1ebffb6af24d0f2f7512dfeda2a16
bf61d3493fc4cd16649c0564b87580a5b78704aa
harness.py sync
sync --check
docs/12-syb-erp-interface.md
a8f859399c624a7d12c1fd444174ded59d9736ad
9cdb6bb
main
server/config/settings.yml
%TEMP%/
gitea.zip
nul
prototypes/130/
工单保持打开,等待用户验收。
No dependencies set.
The note is not visible to the blocked user.
原始需求摘要
gitea.env读取,未写入工单、代码或日志。当前事实
55ded8b,核验日期:2026-08-31。priceGuard仅支持minRatio=0.1..1.0、maxRatio=1.0..3.0;缺省时使用 0.2~1.5,无法关闭。minUnitPriceCent/maxUnitPriceCent;Android 只执行任务固化边界,不自行重算倍率。maxRatio=3,参考价 ¥0.68、最高价 ¥2.04,仍报PURCHASE_PRICE_OUT_OF_RANGE。任务没有保存本次实际观察价格,无法从服务端复核越界方向和金额。目标
非目标
方案与契约
priceGuard采用以下两种互斥形态:enabled缺省视为true,兼容既有快照。absoluteMaxUnitPriceCent,范围 1~100000(¥0.01~¥1000.00)。priceGuard时继续使用既有默认倍率,不视为关闭。referenceUnitPriceCent、minUnitPriceCent=0、maxUnitPriceCent=absoluteMaxUnitPriceCent。Admin 设计证据
属于现有“采购规则”编辑弹窗的小范围扩展,明确复用当前 Element Plus 表单规范,不新增页面或导航,无需完整原型:
覆盖状态:开启、关闭、字段校验失败、保存确认取消、保存成功、历史规则兼容;权限仍仅管理员。
验收标准
enabled的倍率规则及完全缺省priceGuard的旧快照继续兼容。验证计划
cd server && go test ./app/goauto/purchasecontract ./app/goauto/purchaserule ./app/goauto/purchasecd web && pnpm lint(若仓库脚本支持)与pnpm build:prodandroid\gradlew.bat -p android testDebugUnitTestandroid\gradlew.bat -p android assembleDebuggit diff --check风险与安全边界
子项目影响
priceGuard互斥形态。文档影响
Business-Rules-and-Glossary与Android-Agent-API-Contract,在线回读 revision,再同步本地镜像并检查一致性。实施完成,等待验收
实现
priceGuard新增严格互斥形态:enabled=true + minRatio + maxRatio;enabled缺省兼容旧快照。enabled=false + absoluteMaxUnitPriceCent,绝对上限为 1~100000 分;倍率字段不得混入。minUnitPriceCent=0、maxUnitPriceCent=absoluteMaxUnitPriceCent;无数据库迁移。failed结果中保存actualUnitPriceCent。contracts/purchase-rule-live-price-guard-disabled-v1.json。验证
go test ./app/goauto/...:通过(最终提交后复跑)。android\gradlew.bat testDebugUnitTest:通过。android\gradlew.bat assembleDebug:通过。pnpm exec eslint src/views/goauto/purchase-rules/index.vue:通过。pnpm build:prod:通过;仅有仓库既有 CSS/大 chunk 警告。pnpm lint:未通过,失败全部位于本工单未修改的web/src/views/goauto/purchase-tasks/index.vue用户现有 Tab/空格改动;未越界修复。目标页面 lint 已单独通过。git diff --check/ staged diff check:通过。android/app/build/outputs/apk/debug/app-debug.apk,6,443,003 bytes,SHA-256B0CBCE449055574D2F88E63E38C1EE571BC9B5D19D868220D9EB21F2F2724481;版本仍为versionCode=48、versionName=0.9.35,未安装到手机。文档
Business-Rules-and-Glossary:revision85e881bd4fd1ebffb6af24d0f2f7512dfeda2a16。Android-Agent-API-Contract:revisionbf61d3493fc4cd16649c0564b87580a5b78704aa。harness.py sync和一轮sync --check,一致性通过。docs/12-syb-erp-interface.md同时存在用户改动与线上更新;已按内容哈希a8f859399c624a7d12c1fd444174ded59d9736ad原样恢复用户版本,并排除在提交外。提交与安全边界
9cdb6bb(已推送main)。docs/12-syb-erp-interface.md、server/config/settings.yml、%TEMP%/、gitea.zip、nul、prototypes/130/均为用户既有改动/文件,未提交。工单保持打开,等待用户验收。