{"id":49299993,"url":"https://github.com/chy5301/asset-hub","last_synced_at":"2026-05-14T06:09:46.225Z","repository":{"id":351693097,"uuid":"1212081159","full_name":"chy5301/asset-hub","owner":"chy5301","description":"小组资产管理工具——Web GUI 面向人类，CLI 面向 AI Agent。FastAPI + SQLModel + React + TanStack Router。","archived":false,"fork":false,"pushed_at":"2026-05-12T12:33:44.000Z","size":1724,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-12T14:32:08.881Z","etag":null,"topics":["agent-native","ai-agent","asset-management","cli","fastapi","react","sqlmodel","tanstack-router","typer"],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/chy5301.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-16T03:28:47.000Z","updated_at":"2026-05-12T12:32:43.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/chy5301/asset-hub","commit_stats":null,"previous_names":["chy5301/asset-hub"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/chy5301/asset-hub","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chy5301%2Fasset-hub","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chy5301%2Fasset-hub/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chy5301%2Fasset-hub/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chy5301%2Fasset-hub/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chy5301","download_url":"https://codeload.github.com/chy5301/asset-hub/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chy5301%2Fasset-hub/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33012777,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-13T13:14:54.681Z","status":"online","status_checked_at":"2026-05-14T02:00:06.663Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agent-native","ai-agent","asset-management","cli","fastapi","react","sqlmodel","tanstack-router","typer"],"created_at":"2026-04-26T06:30:19.858Z","updated_at":"2026-05-14T06:09:46.220Z","avatar_url":"https://github.com/chy5301.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# asset-hub\n\n\u003e 小组资产管理工具。双接口：Web GUI 面向人类，CLI 面向 AI Agent。\n\n## 核心能力\n\n- **资产 CRUD** + 顶层 `model` 型号字段 + 类型驱动的自定义字段（string / int / float / bool / enum / multi_enum / date / text / url）\n- **状态机**：6 态（闲置 / 在用 / 送修 / 故障 / 退役 / 注销）\n- **12 种 transition**：派发（组内/外借）/ 归还 / 送修 / 维修完成 / 退役 / 重新启用 / 注销 / 重新分配（合并位置+保管人）/ 出现故障 / 故障报废 / 故障解除\n- **看板**：4 段聚合（类型分布 / 状态分布 / 保管人 Top 10 / 闲置时长 Top 10）\n- **导出**：CSV / XLSX，按当前筛选透传，走 Web GUI 或 HTTP API\n- **附件管理**：照片 / 发票，CLI + Web 都可上传\n- **服务生命周期管理**：`serve start / stop / status / restart / logs / doctor`\n\n## 技术栈\n\n| 层 | 选型 |\n|---|---|\n| 后端 | Python 3.12+ · FastAPI · SQLModel · SQLite · Typer · Alembic · openpyxl |\n| 前端 | React 19 · Vite · TanStack Router · TanStack Table · TanStack Query · RHF + Zod · Tailwind v4 · shadcn/ui · Recharts |\n| 测试 | pytest（unit / api / cli / migration 四层）· vitest（unit / hooks / components）· playwright（e2e CI） |\n| 工具链 | uv · pnpm · ruff · openapi-typescript / openapi-fetch |\n\n## 架构\n\n```\nWeb GUI (React) ──HTTP──┐\n                        ├──► FastAPI ──► Service 层（唯一事实）──► Repository / SQLModel / FS\nCLI (Typer) ────import──┘\n```\n\nCLI 直接 `from asset_hub.services import ...` 调用 service 层，**不**通过 HTTP 调自己的 API。\n\n## 快速开始\n\n```bash\n# 前置：uv / pnpm / Python 3.12+ / Node 20+\nuv sync\npnpm --dir frontend install\ncp .env.example .env\nuv run alembic upgrade head\n\n# dev 模式（前后端并发，Vite 代理 /api → :8000）\nuv run asset-hub serve start --mode dev\n# 访问 http://127.0.0.1:5173\n\n# prod 模式（自动 build 前端 + 单端口 :8000）\nuv run asset-hub serve start --mode prod\n# 访问 http://127.0.0.1:8000\n```\n\n## CLI 示例（v1.0 GA 命令）\n\n```bash\n# 定义类型\nuv run asset-hub type define --from examples/types/laptop.json --json\n\n# 登记资产（不含照片）\nuv run asset-hub asset register \\\n    --name \"李四开发本\" \\\n    --type-id \u003cuuid\u003e --sn \"PF-1234\" \\\n    --model \"ThinkPad X1 Carbon Gen 9\" \\\n    --custom '{\"brand\":\"Lenovo\",\"ram_gb\":16}' --json\n\n# 单独上传照片附件（登记后）\nuv run asset-hub attachment add \u003casset_id\u003e --file ./photo.jpg --kind photo --json\n\n# 状态流转 — 派发\nuv run asset-hub asset checkout \u003casset_id\u003e --to-holder \"张三\" --kind internal --to-location \"北京办公室\" --json\n\n# 状态流转 — 归还\nuv run asset-hub asset return \u003casset_id\u003e --to-holder \"李四\" --to-location \"上海仓库\" --json\n\n# 列表 + 筛选\nuv run asset-hub asset list --status IDLE --json\n\n# 看板统计\nuv run asset-hub stats --json\n\n# 导出（HTTP API）\ncurl -OJ \"http://localhost:8000/api/export?format=xlsx\u0026status=IDLE\"\n\n# 诊断环境\nuv run asset-hub serve doctor --json\n```\n\n## 路线图\n\n| 里程碑 | 目标 | 状态 |\n|---|---|---|\n| **M1 · 骨架** | service/repo 抽象、CLI CRUD、FastAPI 端点、前端脚手架 | ✅ 已完成 |\n| **M2 · 核心流程 + 视觉收尾** | checkout/return/history、附件、Web 列表 + 详情 + 动态表单、视觉打磨 | ✅ 已完成 |\n| **M3a · 状态机基建** | 5 态 + 10 transition + StateTransitionRecord + 7 dialog | ✅ 已完成 |\n| **M3b · 看板 + /api/stats** | 4 张图表 + ChartTokenProvider | ✅ 已完成 |\n| **M3c · CSV/XLSX 导出** | /api/export + ExportButton + 5 态色条件格式 | ✅ 已完成 |\n| **M3d · timeline 视觉重构** | Group rail + 月份分段 + 派出类型染色 + 超长派发预警 | ✅ 已完成 |\n| **M3e · v1.0 GA 收口** | SKILL.md + envelope 统一 + serve doctor + Windows 部署 + e2e CI | ✅ 已完成 |\n| **v2.0 · 状态机扩展 + Agent-native + model 字段** | 状态机扩展到 6 态/12 transition + Agent-native flag/envelope + Asset.model 顶层列（详情见 release-notes-v2.0） | ✅ 已完成 2026-05-13 |\n| **v2.x · 工程化** | CI 后端+前端覆盖 + ruff format baseline + serve start IPv6 端口探测修复 | 🛠 进行中 |\n| **M4 · UI 打磨** | 配色 / 间距 / 动效达 frontend-design 审美标准；A3 dialog 合并；§S/§U/§W | ⏳ 规划中 |\n| **M5 · People 实体化** | holder/location 实体化 + 重名/改名管理 | ⏳ 规划中 |\n\n## 文档\n\n- AI Agent 入口：[SKILL.md](./SKILL.md)（含 6 态 + 12 transition + envelope + 命令速查 + 任务流）\n- 部署指南：[docs/deployment.md](./docs/deployment.md)\n- v1.0 升级指南：[docs/superpowers/release-notes-v1.0.md](./docs/superpowers/release-notes-v1.0.md)\n- v2.0 升级指南：[docs/superpowers/release-notes-v2.0.md](./docs/superpowers/release-notes-v2.0.md)\n- 设计文档：[docs/superpowers/specs/](./docs/superpowers/specs/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchy5301%2Fasset-hub","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchy5301%2Fasset-hub","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchy5301%2Fasset-hub/lists"}