# General Rules

  1. Plugin Name: Should be meaningful (allow non-programmers to understand the function of the program through the name and description).
  2. Plugin ID/Code:
    1. Frontend: English + ‘_’ (no other symbols allowed).
    2. Backend: English + ‘ . _ - ’ (no other symbols allowed).
  3. Icon: Please have a designer create an official icon; the same icon should be used for both frontend and backend.
  4. Description: A brief description of the functionality this program implements.
  5. Version: a.b.c must be positive integers.
    1. a Major Version When there are significant changes in feature modules, such as adding multiple modules or changing the overall architecture.
    2. b Minor Version When there are some enhancements or changes in functionality, such as the addition of permission control or custom views.
    3. c Patch Version Generally for bug fixes or minor changes; revisions should be released frequently, with no time interval limit. A patch can be released upon fixing a critical bug.
  6. Manual: Update to the Xuandao Intelligent Control Online Documentation (opens new window) under the 【Module Usage】 menu. After developing each functional module, the manual must be updated.
    1. Function Introduction
    2. User Manual
    3. Change Log

# Example of Frontend Plugin Description File main.json

Field meanings can be referenced in the Description File Specification (opens new window).

{
    "name": "PLC Control Plugin",
    "id": "ccs_plugin_plc",
    "version": "0.0.1",
    "icon": "ccs_plc_plugin_icon.png",
    "description": "PLC Control Plugin",
    "entry": [
        "index.js"
    ],
    "style": [
        "index.css"
    ]
}

# Example of Backend Plugin Description File daemon.json

Field meanings can be referenced in theDescription File Specification (opens new window)

{
    "name": "Universal Central Control",
    "pkg": "com.sansi.ccs-pro",
    "description": "Universal Central Control System(CCS Pro)",
    "interpreter": "node",
    "icon": "favicon.ico",
    "version": "2.4.6",
    "path": "ccs_pro.js",
    "os": "",
    "arch": "",
    "port": 3436,
    "port_type": "HTTP",
    "doc": "https://ccs-pro.sansi.io/",
    "api_doc": "http://{{currentIp}}:{{currentPort}}/docs/api/",
    "homepage": "http://{{currentIp}}:{{currentPort}}",
    "firewall_enable": true,
    "firewall_ports": [
        "3436"
    ],
    "configs": [
        {
            "title": "Server Configuration",
            "type": "json",
            "path": "{{home}}/Sansi/CCS-Platform/config/ccs-server.json",
            "schema": "{{app}}/config/ccs-server.schema.zh_CN.json"
        }
    ]
}

Port: Register in theService Information Collection (opens new window)to ensure no port conflicts. Doc: Program user manual (recommended to fill). Api_doc: API documentation address (recommended to fill). Homepage: Home page address (recommended to fill).