設計交接 · R4 修訂 · YOUR.NA-NA.DATE
R2 回應客戶對 R1 的回饋——「太像報告、不夠吸引人」。本頁預設開啟的是產品預覽:全幅、像真網站一樣直接瀏覽的成品畫面,不必先穿過文件;本「設計交接」區集中收納 IA、雙框審閱、規格、狀態矩陣、PM 決策與待決假設。功能與語義沿用 R1 與 PM 決策,本輪未部署、未發布,後端尚未接通,原型互動皆為前端模擬。
以下決策已由用戶確認,本輪直接沿用、不再重問。凡未定案者一律標為「假設」,並在受影響畫面旁列出依賴。
R2 不改已定案的功能與語義——PM 決策、記憶確認規則、帳戶隔離、狀態誠實標示全數保留;三步精靈依 PM 定案為「名字 → 性格 → 確認」,外貌與 WhatsApp 置於完成後「接下來」(與交接文件 R1.3 對齊)。改變的是呈現:產品先行,文件退到交接區。
| 面向 | R1 | R2 |
|---|---|---|
| 開啟方式 | 先讀整份審閱文件,原型在文件中段的雙框裡 | 預設直接開啟產品預覽(全幅、像真網站);規格、矩陣與驗收集中在本「設計交接」區,頂欄一鍵切換 |
| 首頁首屏 | 標題+邀請卡+三欄功能卡並列,密度像說明頁 | 角色主視覺主導首屏:大幅示例肖像、柔和光影景深、漂浮對話卡、分層入場;標題縮短為一句情感訴求,主要操作只留一個「建立我的角色」 |
| 我的角色 | 角色卡、狀態卡、記憶卡同權重並排 | 角色圖放大置中、聊天入口緊貼角色;WhatsApp 狀態與待確認記憶降為次要層級,管理資訊再其次 |
| 記憶 | 卡片靜態出現,操作即時跳變 | 短卡依序進場;確認/不保存/復原有離場過渡與回饋(語義與徽章規則不變) |
| 其餘四頁 | 原型內為線框占位 | 邀請、角色設定、外貌、帳戶套用同一視覺語言的精簡設計;線框章節保留為版面與狀態依據 |
| 動效 | 僅 hover 變色 | 分層入場、捲動 reveal、按鈕 hover/press、角色卡 hover 微浮、步驟切換與記憶操作過渡;prefers-reduced-motion 時全部停用位移 |
| 首頁文案 | 主標「只屬於你的她」把所有角色固定為女性;結尾文案「今晚,就能在 WhatsApp 跟她說晚安」承諾了尚未接通的啟用時間 | 主標改為「只屬於你的角色,在 WhatsApp 裡陪你說話」等包容表述(角色完全自訂,名字/性格/外貌皆由用戶決定);移除一切時間承諾,改為不承諾啟用時間的說法;精靈與設定表單的通用標籤同步中性化 |
| 原始碼交付 | 僅線上預覽 | 新增可下載的完整前端原始碼 ZIP(本交接區「原始碼下載」):index.html 完整來源、原始圖片、圖片與字體資產清單、動效與響應式規則、啟動 README,可在本機獨立啟動供接後端 |
主導航正式採用四項:我的角色、角色設定、記憶、帳戶;「外貌」為角色設定的子導航(PM 決策)。桌面為左側欄+雙欄內容,手機為底部導航+單欄,且手機首屏必須看到角色名字與主要操作。
首頁輸入或前往 /invite;驗證通過才建立帳號。
稱呼與角色名字 → 性格與背景 → 確認角色。外貌與 WhatsApp 連接可稍後(PM 決策);草稿按帳戶保存(PM 決策)。
綁定完成後由 /home 一鍵前往 WhatsApp;網站不提供聊天介面。
AI 建議出現在 /memories 待確認;確認才保存並進入聊天上下文,可暫不處理、不保存、修改、刪除。
這是審閱工具:與「產品預覽」同一份原型,在此以真實尺寸雙框並列——桌面 1440×900、手機 390×844。用「畫面狀態」切換器檢視每個頁面的關鍵狀態;原型內按鈕、步驟、記憶確認皆可實際操作(前端模擬,不連後端)。手機首屏規則:角色名字與主要操作必須在第一屏內可見。
畫面說明
本畫面檢核
線框以灰階呈現版面結構與區塊優先級;元件樣式沿用設計規範。邀請頁的四種驗證結果可直接點選預覽。R2 起原型內四頁已套用產品視覺語言(精簡設計),本章線框保留為版面與狀態的依據。
/invite · 線框
依賴假設:邀請碼期限、可用次數、撤銷規則、登入/復原方式皆待 PM 與後端定案;錯誤文案需依後端可區分的失敗原因調整。
/character · 線框
依賴假設:性格標籤清單與字數上限待 PM 定案;欄位驗證規則(必填、長度)由後端確認後補入規範。
/appearance · 線框
依賴假設:生圖供應商、圖片格式/大小/張數上限、儲存與保存期限皆未定案(Qwen 預定負責圖片,尚待接入)。
/settings · 線框
依賴假設:登入與帳戶復原方式、WhatsApp 轉綁規則未定案;號碼模式已定案為共用 NANA 官方號碼、依驗證綁定路由(PM 決策),畫面不寫死實際號碼。
每個必須設計的狀態、它的呈現方式與所在畫面。原則:失敗保留輸入、未知明說未知、不假裝成功。
| 領域 | 狀態 | 設計呈現 | 出現畫面 |
|---|---|---|---|
| 帳戶 | 新帳戶空白 | 角色、圖片、記憶全為空狀態+下一步引導;不預填任何資料。 | /home、/memories(狀態切換可檢視) |
| 邀請碼 | 輸入中 / 驗證中 | 驗證中按鈕 loading、輸入鎖定、aria-live 播報結果。 | /invite 線框(可操作) |
| 無效 / 已過期 / 已被使用 | 三種失敗分開文案與下一步(重新輸入/聯絡邀請人/前往登入),不合併成一句「錯誤」。 | /invite 線框(可操作) | |
| 表單 | 編輯中 / 未存離開 | 有未存變更時離開跳對話框:儲存草稿並離開/不儲存離開/繼續編輯。 | /welcome(可操作) |
| 儲存中 / 成功 / 失敗 | 儲存中禁用重複送出;成功 toast+時間;失敗紅色橫幅+重試,輸入完整保留。 | /welcome、/character | |
| 草稿(PM 決策:按帳戶保存) | 正式採按帳戶保存;真實成功提示待後端實作與驗證後才啟用,原型維持中性「設計示意」標示,不冒充已保存。重進 /welcome 回到未完成步驟。 | /welcome(保留期限未定案) | |
| 圖片 | 未上傳 / 上傳中 / 預覽 | 虛線拖放區→進度條(可取消)→3:4 裁切預覽。 | /appearance(線框)+圖片規範 |
| 失敗 / 替換 / 刪除 | 失敗顯示原因與重試,已上傳圖不受影響;刪除需二次確認。 | /appearance 線框+規範 | |
| 未綁定 | 綁定狀態列顯示「尚未綁定」+綁定 CTA;聊天按鈕導向綁定而非假裝開啟。 | /home(狀態切換) | |
| 驗證中 | 「已產生一次性綁定碼,等待你以自己的 WhatsApp 私訊官方號碼傳送綁定碼」;網站不把驗證碼寄到用戶電話;服務狀態列獨立顯示。 | /home、/welcome 第 3 步連接卡 | |
| 已綁定・服務未知 | 綁定列「已綁定」與服務列「狀態未知,尚未取得服務回報」分開呈現,附「重新檢查」。 | /home(狀態切換) | |
| 服務可用 / 服務中斷 | 可用才啟用「在 WhatsApp 聊天」;中斷顯示原因與重試,角色資料不受影響。 | /home(狀態切換) | |
| 記憶 | 待確認・四動作(PM 決策) | 標明「尚未保存」;四動作分開:確認保存、修改後保存、暫不處理(留待確認、徽章不變)、不保存(移出、徽章 −1)。僅確認保存者標示為已保存並進入聊天上下文,規則寫在畫面上。全站不使用「略過」一詞。 | /memories(可操作) |
| 已保存・修改 / 刪除 | 已保存可再編輯或刪除,刪除需確認並說明「刪除後角色不再記得這件事」。 | /memories(可操作) | |
| 不保存回收區 | 第三分頁「不保存」:可復原至待確認,或永久刪除(需確認);內容不進聊天上下文。 | /memories(可操作) | |
| 生圖 | 服務未接通 | 「產生預覽」禁用+說明;只保存參考圖與描述,不顯示任何假生成結果。 | /appearance、/welcome「接下來」卡 |
以下 token 與元件即原型實際使用的樣式(本頁框內畫面就是以這套規範渲染)。色彩對比以 WCAG 2.1 計算,內文組合全數達 AA。
色彩 Tokens
#302A2C on 背景 = 13.17 : 1;次文字 #71666A = 5.16 : 1;主色 #8A4F60 = 5.84 : 1,白字 on 主色 = 6.24 : 1,全數 ≥ AA(4.5)。#74404F(7.60 : 1);狀態色僅用於徽章與圖示,不單獨承載資訊(同時附文字)。字體與間距
"Noto Sans TC", "Microsoft JhengHei", sans-serif;品牌與主標題可用 Noto Serif TC 600。響應式規則
元件(即時渲染範例)
角色名字不能留空。
aria-invalid 標示。互動與無障礙
:focus-visible 3px 主色外框+2px 偏移,全站一致。aria-live="polite" 播報。prefers-reduced-motion 時停用位移動畫與轉場,loading 旋轉降速;不用自動播放動畫。文案語氣
嚴格區分兩類圖片:品牌裝飾圖(官方素材、構圖可控)與用戶上傳圖(不可控,只能給裁切規則與安全區)。下方滑桿可預覽同一張圖在不同裁切焦點下的角色卡效果。
assets/hero-realistic.png(1536×1024)。真圖尚未嵌入(PM 本機私有入口),目前為標示清楚的佔位圖;PM 同名覆蓋即替換。裁切焦點以 CSS 變數 --hero-focus-x / --hero-focus-y(預設 50%/30%)控制,桌面橫幅與手機裁切共用同一焦點,臉部完整、文案區與圖層分離不受裁切影響。角色卡 3:4 預覽
object-position 焦點裁切,不拉伸變形。本輪狀態
交接分工
假設與待決(不自行定案)
| 事項 | 目前假設 | 受影響畫面 |
|---|---|---|
| 登入與帳戶復原方式 | 未定案;畫面預留區塊 | /invite、/settings |
| PM 決策 WhatsApp 號碼模式 | 共用 NANA 官方號碼,依用戶驗證綁定路由;畫面不寫死實際號碼 | /welcome、/home、/settings |
| 邀請碼期限/次數/撤銷 | 未定案;錯誤狀態先分開設計 | /invite |
| WhatsApp 轉綁規則 | 未定案;先保留管理入口 | /settings、/home |
| 草稿保留期限 | 未定案;文案不承諾天數 | /welcome |
| 生圖供應商/資料庫/部署 | 未定案;生圖一律顯示未接通 | /appearance、/welcome |
| PM 決策 主導航結構 | 正式採用四項主導航+外貌子導航 | 全站登入後畫面 |
| PM 決策 初次設定 | 三步精靈;外貌可稍後設定、WhatsApp 可稍後連接;草稿按帳戶保存(成功提示待後端實作+驗證後啟用) | /welcome |
| PM 決策 記憶動作 | 「暫不處理」(留待確認、徽章不變)/「不保存」(移出、徽章 −1、回收區可復原或永久刪除);僅確認保存者進聊天上下文 | /memories、/home 與導航徽章 |
每項假設定案後,需同步更新:對應畫面文案、狀態清單與本表,並由 PM 在下一輪設計前確認。
本區提供可下載的現行版前端原始碼 ZIP(2026-10-23 基線):內容為目前網站的實際來源——index.html 與三個模組 JS(role-suggestions.js、role-background.js、role-gallery.mjs)。不含媒體:圖片與影片維持 assets/ 相對引用,實際檔案由 PM 本機持有(清單見下方資產列)。解壓後以任一靜態伺服器即可在本機獨立啟動;仍為前端模擬,不接 WhatsApp/AI/真保存。
nana-frontend/(僅程式來源,不含媒體)
| ZIP 內容 | 說明 |
|---|---|
index.html | 完整前端原始碼(單一檔案):HTML 結構、內嵌 CSS 與內嵌 JS。含「產品預覽」與「設計交接」兩種檢視、八頁畫面與全部互動(前端模擬)。開啟即為本頁。 |
role-suggestions.js | 角色建議素材庫與產生器:四類(男/女/貓/狗)名字池(64/64/40/40)、persona、背景素材塊與結尾句;隨機組合時避開近期用過的素材(history/recent 邏輯),不生成虛假共同經歷或已保存記憶。 |
role-background.js | 背景故事六欄模型:性格與說話/工作與學業/興趣與喜好/生活習慣/相處方式/小特色(寵物換成相應活動與喜好分類)。手填與刻意清空的段落以 locked 保留,隨機只換未手填段;舊整段手寫背景保留為自訂段;合成全文上限 1000 字元(budget 計算)。 |
role-gallery.mjs | 外貌靈感圖輪播:讀取 assets/role-gallery.json 清單,只用實際可載入的圖片;一般輪播 4500ms,切換類別時 140ms 白閃+200ms 內隨機快切一次再進慢播;reduced-motion/頁面隱藏/離開視口時停止自動播放。 |
| 媒體(不入包) | assets/hero-realistic.png(Qwen 真圖)、assets/hero-loop.mp4(Muse 生成循環影片)、assets/char-mio.webp、assets/char-yuzu.webp、assets/role-gallery.json 與 assets/role-gallery/ 四類圖片(現行 男10/女6/貓8/狗8)皆為相對引用,實際檔案在 PM 本機;女性尚缺 4 張待客戶新圖補回 10 張,已拒收與已撤回的替換圖不使用、不以舊圖補數。 |
R4 視覺互動(客戶回饋 · 已套用到本頁與 ZIP 內 index.html)
assets/hero-realistic.png(預期 Qwen 寫實圖 1536×1024)。真圖未嵌入:其來源為 PM 本機私有入口、本環境無法存取,未下載、未以生成圖冒充;目前槽位內為明確標示的中性佔位圖,PM 同名覆蓋即替換。裁切以 CSS 變數 --hero-focus-x / --hero-focus-y(預設 50%/30%)控制焦點,桌面橫幅與手機裁切共用,文案區與圖層分離;圖片載入失敗時顯示同一槽位佔位樣式(onerror fallback),不悄悄換回插畫。原水彩插畫保留於角色卡等非主視覺位置。aria-live="off" 避免螢幕閱讀器連續朗讀;氣泡容器預留固定高度,初次載入不跳動。visibilitychange)或元素離開視口(IntersectionObserver)時,非必要動畫與對話計時器自動暫停。prefers-reduced-motion 時對話示例改為靜態呈現一組完整對話、不循環,光影/視差/位移揭示全數停用,內容完整可讀。R3 修正(PM 來源檢查回饋 · 已套用到本頁與 ZIP 內 index.html)
textContent 寫入,輸入 <script> 等內容只會顯示為文字。本機啟動
nana-frontend/ 內執行 python3 -m http.server 8000,瀏覽器開啟 http://localhost:8000;或使用 npx serve . 等任一靜態伺服器。index.html 亦可運作(圖片為相對路徑);建議用本機伺服器,行為與正式環境一致。assets/ 內的同名檔案;將交付 ZIP 放回 assets/ 即可在本機重現下載。其餘頁面功能不受影響。圖片與字體資產(摘要)
char-mio.webp(1280×1920,約 432 KB)、char-yuzu.webp(1120×2240,約 350 KB),原始解析度隨 ZIP 附上供檢視;另有 hero-realistic.png(1536×1024)為首頁主視覺槽位佔位圖——Qwen 真圖未嵌入(PM 本機私有入口無法存取),PM 以真圖同名覆蓋即替換。"Microsoft JhengHei", system-ui, sans-serif。需自託管時,README 有改法。接後端說明
index.html 的狀態物件與 data-act 動作委派;README.md 列出每個功能預期的 API 邊界與狀態欄位。後端實作後將模擬分支換為實際請求即可,畫面結構與狀態語義不需改動。