Имэйлээр гэрээ баталгаажуулах процесс

Tokenized URL · Digital signature · Audit-traced workflow

v1.0 · 2026.04.27
🔄
Процесс
End-to-end flow
📨
Имэйл + Token
URL spec · JWT
✍️
Sign сонголт
4 хувилбар
⚠️
Алдааны хэрэг
Edge cases

🔄 End-to-end flow — TechOn → Customer email → Sign → Confirmed

TechOn систем гэрээг автоматаар generate хийж, харилцагч компанийн хариуцагч ажилтны имэйл рүү token-той URL илгээдэг. Хэрэглэгч URL-ыг дарж portal-д орж e-sign хийдэг. Бүх алхам audit log-д бичигдэнэ.

👤Account ManagerПлатформ
🖥️TechOn Server+ DB
📨SMTP / EmailSendGrid
📬ХариуцагчCustomer
🔐e-Sign Portal+ Audit log
1
Account Manager
TechOn Server
Гэрээг generate хийнэ (PDF)
2
TechOn Server
DB
Signing token үүсгэх (JWT, TTL 7d, single-use nonce)
5
Хариуцагч
e-Sign Portal
Хэрэглэгч имэйл нээж URL дарна (CLICKED)
6
e-Sign Portal
TechOn Server
GET /sign/:token — token validate хүсэлт
7
TechOn Server
e-Sign Portal
Token зөв ✓ · PDF preview илгээх · Audit: viewed
8
Хариуцагч
e-Sign Portal
Гэрээтэй танилцаж "Гарын үсэг зурах / Зөвшөөрөв" товч дарна
9
e-Sign Portal
TechOn Server
PDF дээр signature stamp + SHA-256 hash · Audit: signed (IP, UA, time)
11
TechOn Server
DB
Гэрээний статус: Pending → Active · Subscription идэвхжих
System / Server message Email transport User action Warning / decision

Алхам бүрийн дэлгэрэнгүй

1
Account Manager гэрээг generate хийнэ
Захиалгаас үндэслэн template сонгох → талбарыг автоматаар бөглөх (компанийн нэр, ТТД, дүн, хугацаа) → PDF generate.
/contracts/generatecreate
Хэн:Company Admin (Платформ) · Account Manager
2
Системд signing token + URL үүсгэх
JWT (HS256) дотор: contract_id, recipient_email, expires_at (7 хоног), nonce (single-use), audience. URL-ыг DB-д used=false төлөвт хадгална.
JWT HS256TTL 7dsingle-use nonce
Хэн:TechOn Server (Service Layer)
3
Имэйл template-д URL-ыг суулгаж SMTP-ээр илгээх
Mongolian template + branded layout · "Гэрээ #C-2026-0123 баталгаажуулах" · Кnopka: «Гэрээтэй танилцах + гарын үсэг зурах».
POST /notifications/email
Recipient:Customer Company-ийн хариуцагч ажилтан (зарим тохиолдолд CC: legal/accountant)
4
Хэрэглэгч имэйл хүлээн авах + URL дарах
«Танилцах + гарын үсэг» товч → browser-д https://app.techon.mn/sign/:token нээгдэнэ. Мобайл support.
click
Хэн:Customer-ийн хариуцагч ажилтан
5
Token validate + гэрээний preview
Сервер JWT-г шалгана: signature, exp, used. Зөв бол PDF preview харагдана. Audit log: contract.viewed.
GET /sign/:tokenaudit: viewed
Note:Хэрэв token expired/used бол error page → support руу холбогдоно
6
Гэрээтэй танилцах + "Зөвшөөрөв" товч дарах
Хэрэглэгч PDF-ийн агуулгатай танилцана. "Гарын үсэг зурах / Зөвшөөрөв" товч даран баталгаажуулна. Token нь recipient-locked + single-use учир өөр имэйлээс ашиглах боломжгүй — линк рүү хүрсэн нь өөрөө identity proof.
recipient-lockclick-to-confirm
Хэн:Customer-ийн хариуцагч ажилтан
7
PDF дээр signature stamp + hash хадгалах
PDF-д signature block (нэр, цаг, IP, UA hash) нэмж SHA-256 hash-ийг DB + audit log-д хадгална. Token-ыг used=true болгож revoke хийнэ.
SHA-256PUT /contracts/:id/signaudit: signed
Audit fields:signer_email, ip, user_agent, timestamp, geo, device_fingerprint, hash
8
Confirmation email + гэрээ Active
Хоёр талд signed PDF (countersigned) илгээж, гэрээний статус Pending → Active болно. CRM/billing trigger.
status:Active
Triggered:Subscription идэвхжих, нэхэмжлэх боловсруулах workflow эхлэнэ

📨 Имэйлийн загвар (mockup)

🔐 Token URL spec — JWT structure

