{"id":42655956,"url":"https://github.com/zensgit/yuantus-plm","last_synced_at":"2026-01-29T08:02:06.661Z","repository":{"id":329384110,"uuid":"1119354437","full_name":"zensgit/yuantus-plm","owner":"zensgit","description":"YuantusPLM: modular PLM platform for mechanical industry (BOM/ECO/versions/CAD pipeline)","archived":false,"fork":false,"pushed_at":"2026-01-26T15:42:04.000Z","size":1857,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-27T03:57:00.973Z","etag":null,"topics":["bom","cad","ecm","manufacturing","pdm","plm","workflow"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zensgit.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","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":"2025-12-19T06:27:41.000Z","updated_at":"2026-01-26T15:42:08.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/zensgit/yuantus-plm","commit_stats":null,"previous_names":["zensgit/yuantus-plm"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/zensgit/yuantus-plm","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zensgit%2Fyuantus-plm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zensgit%2Fyuantus-plm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zensgit%2Fyuantus-plm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zensgit%2Fyuantus-plm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zensgit","download_url":"https://codeload.github.com/zensgit/yuantus-plm/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zensgit%2Fyuantus-plm/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28871349,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-29T07:35:32.468Z","status":"ssl_error","status_checked_at":"2026-01-29T07:33:31.463Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["bom","cad","ecm","manufacturing","pdm","plm","workflow"],"created_at":"2026-01-29T08:02:02.764Z","updated_at":"2026-01-29T08:02:06.651Z","avatar_url":"https://github.com/zensgit.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# YuantusPLM (元图PLM)\n\n[![Release](https://img.shields.io/github/v/release/zensgit/yuantus-plm?display_name=tag)](https://github.com/zensgit/yuantus-plm/releases)\n[![License](https://img.shields.io/github/license/zensgit/yuantus-plm)](LICENSE)\n\nRepository name: `yuantus-plm`  \nProduct name: **YuantusPLM / 元图PLM**\n\nThis repo contains the **core PLM service** (modular monolith) and contracts to integrate with:\n- `Athena` (ECM/DMS)\n- `cad-ml-platform` (CAD ML analysis)\n- `dedupcad-vision` (drawing deduplication)\n\n## Quick start (dev)\n\n1) Start dependencies (infra only):\n```bash\ndocker compose up -d postgres minio\n```\n\n2) Run API:\n```bash\npython3 -m venv .venv\n. .venv/bin/activate\npython3 -m pip install --upgrade pip\npip install -e .\nyuantus start --reload\n```\n\nAPI: `http://localhost:7910/api/v1/health`\n\nNotes:\n- Postgres (docker) exposed at `localhost:55432`\n- MinIO (docker) exposed at `localhost:59000` (S3 API) / `localhost:59001` (Console)\n\n## Quick start (docker)\n\nRun API + Worker + Postgres + MinIO via docker compose:\n\n```bash\ndocker compose up --build\n```\n\n## Auth (dev)\n\nDefault is `YUANTUS_AUTH_MODE=optional` (backward compatible).\n\nSeed identity (tenant/org/user) and login:\n```bash\nyuantus seed-identity --tenant tenant-1 --org org-1 --username admin --password admin --user-id 1 --roles admin\ncurl -s -X POST http://127.0.0.1:7910/api/v1/auth/login \\\n  -H 'content-type: application/json' \\\n  -d '{\"tenant_id\":\"tenant-1\",\"username\":\"admin\",\"password\":\"admin\",\"org_id\":\"org-1\"}'\n```\n\nMulti-org flow (login without org → list orgs → switch org token):\n```bash\nTOKEN=$(curl -s -X POST http://127.0.0.1:7910/api/v1/auth/login \\\n  -H 'content-type: application/json' \\\n  -d '{\"tenant_id\":\"tenant-1\",\"username\":\"admin\",\"password\":\"admin\"}' | python3 -c 'import sys,json;print(json.load(sys.stdin)[\"access_token\"])')\ncurl -s http://127.0.0.1:7910/api/v1/auth/orgs -H \"Authorization: Bearer $TOKEN\"\nORG_TOKEN=$(curl -s -X POST http://127.0.0.1:7910/api/v1/auth/switch-org \\\n  -H 'content-type: application/json' \\\n  -H \"Authorization: Bearer $TOKEN\" \\\n  -d '{\"org_id\":\"org-1\"}' | python3 -c 'import sys,json;print(json.load(sys.stdin)[\"access_token\"])')\n```\n\nTo require JWT globally (except `GET /api/v1/health`, `POST /api/v1/auth/login`, and docs):\n```bash\nexport YUANTUS_AUTH_MODE=required\n```\n\n## Verification\n\nSee `docs/VERIFICATION.md`.\n\n## Development design\n\nSee `docs/DEVELOPMENT_DESIGN.md`.\n\n## Development plan\n\nSee `docs/DEVELOPMENT_PLAN.md`.\n\n## Private delivery acceptance\n\nSee `docs/PRIVATE_DELIVERY_ACCEPTANCE.md`.\n\n## Reuse guide\n\nSee `docs/REUSE.md` (how to reuse `/Users/huazhou/Downloads/Github/PLM/src`).\n\n## Contributing\n\nSee `CONTRIBUTING.md`.\n\n## Security\n\nSee `SECURITY.md`.\n\n## Conventions\n\n- **Python package**: `yuantus` (`src/yuantus/`)\n- **CLI**: `yuantus ...` (legacy alias: `plm ...`)\n- **Tenant header**: `x-tenant-id`\n- **Organization header**: `x-org-id`\n\n## Runtime\n\n- **Python**: 3.10+ (recommended 3.11)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzensgit%2Fyuantus-plm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzensgit%2Fyuantus-plm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzensgit%2Fyuantus-plm/lists"}