diff --git a/app.py b/app.py index 519ca30..cea1b96 100644 --- a/app.py +++ b/app.py @@ -177,6 +177,7 @@ def request_form(): notable_facts=request.form.get('notable_facts', '').strip(), style_genre=request.form.get('style_genre', '').strip(), extra_requests=request.form.get('extra_requests', '').strip(), + vocal_gender=request.form.get('vocal_gender', '').strip(), ) flash('Your request has been submitted! Check your email soon.', 'success') return redirect(url_for('thanks', rid=rid)) @@ -504,10 +505,10 @@ def admin_settings(): # Health check: verify expected columns exist. expected_cols = { 'id', 'created_at', 'name', 'email', 'hobbies', 'notable_facts', - 'style_genre', 'extra_requests', 'status', 'suno_title', 'suno_style', + 'style_genre', 'extra_requests', 'vocal_gender', 'status', 'suno_title', 'suno_style', 'suno_lyrics', 'song_a_path', 'song_b_path', 'customer_approved', 'approval_notified_at', 'preview_sent_at', 'delivery_sent_at', - 'square_payment_ref', 'admin_alert_email', 'player_token', 'revision_note' + 'square_payment_ref', 'admin_alert_email', 'player_token', 'revision_note', 'revision_count' } health = {'ok': True, 'missing_columns': [], 'message': 'Database schema looks good.'} try: diff --git a/models.py b/models.py index bf651fc..3a6cca4 100644 --- a/models.py +++ b/models.py @@ -34,6 +34,7 @@ CREATE TABLE IF NOT EXISTS requests ( suno_lyrics TEXT, song_a_path TEXT, song_b_path TEXT, + vocal_gender TEXT, customer_approved TEXT DEFAULT 'none', approval_notified_at TIMESTAMP, preview_sent_at TIMESTAMP, @@ -83,7 +84,7 @@ def now_utc(): return datetime.now(timezone.utc).isoformat() -def create_request(name, email, hobbies, notable_facts, style_genre, extra_requests): +def create_request(name, email, hobbies, notable_facts, style_genre, extra_requests, vocal_gender=None): """ Insert a new customer request. Returns the auto-generated request id. @@ -91,9 +92,9 @@ def create_request(name, email, hobbies, notable_facts, style_genre, extra_reque db = get_db() cur = db.execute( """INSERT INTO requests - (name, email, hobbies, notable_facts, style_genre, extra_requests, player_token) - VALUES (?, ?, ?, ?, ?, ?, ?)""", - (name, email, hobbies, notable_facts, style_genre, extra_requests, new_token()) + (name, email, hobbies, notable_facts, style_genre, extra_requests, vocal_gender, player_token) + VALUES (?, ?, ?, ?, ?, ?, ?, ?)""", + (name, email, hobbies, notable_facts, style_genre, extra_requests, vocal_gender, new_token()) ) db.commit() return cur.lastrowid diff --git a/templates/admin/request.html b/templates/admin/request.html index f6752c0..a0d0091 100644 --- a/templates/admin/request.html +++ b/templates/admin/request.html @@ -140,6 +140,7 @@

Hobbies:
{{ req.hobbies or '-' }}

Notable facts:
{{ req.notable_facts or '-' }}

Style / genre:
{{ req.style_genre or '-' }}

+

Preferred singer voice / gender:
{{ req.vocal_gender or 'No preference' }}

Extra requests:
{{ req.extra_requests or '-' }}

{% if req.revision_note %} @@ -305,9 +306,10 @@ hobbies: {{ req.hobbies | tojson }}, notable_facts: {{ req.notable_facts | tojson }}, style_genre: {{ req.style_genre | tojson }}, + vocal_gender: {{ req.vocal_gender | tojson }}, extra_requests: {{ req.extra_requests | tojson }} }; - const text = `Please write a Suno Custom Mode prompt for this customer. Suggest a song title too.\n\nCustomer data:\nName: ${data.name}\nHobbies: ${data.hobbies || '-'}\nNotable facts: ${data.notable_facts || '-'}\nStyle / genre: ${data.style_genre || '-'}\nExtra requests: ${data.extra_requests || '-'}\n\nReply with exactly this format:\n\nTitle: [suggested title]\n\nStyle:\n[the style description here]\n\nLyrics:\n[the lyrics here, with metatags]`; + const text = `Please write a Suno Custom Mode prompt for this customer. Suggest a song title too.\n\nCustomer data:\nName: ${data.name}\nHobbies: ${data.hobbies || '-'}\nNotable facts: ${data.notable_facts || '-'}\nStyle / genre: ${data.style_genre || '-'}\nPreferred singer voice / gender: ${data.vocal_gender || 'No preference'}\nExtra requests: ${data.extra_requests || '-'}\n\nReply with exactly this format:\n\nTitle: [suggested title]\n\nStyle:\n[the style description here]\n\nLyrics:\n[the lyrics here, with metatags]`; navigator.clipboard.writeText(text).then(() => alert("Copied! Paste Hermes response into the Title, Style, and Lyrics fields.")); } diff --git a/templates/request.html b/templates/request.html index 71570a0..d4b0148 100644 --- a/templates/request.html +++ b/templates/request.html @@ -61,7 +61,17 @@ font:inherit; margin-top:.25rem; } - input:focus,textarea:focus{ + select{ + width:100%; + padding:.7rem; + border-radius:.5rem; + border:1px solid #374151; + background:#111827; + color:#f3f4f6; + font:inherit; + margin-top:.25rem; + } + input:focus,textarea:focus,select:focus{ outline:none; border-color:#60a5fa; box-shadow:0 0 0 3px rgba(96,165,250,.2); @@ -122,6 +132,16 @@ + + +