sqlite-web 0.7.2
gitea.db
action_run
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 23476 in action_run
id
Primary key.
INTEGER NOT NULL
title
Merge pull request #7 from laoluojuhai/feat/solution-tier-multi-product
TEXT
repo_id
INTEGER
owner_id
INTEGER
workflow_id
governance.yml
TEXT
index
INTEGER
trigger_user_id
INTEGER
schedule_id
INTEGER
ref
refs/heads/main
TEXT
commit_sha
7619cf79681794bf28a8dceeb606c9dcfec21a5c
TEXT
is_fork_pull_request
INTEGER
need_approval
INTEGER
approved_by
INTEGER
event
push
TEXT
event_payload
{"ref":"refs/heads/main","before":"9618d78da3e668f14e3c1611d7090f45eef0c085","after":"7619cf79681794bf28a8dceeb606c9dcfec21a5c","compare_url":"https://gitea.g-hi.com/luoanwu/juhai-quotation-system/compare/9618d78da3e668f14e3c1611d7090f45eef0c085...7619cf79681794bf28a8dceeb606c9dcfec21a5c","commits":[{"id":"7619cf79681794bf28a8dceeb606c9dcfec21a5c","message":"Merge pull request #7 from laoluojuhai/feat/solution-tier-multi-product\n\nfeat(approval-inbox): 跨域待办审批中心切片二——不可自批 6/6 道闭环","url":"https://gitea.g-hi.com/luoanwu/juhai-quotation-system/commit/7619cf79681794bf28a8dceeb606c9dcfec21a5c","author":{"name":"laoluojuhai","email":"158980461+laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"GitHub","email":"noreply@github.com","username":""},"verification":null,"timestamp":"2026-08-01T22:08:17-07:00","added":["apps/api-fastify/prisma/migrations/20260801120000_approval_requester_columns/migration.sql","apps/api-fastify/prisma/migrations/20260801130000_approval_request_requested_by/migration.sql","apps/api-nestjs/prisma/migrations/20260801120000_approval_requester_columns/migration.sql","apps/api-nestjs/prisma/migrations/20260801130000_approval_request_requested_by/migration.sql","apps/web/src/app/quote/preview/[quotationId]/[optionId]/page.tsx"],"removed":[],"modified":["CLAUDE.md","apps/api-fastify/prisma/schema.prisma","apps/api-fastify/src/modules/approval-inbox/approval-inbox.service.ts","apps/api-fastify/src/modules/customer-solutions/customer-solutions.service.ts","apps/api-fastify/src/modules/fulfillment/fulfillment.service.ts","apps/api-fastify/src/modules/quotations/quotations.service.ts","apps/api-fastify/src/routes/customer-solutions.ts","apps/api-fastify/src/routes/fulfillment.ts","apps/api-fastify/src/routes/quotations.ts","apps/api-fastify/test/http.acceptance.test.ts","apps/api-nestjs/prisma/schema.prisma","apps/api-nestjs/src/approval-inbox/approval-inbox.service.ts","apps/api-nestjs/src/customer-solutions/customer-solutions.controller.ts","apps/api-nestjs/src/customer-solutions/customer-solutions.service.ts","apps/api-nestjs/src/fulfillment/fulfillment.controller.ts","apps/api-nestjs/src/fulfillment/fulfillment.service.ts","apps/api-nestjs/src/quotations/quotations.controller.ts","apps/api-nestjs/src/quotations/quotations.service.ts","apps/api-nestjs/test/http.acceptance.test.ts","apps/web/e2e/acceptance.spec.ts","apps/web/src/features/approval-inbox/components/ApprovalInbox.tsx","apps/web/src/features/fulfillment/components/FulfillmentWorkbench.tsx","apps/web/src/features/quotations/api/quotations-api.ts","apps/web/src/features/quotations/components/PublicQuotationView.tsx","apps/web/src/features/quotations/components/QuotationWorkbench.tsx","apps/web/src/features/quotations/hooks/use-quotations.ts","docs/README.md","docs/domain/approval-inbox-blueprint.md","docs/standards/git-standard.md","packages/contracts/src/approval-inbox.test.ts","packages/contracts/src/approval-inbox.ts","packages/contracts/src/quotation.ts","reports/api-route-contract.latest.json","reports/approval-payload-contract.latest.json","reports/baseline.json","reports/contract-consumers.latest.json","reports/design-tokens.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/gate-selftest.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/module-integration.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/queue-isolation.latest.json","reports/role-permissions.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json","reports/vm-deploy.latest.json","scripts/check-docs-truth.mjs","scripts/lib/docs-truth.test.mjs"]},{"id":"06495232f1936d9e221f7745216962379994b261","message":"chore: 合并 main 后刷新治理报告\n","url":"https://gitea.g-hi.com/luoanwu/juhai-quotation-system/commit/06495232f1936d9e221f7745216962379994b261","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-08-01T20:45:47-07:00","added":[],"removed":[],"modified":["reports/api-route-contract.latest.json","reports/approval-payload-contract.latest.json","reports/contract-consumers.latest.json","reports/design-tokens.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/gate-selftest.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/module-integration.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/queue-isolation.latest.json","reports/role-permissions.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json","reports/vm-deploy.latest.json"]},{"id":"ae1046edf9b030e1a67c30235ddd345590e61fdf","message":"Merge remote-tracking branch 'github/main' into feat/solution-tier-multi-product\n","url":"https://gitea.g-hi.com/luoanwu/juhai-quotation-system/commit/ae1046edf9b030e1a67c30235ddd345590e61fdf","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-08-01T20:42:40-07:00","added":[],"removed":[],"modified":[]},{"id":"479c742208b50c7e788cb4eea1b6b878fcfe615e","message":"feat(approval-inbox): 切片二收口——报价审批补发起人,不可自批 6/6 道闭环\n\n上一轮避让并发会话对报价域的改动,留下 ApprovalRequest 这最后一道。\n现该域已干净(其工作已合入 b15cb54),补齐收口。\n\n## 改动\n- ApprovalRequest.requestedBy(两后端 schema 对等 + 迁移,nullable)\n- requestApproval 落发起人;decideApproval 校验 approver ≠ requester\n → 403 + code=SELF_APPROVAL_FORBIDDEN,与其余五道口径一致\n- actor 串进两后端的 request-approval / approve / reject-approval\n (Fastify 的 request-approval 因此脱离无 actor 的 noBodyAction)\n- contracts 描述表 QUOTATION_APPROVAL.selfRequestedKnown → true;\n 聚合把 PENDING 子行的 requestedBy 带出来,自批过滤在报价审批上真正生效\n- UI 文案去掉「报价审批暂未记录发起人」的例外说明\n\n## 至此不可自批覆盖 6/6 道真审批\n报价 / 方案技术复核 / 方案经理批准 / 采购 / 盘点 / 红冲 / 退款\n(仅剩的两类 selfRequestedKnown=false 是「客户决定后的待办」,本就无发起人概念)\n\n## 诚实边界(未因本片改变)\n- 列均 nullable:建列前的存量行判不了就不判,**不假装判过**\n- 仍受 G8 制约:Bearer 未验签、actor 取不到时兜底 `role:\u003cROLE\u003e`,\n 所以这是「防误操作」不是「防抵赖」,**不得宣称为审计级职责分离**\n\n## 证据(本地工作区 2026-08-01)\n- pnpm check 0 / check:runtime 296 / check:ui 10\n- 两后端各 +1 条报价自批 403 断言,并各配一条「换个审批人即通过」的反证\n ——只断言 403 无法区分「拦对了」与「谁都批不了」的误杀\n- 负向实跑判红后恢复:拔掉报价不可自批校验 → 期望 403 实得 200\n- 回灌:CLAUDE.md 真源地图新增「跨域待办审批与不可自批」条目 +\n 证据新鲜度/棘轮行更新;蓝图 §4 缺口 1、2 标记闭环\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhai-quotation-system/commit/479c742208b50c7e788cb4eea1b6b878fcfe615e","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-08-01T20:28:00-07:00","added":["apps/api-fastify/prisma/migrations/20260801130000_approval_request_requested_by/migration.sql","apps/api-nestjs/prisma/migrations/20260801130000_approval_request_requested_by/migration.sql"],"removed":[],"modified":["CLAUDE.md","apps/api-fastify/prisma/schema.prisma","apps/api-fastify/src/modules/approval-inbox/approval-inbox.service.ts","apps/api-fastify/src/modules/quotations/quotations.service.ts","apps/api-fastify/src/routes/quotations.ts","apps/api-fastify/test/http.acceptance.test.ts","apps/api-nestjs/prisma/schema.prisma","apps/api-nestjs/src/approval-inbox/approval-inbox.service.ts","apps/api-nestjs/src/quotations/quotations.controller.ts","apps/api-nestjs/src/quotations/quotations.service.ts","apps/api-nestjs/test/http.acceptance.test.ts","apps/web/src/features/approval-inbox/components/ApprovalInbox.tsx","docs/domain/approval-inbox-blueprint.md","packages/contracts/src/approval-inbox.test.ts","packages/contracts/src/approval-inbox.ts","reports/api-route-contract.latest.json","reports/approval-payload-contract.latest.json","reports/baseline.json","reports/contract-consumers.latest.json","reports/design-tokens.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/gate-selftest.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/module-integration.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/queue-isolation.latest.json","reports/role-permissions.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json","reports/vm-deploy.latest.json"]},{"id":"fbdc3680f4ef53e824738ca8cbf8f0e6deefce55","message":"fix(gate): 文档诚实注收窄到行——文件级标注不该赦免同文件里的另一句谎话\n\ngit-standard 导语长期写「Conventional Commits 规范 + commitlint 自动校验」,\n而同文件 §三 已标注「🟡 规划未落地」。上一轮加的 commitlint-husky-honesty\n是**文件级**判定(文件里出现「规划未落地」即算诚实),因此绿着放行了这句\n自相矛盾的导语——而读者读的正是导语,不会翻到第三节。\n\n粒度选得比缺陷粗一级,门禁就会用\"文件里有免责声明\"赦免\"文件里另一句谎话\"。\n读者是按句子受骗的,断言就得按句子判。\n\n改动:\n- git-standard 导语改为如实描述:校验靠人、无 hook、提交前手工跑 pnpm check\n- 新增 commitlint-husky-no-auto-claim:同一行既点名 commitlint/husky\n 又宣称\"自动\"、且该行无未落地字样 → 判红。收窄到行是为了不误咬 CI 侧\n 合法的\"自动\"表述(C14:宁可窄,不造模糊规则)\n\n负向证据(scripts/lib/docs-truth.test.mjs,由 check:gate-selftest 重跑):\n- 向两份文件各写回**那句历史原文** → 各自 exit 恰为 1 且命中\n [commitlint-husky-no-auto-claim:\u003cfile\u003e],确认红在点子上而非撞上别的断言\n- 同行带未落地标注的「自动」表述 → 仍绿,锁住新断言的窄边界。\n 只有红测试的门禁会朝越咬越宽漂移,直到有人为了让它闭嘴而删掉它\n\npnpm check exit 0;check:gate-selftest 5 组全绿。作用域:本地工作区 dirty\n(并发会话 approval-inbox 切片二在途),本提交只含这 3 个文件。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhai-quotation-system/commit/fbdc3680f4ef53e824738ca8cbf8f0e6deefce55","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-08-01T20:18:46-07:00","added":[],"removed":[],"modified":["docs/standards/git-standard.md","scripts/check-docs-truth.mjs","scripts/lib/docs-truth.test.mjs"]}],"total_commits":0,"head_commit":{"id":"7619cf79681794bf28a8dceeb606c9dcfec21a5c","message":"Merge pull request #7 from laoluojuhai/feat/solution-tier-multi-product\n\nfeat(approval-inbox): 跨域待办审批中心切片二——不可自批 6/6 道闭环","url":"https://gitea.g-hi.com/luoanwu/juhai-quotation-system/commit/7619cf79681794bf28a8dceeb606c9dcfec21a5c","author":{"name":"laoluojuhai","email":"158980461+laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"GitHub","email":"noreply@github.com","username":""},"verification":null,"timestamp":"2026-08-01T22:08:17-07:00","added":["apps/api-fastify/prisma/migrations/20260801120000_approval_requester_columns/migration.sql","apps/api-fastify/prisma/migrations/20260801130000_approval_request_requested_by/migration.sql","apps/api-nestjs/prisma/migrations/20260801120000_approval_requester_columns/migration.sql","apps/api-nestjs/prisma/migrations/20260801130000_approval_request_requested_by/migration.sql","apps/web/src/app/quote/preview/[quotationId]/[optionId]/page.tsx"],"removed":[],"modified":["CLAUDE.md","apps/api-fastify/prisma/schema.prisma","apps/api-fastify/src/modules/approval-inbox/approval-inbox.service.ts","apps/api-fastify/src/modules/customer-solutions/customer-solutions.service.ts","apps/api-fastify/src/modules/fulfillment/fulfillment.service.ts","apps/api-fastify/src/modules/quotations/quotations.service.ts","apps/api-fastify/src/routes/customer-solutions.ts","apps/api-fastify/src/routes/fulfillment.ts","apps/api-fastify/src/routes/quotations.ts","apps/api-fastify/test/http.acceptance.test.ts","apps/api-nestjs/prisma/schema.prisma","apps/api-nestjs/src/approval-inbox/approval-inbox.service.ts","apps/api-nestjs/src/customer-solutions/customer-solutions.controller.ts","apps/api-nestjs/src/customer-solutions/customer-solutions.service.ts","apps/api-nestjs/src/fulfillment/fulfillment.controller.ts","apps/api-nestjs/src/fulfillment/fulfillment.service.ts","apps/api-nestjs/src/quotations/quotations.controller.ts","apps/api-nestjs/src/quotations/quotations.service.ts","apps/api-nestjs/test/http.acceptance.test.ts","apps/web/e2e/acceptance.spec.ts","apps/web/src/features/approval-inbox/components/ApprovalInbox.tsx","apps/web/src/features/fulfillment/components/FulfillmentWorkbench.tsx","apps/web/src/features/quotations/api/quotations-api.ts","apps/web/src/features/quotations/components/PublicQuotationView.tsx","apps/web/src/features/quotations/components/QuotationWorkbench.tsx","apps/web/src/features/quotations/hooks/use-quotations.ts","docs/README.md","docs/domain/approval-inbox-blueprint.md","docs/standards/git-standard.md","packages/contracts/src/approval-inbox.test.ts","packages/contracts/src/approval-inbox.ts","packages/contracts/src/quotation.ts","reports/api-route-contract.latest.json","reports/approval-payload-contract.latest.json","reports/baseline.json","reports/contract-consumers.latest.json","reports/design-tokens.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/gate-selftest.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/module-integration.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/queue-isolation.latest.json","reports/role-permissions.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json","reports/vm-deploy.latest.json","scripts/check-docs-truth.mjs","scripts/lib/docs-truth.test.mjs"]},"repository":{"id":72,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhai-quotation-system","full_name":"luoanwu/juhai-quotation-system","description":"巨嗨报价系统:Next.js + NestJS/Fastify 双后端治理型报价业务底座","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":27339,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhai-quotation-system/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhai-quotation-system","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhai-quotation-system","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhai-quotation-system.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhai-quotation-system.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":5,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-31T03:51:09+08:00","updated_at":"2026-08-02T11:45:53+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}
TEXT
trigger_event
push
TEXT
status
INTEGER
version
INTEGER (default 0
started
INTEGER
stopped
INTEGER
previous_duration
INTEGER
created
INTEGER
updated
INTEGER
raw_concurrency
group: governance-${{ github.workflow }}-${{ github.ref }} cancel-in-progress: "true"
TEXT
concurrency_group
governance-governance.yml-refs/heads/main
TEXT NOT NULL (default ''
concurrency_cancel
INTEGER NOT NULL (default FALSE
Update
Cancel