// Үндсэн URL формат: https://app.techon.mn/sign/eyJhbGciOiJIUzI1NiIs... // JWT payload (decoded): { "iss": "techon.mn", // Issuer "aud": "contract-signing", // Audience "sub": "ariunaa.b@example-company.mn", // Recipient (locked) "contract_id": "C-2026-0123", "company_id": "comp-042", "role": "signer", // signer | viewer | cosigner "nonce": "a3f7-9b2c-...", // Single-use UUID "iat": 1714185600, // Issued at "exp": 1714790400 // Expires (7 days) } // HS256 signature: HMAC(payload, SECRET_KEY)

Аюулгүй байдлын тохиргоо

ПараметрУтгаУчир
AlgorithmHS256Symmetric secret. RS256 хэрэгтэй бол public key rotate хийнэ.
TTL (Time-to-live)7 хоногХариу авч эхлэхэд хангалттай. Уртад илүү бол xs ёскорайл уртасгана.
Single-usenonce + DB flagToken нэг л удаа ашиглагдана. used=true болсны дараа дахин ажиллахгүй.
Recipient locksub claimToken-ыг бусад имэйл рүү дамжуулсан ч өөр имэйлээс орж болохгүй (optional 2FA).
IP / UA логAudit log-дSign action бүрд IP, browser, OS, geo тэмдэглэнэ.
Rate limit5/min/IPBrute-force-аас хамгаалах.
Token rotateResend хийсэн бол шинэ tokenХуучин token автомат revoke болно.
Revoke APIPOST /sign/:token/revokeAccount manager хүсвэл цуцлах эрхтэй.

📊 Email-ийн төлөв (status enum)

StatusТайлбарTriggerUI харуулалт
SENTИмэйл илгээгдсэнSMTP accept📨 "Илгээсэн"
DELIVEREDХүлээн авагчид хүрсэнSendGrid event✓ "Хүргэгдсэн"
OPENEDИмэйл нээгдсэн1×1 pixel beacon👁 "Нээсэн"
CLICKEDURL дарсанGET /sign/:token🔗 "Дарсан"
VIEWEDГэрээтэй танилцсанToken validate📄 "Уншсан"
SIGNEDГарын үсэг зурсанClick confirm✅ "Гарын үсэг зурсан"
EXPIREDХугацаа дууссанexp < now()⏰ "Хугацаа дууссан"
REVOKEDЦуцлагдсанManager action🚫 "Цуцалсан"
BOUNCEDИмэйл алдаатайSMTP bounce❌ "Хүрээгүй"

✍️ Цахим гарын үсэг хийх 5 сонголт — харьцуулалт

Монгол улсын "Цахим гарын үсгийн тухай" хууль (2011)-ийн 5-р зүйлд цахим гарын үсэг нь "хүлээн зөвшөөрсөн гарын үсэгтэй ижил эрх зүйн хүчинтэй" гэж заасан. TechOn-д гэрээний үнэ цэнэ + эрсдлээс хамаарч сонгоно.

1. Magic Link + Click-to-sign

Mongolia eSig Law: ✅ Acceptable

Имэйлд token-той URL → portal-д орох → гэрээтэй танилцах → "Зөвшөөрөв" товч → IP/UA/timestamp/hash бүгдийг audit log-д. Token нь recipient-locked + single-use + 7 хоногийн TTL учир имэйлд хүрсэн нь identity proof болно.

  • Хэрэгжүүлэхэд маш хялбар, нэмэлт сервис (SMS gateway/НИД API) шаардахгүй
  • Хэрэглэгч app/account/setup юу ч шаардахгүй — нэг даралт
  • Audit trail (IP, UA, geo, time, PDF hash) хууль ёсны нотолгоо болно
  • Mobile/Desktop хаанаас ч ажиллана
  • SMS зардал, gateway уналт байхгүй
  • Имэйл хакерлагдсан тохиолдолд эрсдэлтэй (token хариуцагчийн mailbox-д хүртээмжтэй)
  • Маш том дүнгийн (₮100M+) гэрээнд хангалтгүй гэж үзэх магадлалтай — Tier 2 руу гарга
Эрх зүйн хүч: Дунд
Зардал: Маш бага
Хугацаа: ~1 минут
Implement: 1-2 7 хоног

2. НИД (Үндэсний Дижитал ID / DAN)

Mongolia eSig Law: ✅✅ Хамгийн хүчтэй

Засгийн газрын DAN системтэй integration (api.dan.gov.mn). Хэрэглэгч НИД QR код уншуулах эсвэл DAN app-д баталгаажуулна. Цахим иргэний ID-нд таних.

  • Хууль зүйн хамгийн өндөр хүчтэй (төрийн баталгаатай)
  • Биеийн давхцалгүй (one identity ↔ one citizen)
  • Том дүн, эмзэг гэрээнд тохирсон (₮100M+)
  • Шүүхэд маргаангүй
  • Integration хугацаа (1-2 сар), тусгай гэрээ хийх ёстой
  • Хэрэглэгч НИД-тэй байх ёстой (зарим компани IT bottleneck)
  • API-ийн зардал бий
