14 KiB
14 KiB
2026-09-01 工作日志
登录页样式丢失(17:30 修复)
- 现象:用户反馈 login 页样式没了。排查发现
src/pages/{en,cn}/login.astro是裸<body>片段页(没有<html>/<head>),仅靠前端import '@/styles/global.css'引入样式。Astro 在构建时对片段页不会把 import 的 CSS 注入 head,导致构建产物dist/.../login/index.html完全没有<link rel=stylesheet>,整页无样式(dev 模式下 Vite HMR 偶尔能补上,故时有时无)。 - 修复:给两个 login 页补上完整
<!doctype html><html><head>(charset/viewport/title)</head><body>...,前端import '@/styles/global.css随即被注入 head;<script>移入 body 内。复用 Layout 同款写法。 - 验证:
npx astro buildEXIT=0,dist/.../en/login/index.html头部出现<link rel="stylesheet" href="/_astro/...css">,确认样式回归。其它页面走 Layout 不受影响;全仓仅 login 两页存在此片段页 import CSS 问题。
新增 root 测试账号
- 用户要求加一个账号/密码都是 root 的测试账号。改
scripts/seed_users/main.go:把单账号 upsert 重构为账号列表循环,admin(强密码) +root(密码 root,明文弱密码,仅本地联调)。 - 运行
go run ./scripts/seed_users(EXIT=0):✓ 内部账号已存在,已刷新密码哈希: root;ℹ 账号 root 登录方式: root / 密码: root。 - 实测登录:
Invoke-RestMethod POST /api/v1/auth/login {account:root,password:root}→STATUS_OK user=root,access_len=177、refresh_len=64。登录链路通,用户可直接用 root/root 测试。
重要纠正:access token 实际是 7 天,不是 2h
- 之前记忆/口述误记 access=2h。核对
configs/config.yml第 40 行expire_hours: 168(=7 天,注释"与原项目一致");internal/config/config.go默认回落也是 168h;refresh 720h=30 天。 - 实测 root 登录
expires_in=604800(7 天)佐证。
个人中心页面重设计(企业级,设计优先)
- 用户反馈现 account.astro「根本不像企业级页面」,要求先把视觉/结构做好,功能可先不实现。
- 重写
src/pages/{en,cn}/account.astro:黑白极简编辑风(与站点一致)。结构 = ① 黑底 Hero(字母头像 monogram + 用户名/邮箱 + 角色 chip「Internal · Portfolio Studio」+ 加入于 2026 + Sign out);② 四宫格数据概览(Saved looks / Collections / History / Active sessions,占位 0/0/0/1);③ 左栏 tab 导航 + 右栏内容面板,tab = Overview / My Collections / My History / Sessions & Security / Settings;④ 收藏/历史为空状态(细线 SVG + CTA 去浏览档案);⑤ Sessions 面板含「当前设备」会话卡 + 单会话互斥说明 + 「退出所有设备」按钮(占位,带 Soon 标);⑥ Settings 偏好行(语言/外观/通知,均 Soon 占位)。 - 功能约定:仅
logout()(调 api.logout 吊销 refresh)与未登录重定向真实可用;编辑资料/收藏/历史/会话管理/偏好均为占位(disabled 或 Soon 标),待后续实现。 - 词典:新增一批账户中心键(overview / sessions & security / settings / saved looks / active sessions / member since / role / internal member / account overview / account details / username / edit profile / view archive / no collections yet / no history yet / browse the archive / current session / this device / last active / sign out all devices / single session note / preferences / appearance / notifications / soon / quick stats / now),en 即键本身、cn 提供翻译。
- 验证:
npm run buildEXIT=0,/en/account、/cn/account均预渲染成功;read_lints 0 错误。dev server 仍在 4321,需用 root/root 登录后访问 /en/account 看完整效果(未登录仅见登录引导卡)。 - 影响:互斥登录"踢人"只吊销 refresh,而已签发的 access 还能活 7 天——即被顶掉的会话最多要等 7 天才失效,2h 窗口的说法是错的。要让同账号互斥真正即时生效,必须加
users.token_version(签发时嵌版本、middleware.Auth 每次比对),或把 access TTL 调短(如 2h)。已修正 MEMORY.md。
账户中心 v1:做成真实可用的客户端版(16:30 续)
- 用户要求把个人中心做成"像 B 站/论坛那种有功能的",不要占位。结合"一点一点完善",本轮交付客户端存储版(数据存浏览器、按登录用户名隔离),零后端风险,登录即可用;函数签名预留替换服务端。
- 新增前端库:
src/lib/favorites.ts(收藏:getFavorites/isFavorited/toggleFavorite/removeFavorite/clearFavorites)、src/lib/history.ts(浏览历史:recordHistory/getHistory/clearHistory,去重+上限60)、src/lib/profile.ts(昵称/简介:getProfile/saveProfile)。均按fa_fav_<user>/fa_hist_<user>/fa_profile_<user>隔离。 - 详情页
src/pages/{en,cn}/item/[id].astro:新增右下角浮动「收藏」按钮(fab,点击 toggle 收藏、已收藏反白),并在加载时recordHistory记录浏览历史(仅登录态);meta 由服务端 frontmatter 透传,define:vars 注入脚本。 - 重写
src/pages/{en,cn}/account.astro:Hero(昵称可编辑、取 profile 存储)、四宫格真实计数(收藏数/历史数)、Tab = Overview / Saved looks / History / Sessions & Security / Settings 全部接真实数据:- Saved looks:真实收藏列表(卡片+封面+移除+跳详情),空状态引导。
- History:真实浏览历史列表+清空按钮。
- Sessions:解析 UA 显示「当前设备」(浏览器·OS),「退出所有设备」接
logoutAll()(真实)。 - Settings:语言切换(EN/中文 跳对应 locale 账户页,真实)、外观(浅色/深色 toggle,theme-dark 切内容面板与统计卡,真实)、通知(开/关 本地存储)。
- 编辑资料弹窗:修改昵称/简介,存 profile 本地,Hero 即时反映。
- 词典
dictionary.ts补 cn 翻译:member profile/save/saved/remove/cancel/save changes/display name/bio/clear history/no saved looks yet/light/dark/on/off。 - 验证:
npm run buildEXIT=0,/en/account、/cn/account预渲染成功;read_lints 0 错误。dev server :4321 运行中,用 root/root 登录后访问 /en/account 可见完整功能(未登录自动跳 /en/login)。 - 待办(下一轮,服务端化):收藏/历史/资料/会话列表需后端化以支持跨设备——需新增
favorites表+接口、users加 display_name/bio 列、refresh_tokens列表接口(登录时补 user_agent/ip)、/me/profile更新接口。现前端 lib 函数签名已设计为可平滑替换实现。
个人中心视觉重构(18:00)
- 用户反馈 account 页「太难看了」。排查:页面样式其实正常(Layout 注入 CSS 正常),丑点是设计语言不统一——原稿用暖米色
bg-[#f7f5f1]面板 + 大柔影shadow-[0_18px_50px_rgba(0,0,0,.04)]+rounded-[30px]大圆角,与站点纯黑白极简编辑风(thin border、rounded-none、mono 标签、serif 大标题、shadow-sm)冲突。 - 重写
src/pages/{en,cn}/account.astro(与 v1 功能/Alpine 逻辑完全一致,仅重排版面):报头改白底细线(去掉黑底大卡 + 方块 monogram 头像);统计卡改border-black/15网格、无柔影无大圆角;Tab 导航激活态改「黑底白字」实心(原 border-b-2 下划线);内容面板border border-black/15 bg-white、rounded-none;收藏/历史卡片改border-black/15+hover:border-black+bg-[#f1f1f1]占位(对齐 look-grid.css);编辑弹窗去圆角去阴影;新增js-surface/js-line/js-chip/accent-btn/ghost-btnclass 钩子支撑深色模式反相(.account-root.theme-dark全局border-color反白 + 主按钮反白)。cn/en 两文件共用同一套t()文案,新增词典键items(cn:条)。 - 验证:
npx astro buildEXIT=0;dist 产物确认 stylesheet 链接 + 新 class + 深色<style>均注入;read_lints 0 错误。
个人中心大幅精简(18:47)
- 用户要求:去掉 Active Sessions / My Collections(认为无用,或换功能)、去掉 Sign out、section 内容简洁点"有用户名就够了"。
- 改动
src/pages/{en,cn}/account.astro:- 报头:删邮箱行、角色 chip、Sign out 按钮、编辑资料入口;仅留「方块字母头像 + 用户名」大标题(member profile 小标签保留)。
- 删整块「四宫格数据概览」(含 Saved looks / My Collections / My History / Active Sessions 占位卡)。
- Tab 导航:删 Overview、Sessions & Security 两项;保留 Saved looks / My History / Settings 三个。默认 tab 改为
saved。 - 删编辑资料弹窗及 displayName/bio 相关逻辑(profile.ts 不再接入)。
- Sign out:报头按钮移除,仅在 Settings 底部保留一个低调文字链接(underline hover)
logout(),避免彻底无法登出(切账号卡死)。已告知用户若想彻底删除可再提。 - 脚本同步精简:删
editing/displayName/bio/device/parseUA、saveProfileEdit/logoutAllDevices、移除logoutAll/getProfile/saveProfile导入;保留 favorites/history/settings 逻辑。
- 验证:
npx astro buildEXIT=0;dev server :4321 运行中,root/root 登录访问 /en/account 看效果。 - 遗留:dictionary.ts 中部分键(my collections / active sessions / sessions & security / sign out all devices / account overview / username / email / display name / bio / role / internal member / member since / edit profile / view archive / save changes / cancel 等)已无人引用,属数据冗余,未删(不影响构建)。
个人中心再精简:去掉偏好设置(19:10)
- 用户:「偏好设置也不要了」。结合上轮已去掉 sign out 报头按钮,现整体移除 Settings tab。
- 改
src/pages/{en,cn}/account.astro:删导航里的 Settings 按钮、删整个 Settings 面板(语言/外观/通知/退出登录全部移除);脚本移除themeDark/notif状态、toggleTheme/toggleNotif/switchLang/logout方法,及logout导入;移除<main>上的:class="theme-dark"绑定与深色模式<style>块(js-surface/accent-btn 等 class 留作空操作,无害)。 - 结果:个人中心现仅 = 报头(方块头像+用户名)+ 两个 tab(Saved looks / My History),无偏好、无退出登录入口。
- 影响:登录后页面无任何「退出/切换账号」入口,需清理浏览器 localStorage 才能换号。已向用户说明,如需保留可再加。
- 验证:
npm run buildEXIT=0;read_lints 0 错误。
个人中心:加宽容器 + 收藏假数据(19:15)
- 用户:① 收藏搞个假数据看效果;② 觉得 main 容器太窄,加宽。
- 改动
src/pages/{en,cn}/account.astro:- 主容器
max-w-5xl→max-w-7xl(1280px),收藏/历史卡片网格grid-cols-2 sm:grid-cols-3→grid-cols-2 sm:grid-cols-3 lg:grid-cols-4(间距 gap-4→gap-5)。 - 收藏假数据:脚本新增
demoFavorites(8 条,含 Maison Margiela/Prada/Bottega/Loewe/Saint Laurent/Celine/Balenciaga/Jacquemus 的 FW25/SS26 RTW,标demo:true)。init()中getFavorites()为空时回退到 demoFavorites,保证有内容可预览;一旦用户存入真实收藏即不再显示 demo。 - 占位图:新增
PLACEHOLDER(内联 SVG data URI,灰底 "LOOK" 字样),coverUrl(f)方法在f.cover为空时返回占位(真实收藏无封面也不再裂图)。 - demo 项处理:点击 demo 卡片
itemHref跳走秀档案(不进 404 详情);点 REMOVE 仅从内存favorites移除 demo 项、不写 localStorage。
- 主容器
- 验证:
npm run buildEXIT=0;read_lints 0 错误。 - 注:若账号之前已存真实收藏,收藏 tab 显示真实数据而非 demo(布局同样可见);要看纯 demo 需先清空该用户收藏的 localStorage。
列表卡片收藏按钮 + 压黑底白字(19:24)
- 用户三点:① 图片应可收藏,且抱怨找不到收藏/取消入口;② 整体偏无背景色,尽量少用黑底白字组件。
- 改动:
src/components/RunwayLooks.astro/StreetSnaps.astro:卡片<a>外包relative容器并加x-data="{ fav: isFav(it.id) }",右上角加白底细边心形按钮.fav-toggle:@click.prevent="fav = toggleFav(it)";未登录点按由toggleFav弹登录框(requireLogin)。脚本引入isFavorited/toggleFavorite,新增isFav(id)、toggleFav(it)(runway→type:'runway'/brand=brand_name;street→type:'street'/brand=''),toggleFavorite返回布尔驱动fav视觉。src/styles/look-grid.css:新增.fav-toggle(白底border-black/15圆钮,hover:scale-110)与.fav-toggle.is-on svg { fill:#000 }(已收藏仅实心黑心,不出现黑底块)。src/pages/{en,cn}/item/[id].astro:详情页浮窗收藏按钮由黑底白字改为白底描边(hover:bg-black反白),图标改心形 +#fav-fab.is-active .fav-heart{fill:currentColor};脚本去掉btn.style.background/color内联黑底,改用label.textContent+is-active类切换。src/pages/{en,cn}/account.astro:tab 激活态由「黑底块 bg-black text-white」改为编辑风细线(黑字 +border-b-2 border-black移动端下划线 /lg:border-l-2 lg:border-l-black桌面左竖线);两个browse the archive按钮由bg-black text-white改为bg-white text-black(保留 hover 反白)。cn 版 tab 含font-mono(en 无),已分别适配。
- 验证:
npm run buildEXIT=0;read_lints 0 错误。 - 遗留黑底白字(用户说"尽可能少"而非全删,保留作小强调):分页
.pg.is-current、卡片.showsbadge(RTW 角标)、导航2026小药丸、登录提交按钮 hover 反白——均为功能性/极小强调,未改。若用户要更彻底再动。
收藏爱心图标修正(19:39)
- 用户:"你现在看下,收藏按钮的logo、"(话未说完,但意图是检查/修图标)。
- 发现:列表页(RunwayLooks / StreetSnaps)与详情页(item/[id] en+cn)四个位置的收藏按钮共用同一段手写爱心 SVG path,坐标不对称——叶瓣中心 x=5.5/14.5(均=10),底部尖端却在 x=12,导致整颗心向左偏、视觉是斜的。
- 修复:四处理所当然统一替换为严格对称爱心 path
M12 21C12 21 4 14.5 4 8.8C4 6.1 6.1 4 8.7 4C10.3 4 11.5 4.8 12 6C12.5 4.8 13.7 4 15.3 4C17.9 4 20 6.1 20 8.8C20 14.5 12 21 12 21Z(叶瓣中心 x=8.7/15.3、尖端 x=12、凹点 x=12,左右镜像)。 - 验证:
npm run buildEXIT=0;read_lints 0 错误。