# Royal Teen Patti — AI Opponents, Avatars और Quick Voice

यह update पिछले Royal Teen Patti Public Rooms project में जुड़ता है। सिर्फ Classic Teen Patti playable है। सभी chips **free virtual chips** हैं; UPI, खरीद, वास्तविक नकद या cash withdrawal नहीं है।

## Public Room में खिलाड़ी अकेला हो तो

1. Player email OTP से login कर के **Gold Rooms** में कोई tier चुनता है, फिर **Play Now** दबाता है।
2. Server उसकी उपलब्ध virtual chips को table buy-in में लेता है।
3. मैच के लिए पर्याप्त real players न होने पर automated opponents लगभग 1–2 सेकंड के बाद सीटों में जोड़े जाते हैं। लगभग 5 सेकंड के आसपास 3 ready seats हो जाने पर मैच अपने आप शुरू होता है। यह deployment की latency पर निर्भर करता है और exact 5-second SLA नहीं है।
4. Bots का नाम, avatar और betting style अलग हो सकता है: careful, balanced या bold। वे Blind, See, Chaal, Pack, Show और Side Show response कर सकते हैं। हर bot का निर्णय **सिर्फ अपनी cards और publicly visible table details** पर आधारित होता है। Server दूसरे players की hidden cards bot strategy को नहीं देता।
5. Real players जब join करते हैं, तो जगह होने पर उसी public table में बैठते हैं; table full हो और bot seat available हो तो **rounds के बीच** bot की जगह player बैठ सकता है। Active round के बीच नए players enter नहीं करते।
6. Bot avatars पर बड़े labels या badges नहीं हैं, लेकिन **Room Info में automated seats की संभावना स्पष्ट लिखी हुई है**। वास्तविक online players का आंकड़ा fake नहीं किया जाता।

**नोट:** Database migration 004 में 120 bot identities बनाई जाती हैं। यह small community / development use के लिए है, असीम क्षमता नहीं। बड़े deployment के लिए bot pool और concurrency परीक्षण बढ़ाने होंगे।

## Player अपना avatar कैसे बदले?

- App खोलें → **Settings** → **Choose your avatar**।
- दस original avatars में से एक चुनें।
- चयन तुरंत user account (`users.avatar_id`) में save होगा और game की current table, Profile और leaderboard पर update हो जाएगा।
- तस्वीरें `apps/web/public/avatars/avatar-01.png` से `avatar-10.png` तक हैं। 
- ये original generated artwork के avatar portrait crops हैं, किसी third-party game की proprietary assets नहीं।

## Game में Quick Voice

- Table के नीचे 10 buttons में से कोई भी दबाएँ, जैसे “जल्दी चाल चल!”, “वाह, क्या बात है!”, “ब्लफ हो गया!”, “Great move!”।
- सभी table players को short voice clip और screen पर text bubble मिलेगा। Bots भी कभी-कभी random voice messages भेजते हैं; 4-second rate-limit spam रोकता है।
- Original clips `apps/web/public/voices/phrase-01.wav` ... `phrase-10.wav` में हैं। ये local synthesized voice clips हैं, किसी voice actor की cloned recording नहीं।
- Browser sound autoplay restrictions के कारण player द्वारा पहले user interaction किए बिना bot का आवाज़ playback block हो सकता है; text bubble फिर भी दिखेगा।

## Owner कौन-क्या संभालेगा?

- Owner admin login से users देखेगा, unique Game ID से profile ढूँढेगा, free virtual chips approve/reject या overwrite करेगा, history एवं audit देखेगा।
- Public Gold Room tiers व पहले के private rooms यथावत हैं।
- Live hidden cards खिलाड़ियों या खेलते हुए Owner को नहीं दिए जाते। Finished rounds की पूरी history उपलब्ध है।
- Online Player counters केवल connected human accounts गिनते हैं, automated seats नहीं।

## Upgrade और Test

1. पुरानी ZIP की backup रखें।
2. इस update की complete ZIP unzip करें।
3. `.env.example` के अनुसार PostgreSQL, SMTP, session secrets configure करें।
4. `npm install` और `npm run migrate` (004_avatars_bot_opponents.sql अपने आप apply हो जाएगी)।
5. `npm run test` और `npm run build` चलाएँ, फिर `npm run dev:api` और `npm run dev:web` के माध्यम से local testing करें।
6. तीन scenarios ज़रूर जाँचें: **एक real player + दो bot**, **तीन real players**, और **full table जिसमें bot seat real player से replace हो**।
7. Profile avatar save/reload, wallet transfers, voice buttons और bot round payout चेक करें।

### Verification notes

Code-level node tests: 27 पास। Frontend JSX TypeScript parser से valid पाया गया। इस session में npm dependencies install नहीं हुए और PostgreSQL/SMTP live connectivity नहीं उपलब्ध थी; इसलिए production deployment, full Vite build, sound playback और 5-second matchmaking का end-to-end परीक्षण नहीं हुआ है।
