文件
wangsli 5a7a13524e 完善付款回单凭证核验与本地重检(09-17-company-loan-principal-repayment)
区分正式付款回单、非最终回执与未知凭证,在核验构建、人工证据重建和最终核销时使用同一份有效依据。非最终说明、入账方向、状态矛盾及重复交易不能经人工覆盖。

正式回单无字面成功状态时,允许财务按原件实际记账支出、日期及说明提出核验,由本批次适用的确认人确认;不补造银行成功文字。旧核验可显式本地重检,新版本与审计原子保存,不重新外发 OCR,不沿用旧人工批准或改写已核销历史。

本地验证:82 个迁移、借款 HTTP 116 组、关联电脑/手机 18 组、共享回单数据库与真实认证 38 组、共享报销页面限定重验 24 项、最新回单/报销定向 292 项通过;9 个资金守卫变异均被捕获。服务端全量 4554 项通过、1 项既有可选跳过,后续合成数据及零页详情改动由最新定向验证覆盖。

本次无新增迁移,新增本地 PDF 文本解析依赖。后续对本提交运行完整 verify-candidate,实际候选与结果以本轮回执为准。

限制:独立代码复核及真实还款验收待完成;历史材料预验不证明真实还本或银行提交对应。未推送、未部署、未访问生产或写入真实业务数据。
2026-10-09 06:18:09 +08:00

98 行
4.3 KiB
JSON

{
"name": "server",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"postinstall": "prisma generate",
"dev": "node src/index.js",
"start": "node src/index.js",
"worker": "node src/worker.js",
"test": "vitest run",
"prisma:format": "prisma format",
"prisma:validate": "prisma validate",
"prisma:generate": "prisma generate",
"prisma:check-generated": "node src/scripts/check-prisma-client-generated.js",
"prisma:migrate:dev": "prisma migrate dev",
"prisma:migrate:deploy": "prisma migrate deploy",
"deploy:init": "node src/scripts/deploy-init.js",
"seed:config": "node src/scripts/seed-config.js",
"apply:ceo-finance-fallback": "node src/scripts/apply-ceo-finance-fallback.js",
"seed:dev-users": "node src/scripts/seed-dev.js",
"seed:dev": "node src/scripts/dev-seed-safety.js && npm run seed:config && npm run seed:dev-users",
"seed:trialrun": "node src/scripts/seed-trialrun.js",
"report:small-team-observation": "node src/scripts/export-small-team-observation.js",
"job:revoke-expired-delegations": "node src/scripts/revoke-expired-delegations.js",
"job:ocr-once": "node src/scripts/run-ocr-once.js",
"job:archive-unused-invoices": "node src/scripts/run-invoice-archive-once.js",
"job:integration-outbox-once": "node src/scripts/run-integration-outbox-once.js",
"job:verification-once": "node src/scripts/run-verification-once.js",
"job:workflow-overdue-reminders": "node src/scripts/run-workflow-overdue-reminders.js",
"audit:smoke-data": "node src/scripts/audit-smoke-data.js",
"audit:org-master-data": "node src/scripts/audit-org-master-data.js",
"audit:wecom-oa-users": "node src/scripts/audit-wecom-oa-user-consistency.js",
"import:wecom-directory-export": "node src/scripts/import-wecom-directory-export.js",
"repair:oa-only-smoke": "node src/scripts/repair-oa-only-smoke-accounts.js",
"check:wecom-approval-fixtures": "node src/scripts/check-wecom-approval-fixtures.js",
"check:wecom-approval-callback-poc": "node src/scripts/check-wecom-approval-callback-poc.js",
"check:wecom-approval-compensation-poc": "node src/scripts/check-wecom-approval-compensation-poc.js",
"check:wecom-approval-archive": "node src/scripts/check-wecom-approval-archive.js",
"check:wecom-approval-readability-gate": "node src/scripts/check-wecom-approval-readability-gate.js",
"check:wecom-approval-rule-validator": "node src/scripts/check-wecom-approval-rule-validator.js",
"check:wecom-approval-poc": "node src/scripts/check-wecom-approval-poc.js",
"check:wecom-checkin-summary-archive": "node src/scripts/check-wecom-checkin-summary-archive.js",
"check:wecom-runtime-ready": "node src/scripts/check-wecom-runtime-ready.js",
"send:wecom-ops-alert": "node src/scripts/send-wecom-ops-alert.js",
"resolve:wecom-oa-users": "node src/scripts/resolve-wecom-oa-user-consistency.js",
"test:watch": "vitest",
"test:coverage": "vitest run --coverage"
},
"keywords": [],
"author": "",
"license": "ISC",
"engines": {
"node": ">=22 <23"
},
"dependencies": {
"@aws-sdk/client-s3": "^3.1087.0",
"@fastify/cookie": "^11.0.2",
"@fastify/cors": "^11.2.0",
"@fastify/helmet": "^13.0.2",
"@fastify/jwt": "^10.2.0",
"@fastify/multipart": "^9.3.0",
"@fastify/rate-limit": "^10.3.0",
"@fastify/static": "^9.0.0",
"@fastify/swagger": "^9.5.2",
"@fastify/swagger-ui": "^5.2.3",
"@opentelemetry/api": "^1.9.0",
"@opentelemetry/auto-instrumentations-node": "^0.78.0",
"@opentelemetry/sdk-node": "^0.220.0",
"@opentelemetry/semantic-conventions": "^1.40.0",
"@prisma/adapter-pg": "^7.8.0",
"@prisma/client": "^7.8.0",
"bcryptjs": "^3.0.3",
"exceljs": "^4.4.0",
"fast-xml-parser": "5.10.0",
"fastify": "^5.10.0",
"fastify-plugin": "^5.1.0",
"node-cron": "^4.2.1",
"nodemailer": "^9.0.3",
"openid-client": "^6.8.2",
"pdf-lib": "1.17.1",
"pdfjs-dist": "6.4.299",
"pg": "^8.18.0",
"pg-boss": "^10.3.0",
"prisma": "^7.8.0",
"prom-client": "^15.1.0",
"sharp": "^0.34.5",
"tencentcloud-sdk-nodejs": "^4.1.14",
"zod": "^4.3.6",
"zxcvbn": "^4.4.2"
},
"devDependencies": {
"@vitest/coverage-v8": "^2.1.8",
"dotenv": "^16.4.5",
"vitest": "^2.1.8"
}
}