| 15:38:03.667 | trace | yii\base\Application::bootstrap | Bootstrap with yii\log\Dispatcher |
| 15:38:03.667 | trace | yii\base\Module::getModule | Loading module: debug |
| 15:38:03.667 | trace | yii\base\Application::bootstrap | Bootstrap with yii\debug\Module::bootstrap() |
| 15:38:03.667 | trace | yii\redis\Connection::open | Opening redis DB connection: redis.server.local:6379, database=1 |
| 15:38:03.667 | trace | yii\redis\Connection::executeCommand | Executing Redis Command: SELECT |
| 15:38:03.667 | trace | yii\redis\Connection::executeCommand | Executing Redis Command: GET |
| 15:38:03.668 | info | time tracing start | 1780904283668126976 |
| 15:38:03.668 | trace | yii\web\UrlManager::parseRequest | No matching URL rules. Using default URL parsing logic. |
| 15:38:03.668 | trace | yii\web\Application::handleRequest | Route requested: 'v2/project/get-edit' |
| 15:38:03.668 | trace | yii\base\Module::getModule | Loading module: v2 |
| 15:38:03.668 | info | yii\web\Session::open | Session started |
| 15:38:03.669 | info | yii\db\Connection::open | Opening DB connection: pgsql:host=postgresql.server.local;port=5432;dbname=beta |
| 15:38:03.669 | info | yii\db\Command::query | SELECT * FROM "global"."vw_user_login" WHERE "access_token"='R8ScrIY1ab3sgHgv8KlMKFukwMtD6QYC' |
| 15:38:03.670 | trace | yii\redis\Connection::executeCommand | Executing Redis Command: GET |
| 15:38:03.670 | trace | yii\redis\Connection::executeCommand | Executing Redis Command: MGET |
| 15:38:03.670 | trace | yii\redis\Connection::executeCommand | Executing Redis Command: GET |
| 15:38:03.670 | trace | yii\redis\Connection::executeCommand | Executing Redis Command: MGET |
| 15:38:03.670 | info | yii\db\Command::query | SELECT * FROM "a57be577deb434"."tbl_users" WHERE "id"=1000 |
| 15:38:03.671 | trace | yii\base\Controller::runAction | Route to run: v2/project/get-edit |
| 15:38:03.671 | trace | yii\base\InlineAction::runWithParams | Running action: app\modules\v2\controllers\ProjectController::actionGetEdit() |
| 15:38:03.671 | info | yii\db\Command::query | SELECT p.*,
now() - status_updated_at AS remain,
now() - progress_updated_at AS progress_remain,
now() - forecast_updated_at AS forecast_remain,
CASE WHEN p.end_at IS NOT NULL THEN p.end_at - p.created_at ELSE now() - p.created_at END AS duration,
extract(epoch from (now() - max(sl.end_at))) / 86400 AS lost_contact_days,
max(sl.end_at) AS last_contact,
extract(epoch from (now() - max(arrive.end_at))) / 86400 AS last_arrive_days,
max(arrive.end_at) AS last_arrive,
(SELECT sum(amount) FROM a57be577deb434.tbl_invoices AS i WHERE i.project_id = p.id) AS issued_invoices FROM "a57be577deb434"."tbl_projects" "p" LEFT JOIN "a57be577deb434"."tbl_clients" "c" ON p.client_id = c.id LEFT JOIN "a57be577deb434"."tbl_work_logs" "arrive" ON (arrive.project_id = p.id) AND ("arrive"."scenario_id"=1) AND ("arrive"."is_draft"=FALSE) AND ("arrive"."location_in_id" IS NOT NULL) AND ("arrive"."location_out_id" IS NOT NULL) AND ("arrive"."client_id" IS NOT NULL) LEFT JOIN "a57be577deb434"."tbl_work_logs" "sl" ON sl.project_id = p.id WHERE "p"."id"='4182' GROUP BY "p"."id" |
| 15:38:03.673 | trace | yii\redis\Connection::executeCommand | Executing Redis Command: GET |
| 15:38:03.673 | trace | yii\redis\Connection::executeCommand | Executing Redis Command: MGET |
| 15:38:03.674 | info | yii\db\Command::query | SELECT "id", "id" AS "key", "name", "logo", "client_type", "client_class", "client_industry", "sales_rep" FROM "a57be577deb434"."tbl_clients" WHERE "id"=982 |
| 15:38:03.674 | info | yii\db\Command::query | SELECT "id", "id" AS "key", "name", "sex" FROM "a57be577deb434"."tbl_users" WHERE "id"=1001 |
| 15:38:03.675 | info | yii\db\Command::query | SELECT "id", "user_id", "meta_value" AS "name" FROM "a57be577deb434"."tbl_user_meta" WHERE ("meta_key"='avatar') AND ("user_id"=1001) |
| 15:38:03.675 | info | yii\db\Command::query | SELECT "id", "id" AS "key", "name" FROM "a57be577deb434"."tbl_client_types" WHERE "id"=6 |
| 15:38:03.675 | info | yii\db\Command::query | SELECT "id", "id" AS "key", "name", "notice_days", "color" FROM "a57be577deb434"."tbl_client_classes" WHERE "id"=1 |
| 15:38:03.676 | info | yii\db\Command::query | SELECT "id", "id" AS "key", "name" FROM "a57be577deb434"."tbl_client_industries" WHERE "id"=4 |
| 15:38:03.676 | info | yii\db\Command::query | SELECT "id", "id" AS "key", "type" AS "name" FROM "a57be577deb434"."tbl_contract_types" WHERE "id"=1 |
| 15:38:03.676 | info | yii\db\Command::query | SELECT "project_id", "contribution" AS "value", "engineer_id" AS "key", "u"."name" FROM "a57be577deb434"."tbl_project_architects" LEFT JOIN "a57be577deb434"."tbl_users" "u" ON engineer_id = u.id WHERE "a57be577deb434"."tbl_project_architects"."project_id"=4182 ORDER BY "contribution" DESC, "engineer_id" |
| 15:38:03.677 | trace | yii\redis\Connection::executeCommand | Executing Redis Command: GET |
| 15:38:03.677 | trace | yii\redis\Connection::executeCommand | Executing Redis Command: MGET |
| 15:38:03.677 | info | yii\db\Command::query | SELECT "id", "id" AS "key", "project_status" AS "name", "color" FROM "a57be577deb434"."tbl_project_statuses" WHERE "id"=1 |
| 15:38:03.677 | info | yii\db\Command::query | SELECT "id", "id" AS "key", "project_progress" AS "name", "description" FROM "a57be577deb434"."tbl_project_progresses" WHERE "id"=3 |
| 15:38:03.678 | info | yii\db\Command::query | SELECT id, product_type_id, product_type_id as key, name, coalesce(budget, 0) as budget, coalesce(pct, 0) as pct, coalesce(profit, 0) as profit, project_id FROM "a57be577deb434"."tbl_project_product_types" WHERE "project_id"=4182 |
| 15:38:03.679 | info | yii\db\Command::query | SELECT * FROM "a57be577deb434"."tbl_term_taxonomy_relationships" WHERE "object_id"=4182 |
| 15:38:03.680 | info | yii\db\Command::query | SELECT "id", "id" AS "key", "name", "description" FROM "a57be577deb434"."tbl_term_taxonomies" WHERE ("term_id"=13) AND ("id" IN (1, 130, 142, 307, 203, 356, 369)) ORDER BY "sort" |
| 15:38:03.682 | info | yii\db\Command::query | SELECT * FROM "a57be577deb434"."tbl_term_taxonomy_relationships" WHERE "object_id"=4182 |
| 15:38:03.682 | info | yii\db\Command::query | SELECT "id", "id" AS "key", "name" FROM "a57be577deb434"."tbl_term_taxonomies" WHERE ("term_id"=10) AND ("id" IN (1, 130, 142, 307, 203, 356, 369)) ORDER BY "sort" |
| 15:38:03.683 | info | yii\db\Command::query | SELECT * FROM "a57be577deb434"."tbl_term_taxonomy_relationships" WHERE "object_id"=4182 |
| 15:38:03.683 | info | yii\db\Command::query | SELECT "id", "id" AS "key", "name" FROM "a57be577deb434"."tbl_term_taxonomies" WHERE ("term_id"=9) AND ("id" IN (1, 130, 142, 307, 203, 356, 369)) ORDER BY "sort" |
| 15:38:03.683 | info | yii\db\Command::query | SELECT "id", "id" AS "key", "name", "sex", "department_id" FROM "a57be577deb434"."tbl_users" WHERE "id"=1001 |
| 15:38:03.684 | info | yii\db\Command::query | SELECT "id", "user_id", "meta_value" AS "name" FROM "a57be577deb434"."tbl_user_meta" WHERE ("meta_key"='avatar') AND ("user_id"=1001) |
| 15:38:03.684 | info | yii\db\Command::query | SELECT "id", "id" AS "key", "name" FROM "a57be577deb434"."tbl_departments" WHERE "id"=4 |
| 15:38:03.694 | info | yii\db\Command::query | SELECT "id", "id" AS "key", "name", "sex", "department_id" FROM "a57be577deb434"."tbl_users" WHERE "id"=1000 |
| 15:38:03.695 | info | yii\db\Command::query | SELECT "id", "user_id", "meta_value" AS "name" FROM "a57be577deb434"."tbl_user_meta" WHERE ("meta_key"='avatar') AND ("user_id"=1000) |
| 15:38:03.695 | info | yii\db\Command::query | SELECT * FROM "a57be577deb434"."tbl_clients" WHERE "id"=982 |
| 15:38:03.699 | info | yii\db\Command::query | SELECT "id", "id" AS "key", "name", "sex" FROM "a57be577deb434"."tbl_users" WHERE "id"=1001 |
| 15:38:03.700 | info | yii\db\Command::query | SELECT "id", "user_id", "meta_value" AS "name" FROM "a57be577deb434"."tbl_user_meta" WHERE ("meta_key"='avatar') AND ("user_id"=1001) |
| 15:38:03.700 | info | yii\db\Command::query | SELECT "c"."project_id", sum(ca.points) as points FROM "a57be577deb434"."tbl_cases" "c" LEFT JOIN (SELECT "case_id", sum(points) as points FROM "a57be577deb434"."tbl_case_assignments" GROUP BY "case_id") "ca" ON ca.case_id = c.id WHERE "c"."project_id"=4182 GROUP BY "c"."project_id" |
| 15:38:03.705 | info | yii\db\Command::query | SELECT "project_id", count(id) as count FROM "a57be577deb434"."tbl_work_logs" WHERE ("is_draft"=FALSE) AND ("project_id"=4182) GROUP BY "project_id" |
| 15:38:03.706 | info | yii\db\Command::query | SELECT "project_id", count(id) as count FROM "a57be577deb434"."tbl_cases" WHERE "project_id"=4182 GROUP BY "project_id" |
| 15:38:03.707 | info | yii\db\Command::query | SELECT "project_id", EXTRACT(epoch FROM sum(end_at - start_at)) /3600 AS hours, count(id) as times FROM "a57be577deb434"."tbl_work_logs" WHERE ("is_draft"=FALSE) AND ("scenario_id"=1) AND (("location_in_id" IS NOT NULL) AND ("location_out_id" IS NOT NULL) AND ("client_id" IS NOT NULL)) AND ("project_id"=4182) GROUP BY "project_id" |
| 15:38:03.707 | info | yii\db\Command::query | SELECT "c"."project_id", sum(hours), sum(times) as times FROM "a57be577deb434"."tbl_cases" "c" LEFT JOIN (SELECT "case_id", EXTRACT(epoch FROM sum(left_at - arrived_at)) /3600 AS hours, count(id) as times FROM "a57be577deb434"."tbl_implement_records" WHERE "is_draft"=FALSE GROUP BY "case_id") "i" ON i.case_id = c.id WHERE ("case_type"=2) AND ("c"."project_id"=4182) GROUP BY "c"."project_id" |
| 15:38:03.712 | info | yii\db\Command::query | SELECT "c"."project_id", sum(hours), sum(times) as times FROM "a57be577deb434"."tbl_cases" "c" LEFT JOIN (SELECT "case_id", EXTRACT(epoch FROM sum(end_at - start_at)) /3600 AS hours, count(id) as times FROM "a57be577deb434"."tbl_pre_sales" WHERE "is_draft"=FALSE GROUP BY "case_id") "i" ON i.case_id = c.id WHERE ("case_type"=1) AND ("c"."project_id"=4182) GROUP BY "c"."project_id" |
| 15:38:03.715 | info | yii\db\Command::query | SELECT "project_id", EXTRACT(epoch FROM sum(end_at - start_at)) /3600 AS hours, count(id) as times FROM "a57be577deb434"."tbl_work_logs" WHERE ("is_draft"=FALSE) AND ("scenario_id"=2) AND ("project_id"=4182) GROUP BY "project_id" |
| 15:38:03.716 | info | yii\db\Command::query | SELECT "project_id", sum(amount) AS sum FROM "a57be577deb434"."tbl_reimbursements" WHERE ("status" IN (2, 3)) AND ("project_id"=4182) GROUP BY "project_id" |
| 15:38:03.721 | info | yii\db\Command::query | SELECT "id", "from_project", "payment_collection_remind_ahead", "serial_no", "is_settle", "is_deliver", "is_outbound", "erp_settle_amount", "erp_un_settle_amount", "including_tax", "amount" FROM "a57be577deb434"."tbl_sales_contracts" WHERE "from_project"=4182 |
| 15:38:03.726 | info | yii\db\Command::query | SELECT "id", "user_id", "user_id" AS "key", "project_id" FROM "a57be577deb434"."tbl_project_remind_receivers" WHERE "project_id"=4182 |
| 15:38:03.727 | info | yii\db\Command::query | SELECT * FROM "a57be577deb434"."tbl_project_product_rels" WHERE "project_id"=4182 ORDER BY "id" |
| 15:38:03.730 | info | yii\db\Command::query | SELECT "object_id", count(*) as comment FROM "a57be577deb434"."tbl_comments" WHERE ("object_type"=1) AND ("object_id"=4182) GROUP BY "object_id" |
| 15:38:03.751 | info | yii\db\Command::query | SELECT "object_id", count(*) AS unread FROM "a57be577deb434"."tbl_unread_comments" WHERE ("object_type"=1) AND (remind_user_id = 1000 AND is_read = false) AND ("object_id"=4182) GROUP BY "object_id" |
| 15:38:03.769 | info | yii\db\Command::query | SELECT "id", "id" AS "key", "name", "client_id", "supplier_id" FROM "a57be577deb434"."tbl_contacts" WHERE "id"=2364 |
| 15:38:03.770 | info | yii\db\Command::query | SELECT * FROM "a57be577deb434"."tbl_contact_mobiles" WHERE "contact_id"=2364 |
| 15:38:03.770 | info | yii\db\Command::query | SELECT "id", "id" AS "key", "name" FROM "a57be577deb434"."tbl_clients" WHERE "id"=1181 |
| 15:38:03.771 | info | yii\db\Command::query | SELECT * FROM "a57be577deb434"."tbl_project_contact_points" WHERE "project_id"=4182 |
| 15:38:03.772 | info | yii\db\Command::query | SELECT * FROM "a57be577deb434"."tbl_erp_sales_orders" WHERE ("status" IN (2, 5)) AND ("project_id"=4182) |
| 15:38:03.783 | info | yii\db\Command::query | SELECT * FROM "a57be577deb434"."tbl_project_used_clients" WHERE "project_id"=4182 |
| 15:38:03.783 | info | yii\db\Command::query | SELECT * FROM "a57be577deb434"."tbl_erp_sales_orders" WHERE ("status"=1) AND ("project_id"=4182) |
| 15:38:03.784 | info | yii\db\Command::query | SELECT
s.id, project_id, client_id, schedule_title, complete_at, start_at, end_at, created_by, is_complete, is_closed, complete_description, set_top_at,
CASE WHEN is_complete = true THEN 3
WHEN is_complete = false AND end_at <= NOW() THEN 2
ELSE 1 END AS sort
FROM "a57be577deb434"."tbl_schedules" "s" LEFT JOIN "a57be577deb434"."tbl_schedule_carbon_copy_rels" "ccr" ON ccr.schedule_id = s.id WHERE (("is_complete"=FALSE) OR ("complete_at" >= '2026-05-25')) AND ((("is_public"=1) AND ("created_by" != 1000)) OR ("created_by"=1000) OR ("ccr"."user_id"=1000)) AND ("s"."project_id"=4182) ORDER BY
set_top_at DESC nulls last,
sort ASC,
CASE WHEN is_complete = true THEN complete_at END DESC,
CASE WHEN is_complete = false THEN end_at END ASC,
end_at DESC |
| 15:38:03.787 | trace | yii\redis\Connection::executeCommand | Executing Redis Command: GET |
| 15:38:03.787 | trace | yii\redis\Connection::executeCommand | Executing Redis Command: MGET |
| 15:38:03.787 | info | yii\db\Command::query | SELECT * FROM "a57be577deb434"."tbl_clients" WHERE "id"=982 |
| 15:38:03.788 | info | yii\db\Command::query | SELECT EXISTS(SELECT * FROM "a57be577deb434"."tbl_user_visit_clients" WHERE ("user_id"=1000) AND ("client_id"=982)) |
| 15:38:03.788 | trace | yii\redis\Connection::executeCommand | Executing Redis Command: GET |
| 15:38:03.789 | trace | yii\redis\Connection::executeCommand | Executing Redis Command: GET |
| 15:38:03.790 | trace | yii\redis\Connection::executeCommand | Executing Redis Command: GET |
| 15:38:03.791 | trace | uranus\rbac\DbManager::checkAccessFromCache | Checking permission: viewProduct |
| 15:38:03.791 | trace | uranus\rbac\DbManager::checkAccessFromCache | Checking role: StoreKeeper |
| 15:38:03.791 | trace | uranus\rbac\DbManager::checkAccessFromCache | Checking role: Admin |
| 15:38:03.791 | info | yii\db\Command::query | SELECT "id" AS "key", "name" FROM "a57be577deb434"."tbl_product_types" WHERE "is_delete"=FALSE ORDER BY "order", "id" |
| 15:38:03.791 | info | yii\db\Command::query | SELECT "id" AS "key", "name" FROM "a57be577deb434"."tbl_term_taxonomies" WHERE ("term_id"=13) AND ("is_delete"=FALSE) ORDER BY "sort", "id" |
| 15:38:03.792 | info | yii\db\Command::query | SELECT "id" AS "key", "name" FROM "a57be577deb434"."tbl_term_taxonomies" WHERE ("term_id"=9) AND ("is_delete"=FALSE) ORDER BY "sort", "id" |
| 15:38:03.792 | info | yii\db\Command::query | SELECT "id" AS "key", "name" FROM "a57be577deb434"."tbl_term_taxonomies" WHERE ("term_id"=10) AND ("is_delete"=FALSE) ORDER BY "sort", "id" |
| 15:38:03.792 | info | yii\db\Command::query | SELECT "id" AS "key", "project_progress" AS "name" FROM "a57be577deb434"."tbl_project_progresses" WHERE "is_delete"=FALSE ORDER BY "order" |
| 15:38:03.792 | trace | uranus\rbac\DbManager::checkAccessFromCache | Checking permission: changeProjectStatus3 |
| 15:38:03.792 | trace | uranus\rbac\DbManager::checkAccessFromCache | Checking role: AccountManager |
| 15:38:03.792 | trace | uranus\rbac\DbManager::checkAccessFromCache | Checking role: Admin |
| 15:38:03.792 | trace | uranus\rbac\DbManager::checkAccessFromCache | Checking permission: changeProjectStatus4 |
| 15:38:03.792 | trace | uranus\rbac\DbManager::checkAccessFromCache | Checking role: Admin |
| 15:38:03.792 | trace | uranus\rbac\DbManager::checkAccessFromCache | Checking permission: changeProjectStatus5 |
| 15:38:03.792 | trace | uranus\rbac\DbManager::checkAccessFromCache | Checking role: Admin |
| 15:38:03.792 | info | yii\db\Command::query | SELECT "id" AS "key", "project_status" AS "name", "color" FROM "a57be577deb434"."tbl_project_statuses" WHERE "id" IN (1, 2, 3, 4, 5) ORDER BY "order" |
| 15:38:03.793 | info | yii\db\Command::query | SELECT "id" AS "key", "type" AS "name" FROM "a57be577deb434"."tbl_contract_types" WHERE "is_delete"=FALSE ORDER BY "sort" |
| 15:38:03.793 | info | yii\db\Command::query | SELECT "user_id" FROM "a57be577deb434"."tbl_user_role_change_logs" "urcl" LEFT JOIN "a57be577deb434"."tbl_users" "u" ON urcl.user_id = u.id WHERE ("role_name"='Engineer') AND (((start_from < end_at) or end_at is null)) AND (tsrange(start_from::TIMESTAMP, end_at::TIMESTAMP, '[)') && '[2026-06-08 15:38:03, 2026-06-08 15:38:03]'::tsrange) GROUP BY "user_id", "pinyin1", "namecut1", "pinyin2", "namecut2", "pinyin3", "namecut3", "pinyin4", "namecut4" ORDER BY
pinyin1 nulls first, namecut1 nulls first,
pinyin2 nulls first, namecut2 nulls first,
pinyin3 nulls first, namecut3 nulls first,
pinyin4 nulls first, namecut4 nulls first |
| 15:38:03.798 | trace | yii\redis\Connection::executeCommand | Executing Redis Command: GET |
| 15:38:03.798 | trace | yii\redis\Connection::executeCommand | Executing Redis Command: MGET |
| 15:38:03.799 | trace | yii\redis\Connection::executeCommand | Executing Redis Command: GET |
| 15:38:03.799 | trace | yii\redis\Connection::executeCommand | Executing Redis Command: MGET |
| 15:38:03.799 | info | yii\db\Command::query | INSERT INTO "global"."tbl_api_log" ("code", "schema", "user_id", "device_type", "version_code", "url", "request", "response", "php_error", "time", "duration") VALUES (200, 'a57be577deb434', 1000, 2, 1159, 'v2/project/get-edit', '{"access_token":"R8ScrIY1ab3sgHgv8KlMKFukwMtD6QYC","device_type":"2","id":"4182","posttime":"1780904320","token":"7b33278c7a0b67805b3e5bbcd051f97f","version_code":"1159"}', '{"code":200,"data":{"model":{"id":4182,"client_id":982,"project_status":1,"project_progress":3,"budget":"0","profit_pct":"0","bargain_date":"2026-07-08","description":null,"created_by":1001,"created_at":"2026-06-08 15:37:04","updated_at":"2026-06-08 15:38:01","engineer_id":null,"project_title":"qwerty","collected":"0","status_updated_at":"2026-06-08 15:37:04.078198+08","success_rate":null,"comment":"","contract_type":1,"progress_updated_at":"2026-06-08 15:37:04.078198+08","forecast_updated_at":"2026-06-08 15:37:04.078198+08","end_at":"","pinyin_shortcut":"qwerty","creator":1000,"used_client":null,"from_contact":2364,"total_contact_point":null,"paid_contact_point":null,"project_product_version_id":null,"is_sales_order_ready":false,"collected_plan":0,"change_status_to":null,"is_verify":false,"remain":"00:00:59.59411","progress_remain":"00:00:59.59411","forecast_remain":"00:00:59.59411","duration":"00:00:59.59411","lost_contact_days":null,"last_contact":"","last_arrive_days":null,"last_arrive":null,"issued_invoices":null,"client":{"id":982,"key":982,"name":"\u4e2d\u56fd\u4fe1\u606f\u5b89\u5168\u7814\u7a76\u6240","logo":null,"client_type":6,"client_class":1,"client_industry":4,"sales_rep":1001,"salesRep":{"id":1001,"key":1001,"name":"\u5218\u4eba\u8bda","sex":"M","avatar":{"id":2,"user_id":1001,"name":"\/files\/cdn\/\/avatar\/e868e40f-1256-329e-9b1c-74e095049622.png"}},"clientType":{"id":6,"key":6,"name":"\u836f\u54c1\u6279\u53d1\u4f01\u4e1a\uff08\u666e\u901a\uff09"},"clientClass":{"id":1,"key":1,"name":"\u6838\u5fc3\u5ba2\u6237","notice_days":10,"color":"#E89F0E"},"clientIndustry":{"id":4,"key":4,"name":"\u901a\u4fe1"}},"usedClient":null,"contractType":{"id":1,"key":1,"name":"\u4ea7\u54c1\u9500\u552e"},"projectArchitects":[{"project_id":4182,"value":"1","key":1023,"name":"\u5468\u5b50\u5065"}],"projectStatus":{"id":1,"key":1,"name":"\u9690\u6027\u9700\u6c42","color":"#ffc000"},"projectProgress":{"id":3,"key":3,"name":"\u65b9\u6848\u8bbe\u8ba1","description":"\u5b9a\u4e49\uff1a\u6839\u636e\u5ba2\u6237\u9762\u4e34\u7684\u95ee\u9898\u53ca\u6311\u6218\uff0c \u63d0\u51fa\u6211\u65b9\u7684\u4ea7\u54c1\u65b9\u6848\u3002\u5177\u4f53\u7684\u54c1\u724c\uff0c \u578b\u53f7\uff0c\u914d\u7f6e\uff0c\u4fdd\u4fee\u3002 \n\u65b9\u6cd5\uff1a\u5c06\u5ba2\u6237\u7684\u95ee\u9898\u53ca\u9700\u6c42\u7528\u6587\u5b57\u63cf\u8ff0\u51fa\u6765\uff0c\u4ea4\u7ed9\u552e\u524d\u6216\u5382\u5546\u3002"},"projectProductTypes":[],"salesForecast":{"id":142,"key":142,"name":"\u6211\u4e0e\u5ba2\u6237\u8054\u624b","description":"\u4e0e\u5ba2\u6237\u8054\u624b\u5411\u5382\u5546\u4e89\u53d6\u6700\u4f18\u60e0\u4ef7\u683c\u3002\u5229\u6da6\u540450%\u3002"},"opportunityFrom":null,"purchaseType":{"id":130,"key":130,"name":"\u7ade\u4e89\u8c08\u5224"},"createdBy":{"id":1001,"key":1001,"name":"\u5218\u4eba\u8bda","sex":"M","department_id":4,"avatar":{"id":2,"user_id":1001,"name":"\/files\/cdn\/\/avatar\/e868e40f-1256-329e-9b1c-74e095049622.png"},"department":{"id":4,"key":4,"name":"\u603b\u7ecf\u7406"}},"projectCreator":{"id":1000,"key":1000,"name":"\u66f9\u6c38\u751f","sex":"M","department_id":10,"avatar":{"id":1,"user_id":1000,"name":"\/files\/cdn\/\/avatar\/618545c1-a2ce-3918-9d51-25924baf6d6f.jpg"}},"salesRep":{"id":1001,"key":1001,"name":"\u5218\u4eba\u8bda","sex":"M","avatar":{"id":2,"user_id":1001,"name":"\/files\/cdn\/\/avatar\/e868e40f-1256-329e-9b1c-74e095049622.png"}},"casePoints":null,"workLogCount":null,"caseCount":null,"salesTimeCount":null,"implementTimeCount":null,"presalesTimeCount":null,"engineerTimeCount":null,"reimbursementAmountSum":null,"buildContract":null,"projectRemindReceivers":[],"projectProductRels":[],"commentCount":{"object_id":4182,"comment":1},"unreadComments":null,"fromContact":{"id":2364,"key":2364,"name":"Cindy Zhou","client_id":1181,"supplier_id":null,"mobiles":[{"id":2347,"contact_id":2364,"mobile":"13918818387","mp_open_id":null}],"client":{"id":1181,"key":1181,"name":"\u5148\u6b63\u8fbe\u751f\u7269\u79d1\u6280(\u4e2d\u56fd);\u5148\u6b63\u8fbe(\u4e2d\u56fd)\u6295\u8d44\u6709\u9650\u516c\u53f8;\u5317\u4eac\u65ed\u65e5\u4f73\u4e1a\u7f51\u7edc\u6709\u9650\u516c\u53f8\/\u4e2d\u5316\u79cd\u4e1a\u521b\u65b0\u4e2d\u5fc3\u6709\u9650\u516c\u53f8\uff08CAE\/EDA\/BIO\uff09"},"supplier":null},"projectContactPoints":[],"erpSalesOrder":null,"projectUsedClient":null,"erpSalesOrderVerify":null,"schedules":[],"remain_display":0,"progress_remain_display":0,"forecast_remain_display":0,"projectProductTotalAmount":0,"projectProductAllAmount":true,"projectProductTotalCost":0,"projectProductAllCost":true,"projectProductTotalNumber":0,"unissued_invoice":0,"is_exceeded":false,"can_update":true,"can_delete":true,"unread":0,"last_arrive_days_display":null,"project_status_display":"\u9690\u6027\u9700\u6c42","is_collected":false,"bgcolor":"#ffc000","can_invoice":false,"can_payment":false,"duration_display":1,"contract_type_display":"\u4ea7\u54c1\u9500\u552e","can_change_status":true,"is_admin":true,"lost_contact_days_display":null,"can_view_product":true,"budget_display":"0","contact_points_status_display":"\u672a\u8bbe\u7f6e","total_contact_paid_point":0,"total_contact_un_paid_point":0,"verify_display":0,"un_collected":0,"un_invoiced":0,"object_type":1,"is_only_cp":false},"options":[{"key":"Projects[projectProductTypes]","name":"\u5546\u673a\u7c7b\u578b","value":[{"key":2,"name":"\u670d\u52a1\u5668"},{"key":3,"name":"\u5b58\u50a8\u8bbe\u5907"},{"key":4,"name":"\u7f51\u7edc\u8bbe\u5907 "},{"key":5,"name":"\u5b89\u5168\u8bbe\u5907"},{"key":88,"name":"\u79c1\u6709\u4e91"},{"key":8,"name":"\u4e91\u684c\u9762"},{"key":7,"name":"\u8f6f\u4ef6"},{"key":10,"name":"\u56fe\u5f62\u5de5\u4f5c\u7ad9"},{"key":69,"name":"\u5907\u4efd"},{"key":11,"name":"\u4e2a\u4eba\u8ba1\u7b97\u673a"},{"key":12,"name":"\u7b14\u8bb0\u672c"},{"key":13,"name":"\u6253\u5370\u673a"},{"key":14,"name":"UPS"},{"key":16,"name":"\u8fd0\u7ef4\u670d\u52a1"},{"key":17,"name":"\u5de5\u63a7\u673a"},{"key":18,"name":"\u673a\u623f\u8bbe\u5907"},{"key":19,"name":"\u6280\u672f\u670d\u52a1"},{"key":20,"name":"\u529e\u516c\u8bbe\u5907"},{"key":21,"name":"\u6570\u7801\u8bbe\u5907"},{"key":22,"name":"\u670d\u52a1"},{"key":23,"name":"\u793c\u54c1"},{"key":75,"name":"\u8f6f\u4ef6\u5f00\u53d1"},{"key":106,"name":"\u516c\u6709\u4e91"}]},{"key":"Projects[salesForecast]","name":"\u9500\u552e\u9884\u6d4b","value":[{"key":181,"name":"\u6211\u81ea\u5df1\u505a\u5e84"},{"key":142,"name":"\u6211\u4e0e\u5ba2\u6237\u8054\u624b"},{"key":172,"name":"\u6211\u4e0e\u5382\u5546\u8054\u624b"},{"key":232,"name":"\u5382\u5546\u8fc7\u5355"}]},{"key":"Projects[purchaseType]","name":"\u91c7\u8d2d\u65b9\u5f0f","value":[{"key":128,"name":"\u516c\u5f00\u62db\u6807"},{"key":129,"name":"\u7279\u7ea6\u9080\u6807"},{"key":130,"name":"\u7ade\u4e89\u8c08\u5224"},{"key":164,"name":"\u591a\u5bb6\u6bd4\u4ef7"},{"key":165,"name":"\u534f\u8bae\u4f9b\u8d27"},{"key":182,"name":"\u56f4\u6807"}]},{"key":"Projects[opportunityFrom]","name":"\u5546\u673a\u6765\u6e90","value":[{"key":131,"name":"\u5e7f\u544a\u63a8\u5e7f"},{"key":132,"name":"\u5ba2\u6237\u4ecb\u7ecd"},{"key":167,"name":"\u5382\u5546\u4ecb\u7ecd"},{"key":168,"name":"\u670b\u53cb\u4ecb\u7ecd"},{"key":169,"name":"\u540c\u5b66\u4ecb\u7ecd"},{"key":170,"name":"\u601d\u79d1MSO"},{"key":171,"name":"cold call"},{"key":179,"name":"\u8001\u5ba2\u6237"},{"key":180,"name":"\u5382\u5546\u7529\u5355"}]},{"key":"Projects[project_progress]","name":"\u9500\u552e\u9636\u6bb5","value":[{"key":2,"name":"\u786e\u8ba4\u95ee\u9898"},{"key":3,"name":"\u65b9\u6848\u8bbe\u8ba1"},{"key":4,"name":"\u786e\u8ba4\u65b9\u6848"},{"key":5,"name":"\u5546\u52a1\u62a5\u4ef7"},{"key":6,"name":"\u63a8\u52a8\u6210\u4ea4"},{"key":9,"name":"\u7b7e\u8ba2\u5408\u540c"},{"key":10,"name":"\u4ea4\u8d27\u4e2d"},{"key":49,"name":"\u6536\u6b3e\u4e2d"}]},{"key":"Projects[project_status]","name":"\u5546\u673a\u72b6\u6001","value":[{"key":1,"name":"\u9690\u6027\u9700\u6c42","color":"#ffc000"},{"key":2,"name":"\u660e\u786e\u9700\u6c42","color":"#0064ec"},{"key":3,"name":"\u5546\u673a\u6210\u4ea4","color":"#53cd02"},{"key":4,"name":"\u5546\u673a\u5931\u8d25","color":"#e5000a"},{"key":5,"name":"\u5546\u673a\u6401\u7f6e","color":"#222222"}]},{"key":"Projects[contract_type]","name":"\u5408\u540c\u7c7b\u578b","value":[{"key":1,"name":"\u4ea7\u54c1\u9500\u552e"},{"key":2,"name":"\u8fd0\u7ef4\u670d\u52a1"}]},{"key":"ProjectArchitects[engineer_id]","name":"\u552e\u524d\u652f\u6301","value":[{"key":5085,"name":"\u970d\u4e1c\u9633"},{"key":5248,"name":"\u6587\u4f73\u9f99"},{"key":1015,"name":"\u5434\u660a"},{"key":1022,"name":"\u5f90\u7855"},{"key":5064,"name":"\u59da\u96ea\u7eaf"},{"key":1023,"name":"\u5468\u5b50\u5065"}]},{"key":"Projects[payment_collection_remind_ahead]","name":"\u6536\u6b3e\u63d0\u9192\u65f6\u95f4","value":[{"key":"","name":"\u65e0"},{"key":"1 day","name":"\u63d0\u524d1\u5929"},{"key":"2 days","name":"\u63d0\u524d2\u5929"},{"key":"7 days","name":"\u63d0\u524d7\u5929"},{"key":"15 days","name":"\u63d0\u524d15\u5929"},{"key":"30 days","name":"\u63d0\u524d30\u5929"}]}]},"status":1,"msg":[{"name":"success","success":"\u6210\u529f\u83b7\u53d6\u6570\u636e","error":""}],"ip":"117.136.0.52","ua":"jinchangxiao\/2.3.156 (iPhone 12; iOS 26.5; Scale\/3.00)"}', FALSE, '2026-06-08 15:38:03', 131132928) RETURNING "id" |