浅念
328140494f
docs(plan): picker tap-time duplicate gate (option A) — incremental plan
...
Co-Authored-By: Claude Code <noreply@anthropic.com >
2026-09-29 09:51:41 +08:00
浅念
c64db3c53a
docs: 广告位轮播验收记录与实施计划 Task 13 勾选(线上部署完成)
...
Co-Authored-By: Claude Code <noreply@anthropic.com >
2026-09-29 09:35:37 +08:00
浅念
041cfc77b7
docs: 广告位实施计划 Task 5-12 勾选
...
Co-Authored-By: Claude Code <noreply@anthropic.com >
2026-09-29 01:59:57 +08:00
浅念
60b675a908
feat(sync): 对账清单 ad 实体当前态清扫
...
Task 8(ads-carousel):cn reconcile 增 entityType='ad' 分支——纯 SELECT
当前态映射(sortOrder/createdAt 确定性排序,albumId 恒空串信封约定),
载荷复用 ads/ad-payload.ts 单一出处(与业务事务内即时事件逐字节同形,
纯函数模块无依赖环);DTO SYNC_ENTITY_TYPES 追加 'ad'(对齐契约 enum)。
随附质量审查两项:
- ads.service list() 行→AdminAdItem 映射复用 toItem(删 ~14 行内联重复,
⑮ 补 admin list 200 形状断言覆盖重构路径);
- 新增 test/ads-extensions.spec.ts 守护 AD_IMAGE_EXTENSIONS ===
UPLOAD_CONTENT_TYPES 派生归一扩展名集合(jpeg→jpg),防三处白名单漂移。
测试基建:reset.ts RESET_TABLES 补 'ads'(Task 6 建表遗漏,固定 id 直种
依赖跨 spec 清场);reconcile.e2e-spec 追加 ⑤(红→绿,5/5)。
Co-Authored-By: Claude Code <noreply@anthropic.com >
2026-09-29 00:22:13 +08:00
浅念
d86f452bed
docs: 广告位设计 404 码 ALBUM_NOT_PUBLIC 纠正入档 + 实施计划 Task 1-4 勾选
...
Co-Authored-By: Claude Code <noreply@anthropic.com >
2026-09-28 23:03:32 +08:00
浅念
539597e9f0
feat(storage): 广告对象键布局(staging + 版本化终键)
...
adsStagingObjectKey(两步上传 presignPut 直传位)+ adObjectKey
(版本段=entityVersion:换图必然 bump 版本→新键,copyIfAbsent
禁止覆盖语义下天然防重复/防串图);index.ts 按名再导出供 Task 6/7
ads.service 消费。设计方案 §2.1/§3 终键布局同步回填(偏差登记)。
Co-Authored-By: Claude Code <noreply@anthropic.com >
2026-09-28 23:01:09 +08:00
浅念
7d744da56e
docs: 广告位实施计划——评审修订(inbox 依赖暂存豁免 ad 关键补丁/常量指针纠正/组件测试补齐/compose 全路径)
...
Co-Authored-By: Claude Code <noreply@anthropic.com >
2026-09-28 18:41:54 +08:00
浅念
3b7d37110a
docs: 广告位设计补轮播图左上角「广告」可见小标签(合规可识别性)
...
Co-Authored-By: Claude Code <noreply@anthropic.com >
2026-09-28 18:25:49 +08:00
浅念
678225e8b5
docs(plan): upload duplicate pre-check at enqueue moment — incremental plan
...
Co-Authored-By: Claude Code <noreply@anthropic.com >
2026-09-28 18:25:24 +08:00
浅念
8453167b39
docs: 广告位设计补部署顺序硬约束(ov 先 cn 后,DTO IsIn 整批拒收已核实)、广告图 2MB 上限、量级假设登记
...
Co-Authored-By: Claude Code <noreply@anthropic.com >
2026-09-28 18:24:00 +08:00
浅念
ab412a3630
docs: 广告位设计补 enabled 翻转的 sync inbox 直测用例(评审建议)
...
Co-Authored-By: Claude Code <noreply@anthropic.com >
2026-09-28 18:16:15 +08:00
浅念
0220a9cc05
docs: 广告位设计评审修订——createdAt 进投影/载荷、inbox disabled=删行、albumId 恒空串、head 校验补 contentType
...
Co-Authored-By: Claude Code <noreply@anthropic.com >
2026-09-28 18:14:00 +08:00
浅念
573a559e4a
docs: 广告位轮播设计方案(全局+定向投放/两步上传/outbox 同步投影/sessionStorage 关闭)
...
Co-Authored-By: Claude Code <noreply@anthropic.com >
2026-09-28 18:09:35 +08:00
浅念
65cd6849cc
docs(plan): Task 9 checklist — GIF/truncated source cases for crop
...
Co-Authored-By: Claude Code <noreply@anthropic.com >
2026-09-28 16:02:57 +08:00
浅念
97db504e25
docs(plan): fix manifest snippet (VISUAL_USER_SELECTED has no maxSdkVersion) + expand Task 9 checklist
...
Co-Authored-By: Claude Code <noreply@anthropic.com >
2026-09-28 15:04:42 +08:00
浅念
cc47278f50
docs: upload speedup plan v2 — 9 tasks after full re-review
...
- Task 7 camera WYSIWYG aspect + pinch zoom (two-pointer test, throttled setZoom)
- Task 8 server-dedup app integration (force passthrough, PHOTO_DUPLICATE
classification, l10n) — closes the 409 dead-end from 90dcc58
- Task 6 crop: crop_your_image 2.0.0 callback API + Isolate.run pixel pipeline
- Stale claims fixed (album_detail dedup already wired in 638dd9b ), pre-flight
parallel-session check added
Co-Authored-By: Claude Code <noreply@anthropic.com >
2026-09-28 13:34:03 +08:00
浅念
441a24a54c
docs: upload speed optimization plan draft
...
Co-Authored-By: Claude Code <noreply@anthropic.com >
2026-09-28 11:33:04 +08:00
浅念
90dcc58c33
feat(uploads): P0-1 batch 4 — server-side duplicate photo detection (409 + force + index)
...
契约 UploadInitRequest 加 force(bool,仅 owner/admin 跳过查重)。
服务端 init 事务前置查重:同 albumId + uploaderId + bytes 的非 deleted
照片已存在 → 409 PHOTO_DUPLICATE。photos 表加 idx_photos_dedup 索引
(迁移 20260928120000)。
App UploadInitRequest 加 force 字段 + toJson 序列化。
本地查重(层 1)+ 服务端查重(层 2)双层防线到位。
API typecheck ✅ · app analyze ✅ · 397/397 ✅ · contract lint ✅
Co-Authored-By: Claude Code <noreply@anthropic.com >
2026-09-28 11:29:29 +08:00
浅念
33f347cdea
feat(app): P0 batch 3 — offline detection with engine pause/resume + UI banner
...
P0-4 离线感知:
- connectivity_plus → NetworkAvailability(online/offline/unknown)
- engine_scope 三重绑定:有账号+有网 → start;任一失去 → stop(在途不中断)
- 网络恢复 → start + onNetworkRestored(waitingNetwork 即时重试)
- HomePage 顶部离线黄条(wifi_off + i18n 双语)
P0-5 更正:EXIF 方向已由服务端 sharp .rotate() 自动转正——v2 分析误报
397/397 全绿、analyze 0
Co-Authored-By: Claude Code <noreply@anthropic.com >
2026-09-28 11:23:51 +08:00
浅念
98e073d8c8
docs: App potential issues v2 — full analysis with server-side dedup (confirmed, ready to execute)
...
v2 补齐 v1 自查发现的 8 个漏洞:三重指纹(filename+bytes+CRC32)、批量弹窗
(单次确认非逐张)、photos 表 dedup 索引、force 权限约束(owner/admin)、
上传并发限制(3)、相册开关预检、上传进度百分比、磁盘空间预检。
Co-Authored-By: Claude Code <noreply@anthropic.com >
2026-09-28 10:24:46 +08:00
浅念
984fe8981c
docs(viewer): prod verification — share sheet copy-only (native share button removed)
...
Co-Authored-By: Claude Code <noreply@anthropic.com >
2026-09-28 09:15:30 +08:00
浅念
dc8d3ff967
feat(app): launcher icon — brand logo 1024px + adaptive (blue #1A73E8 background)
...
flutter_launcher_icons 自动生成全尺寸 mipmap(48-192px + 自适应前景/背景)。
正式签名生产环境 APK 已打好。
Co-Authored-By: Claude Code <noreply@anthropic.com >
2026-09-24 17:07:14 +08:00
浅念
2ce529dd5b
docs(viewer): prod verification — share sheet without link text
...
Co-Authored-By: Claude Code <noreply@anthropic.com >
2026-09-24 16:55:07 +08:00
浅念
07761b1b26
fix(app): camera preview distortion — swap sensor W/H for portrait
...
previewSize 报横向(W>H),竖屏直用会把画面拉扁。交换宽高转纵向比例再
FittedBox cover 铺满(裁切不变形)。397/397 全绿。
Co-Authored-By: Claude Code <noreply@anthropic.com >
2026-09-24 16:07:44 +08:00
浅念
32eb4ceb8e
docs: 观众链接统一境外源定稿(后台分享/嵌入/App二维码均 ov 域名)
...
Co-Authored-By: Claude Code <noreply@anthropic.com >
2026-09-24 14:46:54 +08:00
浅念
76380477a0
docs: 验收记录补嵌入组件 EMBED_ORIGIN 修正(cn 后台嵌入代码改指 ov 域名)
...
Co-Authored-By: Claude Code <noreply@anthropic.com >
2026-09-24 14:01:12 +08:00
浅念
e5302e3929
docs: 正式环境双地域部署计划与验收记录
...
Co-Authored-By: Claude Code <noreply@anthropic.com >
2026-09-24 13:41:47 +08:00
浅念
222c44c1f7
fix(deploy): disable gzip on /v1/ API paths — Flutter release AOT gzip decompression failure
...
服务端 200+数据正常、debug/JIT 正常;release/AOT 的 Dart HttpClient 对
Content-Encoding: gzip 解压异常 → JSON 解析失败 → 显示 INTERNAL_ERROR。
nginx /v1/ 路径 gzip off(静态资源 gzip 不受影响);proguard keep 规则
一并保留(dio/flutter_secure_storage/全项目模型)。
Co-Authored-By: Claude Code <noreply@anthropic.com >
2026-09-23 18:36:11 +08:00
浅念
65581b7920
fix(android): usesCleartextTraffic=true — release APK blocked HTTP APIs (Android 9+ default)
...
release 构建默认禁明文 HTTP(debug 由 Flutter 自动放行)——服务暂时不可用
即此因。当前测试服务器 API/观众页均为 http://,需显式允许;上 https 后移除。
Co-Authored-By: Claude Code <noreply@anthropic.com >
2026-09-23 18:10:46 +08:00
浅念
2332d24591
docs(g4): clipboard HTTP-context fix record
...
Co-Authored-By: Claude Code <noreply@anthropic.com >
2026-09-23 17:04:45 +08:00
浅念
b6daa6fa0e
docs(embed): live title+modal verification — '2026届-广交会' overlay, coordinate click opens in-host detail modal with deep link, closes via button
...
Co-Authored-By: Claude Code <noreply@anthropic.com >
2026-09-23 16:47:27 +08:00
浅念
a5dcfffd37
docs(embed): refreshed evidence artifacts (modal screenshot, screenshots/recordings regenerated)
...
Co-Authored-By: Claude Code <noreply@anthropic.com >
2026-09-23 16:37:17 +08:00
浅念
985829fee8
fix(app): poster title truly left-aligned — Column crossAxisAlignment start (QR re-centered)
...
Text 的 textAlign 被 Column 默认 center 吞掉(文本行收缩包裹时对齐不生效);
文字区 Column 改 CrossAxisAlignment.start,二维码+扫码说明显式 Center 回居中。
Co-Authored-By: Claude Code <noreply@anthropic.com >
2026-09-23 16:30:14 +08:00
浅念
a16fa738f6
fix(app): poster — date-only text, left-aligned title/time/venue (QR stays centered)
...
用户反馈:海报日期仍带时间(表单已日期粒度,海报 formatAlbumDateTime 同步改
posterDate 只显 y/M/d);宣传图下标题/时间/地址居左;二维码保持居中。
Co-Authored-By: Claude Code <noreply@anthropic.com >
2026-09-23 16:26:32 +08:00
浅念
8834b1bbb9
feat(embed): album title overlay + in-host photo detail modal (replaces new-tab open)
...
- viewer: EmbedStream shows album title overlay top-left (ellipsis, avoids collapse zone); photo click posts open-photo {url} to host instead of window.open (direct-open still new tab)
- loader v2: open-photo message (origin+source whitelisted, URL must match widget origin) opens host overlay modal with embedded viewer deep-link iframe, close button/Esc/scrim dismiss, single instance, cleaned on destroy
- tests: click case asserts modal iframe deep link + no popup + close button dismiss; viewer 244 + loader 36 green
Co-Authored-By: Claude Code <noreply@anthropic.com >
2026-09-23 16:20:10 +08:00
浅念
5a207b395e
feat(app,viewer): WeChat card share + 'Share to...' label + site og tags
...
- 按钮文字「分享到微信/其他应用」→「分享到...」(用户需求)
- 微信卡片分享(fluwx 6):WECHAT_APPID 经 --dart-define 注入;已配置且
装微信 → WXWebpage 卡片(标题=相册名、描述=日期·地点、缩略图=封面压缩
240px PNG ≤32KB、点击进观众链接);未配置/未装 → 回退系统分享面板
- viewer index.html 加站点级 og 标签(微信/QQ 抓取链接预览用;每相册动态
og 需服务端注入,登记后续增强)
- 397/397 全绿、analyze 0
Co-Authored-By: Claude Code <noreply@anthropic.com >
2026-09-23 16:05:53 +08:00
浅念
77b1519209
docs(viewer): like-hidden live verification — feed badges/sort tabs gone, lightbox bar is share+download only
...
Co-Authored-By: Claude Code <noreply@anthropic.com >
2026-09-23 14:31:21 +08:00
浅念
d7ac9420be
docs(viewer): lightbox close button restored on server (transparent bg, white X, 44px circle)
...
Co-Authored-By: Claude Code <noreply@anthropic.com >
2026-09-23 13:51:59 +08:00
浅念
f2cd26e523
docs: register embed-slot soft-delete acceptance
...
Co-Authored-By: Claude Code <noreply@anthropic.com >
2026-09-23 13:41:27 +08:00
浅念
aa366c4268
docs(embed): ambient hearts restored on server (7 on screen) after parallel-session image rollback
...
Co-Authored-By: Claude Code <noreply@anthropic.com >
2026-09-23 13:35:23 +08:00
浅念
7adc1b0858
docs(embed): denser/lower ambient hearts verification (6 on screen, origin band 140-244px)
...
Co-Authored-By: Claude Code <noreply@anthropic.com >
2026-09-23 11:41:11 +08:00
浅念
c8a9727993
docs(embed): ambient hearts live verification — bubbles float with zero likes (steady ~3 on screen)
...
Co-Authored-By: Claude Code <noreply@anthropic.com >
2026-09-23 11:33:25 +08:00
浅念
8768a04a75
docs(embed): collapsed handle right-dock verification on server (right=16px, x=1324 @ 1440 viewport)
...
Co-Authored-By: Claude Code <noreply@anthropic.com >
2026-09-23 11:26:56 +08:00
浅念
257643934a
docs(viewer): share sheet live verification — album header & photo lightbox entries, QR 188px, on-button copy feedback, Esc close
...
Co-Authored-By: Claude Code <noreply@anthropic.com >
2026-09-23 11:15:55 +08:00
浅念
c2143e1f94
feat(app): album banner picker in edit form — show current banner, pick & upload on save
...
- api_client:uploadAlbumAssetFromFile 泛化(cover 为薄壳)+ fetchAlbumAssetUrl
(GET /albums/{id}/assets → 指定 kind 全局行 URL)
- 编辑页 Details:封面下方新增「宣传图」3:1 选择器——编辑模式异步加载现有
banner 预览(失败静默);保存成功后上传(同封面:失败不阻塞表单结果)
- 未保存变更判断纳入 banner;l10n zh/en
- 测试适配:编辑用例 pumpForm 后清空 banner 现状预检请求(397/397 全绿)
Co-Authored-By: Claude Code <noreply@anthropic.com >
2026-09-23 11:07:54 +08:00
浅念
e3f40c696d
docs(ui06): dedupe task table rows
...
Co-Authored-By: Claude Code <noreply@anthropic.com >
2026-09-23 10:56:33 +08:00
浅念
63b3e539fd
docs: register asset status acceptance — admin branding tab shows current banner/cover/logo
...
Co-Authored-By: Claude Code <noreply@anthropic.com >
2026-09-23 10:56:14 +08:00
浅念
2618ad3163
feat(assets): album asset status — show current banner/cover/logo in admin branding tab
...
- 契约 listAlbumAssetStatus(GET /albums/{albumId}/assets):每 (kind,locale)
最新 effective 行 + 现签 URL;权限同详情(可见即读);deleted → 404
- 服务端 AssetsService.status(createdAt,id DESC 组内取首;presignGet 现签)
- Admin 品牌资产页签改造:进入即加载现状——三种 kind 卡片(预览图/未设置
空态/设置时间),banner 分全局/zh/en 槽位;上传成功自动刷新(替换语义)
- API 56/56、admin 87/87 + build 全绿
Co-Authored-By: Claude Code <noreply@anthropic.com >
2026-09-23 10:51:53 +08:00
浅念
3cd9dafd1b
docs(viewer): server verification — topbar locale-only (settings menu removed)
...
Co-Authored-By: Claude Code <noreply@anthropic.com >
2026-09-23 10:40:28 +08:00
浅念
2409beb7c2
docs: register album soft-delete acceptance — full-chain verified on test server
...
Co-Authored-By: Claude Code <noreply@anthropic.com >
2026-09-23 10:20:57 +08:00