Эрх зүйн хүч: Хамгийн өндөр
Зардал: Дунд
Хугацаа: ~5 минут
Implement: 1-2 сар

3. DocuSign / Adobe Sign integration

Mongolia eSig Law: ✅ ESIGN/eIDAS compliant

Олон улсад хүлээн зөвшөөрөгдсөн e-sign provider. TechOn-аас гэрээ үүсгэн DocuSign envelope-руу push хийж, тэр платформ дээр sign хийнэ.

  • International standard (ESIGN, eIDAS)
  • Олон улсын харилцагчид зориулсан
  • Long-term audit retention (10+ жил)
  • Multi-party signing flow
  • License зардал ($10-40/user/сар)
  • Хэрэглэгч DocuSign account шаардахгүй ч UI монгол хэлгүй
  • Дотоодын хууль 100% match хийхгүй
Эрх зүйн хүч: Өндөр (intl)
Зардал: Өндөр
Хугацаа: ~3 минут
Implement: 1 7 хоног (API)

4. Drawing pad signature (canvas) — standalone

Mongolia eSig Law: ⚠️ Сул хүчтэй

Хэрэглэгч хулгана/touch-аар гарын үсгээ canvas дээр зурна → PNG болж PDF-д суудаг. Identity verify гэж тоологдохгүй. Зөвхөн option 5-ийн нэг хэсэг болж хослох ёстой.

  • Маш хялбар UX
  • Зардалгүй
  • "Visually" гарын үсэг шиг харагдана
  • Identity proof байхгүй (хэн ч зурж болно)
  • Шүүхэд хүлээн авагдах магадлал бага
  • Зөвхөн нэмэлт давхрага болгон ашиглах
Эрх зүйн хүч: Бага
Зардал: Бараг 0
Хугацаа: ~1 минут
Implement: 2-3 хоног

⚠️ Алдааны хэрэг ба эдж кейс

Token хугацаа дууссан
7 хоногийн дотор хариу аваагүй. URL дарахад "expired" харагдана.
Шийдэл:«Шинэ имэйл хүсэх» товчоор Account Manager рүү автомат тикет үүсгэнэ. Manager шинэ token generate хийнэ.
🔁
Token хэдийн ашиглагдсан (replay attack)
Хэрэглэгч URL-ыг дахин дарах эсвэл бусад руу дамжуулсан үед.
Шийдэл:«Энэ гэрээ аль хэдийн баталгаажсан» message харуулж, signed PDF-ыг download боломжтой болгоно. Audit log-д token.replay.
📧
Имэйл bounce / хүрэхгүй
Buруу имэйл хаяг, mailbox дүүрсэн, spam-д орсон.
Шийдэл:SendGrid bounce event дээр Manager-т alert. CRM-аас имэйл засах боломжтой → resend хийнэ. Spam reason: SPF/DKIM record шалгах.
📤
Token-ыг өөр имэйл рүү дамжуулсан
Хариуцагч URL-ыг forward хийгээд өөр хүн нээж дарсан тохиолдолд.
Шийдэл:JWT-ийн sub claim recipient email-д lock-той тул бусад browser/IP-ээс орсоныг анхааруулна. Suspicious activity (өөр geo/IP) илэрвэл Account Manager-т alert. Audit log-д бүгд бичигдэнэ.
🚫
Хэрэглэгч "Татгалзах" товч дарсан
Гэрээний нөхцөлтэй санал нийлэхгүй байгааг илэрхийлсэн.
Шийдэл:Reason text шаардах (optional) → Account Manager-т notification + ticket. Гэрээний статус Rejected болно. Шинэ хувилбар гаргахдаа дахин начнут.
🌐
Network/server timeout sign үед
"Зөвшөөрөв" товч дарсан боловч save хийх үед connection алдагдах.
Шийдэл:Idempotency key ашиглах → дахин click хийсэн ч duplicate sign үүсэхгүй. Backend retry queue.
🤝
Multi-signer (2+ хэн зурах ёстой) хэрэгтэй бол
Зарим гэрээнд 2 хүн (e.g. CEO + Accountant) гарын үсэг шаардах.
Шийдэл:Sequential workflow — нэг ирвэл нөгөөд rusturn token. Бүгд signed бол гэрээ Active. Status: partial-signed → signed.
⚖️
Маргаан гарсан үед нотолгоо
Хэрэглэгч "Би энэ гэрээнд гарын үсэг зураагүй" гэж маргавал.
Шийдэл:Audit log-аас бүх метатата (IP, UA, geo, click trail, time, device fingerprint, PDF hash, JWT claims) export. Mongolia eSig Law-аар хүлээн зөвшөөрөгдөнө.
TechOn × Tavan Bogd Group · Email Contract Signing Process v1.0 · 2026.04.27