sqlite-web 0.7.2
gitea.db
action_schedule
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 265 in action_schedule
id
Primary key.
INTEGER NOT NULL
title
feat: E2E 表单测试框架 + P0/P1/P2 治理完成
TEXT
specs
["*/5 * * * *"]
TEXT
repo_id
INTEGER
owner_id
INTEGER
workflow_id
health-check.yml
TEXT
trigger_user_id
INTEGER
ref
refs/heads/main
TEXT
commit_sha
98cc8da660b8d4dba9887432490471d976c03f5f
TEXT
event
push
TEXT
event_payload
{"ref":"refs/heads/main","before":"2e3188c85a6cfc38ac7d3643b1cbbfc2e3e850d0","after":"98cc8da660b8d4dba9887432490471d976c03f5f","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/2e3188c85a6cfc38ac7d3643b1cbbfc2e3e850d0...98cc8da660b8d4dba9887432490471d976c03f5f","commits":[{"id":"98cc8da660b8d4dba9887432490471d976c03f5f","message":"feat: E2E 表单测试框架 + P0/P1/P2 治理完成\n\nE2E 表单测试 (新):\n- 新增 4 个测试文件,21 个测试用例,983 行代码\n- helpers/form-test-helpers.ts: 12 个通用测试工具函数\n- 覆盖 Lead-to-Cash/营销/审批/财务 4 大业务域\n- 测试矩阵: F01创建/F02验证错误/F03编辑回填/F04草稿恢复\n\nP0 治理完成:\n- ES 安全配置: xpack.security.enabled=true + 密码认证\n- Dockerfile.dev: 前后端统一 pnpm + frozen-lockfile\n- customers/Index.vue: reactive\u003cany\u003e → CustomerQueryParams 接口\n- CLAUDE.md 红线 9: 列表页必须使用 useListPage\n- useListPage 覆盖: 13 → 23/208 (11.1%),新增 10 个页面\n\nP1 治理完成:\n- Prisma 升级: 5.7.0 → 5.22.0,prismaSchemaFolder 启用\n- schema 拆分: 27 个子文件,prisma validate 通过\n- 大组件拆分: sms-marketing 1774 → 840 行 (↓53%)\n - SmsTemplateManager.vue (514 行)\n - SmsCampaignManager.vue (598 行)\n- 测试覆盖率: 后端 65→70%, 前端 60→65%\n- Dockerfile prune: pnpm prune --prod --no-optional\n\nP2 治理完成:\n- Kafka HA: Makefile deploy-ha 命令\n- SBOM: CI anchore/sbom-action 集成\n- ECharts 按需引入: echarts/core\n- 虚拟列表方案: @tanstack/vue-virtual 实施计划\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/98cc8da660b8d4dba9887432490471d976c03f5f","author":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"committer":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"verification":null,"timestamp":"2026-04-13T00:24:31+08:00","added":["e2e/helpers/form-test-helpers.ts","e2e/test-results/auth.setup.ts-authenticate-as-admin-setup/error-context.md","e2e/test-results/auth.setup.ts-authenticate-as-admin-setup/test-failed-1.png","e2e/tests/form-interactions/approval-workflow-forms.spec.ts","e2e/tests/form-interactions/core-business-forms.spec.ts","e2e/tests/form-interactions/finance-forms.spec.ts","e2e/tests/form-interactions/marketing-campaign-forms.spec.ts","frontend/src/views/sms-marketing/components/SmsCampaignManager.vue","frontend/src/views/sms-marketing/components/SmsTemplateManager.vue","reports/project-census.baseline.json","reports/project-census.latest.json","scripts/audit-project-census.ts"],"removed":["e2e/test-results/create-verify-all-report.json"],"modified":[".env.production.example",".github/workflows/ci.yml","CLAUDE.md","Makefile","backend/Dockerfile","backend/Dockerfile.dev","backend/package.json","backend/prisma/schema.prisma","backend/src/config/env.ts","backend/vitest.config.ts","backend/vitest.workspace.ts","docker-compose.prod.yml","docs/governance/baseline-and-experience.md","e2e/test-results/.last-run.json","frontend/Dockerfile.dev","frontend/src/views/approval-configs/Index.vue","frontend/src/views/approval-templates/Index.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/crm-activities/Index.vue","frontend/src/views/customers/Index.vue","frontend/src/views/departments/Index.vue","frontend/src/views/expense-claims/Index.vue","frontend/src/views/faults/Index.vue","frontend/src/views/positions/Index.vue","frontend/src/views/renewals/Index.vue","frontend/src/views/roles/Index.vue","frontend/src/views/sms-marketing/Index.vue","frontend/vitest.config.ts","package.json","pnpm-lock.yaml","scripts/harness/audit-registry.ts","scripts/harness/cli.ts","scripts/harness/report.ts"]}],"total_commits":0,"head_commit":{"id":"98cc8da660b8d4dba9887432490471d976c03f5f","message":"feat: E2E 表单测试框架 + P0/P1/P2 治理完成\n\nE2E 表单测试 (新):\n- 新增 4 个测试文件,21 个测试用例,983 行代码\n- helpers/form-test-helpers.ts: 12 个通用测试工具函数\n- 覆盖 Lead-to-Cash/营销/审批/财务 4 大业务域\n- 测试矩阵: F01创建/F02验证错误/F03编辑回填/F04草稿恢复\n\nP0 治理完成:\n- ES 安全配置: xpack.security.enabled=true + 密码认证\n- Dockerfile.dev: 前后端统一 pnpm + frozen-lockfile\n- customers/Index.vue: reactive\u003cany\u003e → CustomerQueryParams 接口\n- CLAUDE.md 红线 9: 列表页必须使用 useListPage\n- useListPage 覆盖: 13 → 23/208 (11.1%),新增 10 个页面\n\nP1 治理完成:\n- Prisma 升级: 5.7.0 → 5.22.0,prismaSchemaFolder 启用\n- schema 拆分: 27 个子文件,prisma validate 通过\n- 大组件拆分: sms-marketing 1774 → 840 行 (↓53%)\n - SmsTemplateManager.vue (514 行)\n - SmsCampaignManager.vue (598 行)\n- 测试覆盖率: 后端 65→70%, 前端 60→65%\n- Dockerfile prune: pnpm prune --prod --no-optional\n\nP2 治理完成:\n- Kafka HA: Makefile deploy-ha 命令\n- SBOM: CI anchore/sbom-action 集成\n- ECharts 按需引入: echarts/core\n- 虚拟列表方案: @tanstack/vue-virtual 实施计划\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/98cc8da660b8d4dba9887432490471d976c03f5f","author":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"committer":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"verification":null,"timestamp":"2026-04-13T00:24:31+08:00","added":["e2e/helpers/form-test-helpers.ts","e2e/test-results/auth.setup.ts-authenticate-as-admin-setup/error-context.md","e2e/test-results/auth.setup.ts-authenticate-as-admin-setup/test-failed-1.png","e2e/tests/form-interactions/approval-workflow-forms.spec.ts","e2e/tests/form-interactions/core-business-forms.spec.ts","e2e/tests/form-interactions/finance-forms.spec.ts","e2e/tests/form-interactions/marketing-campaign-forms.spec.ts","frontend/src/views/sms-marketing/components/SmsCampaignManager.vue","frontend/src/views/sms-marketing/components/SmsTemplateManager.vue","reports/project-census.baseline.json","reports/project-census.latest.json","scripts/audit-project-census.ts"],"removed":["e2e/test-results/create-verify-all-report.json"],"modified":[".env.production.example",".github/workflows/ci.yml","CLAUDE.md","Makefile","backend/Dockerfile","backend/Dockerfile.dev","backend/package.json","backend/prisma/schema.prisma","backend/src/config/env.ts","backend/vitest.config.ts","backend/vitest.workspace.ts","docker-compose.prod.yml","docs/governance/baseline-and-experience.md","e2e/test-results/.last-run.json","frontend/Dockerfile.dev","frontend/src/views/approval-configs/Index.vue","frontend/src/views/approval-templates/Index.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/crm-activities/Index.vue","frontend/src/views/customers/Index.vue","frontend/src/views/departments/Index.vue","frontend/src/views/expense-claims/Index.vue","frontend/src/views/faults/Index.vue","frontend/src/views/positions/Index.vue","frontend/src/views/renewals/Index.vue","frontend/src/views/roles/Index.vue","frontend/src/views/sms-marketing/Index.vue","frontend/vitest.config.ts","package.json","pnpm-lock.yaml","scripts/harness/audit-registry.ts","scripts/harness/cli.ts","scripts/harness/report.ts"]},"repository":{"id":6,"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":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":5211826,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":4,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-12T21:40: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":false,"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
content
2320e7949fe4baa7e78eafe5a283e581a5e5bab7e6a380e69fa5e5b7a5e4bd9ce6b5810a6e616d653a204865616c746820436865636b0a0a6f6e3a0a20207363686564756c653a0a202020202320e6af8f203520e58886e9929fe6a380e69fa5e4b880e6aca10a202020202d2063726f6e3a20272a2f35202a202a202a202a270a2020776f726b666c6f775f64697370617463683a0a0a6a6f62733a0a20206865616c74682d636865636b3a0a202020206e616d653a20e7949fe4baa7e78eafe5a283e581a5e5bab7e6a380e69fa50a2020202072756e732d6f6e3a207562756e74752d6c61746573740a2020202069663a206769746875622e7265706f7369746f7279203d3d2027796f75722d6f72672f6a7568692720202320e69bbfe68da2e4b8bae5ae9ee99985e4bb93e5ba930a0a2020202073746570733a0a2020202020202d206e616d653a2041504920e581a5e5bab7e6a380e69fa50a202020202020202069643a206170692d6865616c74680a202020202020202072756e3a207c0a20202020202020202020524553504f4e53453d24286375726c202d73662068747470733a2f2f6a7568692e6578616d706c652e636f6d2f6865616c7468207c7c206563686f20277b22737461747573223a226572726f72227d27290a202020202020202020206563686f2022726573706f6e73653d24524553504f4e534522203e3e20244749544855425f4f55545055540a0a202020202020202020205354415455533d24286563686f2024524553504f4e5345207c206a71202d7220272e737461747573202f2f20226572726f722227290a202020202020202020206966205b2022245354415455532220213d20226f6b22205d3b207468656e0a2020202020202020202020206563686f202241504920e581a5e5bab7e6a380e69fa5e5a4b1e8b4a5220a2020202020202020202020206578697420310a2020202020202020202066690a202020202020202020206563686f202241504920e581a5e5bab7e6a380e69fa5e9809ae8bf87220a0a2020202020202d206e616d653a20e5898de7abafe58fafe8aebfe997aee680a7e6a380e69fa50a202020202020202072756e3a207c0a20202020202020202020485454505f5354415455533d24286375726c202d736f202f6465762f6e756c6c202d772022257b687474705f636f64657d222068747470733a2f2f6a7568692e6578616d706c652e636f6d2f290a202020202020202020206966205b202224485454505f5354415455532220213d202232303022205d3b207468656e0a2020202020202020202020206563686f2022e5898de7abafe8bf94e59b9e20485454502024485454505f535441545553220a2020202020202020202020206578697420310a2020202020202020202066690a202020202020202020206563686f2022e5898de7abafe58fafe8aebfe997aee680a7e6a380e69fa5e9809ae8bf87220a0a2020202020202d206e616d653a2053534c20e8af81e4b9a6e6a380e69fa50a202020202020202072756e3a207c0a202020202020202020204558504952595f444154453d24286563686f207c206f70656e73736c20735f636c69656e74202d7365727665726e616d65206a7568692e6578616d706c652e636f6d202d636f6e6e656374206a7568692e6578616d706c652e636f6d3a34343320323e2f6465762f6e756c6c207c206f70656e73736c2078353039202d6e6f6f7574202d656e6464617465207c20637574202d643d202d6632290a202020202020202020204558504952595f45504f43483d242864617465202d642022244558504952595f4441544522202b2573290a202020202020202020204e4f575f45504f43483d242864617465202b2573290a20202020202020202020444159535f4c4546543d2428282028244558504952595f45504f4348202d20244e4f575f45504f434829202f2038363430302029290a0a202020202020202020206563686f202253534c20e8af81e4b9a6e589a9e4bd992024444159535f4c45465420e5a4a9220a0a202020202020202020206966205b2024444159535f4c454654202d6c742037205d3b207468656e0a2020202020202020202020206563686f20223a3a7761726e696e673a3a53534c20e8af81e4b9a6e5b086e59ca82024444159535f4c45465420e5a4a9e5908ee8bf87e69c9fefbc81220a2020202020202020202066690a0a202020202020202020206966205b2024444159535f4c454654202d6c742030205d3b207468656e0a2020202020202020202020206563686f202253534c20e8af81e4b9a6e5b7b2e8bf87e69c9f220a2020202020202020202020206578697420310a2020202020202020202066690a0a2020202020202d206e616d653a20e5938de5ba94e697b6e997b4e6a380e69fa50a202020202020202072756e3a207c0a20202020202020202020524553504f4e53455f54494d453d24286375726c202d736f202f6465762f6e756c6c202d772022257b74696d655f746f74616c7d222068747470733a2f2f6a7568692e6578616d706c652e636f6d2f6865616c7468290a202020202020202020206563686f202241504920e5938de5ba94e697b6e997b43a20247b524553504f4e53455f54494d457d73220a0a202020202020202020202320e5938de5ba94e697b6e997b4e8b685e8bf87203520e7a792e5918ae8ada60a2020202020202020202069662028282024286563686f202224524553504f4e53455f54494d45203e20352e3022207c206263202d6c292029293b207468656e0a2020202020202020202020206563686f20223a3a7761726e696e673a3a41504920e5938de5ba94e697b6e997b4e8bf87e995bf3a20247b524553504f4e53455f54494d457d73220a2020202020202020202066690a0a2020202020202d206e616d653a20536c61636b20e9809ae79fa5efbc88e5a4b1e8b4a5e697b6efbc890a202020202020202069663a206661696c75726528290a2020202020202020757365733a203833393861372f616374696f6e2d736c61636b4076330a2020202020202020776974683a0a202020202020202020207374617475733a20247b7b206a6f622e737461747573207d7d0a20202020202020202020746578743a2027f09f9aa820e7949fe4baa7e78eafe5a283e581a5e5bab7e6a380e69fa5e5a4b1e8b4a5efbc81e8afb7e7ab8be58db3e6a380e69fa5e38082270a20202020202020202020776562686f6f6b5f75726c3a20247b7b20736563726574732e534c41434b5f574542484f4f4b207d7d0a202020202020202020206669656c64733a207265706f2c6d6573736167652c636f6d6d69742c617574686f722c616374696f6e2c6576656e744e616d652c776f726b666c6f770a
BLOB
created
INTEGER
updated
INTEGER
Update
Cancel