37 lines
2.3 KiB
Markdown
37 lines
2.3 KiB
Markdown
# Contract Processing Completeness Audit
|
|
|
|
When asked "have all contracts been reviewed/registered" for a date range, follow this exhaustive verification method. Do NOT answer from memory — every claim must be tool-verified.
|
|
|
|
## Input Channels to Check (ALL of these)
|
|
|
|
1. **QiuTing private messages** — gateway.log `user=QiuTing chat=QiuTing msg=''` (empty msg = file)
|
|
2. **Doro private messages** — gateway.log `user=doro chat=doro msg=''` (empty msg = file)
|
|
3. **Doro group messages** — gateway.log `user=doro chat=wrbAFkXAAAiWC3styKqNj0bZyH6BbJ_Q msg=''`
|
|
4. **Feishu messages** — gateway.log feishu platform entries with `media=` indicators
|
|
5. **Direct Nextcloud uploads** — Doro uploads directly to 待审查/ without going through gateway (indicated by Doro saying "待审查里上传了新合同" without a preceding file message)
|
|
|
|
## Cross-Reference Procedure
|
|
|
|
```
|
|
Step 1: Count ALL file-receive events per channel in date range (gateway.log grep)
|
|
Step 2: Read tracker JSON — list all entries in date range by seq
|
|
Step 3: Read xlsx — verify 1:1 match with tracker
|
|
Step 4: Check 待审查/ directory for unprocessed files
|
|
Step 5: Check 任务交付/ for delivered but un-tracked files
|
|
Step 6: Reconcile: total received (Step 1) vs total tracked (Step 2)
|
|
Account for: duplicates (Doro said "重复了 不用审了"), non-contracts (excluded),
|
|
multi-file batches, files awaiting pass
|
|
```
|
|
|
|
## Critical Rule
|
|
|
|
**Never say "查证属实无遗漏" unless ALL channels have been checked and reconciled.** If a channel cannot be fully verified (e.g., log doesn't record filenames for empty messages), state the uncertainty explicitly.
|
|
|
|
## Pitfalls (from 2026-06-29 incident)
|
|
|
|
- Doro sends files via private chat AND uploads directly to Nextcloud — both channels must be checked
|
|
- Gateway log records `msg=''` for file messages but does NOT record the filename — you cannot map file→contract from log alone
|
|
- When Doro says "2份 顾问单位是X", the number must be verified against tracker entries matching that party
|
|
- A contract may be tracked under a different party name than expected (e.g., "重固卫生服务中心" contract could be filed under the actual contract title without "重固" in it)
|
|
- Session memory is NOT verification — "I remember processing it" is not evidence
|