sqlite-web 0.7.2
gitea.db
action
Create
Query
access
access_token
action
action_artifact
action_run
action_run_index
action_run_job
action_runner
action_runner_token
action_schedule
action_schedule_spec
action_task
action_task_output
action_task_step
action_tasks_version
action_variable
app_state
attachment
auth_token
badge
branch
collaboration
comment
commit_status
commit_status_index
commit_status_summary
commit_sync_log
commit_sync_status
dbfs_data
dbfs_meta
deploy_key
email_address
email_hash
external_login_user
follow
gpg_key
gpg_key_import
hook_task
issue
issue_assignees
issue_content_history
issue_dependency
issue_index
issue_label
issue_pin
issue_user
issue_watch
label
language_stat
lfs_lock
lfs_meta_object
login_source
milestone
mirror
notice
notification
oauth2_application
oauth2_authorization_code
oauth2_grant
org_user
package
package_blob
package_blob_upload
package_cleanup_rule
package_file
package_property
package_version
project
project_board
project_issue
protected_branch
protected_tag
public_key
pull_auto_merge
pull_request
push_mirror
reaction
release
renamed_branch
repo_archiver
repo_hidden_file
repo_indexer_status
repo_license
repo_redirect
repo_topic
repo_transfer
repo_unit
repository
review
review_state
secret
session
sqlite_sequence
star
stopwatch
system_setting
task
team
team_invite
team_repo
team_unit
team_user
topic
tracked_time
two_factor
upload
user
user_badge
user_blocking
user_open_id
user_redirect
user_setting
version
watch
webauthn_credential
webhook
Toggle helper tables
Structure
Content
Query
Insert
Drop
Import
Export
Update row 22301 in action
id
Primary key.
INTEGER NOT NULL
user_id
INTEGER
op_type
INTEGER
act_user_id
INTEGER
repo_id
INTEGER
comment_id
INTEGER
is_deleted
INTEGER NOT NULL (default 0
ref_name
refs/heads/feat/product-catalog-search-and-image-upload
TEXT
is_private
INTEGER NOT NULL (default 0
content
{"Commits":[{"Sha1":"35ebc8613b168219ce82c0b3cf9336d32e958821","Message":"feat(ui): 方案商品多选批量添加 + 交互模式采纳率收口(全量落盘,含并发在途批次)\n\n整棵混合工作区的全量提交:多个战役共树、文件内手笔交错,无法按文件拆分归属,\n经用户裁决全量提交推送;已知红盘如实列出,等对应战役收口后 CI 自然转绿。\n\n本轮两个战役(已验证):\n- 方案设计三档选品改多选批量:新增 TierProductPicker(checkbox 候选 + 分类/关键词\n 收窄 + 待添加纸片跨筛选常驻 + 已添加禁勾),SolutionDesigner 416→252 行并从\n component-size 棘轮毕业;E2E 方案章改写为「勾 2 件一次落 2 行」的多选证明。\n- 交互模式采纳率收口:裸 {x.error.message} 29→1(统一走 ErrorAlert/QueryErrorState,\n receivables 本地 ErrorText 裸实现改包装、13 调用点一次收口,消掉 text-red-600 与\n 「操作失败,请重试」兜底);裸 disabled={isPending} 59→31(单动作按钮换 Button\n loading 保焦点带 aria-busy;行共享 mutation/批准驳回对/兄弟禁用具名保留);\n check:design-tokens 新增 designTokenRawErrorMessage=1 / designTokenBareIsPendingDisable=31\n 两条采纳率棘轮(计数单源 scripts/lib/design-adoption.mjs),design-adoption.test.mjs\n 13 例负向自检进 gate-selftest,活体注入实跑 exit=1 判红后恢复。\n\n同树落盘的并发/前序批次(未逐一复验,以各自战役记录为准):\n- 报价版本中心(进行中,已知红:module-integration 的 quotation-version-detail-visible\n + component-size 3 处【MobileOverview 473\u003e430、QuotationCard 437、QuotationWorkbench\n 665\u003e566】+ gate-selftest 基线用例如实继承)\n- 事件业务编号按域推广、售后/方案后端切片、设计稿真源目录与 08-07 迁移目录等\n\n证据(本地混合工作区,2026-08-13,详见 CLAUDE.md 动态区新条目):\ntypecheck / lint / design-tokens / role-permissions / naming / schema / validation /\ncontract-consumers / governance-docs / workspace-hygiene 绿;真实 Chromium 定向验收\n「商品客户」「客户方案闭环」两章通过(全新库 ui18);「报价闭环」红属版本中心在途,\n「履约闭环」被串行阻断——fulfillment/receivables 的 loading 换写暂只有 typecheck+lint\n级证据,全量 check:ui 复跑时重点看这两章。\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-12T23:22:47-07:00"},{"Sha1":"0b2e3703fed8f72749a8dc1824848d0601f1c9ea","Message":"docs(governance): 回灌远端 CI 证据——run 31072021158 @ ac22869 全绿\n\n作用域是**这个提交与这条分支**,不是 main(main 仍落后 21 个提交)。\nstatic ✅ / runtime 497 用例(contracts 395 + 双端各 51)/ UI 12 用例,\nCI 侧真起 MinIO 跑上传写链。\n\n同时记下两次实测判红的插曲:check:runtime 加了 S3 preflight 却没同步 CI 环境;\nMinIO 放进 services: 起不来(Actions 的 service 容器没有传 command 的字段)。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-05T21:52:52-07:00"},{"Sha1":"ac228691be9468a1345b4f3669a7c5aa0ca86bef","Message":"ci: MinIO 改用显式 step 启动——services 传不了启动参数\n\n上一提交把 MinIO 放进 `services:`,CI 实测判红:\n「Failed to initialize container minio/minio:latest」。\n\n根因:Actions 的 service 容器只支持 image/env/ports/options/credentials/volumes,\n**没有传 command/args 的字段**;而 minio 镜像的 entrypoint 需要 `server /data`。\n不带参数时它打印 usage 后正常退出,于是健康检查永远 unhealthy。\n\n改为在 runtime job 里显式 `docker run -d ... server /data` 并轮询\n/minio/health/live。步骤跑在 runner 宿主机上,端口映射到 127.0.0.1:9000,\n与 S3_ENDPOINT 一致。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-05T21:42:48-07:00"},{"Sha1":"6a2a86ba23719de7baa4940fb278b2df8b72b95e","Message":"ci: 补 MinIO 服务与 S3 环境——check:runtime 现在硬要求对象存储\n\n上一提交给 check:runtime / check:ui 的 preflight 加了 S3_ENDPOINT / S3_BUCKET\n强制显式传参与桶名归属守卫(G15 同型:本机与 CI 都可能共用对象存储,\n静默写进别人的桶就是拿别仓存储当验收基座)。\n\nCI 只起了 postgres + redis,因此上一提交推上去会在 preflight 处直接判红——\n这不是回归,是我加了硬要求却没同步跑它的环境。\n\n桶名用 juhai-quotation-ci(须匹配 juhai-quotation* 前缀守卫)。\n健康检查用 /minio/health/live:容器镜像里没有 mc 客户端,`mc ready` 不可用。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-05T21:38:10-07:00"},{"Sha1":"8feb39921ea8a404b09e287154f4c6fd1f7bd3e3","Message":"feat(products): 商品库服务端搜索筛选 + 图片上传至对象存储\n\n## 一、服务端搜索与筛选(此前 115 个商品只能翻页找)\n\n商品列表新增 keyword / kind 两个过滤维度,与既有 active 一并落 DB where。\n谓词收进 contracts `buildProductListFilter` 单源,两后端各自\n`{ tenantId, ...buildProductListFilter(query) }`——行为对等由结构保证,\n任一侧自己拼 where 就会搜出不同结果而无红盘(G17 漂移形态)。\n\n- 关键词语义(SKU + 名称双列 contains、大小写不敏感、不含 description)\n 单独抽 `buildProductKeywordFilter`,换口径只改这一个函数。\n- 空串/纯空白在契约层归一为 undefined(C24 同型:清空搜索框最易发出空串),\n 前端另在 api 层直接不发该参数——双层防御。\n- tenantId 刻意不由该函数产出:租户隔离不能依赖一个可被调用方忘记展开的返回值。\n\n页面同步重构:录入表单默认收起、卡片压缩、展开管理时横跨整行、分页条下移、\n空态区分「筛选无结果」与「库里没商品」、成本 ¥0 改显「成本未录入」\n(导入时成本列整列为空是已知缺口,直显 ¥0.00 会被读成毛利 100%)。\n配件行由固定列宽改 flex-wrap + 最小宽度:视口断点用在 1/3 视口宽的卡片里\n是容器语境错配,断点满足了容器并没有变宽。\n\nProductLibrary 443 → 183 行,拆出 5 个子组件并从 component-size 债务登记毕业。\n\n## 二、图片上传至对象存储(此前只能粘贴外链 URL)\n\nMinIO 进 compose,两后端走 S3 SDK——换阿里云 OSS / 腾讯云 COS 只改 endpoint\n与凭证,写链代码不动。上传链:multipart → 按真实字节魔数判类型 → sharp 转\nWebP + 缩略图 → 写对象存储 → 落库(与 outbox 同 tx)。\n\n- 类型判定收进 contracts,连判定顺序也收:Content-Type 与扩展名都是攻击者\n 可控输入;顺序决定 0 字节文件报「没收到文件」还是「类型不支持」。\n 不收 SVG(可执行文档,直出即存储型 XSS)与 GIF。\n- S3 写入必须先于落库且在事务外:先落库则上传失败留下指向空对象的行(破图),\n 先上传则落库失败只留下无人引用的对象(垃圾,可清理)。代价不对称。\n- 公开回读 /api/files/:tenantId/:imageId/:variant 不鉴权(对客报价页没有内部\n 身份),路径穿越由 schema 校验后重建 key 结构性排除,非法参数回 404 不回 400。\n- DB 存相对路径而非对象存储绝对地址:换存储那天不必迁移存量 URL。\n- backup/restore 成对覆盖 minio 卷:只备份 Postgres 时恢复演练照常报绿,\n 但每行 ProductImage 都指向不存在的对象。卷名问 Docker 要而不是按\n 「项目名_卷名」拼——拼错会备份一个空卷而命令成功。\n\n## 三、修复与门禁\n\n- 修 `after-sales-order-options-hook` 在 HEAD 上的存量误杀(C29 修复插入\n ~700 字符把距离顶到 1749,撑破 1600 窗口,接线本身完好)。\n- 三条断言随组件拆分重新锚定(成本可见性/公开配件/配件确认框/元→分转换)。\n- 新增 6 条上传链断言;其中 2 条初版无牙被负向测试当场抓出并重写:\n 距离型顺序断言不测顺序、`id: imageId` 锚点在 removeImage 里不唯一(G13 同型)。\n 窗口取值均由实测距离确定,不拍脑袋。\n- DIVERGENCE_CEILINGS.products 142→152 属扩容非放水:同轮 PARITY_FLOORS.products\n 74.1→76.9(实测 77.4 高于校准时 74.6),只放松绝对判据是净削弱。\n- turbo globalEnv 补 S3_* 六项(不补则测试进程拿不到凭证,表现为 500)。\n\n## 证据(作用域=本地工作区)\n\n- pnpm check:21 项全绿;负向注入 40 → 44 条\n- check:runtime:497/497(contracts 395 + 双端各 51),真上传打真 MinIO,地板已收紧\n- check:ui:12/12,上传段断言 naturalWidth \u003e 0(src 有值只证明存了个字符串)\n\n尚未核验远端 CI。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-05T21:35:24-07:00"}],"HeadCommit":{"Sha1":"35ebc8613b168219ce82c0b3cf9336d32e958821","Message":"feat(ui): 方案商品多选批量添加 + 交互模式采纳率收口(全量落盘,含并发在途批次)\n\n整棵混合工作区的全量提交:多个战役共树、文件内手笔交错,无法按文件拆分归属,\n经用户裁决全量提交推送;已知红盘如实列出,等对应战役收口后 CI 自然转绿。\n\n本轮两个战役(已验证):\n- 方案设计三档选品改多选批量:新增 TierProductPicker(checkbox 候选 + 分类/关键词\n 收窄 + 待添加纸片跨筛选常驻 + 已添加禁勾),SolutionDesigner 416→252 行并从\n component-size 棘轮毕业;E2E 方案章改写为「勾 2 件一次落 2 行」的多选证明。\n- 交互模式采纳率收口:裸 {x.error.message} 29→1(统一走 ErrorAlert/QueryErrorState,\n receivables 本地 ErrorText 裸实现改包装、13 调用点一次收口,消掉 text-red-600 与\n 「操作失败,请重试」兜底);裸 disabled={isPending} 59→31(单动作按钮换 Button\n loading 保焦点带 aria-busy;行共享 mutation/批准驳回对/兄弟禁用具名保留);\n check:design-tokens 新增 designTokenRawErrorMessage=1 / designTokenBareIsPendingDisable=31\n 两条采纳率棘轮(计数单源 scripts/lib/design-adoption.mjs),design-adoption.test.mjs\n 13 例负向自检进 gate-selftest,活体注入实跑 exit=1 判红后恢复。\n\n同树落盘的并发/前序批次(未逐一复验,以各自战役记录为准):\n- 报价版本中心(进行中,已知红:module-integration 的 quotation-version-detail-visible\n + component-size 3 处【MobileOverview 473\u003e430、QuotationCard 437、QuotationWorkbench\n 665\u003e566】+ gate-selftest 基线用例如实继承)\n- 事件业务编号按域推广、售后/方案后端切片、设计稿真源目录与 08-07 迁移目录等\n\n证据(本地混合工作区,2026-08-13,详见 CLAUDE.md 动态区新条目):\ntypecheck / lint / design-tokens / role-permissions / naming / schema / validation /\ncontract-consumers / governance-docs / workspace-hygiene 绿;真实 Chromium 定向验收\n「商品客户」「客户方案闭环」两章通过(全新库 ui18);「报价闭环」红属版本中心在途,\n「履约闭环」被串行阻断——fulfillment/receivables 的 loading 换写暂只有 typecheck+lint\n级证据,全量 check:ui 复跑时重点看这两章。\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-12T23:22:47-07:00"},"CompareURL":"luoanwu/juhai-quotation-system/compare/be1e0734c39315b61a7bf452231a853f44866085...35ebc8613b168219ce82c0b3cf9336d32e958821","Len":5}
TEXT
created_unix
INTEGER
Update
Cancel