fix(ui): capitalize Persona in EN+TH UI copy and drop forced-lowercase count label

Use "Persona"/"Personas" (capital P) as the feature term across the English and
Thai UI instead of lowercase "persona". Thai now reads "Persona" with a space
separator in mixed Thai-English sentences (e.g. "เลือก Persona เพื่อฝึก",
"จัดการ Persona", "บันทึก Persona"). Remove .toLowerCase() on the persona count
label in Training so it renders "Personas"/"Persona" consistently.
This commit is contained in:
Macky
2026-08-25 21:05:13 +07:00
parent fde094e233
commit 0903b19691
5 changed files with 66 additions and 66 deletions

View File

@@ -62,13 +62,13 @@ const messages = {
notAvailable: 'not available',
setupFailed: 'Could not finish account setup',
chatActionFailed: 'Could not complete that chat action',
groupCreateFailed: 'Could not create the persona group',
groupCreateFailed: 'Could not create the Persona group',
myDashboardSubtitle: 'Your practice summary — see your wins and what still needs practice.',
noPractice: 'No practice yet',
noPracticeHint: 'Go to Training and try closing a sale with a persona.',
noPracticeHint: 'Go to Training and try closing a sale with a Persona.',
weakAreas: 'Weak areas',
weakAreasIntro: 'Choose a weakness to lock into a private persona for repeat practice.',
demoWeakAreasReadOnly: 'Read-only analysis — private persona creation is unavailable for demo accounts.',
weakAreasIntro: 'Choose a weakness to lock into a private Persona for repeat practice.',
demoWeakAreasReadOnly: 'Read-only analysis — private Persona creation is unavailable for demo accounts.',
winsLabel: 'Wins',
lossesLabel: 'Losses',
evidenceFrom: 'Evidence from',
@@ -79,10 +79,10 @@ const messages = {
prev: 'Previous',
next: 'Next',
noSessionsPage: 'No sessions on this page.',
privatePersonasIntro: 'Private personas are visible only to you for repeat practice.',
privatePersonasIntro: 'Private Personas are visible only to you for repeat practice.',
manualPersonaTitle: 'Create from my brief',
manualPersonaPlaceholder: 'e.g. A customer who pushes hard on price and does not trust sellers',
noPrivatePersonas: 'No private personas yet',
noPrivatePersonas: 'No private Personas yet',
privatePersonasHint: 'Create one above, or return to weak areas to choose a challenge.',
creating: 'Creating…',
productLabel: 'Product',
@@ -95,17 +95,17 @@ const messages = {
visibilitySaved: 'Visibility saved.',
visibilityUpdateFailed: 'Could not update group visibility. Please try again.',
groupInstructions: 'How to use this page',
groupInstructionAnalyze: 'The system creates 15 personas automatically after analysis.',
groupInstructionEdit: 'Edit a persona card when you need to adjust its details.',
groupInstructionStart: 'To practice: open Training, choose this product, choose a persona, then start a chat.',
noPersonas: 'No personas yet',
groupInstructionAnalyze: 'The system creates 15 Personas automatically after analysis.',
groupInstructionEdit: 'Edit a Persona card when you need to adjust its details.',
groupInstructionStart: 'To practice: open Training, choose this product, choose a Persona, then start a chat.',
noPersonas: 'No Personas yet',
noPersonasHint: 'Personas will appear when analysis finishes.',
previewMode: 'Preview mode — admin practice is excluded from trainee analytics.',
session: 'Session',
failurePoints: 'Missed points',
coaching: 'Coaching',
adminPersonaHint: 'Admin: adjust persona details here.',
newPersona: 'New persona',
adminPersonaHint: 'Admin: adjust Persona details here.',
newPersona: 'New Persona',
personaBasicInfo: 'Basic information',
personaCustomerInfo: 'Customer information',
personaSalesInfo: 'Sales information',
@@ -131,20 +131,20 @@ const messages = {
personaOpener: 'Customer conversation opener',
personaLockedHint: 'Editing is restricted — only super admins can view or edit this section (to protect the competitive advantage).',
personaSpecial: 'Special',
personaSave: 'Save persona',
personaSave: 'Save Persona',
personaClose: 'Close',
createVariant: 'Create a persona from this one',
scenarioContext: 'Choose the conversation context. The persona identity and who starts are fixed by the persona.',
createVariant: 'Create a Persona from this one',
scenarioContext: 'Choose the conversation context. The Persona identity and who starts are fixed by the Persona.',
total: 'Total',
dateRange: 'Date range',
apply: 'Apply',
clear: 'Clear',
hardestPersonas: 'Hardest personas',
hardestPersonas: 'Hardest Personas',
closeRate: 'Close rate',
activeUsers: 'Active users',
closeRateByDifficulty: 'Close rate by difficulty',
closeRateByDifficultyHint: 'Bucketed so easy-only practice cannot hide a real weakness. A high overall win rate may just mean people trained only on easy personas.',
skewEasy: 'Most practice is on easy personas — check the buckets',
closeRateByDifficultyHint: 'Bucketed so easy-only practice cannot hide a real weakness. A high overall win rate may just mean people trained only on easy Personas.',
skewEasy: 'Most practice is on easy Personas — check the buckets',
last30Days: 'Last 30 days',
default30Note: 'Default view = last 30 days',
teamWeakAreas: 'Team weak areas',
@@ -154,17 +154,17 @@ const messages = {
traineeTable: 'Per-trainee results',
traineeTableHint: 'Sessions, wins, close rate and the biggest weakness for each trainee.',
topWeakArea: 'Top weak area',
managePersonas: 'Manage personas',
managePersonas: 'Manage Personas',
difficulty: 'Difficulty',
trained: 'Trained',
addProduct: 'Add product',
trainingSubtitle: 'Pick a product group, then choose a persona to practice closing the sale.',
trainingSubtitle: 'Pick a product group, then choose a Persona to practice closing the sale.',
noTraining: 'No training groups available',
noProductsHint: 'Create your first product to start practicing.',
groups: 'Customer Groups (Persona)',
ownProducts: 'My products',
noOwnProducts: 'No products yet',
noOwnProductsHint: 'Add a product first. Its personas will be generated and shown inside that product.',
noOwnProductsHint: 'Add a product first. Its Personas will be generated and shown inside that product.',
orgProducts: 'Org products',
myTraining: 'My Training',
adminTools: 'Admin Tools',
@@ -185,7 +185,7 @@ const messages = {
revokeDemoFailed: 'Could not revoke the demo account.',
demoAccountCreateFailed: 'Could not create the demo account.',
analytics: 'Analytics',
groupBuilder: 'Create persona group',
groupBuilder: 'Create Persona group',
create: 'Create',
analyze: 'Analyze',
analyzing: 'Analyzing…',
@@ -200,11 +200,11 @@ const messages = {
language: 'Language',
thai: 'Thai',
english: 'English',
personas: 'personas',
personas: 'Personas',
tierA: 'Tier A — Ready to buy',
tierB: 'Tier B — Unsure',
tierC: 'Tier C — Not interested but has pain',
selectPersona: 'Select a persona to practice',
selectPersona: 'Select a Persona to practice',
chooseScenario: 'Choose a scenario',
chatGuideTitle: 'How to practice',
chatGuideText: 'You are playing the salesperson. Chat with this customer and try to close the sale. Ask about their needs, solve their pain, and handle their objections. When the customer makes a decision (buys, walks away, or chooses to trial first), the chat closes automatically and your score and coaching appear.',
@@ -218,9 +218,9 @@ const messages = {
score: 'Score',
pain: 'Pain',
why: 'Reason',
reveal: 'Revealed persona details',
generatePersona: 'Generate my persona',
myPersonas: 'My personas',
reveal: 'Revealed Persona details',
generatePersona: 'Generate my Persona',
myPersonas: 'My Personas',
mySessions: 'My sessions',
inProgress: 'In progress',
resume: 'Resume',
@@ -290,7 +290,7 @@ const messages = {
winsShort: 'ชนะ',
lossesShort: 'แพ้',
playsLabel: 'ครั้ง',
groupReport: 'รายงานกลุ่ม persona',
groupReport: 'รายงานกลุ่ม Persona',
viewReport: 'ดูรายงาน',
downloadReport: 'ดาวน์โหลดรายงาน',
reportLoadFailed: 'โหลดรายงานไม่สำเร็จ',
@@ -298,13 +298,13 @@ const messages = {
notAvailable: 'ไม่มีข้อมูล',
setupFailed: 'ตั้งค่าบัญชีไม่สำเร็จ',
chatActionFailed: 'ดำเนินการในแชทไม่สำเร็จ',
groupCreateFailed: 'สร้างกลุ่ม persona ไม่สำเร็จ',
groupCreateFailed: 'สร้างกลุ่ม Persona ไม่สำเร็จ',
myDashboardSubtitle: 'สรุปผลการฝึกของคุณ — ดูว่าปิดการขายได้กี่ครั้ง และยังต้องฝึกจุดไหน',
noPractice: 'ยังไม่มีประวัติการฝึก',
noPracticeHint: 'ไปที่หน้าการฝึก แล้วลองปิดการขายกับ persona สักคน',
noPracticeHint: 'ไปที่หน้าการฝึก แล้วลองปิดการขายกับ Persona สักคน',
weakAreas: 'จุดอ่อนที่ควรฝึก',
weakAreasIntro: 'เลือกจุดที่อยากล็อกไว้ แล้วสร้าง persona ส่วนตัวสำหรับฝึกซ้ำ',
demoWeakAreasReadOnly: 'อ่านผลวิเคราะห์ได้อย่างเดียว — บัญชีทดลองไม่สามารถสร้าง persona ส่วนตัวได้',
weakAreasIntro: 'เลือกจุดที่อยากล็อกไว้ แล้วสร้าง Persona ส่วนตัวสำหรับฝึกซ้ำ',
demoWeakAreasReadOnly: 'อ่านผลวิเคราะห์ได้อย่างเดียว — บัญชีทดลองไม่สามารถสร้าง Persona ส่วนตัวได้',
winsLabel: 'ชนะ',
lossesLabel: 'แพ้',
evidenceFrom: 'หลักฐานจาก',
@@ -315,10 +315,10 @@ const messages = {
prev: 'ก่อนหน้า',
next: 'ถัดไป',
noSessionsPage: 'หน้านี้ยังไม่มี session',
privatePersonasIntro: 'persona ในส่วนนี้เป็นพื้นที่ส่วนตัวของคุณ ใช้สำหรับฝึกซ้ำ',
privatePersonasIntro: 'Personaในส่วนนี้เป็นพื้นที่ส่วนตัวของคุณ ใช้สำหรับฝึกซ้ำ',
manualPersonaTitle: 'สร้างจากโจทย์ของฉัน',
manualPersonaPlaceholder: 'เช่น ลูกค้าที่ต่อราคาแรงและไม่เชื่อใจผู้ขาย',
noPrivatePersonas: 'ยังไม่มี persona ส่วนตัว',
noPrivatePersonas: 'ยังไม่มี Personaส่วนตัว',
privatePersonasHint: 'สร้างจากโจทย์ด้านบน หรือกลับไปที่จุดอ่อนเพื่อเลือกโจทย์',
creating: 'กำลังสร้าง…',
productLabel: 'สินค้า',
@@ -331,17 +331,17 @@ const messages = {
visibilitySaved: 'บันทึกการมองเห็นแล้ว',
visibilityUpdateFailed: 'เปลี่ยนการมองเห็นของกลุ่มไม่สำเร็จ กรุณาลองใหม่',
groupInstructions: 'วิธีใช้หน้านี้',
groupInstructionAnalyze: 'ระบบจะสร้าง persona 15 คนให้อัตโนมัติเมื่อวิเคราะห์เสร็จ',
groupInstructionEdit: 'กดแก้ไขการ์ดเพื่อปรับรายละเอียด persona ให้ตรงกับโจทย์',
groupInstructionStart: 'เริ่มฝึก: ไปที่การฝึก เลือกสินค้านี้ เลือก persona แล้วเริ่มแชท',
noPersonas: 'ยังไม่มี persona',
noPersonasHint: 'persona จะปรากฏเมื่อวิเคราะห์กลุ่มสำเร็จ',
groupInstructionAnalyze: 'ระบบจะสร้าง Persona 15 คนให้อัตโนมัติเมื่อวิเคราะห์เสร็จ',
groupInstructionEdit: 'กดแก้ไขการ์ดเพื่อปรับรายละเอียด Persona ให้ตรงกับโจทย์',
groupInstructionStart: 'เริ่มฝึก: ไปที่การฝึก เลือกสินค้านี้ เลือก Persona แล้วเริ่มแชท',
noPersonas: 'ยังไม่มี Persona',
noPersonasHint: 'Personaจะปรากฏเมื่อวิเคราะห์กลุ่มสำเร็จ',
previewMode: 'โหมด Preview — ผลการฝึกของผู้ดูแลจะไม่เข้า analytics ของผู้ฝึก',
session: 'Session',
failurePoints: 'จุดที่พลาด',
coaching: 'ข้อเสนอแนะ',
adminPersonaHint: 'ผู้ดูแลสามารถปรับรายละเอียดของ persona ได้ที่นี่',
newPersona: 'persona ใหม่',
adminPersonaHint: 'ผู้ดูแลสามารถปรับรายละเอียดของ Personaได้ที่นี่',
newPersona: 'Personaใหม่',
personaBasicInfo: 'ข้อมูลพื้นฐาน',
personaCustomerInfo: 'ข้อมูลลูกค้า',
personaSalesInfo: 'ข้อมูลการขาย',
@@ -367,15 +367,15 @@ const messages = {
personaOpener: 'ช่องทางสำหรับลูกค้าเปิดบทสนทนา (opener)',
personaLockedHint: 'ปิดการแก้ไข — เฉพาะผู้ดูแลระดับสูงเท่านั้นที่ดู/แก้ได้ (เพื่อรักษาความได้เปรียบ)',
personaSpecial: 'พิเศษ',
personaSave: 'บันทึก persona',
personaSave: 'บันทึก Persona',
personaClose: 'ปิด',
createVariant: 'สร้าง persona จากต้นแบบนี้',
scenarioContext: 'เลือกบริบทการสนทนา โดยตัวตนของลูกค้าและคนที่เริ่มก่อนมาจาก persona',
createVariant: 'สร้าง Persona จากต้นแบบนี้',
scenarioContext: 'เลือกบริบทการสนทนา โดยตัวตนของลูกค้าและคนที่เริ่มก่อนมาจาก Persona',
total: 'ทั้งหมด',
dateRange: 'ช่วงเวลา',
apply: 'กรอง',
clear: 'ล้าง',
hardestPersonas: 'persona ที่ขายยากที่สุด',
hardestPersonas: 'Personaที่ขายยากที่สุด',
closeRate: 'อัตราปิดการขาย',
activeUsers: 'ผู้ที่ฝึกในรอบนี้',
closeRateByDifficulty: 'อัตราปิดการขายแยกตามความยาก',
@@ -390,17 +390,17 @@ const messages = {
traineeTable: 'ผลการฝึกรายคน',
traineeTableHint: 'จำนวนครั้ง ชนะ อัตราปิดการขาย และจุดอ่อนเด่นของแต่ละคน',
topWeakArea: 'จุดอ่อนเด่น',
managePersonas: 'จัดการ persona',
managePersonas: 'จัดการ Persona',
difficulty: 'ระดับความยาก',
trained: 'ฝึกแล้ว',
addProduct: 'เพิ่มสินค้า',
trainingSubtitle: 'เลือกกลุ่มสินค้า แล้วเลือก persona เพื่อฝึกปิดการขาย',
trainingSubtitle: 'เลือกกลุ่มสินค้า แล้วเลือก Personaเพื่อฝึกปิดการขาย',
noTraining: 'ยังไม่มีกลุ่มฝึก',
noProductsHint: 'สร้างสินค้าชิ้นแรกของคุณเพื่อเริ่มฝึก',
groups: 'กลุ่มลูกค้า (Persona)',
ownProducts: 'สินค้าของฉัน',
noOwnProducts: 'ยังไม่มีสินค้าของคุณ',
noOwnProductsHint: 'เพิ่มสินค้าก่อน ระบบจะสร้าง persona และแสดง persona ไว้ภายในสินค้านั้น',
noOwnProductsHint: 'เพิ่มสินค้าก่อน ระบบจะสร้าง Persona และแสดง Persona ไว้ภายในสินค้านั้น',
orgProducts: 'สินค้าขององค์กร',
myTraining: 'ประวัติการฝึก',
adminTools: 'เครื่องมือผู้ดูแลระบบ',
@@ -421,7 +421,7 @@ const messages = {
revokeDemoFailed: 'เพิกถอนบัญชีทดลองไม่สำเร็จ',
demoAccountCreateFailed: 'สร้างบัญชีทดลองไม่สำเร็จ',
analytics: 'สถิติ',
groupBuilder: 'สร้างกลุ่ม persona',
groupBuilder: 'สร้างกลุ่ม Persona',
create: 'สร้าง',
analyze: 'วิเคราะห์',
analyzing: 'กำลังวิเคราะห์…',
@@ -436,11 +436,11 @@ const messages = {
language: 'ภาษา',
thai: 'ไทย',
english: 'อังกฤษ',
personas: 'persona',
personas: 'Persona',
tierA: 'ระดับ A — พร้อมตัดสินใจซื้อ',
tierB: 'ระดับ B — ยังไม่แน่ใจ',
tierC: 'ระดับ C — ไม่สนใจแต่มีปัญหา',
selectPersona: 'เลือก persona เพื่อฝึก',
selectPersona: 'เลือก Personaเพื่อฝึก',
chooseScenario: 'เลือกสถานการณ์',
chatGuideTitle: 'วิธีฝึก',
chatGuideText: 'คุณรับบทเป็นพนักงานขาย พูดคุยกับลูกค้าคนนี้เพื่อพยายามปิดการขายให้ได้ สอบถามความต้องการ แก้ไขปัญหาของลูกค้า และรับมือกับข้อโต้แย้ง เมื่อลูกค้าตัดสินใจ (ซื้อ ปฏิเสธ หรือขอลองใช้ก่อน) ระบบจะปิดแชทและสรุปผลให้อัตโนมัติ',
@@ -454,8 +454,8 @@ const messages = {
score: 'คะแนน',
pain: 'ปัญหาของลูกค้า',
why: 'เหตุผล',
reveal: 'รายละเอียด persona ที่ถูกซ่อนไว้',
generatePersona: 'สร้าง persona เพิ่มเติม',
reveal: 'รายละเอียด Persona ที่ถูกซ่อนไว้',
generatePersona: 'สร้าง Personaเพิ่มเติม',
myPersonas: 'Personaของฉัน',
mySessions: 'ประวัติการฝึกของฉัน',
inProgress: 'กำลังฝึก',

View File

@@ -8,14 +8,14 @@
<ol style="margin:8px 0 0;padding-left:20px;line-height:1.8">
<li>กรอก <strong>นค / บรการ / ไอเด</strong> อยากใหมฝกนำเสนอ</li>
<li>(ไมงค) ระบกลมเปาหมาย / รายละเอยดเพมเต <strong>หรออปโหลดไฟลเอกสาร</strong> (.pdf .md .txt .docx .xlsx) แทนการกรอกได</li>
<li>กด <strong>สราง</strong> ระบบจะสราง persona (กคาจำลอง) ใหนท</li>
<li>ระบบสราง persona ใหตโนมครบ 15 คน (ระด A/B/C อยางละ 5 คน)</li>
<li>กด <strong>สราง</strong> ระบบจะสราง Persona (กคาจำลอง) ใหนท</li>
<li>ระบบสราง Persona ใหตโนมครบ 15 คน (ระด A/B/C อยางละ 5 คน)</li>
</ol>
</div>
<!-- A/B/C explanation panel -->
<div class="card abc">
<strong><Layers :size="18" :stroke-width="1.8" style="vertical-align:-3px" /> ระดบลกค (persona) A / B / C</strong>
<strong><Layers :size="18" :stroke-width="1.8" style="vertical-align:-3px" /> ระดบลกค (Persona) A / B / C</strong>
<div class="abc-grid">
<div class="abc-item">
<span class="abc-badge a">A</span>
@@ -80,7 +80,7 @@
<router-link v-if="failedGroupPath" :to="failedGroupPath" class="btn-back">{{ i18n.t('training') }}</router-link>
</div>
<button data-testid="create-group" class="primary" style="margin-top:16px;display:inline-flex;align-items:center;gap:6px" :disabled="busy || (!form.product && !files.length)" @click="create">
<PlusCircle :size="18" :stroke-width="2" /> {{ busy ? 'กำลังสร้าง persona…' : i18n.t('create') }}
<PlusCircle :size="18" :stroke-width="2" /> {{ busy ? 'กำลังสร้าง Persona…' : i18n.t('create') }}
</button>
</div>
</div>

View File

@@ -6,7 +6,7 @@
<div class="card">
<h3 style="margin-top:0"><LayoutDashboard :size="18" :stroke-width="1.8" style="vertical-align:-3px" /> 1. แทบหล (menu านบน)</h3>
<ul style="line-height:1.9">
<li><strong>การฝ</strong> เลอกสนค เลอก persona (กคาจำลอง) เรมแชท</li>
<li><strong>การฝ</strong> เลอกสนค เลอก Persona (กคาจำลอง) เรมแชท</li>
<li><strong>ผลการฝ</strong> ของตวคณเอง: ชนะ/แพ, ดออนทควรฝ, ประวการฝ</li>
<li v-if="auth.isAdmin"><strong>ภาพรวม</strong> (เฉพาะผแล) สถผลการฝกของท + กรองตามชวงเวลา</li>
<li><strong>การตงค ()</strong> แก/เมล, เปลยนรหสผาน, เปลยนภาษา</li>
@@ -18,7 +18,7 @@
<h3 style="margin-top:0"><Target :size="18" :stroke-width="1.8" style="vertical-align:-3px" /> 2. (start a session)</h3>
<ol style="line-height:1.9;padding-left:20px">
<li>เขาแท <strong>การฝ</strong> เลอกสนคาทอยากฝ</li>
<li>เลอก persona (กคาจำลอง) ระด A ายส / C ยากส (ดาวความยาก)</li>
<li>เลอก Persona (กคาจำลอง) ระด A ายส / C ยากส (ดาวความยาก)</li>
<li>เลอก <strong>สถานการณ</strong>: โซเชยล (กคาทกกอน) / พบหน-โทร (ณทกกอน) / กลบมาตดต</li>
<li>แชทกบลกค กปดการขาย กคาจะตดสนใจเองวาซอหรอไม</li>
<li>หลงจบ ผล + อเสนอแนะ + อมลลกคาทกซอนไวหน <strong>ผลการฝ</strong></li>
@@ -28,7 +28,7 @@
<div class="card">
<h3 style="margin-top:0"><Sparkles :size="18" :stroke-width="1.8" style="vertical-align:-3px" /> 3. เคลดล</h3>
<ul style="line-height:1.9">
<li>กคาแตละคน หรอแตละ <strong>persona</strong> กได <strong>คนละคร</strong> (one-shot) กจนจบแลวลองคนอ</li>
<li>กคาแตละคน หรอแตละ <strong>Persona</strong> กได <strong>คนละคร</strong> (one-shot) กจนจบแลวลองคนอ</li>
<li>าออกกลางค กลบมาได ยตอจากเด (งไมบวาจบ)</li>
<li>ดการขาย = แกญหาจรงของลกค + บมอขอโตแย + ดราคา</li>
</ul>
@@ -37,8 +37,8 @@
<div v-if="auth.isAdmin" class="card">
<h3 style="margin-top:0"><Wrench :size="18" :stroke-width="1.8" style="vertical-align:-3px" /> 4. สำหรบผแล (Admin)</h3>
<ul style="line-height:1.9">
<li> <strong>เพมสนค</strong> (หน การฝ) สรางกล persona ใหมจากสนค/โจทยของค</li>
<li>หน <strong>ดการ persona</strong> แกไขรายละเอยดลกคาแตละคน แลวเปดใชงาน</li>
<li> <strong>เพมสนค</strong> (หน การฝ) สรางกล Persona ใหมจากสนค/โจทยของค</li>
<li>หน <strong>ดการ Persona</strong> แกไขรายละเอยดลกคาแตละคน แลวเปดใชงาน</li>
<li>หน <strong>ภาพรวม</strong> สถของท + หนาผใชงานสรางบญชให (username + รหสผานเรมต)</li>
<li> <strong>CSV</strong> (หน ภาพรวม) ดาวนโหลดผลการฝกทงหมด</li>
</ul>

View File

@@ -8,7 +8,7 @@
<div class="card guide" v-if="!auth.isAdmin">
<strong><Target :size="17" :stroke-width="1.8" /> </strong>
<ol style="margin:8px 0 0;padding-left:20px;line-height:1.8">
<li>เลอก persona (กคาจำลอง) คนหนงทอยากฝกดวย</li>
<li>เลอก Persona (กคาจำลอง) คนหนงทอยากฝกดวย</li>
<li>ระด A ายส ระด C ยากส (จากดาว ความยาก)</li>
<li>กด <strong>แชท</strong> เลอกสถานการณ (โซเชยล / พบหน-โทร) เรมคยกบลกค</li>
<li>กคาจะตดสนใจเองวาซอหรอไม (กไดคนละครงเทาน)</li>

View File

@@ -135,7 +135,7 @@
>
<div class="muted g-product">{{ productName(g) }}</div>
<div class="row" style="gap:8px;margin-top:auto;padding-top:10px">
<span class="persona-count"><Users :size="14" :stroke-width="1.8" /> {{ personaCount(g) }} {{ i18n.t('personas').toLowerCase() }}</span>
<span class="persona-count"><Users :size="14" :stroke-width="1.8" /> {{ personaCount(g) }} {{ i18n.t('personas') }}</span>
</div>
<button class="primary" style="width:100%;margin-top:14px">
{{ auth.isAdmin ? (g.status === 'ready' ? i18n.t('managePersonas') : i18n.t('analyze')) : i18n.t('selectPersona') }}