- Home
- Skills
- Tencentblueking
- Bk Ci
- Project Module Architecture
project-module-architecture_skill
- Kotlin
2.5k
GitHub Stars
1
Bundled Files
2 months ago
Catalog Refreshed
4 months ago
First Indexed
Readme & install
Copy the install command, review bundled files from the catalogue, and read any extended description pulled from the listing source.
Installation
Preview and clipboard use veilstrat where the catalogue uses aiagentskills.
npx veilstrat add skill tencentblueking/bk-ci --skill project-module-architecture- SKILL.md31.2 KB
Overview
This skill documents the project management module architecture for a CI/CD platform, covering project CRUD, member management, configuration, labels, and migration. It summarizes module layout, core concepts, database tables, key classes, and typical flows to guide engineers implementing project-related features in Kotlin microservices.
How this skill works
The guide inspects layered components: API definitions, business logic, DAO, and generated data models, and maps responsibilities across submodules (api-project, biz-project, model-project). It explains the canonical Project entity, which fields other services consume (notably that english_name is the effective projectId), common enums, DB schema, service classes, and end-to-end flows like create, query, and approval.
When to use it
- Designing or extending project CRUD endpoints and REST contracts.
- Implementing project member, permission, or approval workflows.
- Mapping domain fields to other microservices and avoiding ID confusion.
- Adding project-level configuration, labels, or sharding rules.
- Planning project data migration or schema changes across services.
Best practices
- Treat T_PROJECT.english_name as the external projectId used by all services; ignore the UUID PROJECT_ID for cross-service APIs.
- Keep API layer thin; implement validation and business rules in service classes (AbsProjectServiceImpl and derivatives).
- Validate names strictly (2-64 chars for display name; lowercase+digits+underscore for english_name).
- Use centralized permission services and dispatch project events after persistence to ensure consistency.
- Respect sharding routing and table sharding configs when adding new tables or migration scripts.
Example use cases
- Create a new project flow: validate input, persist via ProjectDao, register resource in auth, dispatch create event.
- List projects visible to a user: call permission service, fetch by english_name, assemble ProjectVO.
- Implement project label functionality: maintain T_PROJECT_LABEL and T_PROJECT_LABEL_REL and expose ServiceProjectTagResource.
- Add a new project property: extend properties JSON, update service validation and migration scripts.
- Migrate projects between data sources: update T_SHARDING_ROUTING_RULE and T_TABLE_SHARDING_CONFIG, and coordinate with dispatch listeners.
FAQ
Use T_PROJECT.english_name as the projectId for all cross-service APIs; the PROJECT_ID UUID is internal only.
Where should validation and permission checks live?
Perform validation and permission checks in service layer implementations (e.g., AbsProjectServiceImpl and projectPermissionService) rather than in the API interface layer.