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 23507 in action_run
id
Primary key.
INTEGER NOT NULL
title
feat(skills)+feat(web): 技能目录治理与熟练度真实对接 + 响应式工作台 + G18/G21 收口
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
5e0044558f1104cbbaefb759bd0d70c3a5049418
TEXT
is_fork_pull_request
INTEGER
need_approval
INTEGER
approved_by
INTEGER
event
push
TEXT
event_payload
{"ref":"refs/heads/main","before":"29718124b1918bbc4d17c98875c6043ec5fa3048","after":"5e0044558f1104cbbaefb759bd0d70c3a5049418","compare_url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/compare/29718124b1918bbc4d17c98875c6043ec5fa3048...5e0044558f1104cbbaefb759bd0d70c3a5049418","commits":[{"id":"5e0044558f1104cbbaefb759bd0d70c3a5049418","message":"feat(skills)+feat(web): 技能目录治理与熟练度真实对接 + 响应式工作台 + G18/G21 收口\n\n技能管理治理(先登记后使用):\n- contracts 新增 skill.ts 单源:SKILL_NAME_PATTERN / registerSkillSchema /\n findUnknownSkills / toSkillProficiencySnapshot(两后端只做框架胶水,防 G17 漂移)\n- 两后端对等 GET/POST /api/skills 幂等登记(新建 201 + 同 tx 发 skill.registered,\n 重复 200 同行;P2002 窄捕获);任务/触发器模板 requiredSkills 构造性校验,\n 未登记 400 UNKNOWN_SKILLS 附清单(TaskDependency 同款先例,负向已验证:\n 拼错名不建任务、不污染目录、不再静默铸造 ActorSkillState 履历)\n- web SkillPicker 目录化表单(任务/自动化共用;显式登记新技能名)\n\n熟练度真实对接(修复蓝图与代码漂移):\n- 装配事务内读 ActorSkillState → 快照 skillProficiency → LLM prompt 渲染执行者履历\n (ANALYSIS_PROMPT_VERSION=2);两后端「二次装配快照携带 count=1」断言钉死\n\nG18 盲区收口:两后端 learning.concurrency.test.ts(行锁定序双事务:乐观锁 0 行拒绝\n+ 整事务回滚计数不丢不重 + 全新技能并发首建 P2002 防双行)\n\n响应式工作台改版:手机端底部导航 / PC 端侧栏 + 2 个响应式 e2e 用例;\nRoleAssignmentsPanel(G8 角色管理只读面);G21 agent-adapters 生成器与比对门禁接入\n\n治理回灌:registry 登记 skills 资产(fork-readiness/dual-backend/validation/outbox\n接管)、owner-matrix/work/learning 蓝图/词典/CLAUDE.md 动态区同步、\n棘轮收紧 testsPassed=368 / ownTests=54 / ownTestCases=360\n\n证据(本地工作区,2026-08-20):pnpm check 静态 12 项全绿;check:runtime 368/368\n(PG:55447/digital_employee_os_skills_20260820 + Redis:6397/9);check:ui 13/13\n(含 SkillPicker 全链路与响应式用例,端口 3151/3253)\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/commit/5e0044558f1104cbbaefb759bd0d70c3a5049418","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-08-20T02:49:23-07:00","added":[".agents/skills/business-module-intake/SKILL.md","apps/api-fastify/src/modules/work/skills.service.ts","apps/api-fastify/src/routes/skills.ts","apps/api-nestjs/src/work/skills.controller.ts","apps/api-nestjs/src/work/skills.service.ts","apps/web/src/components/RoleAssignmentsPanel.tsx","apps/web/src/components/workbench/SkillPicker.tsx","packages/contracts/src/skill.test.ts","packages/contracts/src/skill.ts","reports/agent-adapters.latest.json","scripts/check-agent-adapters.mjs"],"removed":[],"modified":[".agents/skills/frontend-api-react/SKILL.md",".agents/skills/fullstack-7layer-react/SKILL.md","CLAUDE.md","apps/api-fastify/src/app.ts","apps/api-fastify/src/modules/triggers.service.ts","apps/api-fastify/src/modules/work/errors.ts","apps/api-fastify/src/modules/work/runtimes.service.ts","apps/api-fastify/src/modules/work/tasks.service.ts","apps/api-fastify/src/routes/triggers.ts","apps/api-fastify/src/routes/work.ts","apps/api-fastify/test/actor-events.integration.test.ts","apps/api-fastify/test/learning.concurrency.test.ts","apps/api-fastify/test/llm.acceptance.test.ts","apps/api-fastify/test/llm.anthropic.acceptance.test.ts","apps/api-fastify/test/outcomes.integration.test.ts","apps/api-fastify/test/task-events.integration.test.ts","apps/api-fastify/test/triggers.integration.test.ts","apps/api-fastify/test/work.integration.test.ts","apps/api-nestjs/src/triggers/triggers.service.ts","apps/api-nestjs/src/work/runtimes.service.ts","apps/api-nestjs/src/work/tasks.service.ts","apps/api-nestjs/src/work/work.module.ts","apps/api-nestjs/test/actor-events.integration.test.ts","apps/api-nestjs/test/learning.concurrency.test.ts","apps/api-nestjs/test/llm.acceptance.test.ts","apps/api-nestjs/test/llm.anthropic.acceptance.test.ts","apps/api-nestjs/test/outcomes.integration.test.ts","apps/api-nestjs/test/task-events.integration.test.ts","apps/api-nestjs/test/triggers.integration.test.ts","apps/api-nestjs/test/work.integration.test.ts","apps/web/e2e/acceptance.spec.ts","apps/web/src/app/page.tsx","apps/web/src/components/JobsPanel.tsx","apps/web/src/components/ProjectsPanel.tsx","apps/web/src/components/UsersPanel.tsx","apps/web/src/components/views/AutomationView.tsx","apps/web/src/components/views/SystemView.tsx","apps/web/src/components/views/TeamView.tsx","apps/web/src/components/views/WorkbenchView.tsx","apps/web/src/components/workbench/StateBadge.tsx","apps/web/src/components/workbench/TaskCreateForm.tsx","apps/web/src/components/workbench/TaskDetail.tsx","apps/web/src/components/workbench/TaskList.tsx","apps/web/src/lib/api.ts","apps/web/src/lib/providers.tsx","apps/web/src/lib/state-theme.ts","apps/web/src/lib/types.ts","docs/domain-glossary.md","docs/domain/learning-blueprint.md","docs/domain/owner-matrix.md","docs/domain/work-blueprint.md","docs/governance-experience.md","governance.registry.json","package.json","packages/contracts/src/index.ts","packages/contracts/src/llm.test.ts","packages/contracts/src/llm.ts","packages/contracts/src/realtime.ts","reports/baseline.json","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json","scripts/governance-report.mjs"]}],"total_commits":0,"head_commit":{"id":"5e0044558f1104cbbaefb759bd0d70c3a5049418","message":"feat(skills)+feat(web): 技能目录治理与熟练度真实对接 + 响应式工作台 + G18/G21 收口\n\n技能管理治理(先登记后使用):\n- contracts 新增 skill.ts 单源:SKILL_NAME_PATTERN / registerSkillSchema /\n findUnknownSkills / toSkillProficiencySnapshot(两后端只做框架胶水,防 G17 漂移)\n- 两后端对等 GET/POST /api/skills 幂等登记(新建 201 + 同 tx 发 skill.registered,\n 重复 200 同行;P2002 窄捕获);任务/触发器模板 requiredSkills 构造性校验,\n 未登记 400 UNKNOWN_SKILLS 附清单(TaskDependency 同款先例,负向已验证:\n 拼错名不建任务、不污染目录、不再静默铸造 ActorSkillState 履历)\n- web SkillPicker 目录化表单(任务/自动化共用;显式登记新技能名)\n\n熟练度真实对接(修复蓝图与代码漂移):\n- 装配事务内读 ActorSkillState → 快照 skillProficiency → LLM prompt 渲染执行者履历\n (ANALYSIS_PROMPT_VERSION=2);两后端「二次装配快照携带 count=1」断言钉死\n\nG18 盲区收口:两后端 learning.concurrency.test.ts(行锁定序双事务:乐观锁 0 行拒绝\n+ 整事务回滚计数不丢不重 + 全新技能并发首建 P2002 防双行)\n\n响应式工作台改版:手机端底部导航 / PC 端侧栏 + 2 个响应式 e2e 用例;\nRoleAssignmentsPanel(G8 角色管理只读面);G21 agent-adapters 生成器与比对门禁接入\n\n治理回灌:registry 登记 skills 资产(fork-readiness/dual-backend/validation/outbox\n接管)、owner-matrix/work/learning 蓝图/词典/CLAUDE.md 动态区同步、\n棘轮收紧 testsPassed=368 / ownTests=54 / ownTestCases=360\n\n证据(本地工作区,2026-08-20):pnpm check 静态 12 项全绿;check:runtime 368/368\n(PG:55447/digital_employee_os_skills_20260820 + Redis:6397/9);check:ui 13/13\n(含 SkillPicker 全链路与响应式用例,端口 3151/3253)\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/commit/5e0044558f1104cbbaefb759bd0d70c3a5049418","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-08-20T02:49:23-07:00","added":[".agents/skills/business-module-intake/SKILL.md","apps/api-fastify/src/modules/work/skills.service.ts","apps/api-fastify/src/routes/skills.ts","apps/api-nestjs/src/work/skills.controller.ts","apps/api-nestjs/src/work/skills.service.ts","apps/web/src/components/RoleAssignmentsPanel.tsx","apps/web/src/components/workbench/SkillPicker.tsx","packages/contracts/src/skill.test.ts","packages/contracts/src/skill.ts","reports/agent-adapters.latest.json","scripts/check-agent-adapters.mjs"],"removed":[],"modified":[".agents/skills/frontend-api-react/SKILL.md",".agents/skills/fullstack-7layer-react/SKILL.md","CLAUDE.md","apps/api-fastify/src/app.ts","apps/api-fastify/src/modules/triggers.service.ts","apps/api-fastify/src/modules/work/errors.ts","apps/api-fastify/src/modules/work/runtimes.service.ts","apps/api-fastify/src/modules/work/tasks.service.ts","apps/api-fastify/src/routes/triggers.ts","apps/api-fastify/src/routes/work.ts","apps/api-fastify/test/actor-events.integration.test.ts","apps/api-fastify/test/learning.concurrency.test.ts","apps/api-fastify/test/llm.acceptance.test.ts","apps/api-fastify/test/llm.anthropic.acceptance.test.ts","apps/api-fastify/test/outcomes.integration.test.ts","apps/api-fastify/test/task-events.integration.test.ts","apps/api-fastify/test/triggers.integration.test.ts","apps/api-fastify/test/work.integration.test.ts","apps/api-nestjs/src/triggers/triggers.service.ts","apps/api-nestjs/src/work/runtimes.service.ts","apps/api-nestjs/src/work/tasks.service.ts","apps/api-nestjs/src/work/work.module.ts","apps/api-nestjs/test/actor-events.integration.test.ts","apps/api-nestjs/test/learning.concurrency.test.ts","apps/api-nestjs/test/llm.acceptance.test.ts","apps/api-nestjs/test/llm.anthropic.acceptance.test.ts","apps/api-nestjs/test/outcomes.integration.test.ts","apps/api-nestjs/test/task-events.integration.test.ts","apps/api-nestjs/test/triggers.integration.test.ts","apps/api-nestjs/test/work.integration.test.ts","apps/web/e2e/acceptance.spec.ts","apps/web/src/app/page.tsx","apps/web/src/components/JobsPanel.tsx","apps/web/src/components/ProjectsPanel.tsx","apps/web/src/components/UsersPanel.tsx","apps/web/src/components/views/AutomationView.tsx","apps/web/src/components/views/SystemView.tsx","apps/web/src/components/views/TeamView.tsx","apps/web/src/components/views/WorkbenchView.tsx","apps/web/src/components/workbench/StateBadge.tsx","apps/web/src/components/workbench/TaskCreateForm.tsx","apps/web/src/components/workbench/TaskDetail.tsx","apps/web/src/components/workbench/TaskList.tsx","apps/web/src/lib/api.ts","apps/web/src/lib/providers.tsx","apps/web/src/lib/state-theme.ts","apps/web/src/lib/types.ts","docs/domain-glossary.md","docs/domain/learning-blueprint.md","docs/domain/owner-matrix.md","docs/domain/work-blueprint.md","docs/governance-experience.md","governance.registry.json","package.json","packages/contracts/src/index.ts","packages/contracts/src/llm.test.ts","packages/contracts/src/llm.ts","packages/contracts/src/realtime.ts","reports/baseline.json","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json","scripts/governance-report.mjs"]},"repository":{"id":76,"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":"digital-employee-os","full_name":"luoanwu/digital-employee-os","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":1248,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/digital-employee-os/languages","html_url":"https://gitea.g-hi.com/luoanwu/digital-employee-os","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/digital-employee-os","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/digital-employee-os.git","clone_url":"https://gitea.g-hi.com/luoanwu/digital-employee-os.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-08-20T14:46:28+08:00","updated_at":"2026-08-20T16:09:44+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